第三方电动晾衣架接入米家实现状态联动自动化
写在前面
当初还没了解智能家居,在买电动晾衣架时候,也没考虑说要米家原生,仅关注了电动晾衣架的本身的功能:
升降
照明
其他花里胡哨的比如烘干、紫外,都一律不考虑,最终选择了 Hotata 的 D-3135 型号(已下架
但是随着后面慢慢接触智能家居,买了更多米家设备,这个时候晾衣架的智能化就很尴尬了:
仅支持小爱音响控制,无法在米家 APP 中添加设备
没有状态反馈,在做自动化时无法判定晾衣架状态是升是降、照明灯是开是关
但是晾衣服这个事情,又是日常生活最重要的环节之一,基本上每天都需要晾衣服,因此就想着如何改造使之能更好融入米家智能化,与其他米家设备能联动起来。
文章大纲如下:
简单改造实现状态反馈
重新买一个?No
首先,最简单直接的解决方式就是重新买一个能原生接入米家的晾衣架换上去,比如:
Hotata 也有其他支持原生接入米家的型号
当时买的时候还对比过的邦先生也有米家原生的型号
近期小米自家也有出电动晾衣架
但为了接入米家而换一个功能正常的设备我是无法接受的,也违背了智能家居的本意
通过 homeassistant 做桥?Can't
接下来想到的就是将晾衣架接入 homeassistant,通过 homeassistant 来做自动化
但估计是 Hotata 智能化实在是太小众了,没有大神开发对应的集成,也就无法直接接入 HA
从论坛上看到的实现方案有两种:
通过 HA 虚拟实体,底层通过 Miot 调用小爱音响发送指令
改造遥控器,通过 esphome 接入 HA
但这两种都不支持做状态反馈,用作控制是没问题,但做成自动化场景就容易出问题了
门窗传感器改造,Yes!
既然目前没有一个很好的方案来直接获取到 Hotata APP 原生的状态数据,那么有没其他方式?
在观察了晾衣架的工作原理之后,突然就想到通过门窗传感器来获取状态了:
通过门窗传感器的开合状态,来映射晾衣架的升降状态
通过门窗传感器的光照状态,来映射晾衣架照明灯的开关状态
在尝试了几种粘贴姿势之后,发现下图这种能比较准确反映出晾衣架状态
门窗传感器本体安装在晾衣架横杆,感应磁铁安装在X伸缩架上
注意需要先在晾衣架完全升上去的状态下,测试门磁安装在伸缩架的哪一条杆比较合适
能感应的同时,也不会被传感器本体或者晾衣架横杆顶掉
如上图,测试这样安装虽然一点点缝隙,但是还是能够感应到开合状态。
而晾衣架照明灯是否开关,就是通过门窗传感器本体的光照传感器来识别,如下图
在晚上打开晾衣架照明灯时,光照强度还是比较高的,触发门窗传感器的光照强度判断完全没问题。
白天因为太阳光,本身光照强度就比较高,总不能白天也识别为开灯吧?这个时候就需要配合做自动化了
照明灯场景自动化
这部分自动化使用极客版比较容易理解,也容易配置
判断照明灯状态
主流程上通过门窗传感器的光照强度来设置,通过全局变量 "阳台灯状态" 来映射:
只在每天晚上 18:30 到隔天早上 7:00 才会启动判定,因为白天本身光照强度就高
在晚上并且光照度为强的时候,设置阳台灯状态为 1,表示开灯
但是传感器光照变化上报优点延迟,所以针对主动去开启的场景,设置一个条件抑制:
当通过自动化流程去开灯关灯时,主动设置阳台灯状态
通过一个 "阳台灯状态主动设定" 的变量同步信息,抑制阳台灯状态被动判断
通过这种方式,可解决光照强度上报延迟带来的判定异常问题
开关控制照明灯
利用一个转无线的智能开关单击来操作晾衣架照明灯:
通过查询 阳台灯状态 的值来确定照明灯是否打开,并执行对应反转操作
同时主动设定对应的两个变量:阳台灯状态、阳台灯状态主动设定
通过这种方式,来维持状态反馈
有人自动开灯
识别到有人从客厅走出去阳台,并且阳台比较暗的时候自动开灯,并设置状态:
一开始没做前面的先后 8 秒判断,猫出去阳台吃喝拉撒也会自动触发开灯,加个先后判断解决
客厅开灯时,阳台也能被照到,所以就不需要开灯了(通过客厅的子擎 Trio 光照判断)
无人自动关灯
在阳台 2-5 分钟无人移动的时候,自动关灯并设置状态
因为家里不存在有人晚上去阳台站站着不动的场景,所以一个人体传感器判断足以
通常晚上去阳台都是晾衣服、加猫粮换水、铲猫砂,这些动作比较大,不会被误判为无人
晾衣架升降自动化
晾衣架的升降触发源主要有 3 个:
通过自带的遥控器控制
通过小爱音箱控制
通过转无线开关双击控制
其中遥控器场景无法主动同步状态,需要靠门窗传感器,所以统一到极客版进行设置
小爱音箱操作同步极客版
定义一个升高晾衣架的手动操作,通过自定义指令进行全覆盖,然后触发一个中枢网关虚拟事件
需要盘点出通过小爱音响升高晾衣架的指令,全部添加到自定义指令
这样才能实现,将小爱音响控制升高晾衣架统一到极客版操作
同样的,降低晾衣架也需要进行对应的设置
极客版统一定义
这里面主要是分成两条线路判断:
小爱指令的触发
转无线开关的双击
小爱指令的触发是明确要进行升高或者降低,所以不依赖状态。
但是双击开关场景需要依据晾衣架的状态来决定是要做什么操作,因此引入了门窗传感器:
当门窗传感器分离,说明晾衣架处于降低状态,双击时升高
当门窗传感器接触,说明晾衣架处于升高状态,双击时下降
最后在降低晾衣架操作里还有一个延迟 10 秒,原由是:
这款电动晾衣架不支持设置下降高度,每次会降到非常低的位置,没什么意义
因为下降速度是趋于匀速,所以通过设置一个延迟时间就可以控制下降高度
写在后面
目前这套方案已经跑了有一两个月了,整体还是比较满意,基本没有误触发情况。
但还是有一些可以改进的地方:
通过小爱音响指令控制属于云端控制,延迟高且依赖网络,可考虑换成米家射频控制
没有跟洗衣机联动起来,后续可通过 homeassistant 串联海尔的智能洗衣机做联动
文章就写到这里,如果觉得本文对你有帮助请不要吝啬你们的点赞关注,有疑问欢迎评论交流,后续也会继续分享一些米家智能家居的想法。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~