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

 找回密码
 立即注册
查看: 5764|回复: 6

[技术探讨] 关于双控自动化的一些不成熟想法

[复制链接]

9

主题

90

帖子

823

积分

论坛积极会员

喵神

积分
823
金钱
733
HASS币
0
QQ
发表于 2018-8-23 20:30:28 | 显示全部楼层 |阅读模式
    之前在家里装了hassmart的控制模块,用起基本上也没问题,但就是在双控这里遇到了一些问题。双控的自动化是按照囧大的篇教程做的:
https://bbs.hassbian.com/forum.php?mod=viewthread&tid=1436&highlight=%E5%8F%8C%E6%8E%A7
在使用的时候不管是状态量的反馈,还是双控时的控制都无懈可击~~~
but,我使用了时间比较长了过后遇到过几次这种现象,双控的那一组灯一直在闪,blingbling的闪个不停,按面板也没有反应了,查看HA页面时,发现那组灯的虚拟按键和双控的虚拟按键不停的在来回开关动作,在HA页面上也控制不了了,没办法啊,只有把自动化停掉(还好我把自动化单独分组出来了的),自动化一停就好了,只是双控不能用了,重新打开自动化又能正常使用了。
    经过我长久的分析,怀疑是这样造成这种情况的:我们先定义一下直接接了到灯的线的这个开关面板叫主控,没有接灯线只接了火零线仅仅是用来作为双控的开关面板叫辅控。这样我就分析为当我使用辅控开灯的时候,按道理说主控这边会即时响应同步开灯,这样灯就开了,但是有时候我也不清楚是不是面板掉线、信号不好、还是发热过大、或是家里的网络不稳定了,反正我辅控开灯的时候主控这边没有即时的响应或是有延迟,所以灯就没有亮,然后我就条件反射式的迅速又按了一下开关面板,在我按辅控的时候,主控那边又突然响应出来了,导致主控把灯打开了,但是辅控这边又发出一个关灯的指令,而且主控把灯打开的时候又会向辅控这边发出一个开灯的指令,相当于就是两边的状态没有同步了,不同的指令一前一后,就造成了一个死循环了,所以就算我按开关面板也没有反应了,看HA页面里的状态就会发现主控和辅控一直在来回交叉切换,只有停用自动化强行中断循环了。但平常我在家里还好,可以迅速停掉自动化,问题是有时候我不在家,我老婆遇到这种就是只有一脸懵逼了,最后要么是拔掉我的派,要么是断家里的电源空开,总之有点麻烦。
    后来我就想了下怎么避免这种情况出现,由于我自己分析出来是反馈或者传输有延迟造成的问题,我就干脆把主控和辅控2个开关之间的反馈取消掉了,最后编成的这样一种情况,就写个自动化让辅控单方面控制主控就行了,由于主控本身就接了到灯的线的,所以就不需要主控来控制辅控了,只要辅控这边的开关面板状态发生改变,主控也发现改变。这样就算遇到网络延迟或者掉线啊之类的问题,由于主控并不会向辅控发送指令,所以也不会出现死循环了,最多就是控不了了(虽然还是无法接受)。但这样的话在HA页面里辅控的状态就不能真实的反馈出灯的实际状态了,但是主控这边是可以实际反馈的,所以我就在group里面把辅控的开关剔除掉了,让主页只显示主控的开关,这样我试了大概有一个多月了吧,目前情况稳定,没在出现过问题,大家都说好(其实就只有我自己说了)。
    下面是我写的自动化,由于我对.yaml,linux,python等各种语言一窍不通,所以自动化写得完全是挺弱智的,希望大家不要嘲笑我了。更希望有大神可以优化这些语言。另外我对排版也一窍不通。。。
##客厅吊灯双控##
  - alias: ketingdiaodengshuangkong_1
    initial_state: true
    trigger:
      platform: state
      entity_id: switch.damenkou_c0f97d_2
      from: 'on'
      to: 'off'
    action:
     - service: switch.toggle
       entity_id: switch.ketingdiaodeng_c0f949_1
  - alias: ketingdiaodengshuangkong_2
    initial_state: true
    trigger:
      platform: state
      entity_id: switch.damenkou_c0f97d_2
      from: 'off'
      to: 'on'
    action:
     - service: switch.toggle
       entity_id: switch.ketingdiaodeng_c0f949_1

评分

参与人数 2金钱 +22 收起 理由
Mirukuteii + 12 谢谢分享!
+ 10 谢谢分享!

查看全部评分

回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2018-8-23 20:40:54 | 显示全部楼层
确实有时会出现你说的问题,用toggle方式可解决。我记得我说过,可能忘更新到教程贴里面了。
回复

使用道具 举报

2

主题

151

帖子

1814

积分

金牌会员

Rank: 6Rank: 6

积分
1814
金钱
1663
HASS币
0
发表于 2018-8-24 13:22:09 | 显示全部楼层
其实还是比较容易实现的,在automations.yaml内添加如下指令即可:有色字体改为对应的开关名称


#软双控开关  联动S6&S7   
- alias: switch sync
  initial_state: true
  trigger:
    platform: state
    entity_id: switch.switch6, switch.switch7
  action:
    service_template: "switch.turn_{{ 'on' if trigger.to_state.state == 'on' else 'off' }}"
    data_template:
      entity_id: "switch.{{ 'switch7' if trigger.entity_id == 'switch.switch6' else 'switch6' }}"
回复

使用道具 举报

9

主题

90

帖子

823

积分

论坛积极会员

喵神

积分
823
金钱
733
HASS币
0
QQ
 楼主| 发表于 2018-8-26 21:18:02 | 显示全部楼层
wsbfree 发表于 2018-8-24 13:22
其实还是比较容易实现的,在automations.yaml内添加如下指令即可:有色字体改为对应的开关名称

好的,谢谢,牛鼻牛鼻
回复

使用道具 举报

6

主题

554

帖子

3486

积分

论坛元老

Rank: 8Rank: 8

积分
3486
金钱
2932
HASS币
0
发表于 2018-8-26 22:43:57 | 显示全部楼层
本帖最后由 hundajdx 于 2018-8-26 22:44 编辑
wsbfree 发表于 2018-8-24 13:22
其实还是比较容易实现的,在automations.yaml内添加如下指令即可:有色字体改为对应的开关名称

楼上的,你真棒!!!!!!
回复

使用道具 举报

5

主题

267

帖子

2853

积分

金牌会员

Rank: 6Rank: 6

积分
2853
金钱
2586
HASS币
0
发表于 2018-9-12 16:16:57 | 显示全部楼层
这故障几乎出现在我所有的软双控开关上,感谢lz的代码,这几天测试下,我那个灯闪的故障和你一样
回复

使用道具 举报

5

主题

267

帖子

2853

积分

金牌会员

Rank: 6Rank: 6

积分
2853
金钱
2586
HASS币
0
发表于 2018-9-12 16:18:23 | 显示全部楼层
wsbfree 发表于 2018-8-24 13:22
其实还是比较容易实现的,在automations.yaml内添加如下指令即可:有色字体改为对应的开关名称

这个代码故障依旧
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 03:11 , Processed in 0.139448 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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