防风帘折腾系列 篇二:防风帘接入米家智能家居
补完之前的坑,说说怎样将防风帘接入智能家居。其实没什么技术含量,因为我自认动手能力不行,都是找的成品方案。
第一步:智能控制防风帘
当初购买的防风帘配的是杜亚的普通大扭力电机,只能通过自带遥控器操作。要接入米家,首先要实现通过智能化指令控制防风帘电机,目前最简单的方案就是使用万能遥控器来发送控制命令。
杜亚遥控器的信号是433MHz静态码射频,可以被一般的万能射频遥控器学习。但是,现在市面上在售的万能遥控器几乎都是只支持红外的,而且小米也已经停售了纯粹的万能遥控器,只有小爱智能音箱Pro、小爱智能音箱play增强版、小米智能家庭屏10这几款产品附带了万能遥控功能。(之前我在控制电动晾衣架时买过带射频的博联RMPro,但它无法接入米家)
幸好,万能的淘宝早就提供了解决方案,给红外万能遥控加装射频模块。
射频模块相当于一个翻译。大致原理如下(可略过):
开启万能遥控的学习模式,再开启射频模块的学习模式,然后按下遥控器按钮。接收到遥控器的射频信号时,射频模块会发送特殊的红外信号,万能遥控接收到红外信号,就会认为“学到了”;工作模式下,万能遥控发出之前学到的红外信号,而射频模块接收到以后,就会发射匹配的射频信号,从而实现遥控电机。
类似功能的产品有几种方案,可以内置也可以外置。我选择最傻瓜的做法,直接购买成品加装射频模块的小爱音箱Pro。
实测使用体验很好。改造过的音箱外观上与原始音箱无异,但对音箱背后的区域进行触摸、长按,根据语音提示可以操作射频模块进行工作状态的转换。
信号学习过程大约耗时5分钟,顺利实现了米家远程操纵防风帘的降下、升起、停止。
第二步:实现无人自动化
预期效果也就是类似桀哥视频里的,下雨自动降下防风帘。
遗憾的是,目前米家仍然没有官方的雨水传感器。
能起到类似作用的产品有:花花草草检测仪、水浸传感器。
花花草草检测仪好像已经停售了,我原本有一个弄丢了,但我记得之前的测试效果不行,因为它的数据更新机制不太一样,没法即时上报湿度变化。
最后我的选择是跟上面的射频模块一起购买的第三方雨水传感器。
水浸检测本身的原理不复杂,关键是怎样将数据接入米家。第三方提供的思路是内置一个小米门窗传感器,将有水、无水的状态映射到门窗的闭、开上,从而实现雨水数据接入米家。
将雨水传感器放在防风帘附近位置,然后使用米家App添加设备。这种自制的雨水传感器在米家中会被识别为门窗传感器2,连接成功后直接改名成雨水传感器即可。
然后在米家自动化中设置雨水传感器关闭时降下防风帘,超时未关时升起防风帘即可。
然而这样做还有几个缺点:
1. 出于节能考虑的硬性限制,门窗传感器的超时未关时长最大只能设置5分钟。这个时间间隔太短,会导致雨水反复时,频繁触发防风帘升起降下,半小时内能触发5、6次。
2. 同样是雨水反复时,多次触发上面的自动化,就会让防风帘多次升起落地,万一地上有异物,就可能导致轨道弯折、帘布扭曲等问题。
第三步:优化自动化方案
第一个问题我至今没有找到合适的方案。原本可以早点发文的,就是因为这个问题没妥善解决,才拖到现在。
我原本的思路是制作一个自动化作为定时器,当雨停时执行定时器,下雨时取消定时器。但是米家的自动化,仅通过App操作时,没法做到自动化的“开启并立即执行”。而且定时任务一旦执行,是不可以被取消的。也许我可以拿一个空闲开关做轮询器,但这样会占据不小的资源,刷屏自动化的执行日志。
而米家中枢网关新出的米家极客版,虽然在软件层面具备了强大的条件管理和轮询功能,却偏偏不能操作万能遥控这样的虚拟设备。
目前的思路只能是使用中枢网关来创建条件任务,再尝试用空闲的开关来充当状态机,利用它的状态改变当作钩子来走云端触发一些虚拟设备的操作,也许会在第三篇里记录过程。
第二个问题则需要加购一个门窗传感器。
由于当初防风帘做的是落地式,所以多出了这一个避免地面异物的烦恼。
要实现这一需求,我的想法是将防风帘降下的行程设置到护栏这个高度就停止。
我的设计思路是:
将门窗传感器安装到护栏高度并接入米家。
创建一个自动化,当防风帘的门窗传感器关闭时,发送停止防风帘的信号。
这样当防风帘降下时经过门窗传感器,就会接收到停止信号,从而停在护栏附近。
由于智能化操作本身存在一定延迟,实际停留的位置会比传感器更远一些,此时传感器又会恢复到打开状态。
所以如果防风帘要升起,也会因为这个停止信号而卡在护栏上方一点的位置。
但这个问题还算好解决,优化一下升起防风帘的自动化指令,将它改为“升起——等待5秒——升起”即可。
同样的,这个延迟的负面效果还有助于解决下雨信号重复触发的问题:
在少数情况下,如果连续接收两次降下防风帘的信号,原本降到护栏高度的防风帘会继续下降落地,实际上没有解决避免地面异物的问题。
所以可以优化一下降下防风帘的自动化指令,将它改为“升起——等待5秒——降下”即可。
这样一来,重复触发的自动化命令,会先将防风帘升到超过护栏的高度后停下,然后再降到低于护栏一些的高度。用一些微小抖动为代价,确保每一次命令执行的结果都是幂等的。
优化后的自动化方案如下:
涉及设备:
防风帘(万能遥控),用于执行升起、降下、停止命令。
防风帘(门窗传感器),用于中断升起或降下操作,使它停留在护栏附近。
雨水传感器(门窗传感器),用于检测雨水,关闭=下雨,打开、超时未关=雨停。
防风帘中断:
下雨降下防风帘:
雨停升起防风帘:
如果条件允许,还可以再买一个门窗传感器,安装到防风帘底部横杆上和轨道底部,就可以从米家App中获取防风帘是否正常落地的信息。虽然仍然无法做到像智能窗帘电机那样精确获取窗帘的位置,但至少可以及时得知防风帘是否成功降到最底部,避免异物长时间卡住的情况。
最后说下这3个月的防风帘使用体验。
先插一句,我家阳台的新风,进风口是侧着对着阳台内的,所以如果包阳台,就会让新风失去意义,这也算是不包阳台的一个理由。
总体评价没变,就是有效改善了不包阳台时会遇到的各种问题,主要体现在防晒防雨,但阳台毕竟还是户外,不能当成包进来的一个房间。
防晒方面,遮阳效果很不错,只要气温适宜,防风帘挡住了直射光以后,呆在阳台会非常舒适。
防雨方面,3个月里下的大暴雨也不少,除了9月一次台风天刮的是南风,雨水几乎是横过来对着阳台喷的,导致阳台地面积水以外,后来的几次阳台内都没有一点水。但也可能是本地南风较少,我感觉即使不降下防风帘,也不会有多少雨。
防尘方面,因为大部分时间都是升起状态,实际效果约等于不包阳台。防风帘本身也没感觉到脏,目前完全没有主动清理过。看到不少人担心清洁问题,我感觉这种台风天来几次都不用清洁了,如果真脏得受不了,可以找个大雨天拿喷枪冲一下。
只是还没入住前,有一次家人留了一个簸箕在防风帘降下的位置,下雨时防风帘执行自动降下卡住了,过了3天才发现。结果底部横杆两侧高低不一致,往上收的时候还能看到折痕。我本来以为很严重,实际上是挺常见的问题,店家售后不错,上门免费调节了一下就解决了。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~