本帖最后由 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 }}'
效果如下:
更:
小白用户注意哦,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 %}
|