本帖最后由 Dreamray 于 2022-7-15 10:37 编辑
HAOS自带的Gree Climate集成没有定时功能,下面用自动化和timer集成实现一个:
首先定义一个input_number,用于在前端面板显示一个1-8(定时1-8小时)的数字slider:
input_number:
bedroom_ac_set_time_input_num:
name: 定时
mode: slider
min: 0
max: 8
step: 1
unit_of_measurement: 时
再定义一个timer,用于倒计时:
timer:
bedroom_ac_set_time_timer:
name: 主卧空调定时倒计时
我们需要的是在前端面板滑动input_number后,它的状态数值传递给timer,比如,滑动后为1,就把1传递给timer,让它倒计时1小时,为3,让timer倒计时3小时,automations.yaml里用以下代码实现:
- id: input_num_state_to_ac_timer
alias: input_num_state_to_ac_timer
initial_state: true
trigger:
- platform: state
entity_id: input_number.bedroom_ac_set_time_input_num
action:
- service: timer.start
target:
entity_id: timer.bedroom_ac_set_time_timer
data:
duration: "{{ (trigger.to_state.state | int * 3600) }}"
解释:input_number状态的改变后触发action,action执行 把input_number改变后把数值传递给timer,timer接收到数值后乘以3600(因为time以秒为单位)作为自己的倒计时时间,,然后开启timer.
接下来设置timer倒计时走完后的action,即关闭空调:
- id: timer_finish_bedroom_ac_off
alias: timer_finish_bedroom_ac_off
initial_state: true
trigger:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.bedroom_ac_set_time_timer
action:
- service: climate.turn_off
entity_id: climate.bedroom1_ac
最后把input_number加到前端面板空调控制的下边就行了。
20220622更新:有点不完美,input_number滑动后为零的时候应该取消定时,以上代码不会取消,而是会重复上一次的定时。解决方法只需把滑动后为0和滑动后为1-8的自动化分开即可,滑动后为0执行取消定时,滑动后为1-8还是像上边代码一样传递数值,
另外再增加一个空调关闭后,把input_number归零的自动化,再增加一个手动取消timer后input_number归零
这样就完美了。
我直接上传了修改后的yaml文件,climate.yaml 放到 \config\packages 即可。
automations.yaml
(2.72 KB, 下载次数: 50)
climate.yaml
(247 Bytes, 下载次数: 47)
|