本帖最后由 lijun9701 于 2019-1-2 21:03 编辑
我有一个思路,但因为我不会编程,看看有没有大神能帮我把代码写出来。
思路:想办法获取人体传感器触发时长,比较触发时长找出触发时间最短的,确定当前所处区域,进行语音提示。
###############################################
想实现根据人体传感器的触发,提示我所进入区域。不知道代码哪里有错,一直只执行第一句,不会根据判断提示进入相应区域。
因为我也是一个小白,所有请坛里的大神们帮忙看一下,语法错误在哪里。
action:
- service: tts.baidu_say
data_template:
entity_id: media_player.mpd
message: >
"{% if states.binary_sensor.motion_sensor_158d0002c65.state == 'on' %}
你现在已经进入客厅!
{% elif states.binary_sensor.motion_sensor_158d0002c60.state == 'on' %}
你现在已经进入卧室!
{% elif states.binary_sensor.motion_sensor_158d0002b6a.state == 'on' %}
你现在已经进入小房间!
{% elif states.binary_sensor.motion_sensor_158d0002b44.state == 'on' %}
你现在已经进入卫生间!
{% elif states.binary_sensor.motion_sensor_158d0002b60.state == 'on' %}
你现在已经进入餐厅!
{% elif states.binary_sensor.motion_sensor_158d0002b60.state == 'on' %}
你现在已经在门口!
{% endif %}"
cache: false###############################################
根据大神jyz_0501的提示,我已经成功解决我想实现的功能。但只是很简单的定位,传感器休眠期就无法再次提醒了。
利用“as_timestamp(now()) - as_timestamp(states.binary_sensor.motion_sensor_158d0002c65006.last_changed) | int < 2”传感器触发时间小于2秒,就判定有人在传感器所处的区域。
action:
- service: tts.baidu_say
data_template:
entity_id: media_player.mpd
message: >
"{% if as_timestamp(now()) - as_timestamp(states.binary_sensor.motion_sensor_158d0002c65006.last_changed) | int < 2 %}
你现在已经进入客厅!
{% elif as_timestamp(now()) - as_timestamp(states.binary_sensor.motion_sensor_158d0002c637a0.last_changed) | int < 2 %}
你现在已经进入卧室!
{% elif as_timestamp(now()) - as_timestamp(states.binary_sensor.motion_sensor_158d0002b60942_2.last_changed) | int < 2 %}
你现在已经进入小房间!
{% elif as_timestamp(now()) - as_timestamp(states.binary_sensor.motion_sensor_158d0002b6e73a.last_changed) | int < 2 %}
你现在已经进入卫生间!
{% elif as_timestamp(now()) - as_timestamp(states.binary_sensor.motion_sensor_158d0002b44478.last_changed) | int < 2 %}
你现在已经进入餐厅!
{% elif as_timestamp(now()) - as_timestamp(states.binary_sensor.motion_sensor_158d0002b6091b_2.last_changed) | int < 2 %}
你现在已经在门口!
{% endif %}"
cache: false
|