homeassistant与传感器的应用,自动化创建
WARNING:Home Assistant简介为什么用开始进行配置登录HA网关传感器接入sonoff传感器接入安装zigbee2mqtt插件zigbee2mqtt插件接入sonoff传感器mqtt数据发送绿米传感器接入绿米传感器接入绿米网关HA网关接入homekit绿米网关和传感器接入homekit博联遥控器配置博联遥控器了接入HA网关红外或射频学习自动化配置node-red插件安装与配置nodered配置nodered节点介绍nodered使用方法参考WARNING:
我就没想着截图,下面的说明里基本就没几张图片,但是我会尽量做到用文字描述清楚。请知悉。
Home Assistant简介
Home Assistant 是一款基于 Python 的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制、自动化等。
Home Assistant 运行在 Python 3.5.3 及以上 环境下,一般来说,符合 Python 运行条件的系统皆可安装 Home Assistant(下称HA网关)。
为什么用
我这里的需求是传感器和控制器,既能完成我需要的自动化控制,又能将这些数据按照我想要的方式传输到我的mqtt服务器中去做记录。(别问为什么不直接用nodered,没硬件,而且不会接入)
这里因为是测试需要,就没有用闲置的硬件去搭建HA网关,直接购买了人家的成品。我需要使用sonoff传感器,绿米传感器和HA网关共同组建成一套自动化的控制,遥控器本来买的涂鸦的,结果接入发现了点问题,后来又申请购买了博联的RM4PRO遥控器。
开始进行配置
登录HA网关
因为我使用的是购买的硬件(不提供购买的信息,可以自行淘宝搜索,挺多的),所以直接省去了所有的环境搭建过程,只需要把HA网关通过网线接入路由器即可。通上网线后它会自动向路由器中申请它的域名与IP的对应,一般情况下只需要访问homeassistant.local:8123就可以登录其管理后台。(如果没法登录的话,就去路由器中查看一下设备的IP,然后IP:端口号登录吧)
进入后应该能看到提示创建账户的界面,基本全部保持默认选项即可。全部完成后我们会进入到主界面,就算完成了。
传感器接入
要想在HA中接收传感器的数据,首要前提就是将传感器接入到HA中(默认配置下你可以认为就像上图中概览界面能够看到传感器,就为成功)。下面以我接入的两套为基准。
sonoff传感器接入
最开始我是想用sonoff网关进行集成接入的。因为最开始的时候饶了点弯子就没使用这个方案,当时使用的是zigbee2mqtt插件进行接入(真的不是因为懒,我觉得还挺好用的)。那么接下来说一下zigbee2mqtt插件的设置。(下称z2m)
HA又没有zigbee协议的接收器,所以我们需要先为HA网关购买一个usb zigbee网关,将其连接至HA网关上。
安装zigbee2mqtt插件
打开HA网关主界面,左边列表中找到配置,依次点击加载项,加载项商店,点击右上角的三个点,点击仓库(Repo)。弹出对话框,将zigbee2mqtt的插件地址写入,添加。/zigbee2mqtt/hassio-zigbee2mqtt(如果出现错误,就接着试.jpg)添加成功后,将会在加载项商店中出现zigbee2mqtt的插件信息,点击zigbee2mqtt插件,安装。安装成功后,自动进入到zigbee2mqtt的相关界面中,将自启动,守护,在侧边栏显示三个选项打开。接下来需要对mqtt进行配置(下面以本地mqtt为例),回到homeassistant主界面,依次点击配置,加载项,找到Mosquitto broker,进去点击配置,在Logins选项卡中配置mqtt的账号密码,例如- username: mqttpassword: mqtt
保存后,回到信息选项卡中,也是将自启动,守护,在侧边栏显示三个选项打开。然后点击启动。至此本地mqtt已经配置完毕了。接下来我们将mqtt添加到集成中,回到HA网关主界面,依次点击配置,设备与服务,添加设备,出现的弹窗搜索“mqtt”。点击mqtt,输入服务器127.0.0.1,用户名密码都是刚才设置的mqtt,点击提交。然后就可以正式开始配置zigbee2mqtt了。老样子,依次点击配置,加载项,zigbee2mqtt,配置选项卡
mqtt 栏填写
base_topic: zigbee2mqttserver: mqtt://x.x.x.x:1883user: mqttpassword: mqtt
serial栏填写
port: /dev/ttyUSB0
填写之后点击保存。然后回到信息界面,点击启动。然后等一会吧。之后点击HA网关主界面中侧边栏的zigbee2mqtt,如果成功进入到界面中就完成了配置。右上方的国旗图标可以修改语言。
zigbee2mqtt插件接入sonoff传感器
再将z2m插件配置完毕后,就可以接入sonoff传感器了。
打开zigbee2mqtt选项卡,点击右上方的“允许添加新设备(所有)”根据sonoff的各个传感器的说明书,去启动它的zigbee协议匹配(一般为长按reset后松开)。过一会应该就能看到z2m的界面中出现了传感器了。我们也可以点击这个设备右边的编辑按钮,更改它的名称方便我们辨认。如果顺利的话,我们是可以在HA网关的概览中直接看到这个传感器相关的数据了。(这里有个坑,如果你使用的是别人公网上公开的mqtt服务器的话,很可能无法在概览中看到传感器,就等于没把传感器接入进来。猜测是因为公共服务期的topic太多了,检测出现了问题。)如果你一定要使用公开的mqtt服务器,而且还没法自动识别,就只能手动的一个一个导入了。方法如下:
HA网关主界面侧边栏 File editor,找到`/config/configuration.yaml`文件,在其中写入规则,我下面以sonoff传感器的温湿度为例:mqtt:sensor:- name: "温度"state_topic: "zigbee2mqtt/无线温度计1"unit_of_measurement: "°C"value_template: "{{ value_json.temperature }}"- name: "湿度"state_topic: "zigbee2mqtt/无线温度计1"unit_of_measurement: "%"value_template: "{{ value_json.humidity }}"
mqtt数据发送
传感器接入进来了,mqtt确实也接收到了sonoff传感器的json数据。但是我之后在添加绿米传感器的时候发现了问题,它看起来不太兼容z2m,测试下来发现经常数据缺失或者压根就没反应,并且已经确认传感器本身一直在正常工作。所以不是所有东西都适配z2m插件的。
绿米传感器接入
那好了,绿米传感器既然通过z2m接入会出现问题,那就只能选别的方式了。于是就只能试试绿米网关的集成了。这里用到了homekit的协议。
绿米传感器接入绿米网关
首先,得准备一台苹果手机或平板,之后我们需要用到它。(仅配置的时候使用,实际上运作不需要它)
我是用的是绿米的M2网关,按照绿米网关的说明把绿米传感器全部接入到网关中,并测试其可用性。
HA网关接入homekit
依次点击配置,设备与服务,添加集成,出现的弹窗搜索“homekit”,选择homekit选项。之后大部分默认确定提交即可(建议在传感器选择里,把sensor和bianary_sensor选中一下)。添加成功集成后,在HA网关侧边栏的通知里我们应该能看到生成了一个二维码和代码,使用苹果设备,打开苹果家庭,添加配件,将HA网关一步一步添加到苹果家庭中。这个时候HA网关就有了homekit相关的信息配置了。
绿米网关和传感器接入homekit
如果网关和传感器你之前已经添加到homekit中了,请在苹果家庭中将其删除。另外就是如果你的传感器或者网关是基于wifi的homekit设备,并且还没有添加过homekit,那也需要先添加一次再删除。
依次点击配置,设备与服务,添加集成,出现的弹窗搜索“homekit”,选择“homekit控制器”选项。弹窗选择对应的homekit设备,填写homekit pin,一般在要添加设备的标签上。
至此,如果一切顺利,你应该可以在HA网关的概览中看到绿米的传感器数据了。到这里,我拥有的所有传感器已经全部接入到了HA网关中。
博联遥控器配置
传感器数据有了,为了实现自动化控制,我们还需要一个控制端。我这里是为了控制电视的红外信号,以及窗户的射频信号而选用了博联的RM4PRO控制器。
博联遥控器了接入HA网关
这步很简单,还是添加集成那一套,搜索broadlink,正常添加即可。添加之后就能在概览中看到了。
红外或射频学习
我还没有学习怎么把博联app中的指令学习到HA中,下面仅说一下怎么手动配置。
我们直接使用HA网关提供的工具进行学习。
点击HA网关侧边栏的开发者选项, 进入服务选项卡。服务: 搜索 “遥控:Learn Command”,并选中。(下面说的所有选项,如果使用,请在前面打对勾)目标:+选择实体,里面选择上面我们添加的博联遥控器。Device:学习的设备名称,自定义。Command:学习的指令的名称,自定义。Command Type:遥控类型,ir为红外,rf为射频。Alternative:按钮存在两种状态需为true,如开关类按钮。Timeout:命令学习时间,用于防止接收错误射频而学习错误的指令,一般设置为5s。上面的选项选择完毕之后,点击右下角调用服务,我们在通知里可以看到HA网关对于学习的提示,拿着遥控器按照流程学习就行了。
10.学习之后我们可以去HA网关的文件中确认一下。 HA网关侧边栏Terminal,打开linux命令行,进入/config/.storage文件夹下,可以看到一个名称为“broadlink_remote_xxxxxxx_codes”的文件,里面存放的就是我们学习的指令码。
到这里就学完指令了。如果不放心可以使用服务:遥控:Send Command进行测试,方法差不多和学习一样,自己玩一下就会了。
自动化配置
至此,我们已经有了传感器和遥控器,并且他们都已经全部接入到了HA网关中。接下来有两种自动化实现的方式:
HA提供的自动化功能node-red
还记得之前说的吗?所有的传感器我不仅需要自动化控制,还都需要接入到mqtt服务器中。但是绿米本身的传感器数据在绿米网关中正常,在z2m插件中有问题,所以才把绿米网关接入到了HA网关中。但是这么一来绿米传感器的数据就没法发送到mqtt中了。所以我最后还是去学习了node-red的使用方式,结果发现…这玩意是真特娘的好用啊
接下来转入nodered环节
node-red插件安装与配置
好巧啊,我买的这个HA网关已经帮我安好了,那我不客气了直接用。
nodered配置
我先说下,我还是这几天对着各种教程啃的,就只会点基本用法,各位大佬轻喷啊
nodered节点介绍
events:state →用作传感器数据触发。因为接入HA后传感器的entity中只有字符串形式的单个值,可以以它作为触发器使用。current state →用于中途判断某传感器的当前状态。状态为HA中获取的该实体的最后一次数据。switch →用于流程的选择,可根据不同的输入执行不同的流程。没有output properties属性,不会对传入的值进行更改。function →执行函数语句,本质为JavaScript语法。可在里面对msg数据进行修改并传输至下一个节点。delay →用于延时触发。mqtt out →用于发布mqtt消息至mqtt服务器mqtt in →用于接收mqtt服务器的消息,一般作为触发器使用。call service →用于触发HA中的服务,比如我们之前设置的遥控器就可以在这里进行设置自动化触发。debug →一般用于调试,不用自己写function来看数据。inject →用于作为触发节点,可设置循环型触发。time range →用于时间段筛选,以时间段分割出一天。时间段内为in,时间段外为offLS filter →用于替换time range节点的,通过node-red-contrib-light-scheduler安装。可以一周为单位进行计划控制。
nodered使用方法
其实看到就差不多明白了,首先创建节点,然后根据自己需要的流程,将节点之间使用线连接起来。将数据当做电流,可以认为这些线就是根导线。结点需要一个触发器作为开始,而没有规定具体结束方式。
到这里整个nodered怎么使用你已经学会了,快来试试吧!(不是)
比如我们需要一个检测人员活动开关灯的操作,只需要以人体感应器作为起始节点,中途判断人员的状态来选择当前是开灯还是关灯即可。之后的事情只是优化这套流程,比如设置延时防止一次误检测没人就关灯,或是将传感器数据发送至mqtt服务器用于数据统计等等。
完
参考
https://www.home-assistant.io/docs/mqtt/discovery/
https://www.home-assistant.io/docs/configuration/
https://www.zigbee2mqtt.io/supported-devices/#s=aqara
[基础教程] 【经验分享】HA官方推荐的博联遥控器学习射频和红外方法
https://www.home-assistant.io/integrations/mqtt_statestream/
[教程系列] 新手配置node-red遇到的几个难题,及完成第一个时间触发的…
Home Assistant中接入博联WiFi智能遥控
https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html