智能家居软件篇——用NodeRed在HomeAssistant中自动发现实体--传感器

01 前言

本文章原文发表于我的微信公众号,请大家关注阅读,涉及的源代码等都在公众号,扫描以下二维码即可关注。

02概述

上一篇中我们已经把解析的Modbus数据通过NodeRed发送至HomeAssistant,如何在HA中生成需要的实体,实现方法一般是在NodeRed中安装HA节点来实现,这种方式我没有采用。我的原则就是主动权必须掌握在自己手中,不能过多依赖三方节点。

另外一种方法就是使用函数节点实现MQTT自动发现功能,当然这和安装节点也是一样的原理,只是这种方式更为灵活,zigbee2mqtt在HA中自动发现实体也是这个原理。

03定义函数

通过查阅HomeAssistant相关文档可知,生成MQTT传感器实体需要定义如下值:

    object_id、unique_id:用于生成实体的ID;

    state_topic:用于获取状态或数值的主题;

    unit_of_measurement:单位(不需要需注释掉或删除);

    device_class:设备类型;

    icon:自定义的图标(不需要需注释掉或删除);

    name:前端显示的名称;

以上是生成传感器的常用参数,当然还有发现主题需要遵循特定的格式例如:homeassistant/sensor/garden/config,根据以上写出函数节点如下:

图片

函数代码中,已把需要自行设定的值定义引用,正常情况下修改的上面定义的值id1~id7即可,各值已经注释说明,需要特别说的对如下:

1.id1  如果需要在HA能源面板显示,实体命名则需以_energy结尾;

2.id3 设备类别,需要根据HA定义的设备类型字段填写,例如:温度为:temperature,湿度:humidity,其他参照HA相关文档

3.id5 用于获取状态或数值的主题,必须填写正确,与前面在数据解析时设定的topic保持一致,否则将不能获取数据;

4.id6 自定义的图标,如果不设置或为空,请把下方'icon':id6删除或注释掉,否则将不能发现实体;

5.id7 是在HA中的路径,homeassistant/sensor/不要更改,在传感器实体中需使用sensor用于标识,示例后面的/energy根据自己需要设置,可以不设,设置的好处是方便分类查看,设置的路径级别不能超过两级,否则HA也不能发现实体。

04发布至HomeAssistant

完成以上工作后就可以把自动发现数据发布至HA了,流程如下:

图片

首先用一个inject注入节点启动函数节点,在函数节点后添加一个debug节点可以看到函数生成的数据如下:

图片

检查数据无误后就可以把数据发布至HA了,用一个mqtt out节点连接HA,示例如下:

图片

手动触发一次inject注入节点就可以把数据发布至HA,这时就可以在HA中看到生成的实体:

图片

05特别说明

数据调试完成后,建议把注入节点设置成立即执行,这样在noderd重启会部署时都会运行一次,另外自动发现连接的mqtt服务器的“保留”选项设置成“是”,否则在HA重启时会丢失实体,当然运行一次注入节点即可恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值