本帖最后由 mobster 于 2022-5-3 21:21 编辑
背景
上一次玩智能家居竟然快4年前了,忙于工作,很少再花时间折腾HA,虽然一直在折腾nodered但实际上和智能家居沾边的不算太多。这次假期在家发现之前的小米魔方电池没电了,迅速买新电池装上,看了L大的教程(【node-red】小米魔方【控制PC音量】【下一曲】【金斧头】 ),又决定把之前刚入门时用HA源生方案写过的东西(小米魔方的功能挖掘,包括多设备切换,魔方控制激活等 )用node-red重写一遍,回到论坛把写过的一些经验分享出来。
填坑
上来手贱,各种一顿升级,把core版本从2021.9.x升级到当前最新2022.4.7。发现各种不工作了(HACS异常、小爱同学TTS异常)。
解决方案:
1.HACS全删了重装,解决;
2.TTS各种尝试修复,无解(之前用的 Yonsm大神的TTS组件 );
3.最后换用了 al-one大神的方案,很快啊,小爱同学熟悉的声音回来了;
核心需求
- 利用魔方常见的操作(摇一摇、旋转、敲两下),魔方相比更常见的按钮操作,多一个很特别的旋转,那么多利用旋转实现诸如灯光亮度控制、风扇转速等;
- 一个魔方当然要更多操作常见设备,通过摇一摇实现;
- 通过旋转实现数据精度控制;
- 尽可能考虑误操作的实际场景;
- 鉴于我手上的设备,选用yeelight吸顶灯、小米风扇、pc音量作为练手;
基于nodered的解决方案及特点
- 尽量保证代码流程易读、易用、易调整的特性;
- 用了一部分nodered的特性,如flow流程级变量、小爱同学TTS的"子流程"封装;
- 代码的基础部分参考了L大之前的例子,尽量使用了自带的字符串组件来操作流程(平时更习惯用function写,因为更灵活);
案例最终效果
魔方激活
- 首次摇一摇激活魔方控制,TTS语音通知;
- 在激活状态下,再次摇一摇,切换设备,并TTS语音通知;
魔方休眠
- 魔方在激活状态下,2分钟内魔方无任何操作时,魔方进入休眠(即除了摇一摇之外的动作不再响应),并TTS语音通知;
- 魔方在激活状态下,使用“自由落体”操作时,魔方直接进入休眠,并TTS语音通知;
激活yeelight吸顶灯控制(最普通的第一代)
- 旋转调整灯光亮度(右旋+亮度、左旋减亮度);
- 90度翻转调整灯光色温(设定5500k、4500k、3500k、2500k依次循环,由白到黄);
- 敲击两次吸顶灯进入月亮模式,再次敲击回到正常模式;
- 开关灯?忘写了(我这没需求,家人每次都直接物理开关关闭。。);
激活PC音量控制(windows)
- 参考了L大的例子,L大貌似用的QQ音乐的api,我个人不用QQ音乐,所以百度找了个第三方个人作者的小软件,后来发现稳定性非常差,哪天实在想用这个功能的话准备自己再写个。。)
- 旋转调整PC音量(http-get请求实现),右旋加音量,左旋减音量;
- 敲击两次静音;
- 将软件配置为开机启动(稳定性太差,基本启动不到1分钟就自动异常闪退,windows计划任务+延迟启动也一样,windows日志可查);
激活小米风扇控制(米家直流变频落地扇:zhimi.fan.sa1)
- 旋转调整风扇速度(右旋+1档、左旋-1档),TTS语音提示;
- 90度翻转调整风扇模式(直吹风和自然风切换),TTS语音提示;
- 敲击两次作为风扇开关切换,TTS语音提示;
写在最后
魔方实用性见仁见智,其实更像一个玩具,能用,但更多属于趣味性,我觉得很难替代专用遥控器等设备来直接操作(延时、精度、误差等)。我家的魔方归宿已经变成小孩的科技玩具,用魔方控制多个设备,娱乐为主切勿当真,在实践中体验node-red可能更有实际意义。
|