『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 3260|回复: 7

[已解决] 求助,根据传感器触发,判断所处区域的自动化问题

[复制链接]

12

主题

193

帖子

1120

积分

论坛积极会员

积分
1120
金钱
927
HASS币
0
发表于 2019-1-1 17:54:54 | 显示全部楼层 |阅读模式
本帖最后由 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





回复

使用道具 举报

35

主题

533

帖子

2887

积分

金牌会员

Rank: 6Rank: 6

积分
2887
金钱
2354
HASS币
0
发表于 2019-1-1 18:26:40 | 显示全部楼层
感应器的感应行为会保持一段时间(小米好像是2分钟吧),不是你离开感应范围后就即时刷新感应状态。
所以,当你从第一个区域走到第二个区域的时候,理论上你客厅感应器依旧是on的状态,所以自然只执行第一句。
有一个办法可以解决此问题,换一个超级大的房子,从客厅到卧室,步行距离2分钟,即可解决,哈哈哈。(开个玩笑:))
回复

使用道具 举报

12

主题

193

帖子

1120

积分

论坛积极会员

积分
1120
金钱
927
HASS币
0
 楼主| 发表于 2019-1-1 18:42:09 | 显示全部楼层
debitus 发表于 2019-1-1 18:26
感应器的感应行为会保持一段时间(小米好像是2分钟吧),不是你离开感应范围后就即时刷新感应状态。
所以, ...

努力换大房子。
你说的问题我明白了。谢谢!我再想办法。
只是不想每个传感器做个自动化。
回复

使用道具 举报

35

主题

533

帖子

2887

积分

金牌会员

Rank: 6Rank: 6

积分
2887
金钱
2354
HASS币
0
发表于 2019-1-1 19:10:40 | 显示全部楼层
lijun9701 发表于 2019-1-1 18:42
努力换大房子。
你说的问题我明白了。谢谢!我再想办法。
只是不想每个传感器做个自动化。 ...

“房间内的感应&定位”,论坛里有一些大神提出过其它的解决方案。
目前没有十分完美的,要么折腾,要么精准度有问题。
你可以先搜一下看看。
回复

使用道具 举报

175

主题

2956

帖子

7555

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7555
金钱
4574
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2019-1-1 21:07:21 | 显示全部楼层
如果定位的话,我想人体传感器是完成不了这个的,也许单身可以,但有家人的时候是绝对搞不定的。
另外针对你这个问题,你判断state是不行的,要判断触发时间,last_changed 考虑一下 最小单位应该是秒
回复

使用道具 举报

8

主题

868

帖子

5154

积分

论坛元老

Rank: 8Rank: 8

积分
5154
金钱
4286
HASS币
0
发表于 2019-1-1 22:42:48 | 显示全部楼层
我也来学习哈,自动化还没有写过
回复

使用道具 举报

7

主题

1977

帖子

5675

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
5675
金钱
3698
HASS币
145

灌水之王

发表于 2019-1-2 11:24:36 | 显示全部楼层
室内定位是个千年难题,没有很简单又性价比的坚决方案
回复

使用道具 举报

12

主题

193

帖子

1120

积分

论坛积极会员

积分
1120
金钱
927
HASS币
0
 楼主| 发表于 2019-1-2 21:05:42 | 显示全部楼层
jyz_0501 发表于 2019-1-1 21:07
如果定位的话,我想人体传感器是完成不了这个的,也许单身可以,但有家人的时候是绝对搞不定的。
另外针对 ...

感谢你提供的思路,我已经实现了之前的想法,基本上判断准确。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-19 23:15 , Processed in 0.846195 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表