『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 12723|回复: 28

【自动化】推送和风天气到微信 (或pushbullet 9/2更新)

[复制链接]

15

主题

105

帖子

540

积分

论坛技术达人

积分
540
金钱
435
HASS币
0

最佳新人教程狂人

发表于 2017-8-31 08:07:10 | 显示全部楼层 |阅读模式
本帖最后由 Retroposter 于 2017-9-2 22:16 编辑

本自动化基于之前发布了两个插件,和风天气:
[插件发布] 分享一个自己写的和风天气插件

微信提醒:
[插件发布] [wechat_notify] 支持发消息到群聊版

分享下自己的每天天气预报的自动化。

1、首先请按照以上教程安装好和风天气和微信插件。

2、以我为例,我需要每天下午6点,把郑州和许昌的heweather sensor推送到家庭群里。

自动化如下(我是写在automations.yaml中的,所以前面不加"automation:",以下script同理)

- alias: 'Weather report'
  initial_state: true
  trigger:
    - platform: time    # 每天下午6点触发
      at: '18:00:00'
  action:
    - service: script.wechat_to_family    # 使用脚本发送(脚本见下方)
      data_template:
        msg: '18点整,瓦卡为您预报明天天气。'
    - delay: 00:00:01    # 为保证消息的顺序,要加一个延迟时间
    - service: script.wechat_to_family # 使用脚本发送(脚本见下方)
      data_template:
        msg: >
          郑州:明天白天{{states("sensor.zz_summary_day_tomorrow")}},
          晚上{{states("sensor.zz_summary_night_tomorrow")}},
          最高温度{{states("sensor.zz_max_temperature_tomorrow")}}°C,
          最低温度{{states("sensor.zz_min_temperature_tomorrow")}}°C,
          {{states("sensor.zz_wind_direction_tomorrow")}},
          {% if is_state('sensor.zz_wind_scale_tomorrow', '微风') %}微风。
          {% else %}{{states("sensor.zz_wind_scale_tomorrow")}}级。
          {% endif %}
    - delay: 00:00:03
    - service: script.wechat_to_family # 使用脚本发送(脚本见下方
      data_template:
        msg: >
          许昌:明天白天{{states("sensor.xc_summary_day_tomorrow")}},
          晚上{{states("sensor.xc_summary_night_tomorrow")}},
          最高温度{{states("sensor.xc_max_temperature_tomorrow")}}°C,
          最低温度{{states("sensor.xc_min_temperature_tomorrow")}}°C,
          {{states("sensor.xc_wind_direction_tomorrow")}},
          {% if is_state('sensor.xc_wind_scale_tomorrow', '微风') %}微风。
          {% else %}{{states("sensor.xc_wind_scale_tomorrow")}}级。
          {% endif %}


脚本如下:
wechat_to_family:
  sequence:
    - service: notify.wechat    # 使用wechat插件
      data_template:
        target: '家#group#'    # 要发送到的群聊名
        message: '{{ msg }}'



效果如下:
wechat.jpg

更:
小白用户注意哦,automation代码中的这些“sensor.zz_summary_day_tomorrow”是基于我配置的heweather sensor的。如这个sensor.zz_summary_day_tomorrow就是我配置了一个叫做zz的天气传感器。自己尝试的时候要替换成自己的sensor entity_id。


9/2 更:
因为开发时频繁登录微信,所以号被禁了。今天改了以下自动化,通过一个input_bool选择notify插件。
以下代码基于我自己的需求啊,但大家不妨做个参考,涉及template的用法嘛。

- alias: 'Weather report'
  initial_state: true
  trigger:[code]input_boolean:
  is_wechat_available: #定义一个bool,用来控制是否使用微信发送(可直接发到家庭群)
    name: Is wechat notification available
    initial: off

 alias: 'Weather report'
  initial_state: true
  trigger:
    - platform: time
      at: '00:03:30'
  action:    
    - service_template: >
        {% if is_state('input_boolean.is_wechat_available', 'on') %} #检查是否用微信发送(我微信挂了,我就把它设置为off,不再用微信了)
          script.wechat_to_family
        {% else %}
          script.smtp_to_mrli # 如果微信挂了,邮件提醒我
        {% endif %}
      data_template:
        msg: >
          {% if is_state('input_boolean.is_wechat_available', 'on') %}
            18点整,瓦卡为您预报明天天气。
          {% else %}
            Wechat's down, fwd weather report pls #邮件提醒标题(非装逼啊,做项目习惯了代码写英文,中文提醒是为了方便给家人或其他人看)
          {% endif %}
    - delay: 00:00:01
    - service_template: > # service template
        {% if is_state('input_boolean.is_wechat_available', 'on') %} #如果微信可用,就微信发家庭群,否则用pushbullet发到自己手机,然后我截屏转发到群(一切以最终需求为准)。
          script.wechat_to_family
        {% else %}
          script.pushbullet_to_my_phone
        {% endif %}
      data_template: # data template
        msg: >
          郑州:明天白天{{ states("sensor.zz_summary_day_tomorrow") }},
          晚上{{ states("sensor.zz_summary_night_tomorrow") }},
          最高温度{{ states("sensor.zz_max_temperature_tomorrow") }}°C,
          最低温度{{ states("sensor.zz_min_temperature_tomorrow") }}°C,
          {{ states("sensor.zz_wind_direction_tomorrow") }},
          {% if is_state('sensor.zz_wind_scale_tomorrow', '微风') %}微风。
          {% else %}{{ states("sensor.zz_wind_scale_tomorrow") }}级。
          {% endif %}
    - delay: 00:00:03
    - service_template: >
        {% if is_state('input_boolean.is_wechat_available', 'on') %}
          script.wechat_to_family
        {% else %}
          script.pushbullet_to_my_phone
        {% endif %}



评分

参与人数 2金钱 +10 收起 理由
+ 6 在下对你的景仰犹如滔滔江水,连绵不绝…….
lidicn + 4 在下对你的景仰犹如滔滔江水,连绵不绝…….

查看全部评分

回复

使用道具 举报

2

主题

325

帖子

2877

积分

金牌会员

Rank: 6Rank: 6

积分
2877
金钱
2552
HASS币
0
发表于 2017-8-31 10:03:39 | 显示全部楼层
这个好啊,学习下!!
回复

使用道具 举报

1

主题

49

帖子

248

积分

中级会员

Rank: 3Rank: 3

积分
248
金钱
199
HASS币
0
发表于 2017-8-31 10:07:34 | 显示全部楼层
大神牛逼哄哄
回复

使用道具 举报

123

主题

4626

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16013
金钱
11302
HASS币
45
发表于 2017-8-31 12:21:15 | 显示全部楼层
真大神,开发神速
回复

使用道具 举报

15

主题

331

帖子

2388

积分

金牌会员

Rank: 6Rank: 6

积分
2388
金钱
2057
HASS币
10
发表于 2017-8-31 16:59:00 | 显示全部楼层
大大能写详细点吗?新入坑不知道自动化的代码跟脚本代码怎么命名,放在哪里
回复

使用道具 举报

15

主题

105

帖子

540

积分

论坛技术达人

积分
540
金钱
435
HASS币
0

最佳新人教程狂人

 楼主| 发表于 2017-8-31 17:16:24 | 显示全部楼层
本帖最后由 Retroposter 于 2017-8-31 17:17 编辑
star_liu 发表于 2017-8-31 16:59
大大能写详细点吗?新入坑不知道自动化的代码跟脚本代码怎么命名,放在哪里 ...

在configuration.xml加:
automation: !include automation.yaml
zone: !include zones.yaml
sensor: !include sensors.yaml
switch: !include switches.yaml
device_tracker: !include device_tracker.yaml


在confg同级目录建以上文件。
详细见 Splitting up the configuration
回复

使用道具 举报

15

主题

331

帖子

2388

积分

金牌会员

Rank: 6Rank: 6

积分
2388
金钱
2057
HASS币
10
发表于 2017-8-31 17:30:12 | 显示全部楼层
Retroposter 发表于 2017-8-31 17:16
在configuration.xml加:
[code]automation: !include automation.yaml
zone: !include  ...

是添加到configuration.yaml里吧?
这段里边的.yaml文件我都没有啊。添上不会报错?
脚本呢?写在哪里呢?


回复

使用道具 举报

15

主题

105

帖子

540

积分

论坛技术达人

积分
540
金钱
435
HASS币
0

最佳新人教程狂人

 楼主| 发表于 2017-8-31 17:57:17 | 显示全部楼层
star_liu 发表于 2017-8-31 17:30
是添加到configuration.yaml里吧?
这段里边的.yaml文件我都没有啊。添上不会报错?
脚本呢?写在哪里呢 ...

我写错了,是configuration.yaml,不是xml。

如果这里你只需要配置automation和script。
在config中添加
automation: !include automation.yaml
script: !include scripts.yaml


然后在configuration.yaml同级目录建automation.yaml和scripts.yaml,并把上面的代码贴进去(注意缩进)

像zone, sensor等如果写的比较多了久拆分出去,少的话就没必要了。

回复

使用道具 举报

220

主题

1284

帖子

7847

积分

超级版主

Rank: 8Rank: 8

积分
7847
金钱
6533
HASS币
86

教程狂人论坛风云人物突出贡献

发表于 2017-8-31 18:40:49 | 显示全部楼层
Retroposter 发表于 2017-8-31 17:57
我写错了,是configuration.yaml,不是xml。

如果这里你只需要配置automation和script。

推荐你用package,按功能 来划分yaml
回复

使用道具 举报

15

主题

105

帖子

540

积分

论坛技术达人

积分
540
金钱
435
HASS币
0

最佳新人教程狂人

 楼主| 发表于 2017-8-31 20:03:12 | 显示全部楼层
lidicn 发表于 2017-8-31 18:40
推荐你用package,按功能 来划分yaml

且让我去了解一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-26 16:40 , Processed in 0.067961 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表