智能家居之旅,第六站:HomeAssistant-C传感器实体使用方法

[复制链接]
查看1701 | 回复11 | 2024-5-22 14:21:28 | 显示全部楼层 |阅读模式

本帖最后由 起个名字好难啊 于 2024-5-22 14:21 编辑

日常前言

前段时间的外设移植活动中,有不少大佬给Ai-M61移植了很多传感器设备,应该还很少人把传感器的监控信息实现远程查看吧!那么今天,就带大家把传感器读取到的值上传到HomeAssistant,实现远程监控。 如果还没有搭建好HomeAssistant的,请看完 智能家居之旅 系列的其他帖子:

智能家居之旅,第一站:了解HomeAssistant 智能家居之旅,第二站:设备接入HomeAssistant的方法 智能家居之旅,第三站:Ai-M61/M62 接入HomeAssistant 实现点灯

image.png

传感器实体创建

1.开启传感器资源

在HomeAssistant-C 当中,默认不开启传感器资源,需要自行启用,在 homeAssistantDevConfig.h 中把 #define CONFIG_ENTITY_ENABLE_SENSOR1,就能启用传感器资源:

image.png

2.创建传感器实体

和创建开关实体一样,创建传感器实体也是在连接上MQTT服务器之后创建,只需要对 nameunique_id就行,然后添加以下实体:

//创建传感器实体
            static ha_sensor_entity_t sensor1 = {
                .name = "温度",
                .unique_id = "tmp1",
            };
            homeAssistant_device_add_entity(CONFIG_HA_ENTITY_SENSOR, &sensor1);

image.png

烧录程序平且上电之后,就能在HomeAssistant的MQTT集成当中看到具有传感器的设备:

image.png

3.上传传感器值

在实际应用当中,希望在读取传感器成功之后,马上上传当前值,所以我推荐使用 unique_id查找实体的方式来上传传感器的值,使用 homeAssistant_device_send_entity_state函数和 homeAssistant_fine_entity函数的结合来上传数据,比如上传数值:95:

homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_SENSOR,homeAssistant_fine_entity(CONFIG_HA_ENTITY_SENSOR, "tmp1"), 95);

函数会自动找到 unique_id=tmp1 的传感器实体,然后上传 95 这个值,效果如下:

image.png

传感器种类设置

在HomeAssistant 当中,给传感器实体定义了很多种类(Class),定义了种类的话,HomeAssistant会自动配置该传感器的图标,单位等信息。例如:

image.png HomeAssistant 支持的传感器种类可以参考:https://www.home-assistant.io/integrations/sensor/#device-class 所以HomeAssistant-C 也给大家加入了传感器种类配置,在 homeAssistantMQTT.h 文件中有个 ha_sensor_class_t枚举类型,里面描述了HomeAssistant 传感器的所有类型,因此,大家只需要在创建实体的时候,对 device_class进行赋值即可,例如:

static ha_sensor_entity_t sensor1 = {
                .name = "温度",
                .unique_id = "tmp1",
                .device_class=Class_temperature,//配置为温度传感器
            };

配置示例:

1.温度传感器

static ha_sensor_entity_t sensor1 = {
                .name = "温度",
                .unique_id = "tmp1",
                .device_class=Class_temperature,//配置为温度传感器
            };

2.湿度传感器

static ha_sensor_entity_t sensor_humi = {
                .name = "湿度",
                .unique_id = "humi1",
                .device_class=Class_humidity,//配置为湿度传感器
            };

3.光照传感器

static ha_sensor_entity_t sensor_lux = {
                .name = "光照度",
                .unique_id = "lli1",
                .device_class=Class_illuminance,//配置为光照度传感器
            };

image.png

其他类型的传感器大家可以根据枚举来试试!

本帖被以下淘专辑推荐:

回复

使用道具 举报

1084504793 | 2024-5-22 14:22:37 | 显示全部楼层
回复

使用道具 举报

WT_0213 | 2024-5-22 14:27:19 | 显示全部楼层
来学习了,太厉害了
回复 支持 反对

使用道具 举报

爱笑 | 2024-5-22 14:41:50 | 显示全部楼层
有M61开发板的同学可以试着玩起来了!
用心做好保姆工作
回复 支持 反对

使用道具 举报

望风阁 | 2024-5-22 14:59:43 来自手机 | 显示全部楼层
爱笑 发表于 2024-5-22 14:41
有M61开发板的同学可以试着玩起来了!

正在学习
回复 支持 反对

使用道具 举报

bzhou830 | 2024-5-22 16:51:50 | 显示全部楼层
试着玩起来
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

lazy | 2024-5-22 22:20:18 | 显示全部楼层
过来学习
回复

使用道具 举报

lovzx | 2024-5-23 09:04:11 | 显示全部楼层
学习
回复

使用道具 举报

jkernet | 2024-5-23 09:47:26 | 显示全部楼层
学习了
回复

使用道具 举报

qhsj | 2024-5-24 00:10:11 | 显示全部楼层
向大佬学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则