本帖最后由 小来 于 2018-3-12 08:51 编辑
首先感谢官方群里的各路大神对我的帮助,终于完成这段代码。通过自己的学习希望也能帮助一些初学者。
我的目的是通过人体感应器控制灯开关。人在灯开,离开后等待一段时间灯自动关闭。
第一代代码,我是将这2个控制分开写代码。
#鱼缸灯打开
- alias: fish lamp on
hide_entity: false
initial_state: true
trigger:
- platform: state
entity_id: binary_sensor.motion_sensor_158d00015b8ae7
from: 'off'
to: 'on'
action:
- service: switch.turn_on
entity_id: switch.plug_158d00015d19d5
#鱼缸灯关闭
- alias: fish lamp off
hide_entity: false
initial_state: true
trigger:
- platform: state
entity_id: binary_sensor.motion_sensor_158d00015b8ae7
from: 'on'
to: 'off'
condition:
condition: state
entity_id: switch.plug_158d00015d19d5
state: "on"
action:
- delay:
minutes: 5
- service: switch.turn_off
entity_id: switch.plug_158d00015d19d5
第二次通过IF优化了自己的代码。
#鱼缸灯开和关,通过小米的人体感应器,小米的人体感应器默认等待时间是2分钟,再加自己的放了60秒的等待时间。因此当人离开3分钟,电灯自动关闭。
- alias: fish lamp on/off #灯自动化开关
initial_state: true
trigger: #获取红外感应器状态
- platform: state
entity_id: binary_sensor.motion_sensor_158d00015b8ae7
to: 'on'
- platform: state
entity_id: binary_sensor.motion_sensor_158d00015b8ae7
to: 'off'
for:
seconds: 60 #等待60秒
action: #通过IF判断感应器的状态
- service_template: "switch.turn_{% if trigger.to_state.state == 'on' %}on{% else %}off{% endif %}"
entity_id: switch.plug_158d00015d19d5
希望这2段对比代码,对大家有所有帮助。
|