HASS的自动化控制使用YAML来配置, 虽然没有尝试过, 但是总觉得一些复杂的自动化程序这样子来配置一定是心有余而力不足的.
但是还好HASS提供了websocket和RESTful的API为玩家提供了足够地条件完成复杂的自动化.
这个帖子就介绍如何用node-red来实现HASS的自动化.
node-red是IBM开发的图形化编程工具, 最基础的概念有两个: node, 也就是实现一个小功能的组件, flow, 也就是自动化流程.
node-red也有很多IoT的node和flow, 也就是也可以完全脱离HASS完成一些自动化功能.
node-red的安装:
安装node-red可以根据node-red官网的流程去做. 我是使用docker来安装的.
1. docker pull nodered/node-red-docker
2. docker run --net=host --name mynodered -v LOCAL_NODERED_CONFIG_PATH:/data nodered/node-red-docker
3. 访问IP_ADDR:1880 就可以看到node-red页面.
node-red嵌入到HASS
在HASS的配置configuration.yaml中加入这段就可以将node-red嵌入到HASS的侧边栏中
panel_iframe:
node_red:
title: node_red
icon: mdi:vector-polyline
url: [url]http://192.168.1.198:1880/[/url]
体验node-red
使用的时候可以将左侧的node拖拽到中间的"绘图"区域, 然后用线将不同node连接起来就实现了消息的传递.
不同node之间传递的都是msg.
最后完成后点击Deploy完成并保存, 自己设计的自动化流程就完成了.
常用的node
1. inject 我用这个来实现循环, 不断的触发流程.
2. http 用这个节点来读RESTful API
3. switch 用这个实现条件判断
4. change 用这个实现设置变量.
5. delay 延时
6. debug 调试
subflow
node red还支持用一组node组合一个子flow, 相当于子函数一样.
分享和导入flow
node-red支持将flow转为字符串, 然后分方便的分享和导入flow.
例子
我自己用node-red实现了一个洗手间灯的控制, 这里用到了人体传感器和洗手间门的传感器.
之前使用HASS的自动化实现控制洗手间灯, 会遇到这样的问题:
1. 人在洗手间移动不是很大, 经常会由于移动过小, 人体传感器有时没有识别到人体而关灯. 一会儿识别到了又开灯, 导致灯开关频繁.
2. 离开洗手间的时候手动关灯, 但是人在走出去的时候由于正好赶上人体传感器上传数据, 灯又打开了.
用node-red实现就是希望能够通过一些条件, 来解决诸如上述体验不是很好的地方.
实例洗手间灯自动化
|