本帖最后由 Retroposter 于 2017-9-7 20:39 编辑
从帖子 【自动化】推送和风天气到微信 (或pushbullet 9/2更新)可以看出,当需要预报的城市较多时,automation写的非常长(事实上我需要推4各城市的预报,比帖子中还长)。有没有办法封装一下呢?有,使用pyhton script。
理想的automation是这样的:
- alias: 'Daily weather report'
initial_state: true
trigger:
- platform: time
at: '18:00:00'
action:
- service: script.wechat_to_family
data:
message: '18点整,瓦卡为您预报明天天气。'
- service: python_script.report_tomo_weather
data:
domain: script # 指定service domain
service: wechat_to_family # 指定service
cities: # 指定要预报的城市(list),#前面是sensor中配置的名字。需要预报几个城市,就加几个。
- zz#郑州
- xc#许昌
可以看出,即使再加10各城市,也仅需再加10行代码就行(按照之前的得加40、50行吧)
我写的python script支持这样的配置。但为了友好地显示消息,每个城市会发送一条消息。这样就会在短时间内连续发送很多条消息(脚本中没有delay功能),微信号有被禁止登录的风险,所以最终的配置是每个城市调一次report_tomo_weather service。
废话说了很多,下面教程。
1、安装了我发布的和风天气插件(见之前发的帖子)
2、在configuration.yaml中添加:
3、在configuration.yaml同级目录建文件夹 python_scripts
把附件中的report_tomo_weather.py放到新建的文件夹下
4、在automations.yaml添加:
- alias: 'Daily weather report'
initial_state: true
trigger:
- platform: time
at: '18:00:00'
action:
- service: script.wechat_to_family
data:
message: ‘18点整,瓦卡为您预报明天天气。’
- condition: state
entity_id: input_boolean.is_wechat_available
state: 'on'
- delay: 00:00:01
- service: python_script.report_tomo_weather
data:
domain: script
service: wechat_to_family
cities:
- zz#郑州
- delay: 00:00:03
- service: python_script.report_tomo_weather
data:
domain: script
service: wechat_to_family
cities:
- xc#许昌
script.wechat_to_family 见上面帖子。
直接贴的代码,大家可以灵活改变。更多见 https://home-assistant.io/components/python_script/
|