本帖最后由 sephrioth 于 2023-2-6 18:11 编辑
问: 为啥要用HA做闹钟呢?
答: 因为可以想怎么闹就怎么闹。。。
----------------
首先需要一些准备条件
1. 我们要设置的是工作日闹钟,需要能在前台设置时间, 所以这里我们先定义input_date
workday_alarm: #工作日闹钟
name: Workday Alarm
has_date: false #不需要日期
has_time: true #只需要时间
2. 更新下, 这里建议使用 https://github.com/Crazysiri/chineseholiday 插件来获取工作日信息, 完美对接3. TTS 不是必须的。这个就是用来通报, 建议使用 百度tts, 中文支持比较好, 具体配置可以参考官方 https://www.home-assistant.io/integrations/baidu/
tts:
- platform: baidu
app_id: YOUR_APPID
api_key: YOUR_APIKEY
secret_key: YOUR_SECRETKEY
-----------------
好了, 我们开始写自动化
- alias: 'Workday Alarm'
trigger:
- platform: time
at: input_datetime.workday_alarm #到具体时间触发, 具体闹钟时间在lovelace里面改
condition:
- condition: state
entity_id: sensor.holiday
state: '工作日' #工作日为on的条件下
action: #你想怎么闹都行了, 我这里只是用tts举例
- service: tts.baidu_say
data_template:
entity_id: media_player.sonos #tts推送的音箱
message: xxxxx #推送的信息, 个人建议推送你HA集成的天气信息, 比如彩云天气啥的
- delay: 00:00:05 #等推送的信息播放完成后, 你还可以干点别的
--------------------------
最后写到 lovelace 的界面里, 可以通过 condition 的卡片, 闹钟激活了就显示时间, 不激活不显示;为了效果更好, 还可以引入 stack-in-card 卡片
cards:
- type: conditional
conditions:
- entity: automation.workday_alarm
state: 'on'
card:
type: entity
entity: input_datetime.workday_alarm
- type: entities
entities:
- entity: automation.workday_alarm
secondary_info: last-triggered
show_name: false
mode: vertical
type: 'custom:stack-in-card'
最终效果
1. 闹钟激活
2. 修改时间
3. 关闭闹钟
|