怎么样实现HA每天6点后自动播报当天天气预报,请大佬给...

您所在的位置:网站首页 今天天气预报播报 怎么样实现HA每天6点后自动播报当天天气预报,请大佬给...

怎么样实现HA每天6点后自动播报当天天气预报,请大佬给...

2024-07-17 13:29| 来源: 网络整理| 查看: 265

本帖最后由 bugensui 于 2023-1-15 16:12 编辑

目前我想实现这样的功能,在每天6点后,当家里任一成员,被人体传感器识别到(当天只触发一次,后面的成员不触发),就触发dlna音响,利于tts功能播报当天天气预报(ha装的是彩云天气),

3个难点,我不知道怎么弄,1,怎么样把每天6点后-24点前设为条件,2,怎么样只触发一次,用什么思路,3,怎么样在彩云天气里提取 当天天气成文字,赋值给 tts服务

请大佬指点

2023/1/15日更新,谢谢大佬(dscao)指点,已经完成了我想要的功能,相关代码思路如下,供新手参考!这个主要是给家里的父母用的,早上起来,就能听到当天的天气播报。

这个是自动化的逻辑代码,大家根据自己情况,修改,下面有代码解读 alias: 入户门检测并语音播报天气预报 description: 人体运动检测每天7点后tts播放天气预报(当天仅一次) trigger: - type: motion platform: device device_id: 29ed2d4c12de88c9d69fd177cd6a00d1 entity_id: binary_sensor.lumi_lumi_sensor_motion_aq2_iaszone domain: binary_sensor condition: [] action: - if: - condition: and conditions: - condition: time after: "07:00:00" - condition: state entity_id: counter.ttstian_qi_yu_bao_can_shu state: "0" then: - service: script.1673699489033 data: {} - delay: hours: 0 minutes: 0 seconds: 2 milliseconds: 0 - service: counter.increment data: {} target: entity_id: counter.ttstian_qi_yu_bao_can_shu mode: single 代码解释: 当入户门玄关处人体传感器(我家里客厅灯的开关处放了个aqara绿米人体传感器,我家里早上开灯或者干什么,必须会经过这个区域,大家可以根据自己家里实际情况部署)检测到有人,下面的动作选择如果就,如果达到什么条件,就触发相关动作,如果的条件,我设置了2个,1是时间必须是当天7点后,大家根据自己情况设置,2,我设置了个tts参数,这个参数要等于0,实际上就是辅助元素里的计数器,初始值是0,歩长是1,最好选中当 Home Assistant 启动时,还原为最近一次的值,不然HA重启后,会变0会乱。

这2个条件and都符合,才执行我想要的动作,动作:主要2个,1,执行tts语音播报天气预报的脚本,代码在下面。2,之前的条件TTS触发参数(辅助元素里的计数器)+1或者增加(调用的是counter.increment这个服务,实体选择辅助元素里的那个自己新建的计数器即可),这样当天就不触发这个自动化动作了。

执行tts语音播报天气预报的脚本 alias: 语音播报天气预报 sequence: - service: media_player.volume_set data: volume_level: 0.6 target: entity_id: media_player.can_716928 - delay: hours: 0 minutes: 0 seconds: 2 milliseconds: 0 - service: tts.edge_tts data: entity_id: media_player.can_716928 message: >- {{ states("sensor.zzwtime") }}好,现在是北京时间:{{ states("sensor.time") }},客厅温度为{{states("sensor.keting_temperature")|round }}度、客厅湿度为{{states("sensor.zhi_neng_yao_kong_humidity")|round }}%,今天天气{{state_attr("weather.wo_de_jia","forecast_hourly") }},{{state_attr("weather.wo_de_jia","forecast_minutely") }},室外温度{{states("sensor.wo_de_jia_wen_du")|round }}度。 mode: single icon: mdi:weather-cloudy 代码简单讲解,这个脚本,就是先设置dlna音响的音量为60%,然后延迟2秒,调用edge的tts服务,用dlna音响播放指定的文字内容(message)

message代码解读 {{ states("sensor.zzwtime") }}好,现在是北京时间:{{ states("sensor.time") }},客厅温度为{{states("sensor.keting_temperature")|round }}度、客厅湿度为{{states("sensor.zhi_neng_yao_kong_humidity")|round }}%,今天天气{{state_attr("weather.wo_de_jia","forecast_hourly") }},{{state_attr("weather.wo_de_jia","forecast_minutely") }},室外温度{{states("sensor.wo_de_jia_wen_du")|round }}度。 sensor.zzwtime是我自定义的一个传感器函数,代码如下,主要是根据当天时间,转换成是早上中午下午晚上等等这些,sensor.time是系统里内置的一个时间传感器,可以显示当天的时间,不含日期。这2个,需要加在configuration.yaml,代码在下面,sensor.keting_temperature和sensor.zhi_neng_yao_kong_humidity是我自己买的一个温湿度传感器,后面的就是彩云天气的实体里的当天的天气预报,当前的室外温度,我加了round处理,就是让他始终是整数,不是小数 sensor.zzwtime和sensor.time代码 # 自定义Sensor. - platform: template sensors: zzwtime: friendly_name: 'zzwtime' icon_template: mdi:clock-time-three-outline value_template: "{% if now().hour >= 6 and now().hour < 9 %}早上{%- elif now().hour >= 9 and now().hour < 12 %}上午{%- elif now().hour >= 12 and now().hour < 13 %}中午{%- elif now().hour >= 13 and now().hour < 18 %}下午{%- elif now().hour >= 18 and now().hour < 24 %}晚上{% else %}凌晨{% endif %} " sensor: # 日期和时间传感器 - platform: time_date display_options: - 'time' - 'date' - 'date_time' - 'date_time_utc' - 'date_time_iso' - 'time_date' - 'time_utc' - 'beat'



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3