HA接入米家的插件一般用国内大神写的Xiaomi Miot Auto,该插件可以自动枚举出所有已经接入米家的设备。
在某宝买了3路蓝牙mesh通断控制器,我在小米手机中米家控制这3路通断器,没有任何延迟。
然后呢,我通过HA,手动点击这3路通断器,也没有任何延迟。
然后,我开始用HA的自动化,用一个“动作时序”控制这3路通断器,每一路的控制都慢了好几秒。
很明显这个延迟是HA哪个地方造成的。
HA自动化调用开关动作,一般用switch on/off服务调用,但是这个服务调用是个同步操作,它会等待米家的操作的返回。
而Xiaomi Miot Auto其实是轮询工作,作者在他的GitHub说的很清楚,
https://github.com/al-one/hass-xiaomi-miot/issues/100#issuecomment-909031222
对于人体传感器、门磁、无线开关类设备,它们的状态通常为瞬时状态(即:事件),部分型号支持获取最后一次事件触发的时间,且默认轮询时长为15秒
到这里观众可能说作者傻,错!作者这种设计非常合理,对于家中设备一般不会像机关枪一样开开关关,过高频率的轮询其实是对CPU资源的浪费,也是浪费电。
一顿研究,发现可行。那就是要用到HA的脚本,再结合HA的自动化。
思路是用 HA自动化->HA脚本->控制米家开关
道路虽然迂回,但是效果非常好。也就是说HA脚本不会同步等待Xiaomi Miot Auto米家的返回。
然后你可以在HA面板上调用自动化就可以了