楼主今年年初才开始折腾智能家居,最早手里只有一个控客K Pro插座(带红外遥控功能)和 一个sonoff开关,因为需要sonoff开关能够在通电后变为开状态,所以用的还是e微联的原始固件,没有刷ha的兼容固件,因此只能使用手机APP遥控。当时手里有个闲置的安卓手机,所以另辟蹊径,使用tasker这个神器+autoInput插件+mqttClient做到了伪自动化(延迟高,而且没有状态查询)。
具体操作流程是这样的:控制端手机通过tasker发送mqtt消息=》闲置手机接收到mqtt消息之后根据消息内容执行指定的tasker任务=》tasker自动加载app后通过autoInput插件模拟按键操作来控制开关或者红外遥控家电。 后来趁着双十一楼主买了一个叮咚top,但是top支持的设备有限,我的设备不在支持列表里面,后来发现叮咚有一个开发平台可以自己开发应用,那就好办了,代码搞起,写了个小应用接入top,通过应用发送指令到我自己的服务器,然后服务器发送mqtt消息到tasker手机,但是有个不爽的地方就是每次都要加上自己应用的名字前缀来唤醒自己的应用。 一番度娘之后看到有网友通过ha-bridge来接入叮咚,于是搞起,开始在群晖的docker里跑ha-bridge叮咚死活连不上,但是直接在电脑里跑就可以连上(windows下面运行ha-bridge会有乱码问题),后来爬帖才知道原来是因为没有运行在80端口上,但是80端口已经被群晖内置的nginx占用,这里要感谢@jianjianlou https://bbs.hassbian.com/forum.php?mod=viewthread&tid=1631 根据这个教程改掉了群晖的80端口,叮咚终于可以连上了。 然后就顺利的连接home-assistant,完成之后试了一下发现叮咚老是返回“操作失败”,把ha-bridge的log等级调整到debug,分析日志发现原来是在ha-bridge里面设置ha地址的时候没有只输入了地址和端口,没有设置ha的名字,所以ha-bridge发送指令的时候找不到ha就报错了。 控制之后发现无论喊“打开灯”还是“关闭灯”,ha收到的指令都是开灯,检查配置之后发现原来ha-bridge每次调用的都是“Dim Items”里面的请求,直接忽视了“On Items”和“Off Items”,后来没找到解决办法,就直接把切换状态的请求放到dim里面去了,每次语音命令开/关的时候就发送切换命令。
|