智能家居之旅,第八站:Text(文本)实体使用方法

[复制链接]
查看1272 | 回复9 | 2024-5-27 14:32:31 | 显示全部楼层 |阅读模式

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

要说的话

最近一直在搞AiPi-Eyes-R3的资料,搞渲染,搞3D外壳设计,就一直没时间开发新的HomeAssistant MQTT实体,最新的实体估计也是在月初开发完的,一直没来得及给大家写使用教程!有必要给大家看看上周的成果:

AiPi-Eyes-R3jlc.png

Text 实体介绍

Text 实体,也就是文本实体,它支持在HomeAssistant输入文字之后,通过MQTT下发内容到设备当中。可以理解成一个文本输入框,我们可以输入任意文字,然后发给设备。 也可以利用自动化,更新文本,例如:天气信息更新到设备。之所以叫它文本输入框,是因为在HomeAssitant它呈现的方式是这样的:

image.png

Text 实体创建

1.开启资源

和其他实体一样,在 HomeAssistant-C 当中,默认不开启Text资源,需要自行启用,在 homeAssistantDevConfig.h 中把 #define CONFIG_ENTITY_ENABLE_TEXT1,就能启用Text资源:

image.png

2.实体创建

创建Text实体也是在连接上 MQTT 服务器之后创建,只需要对 nameunique_id 就行,然后添加以下实体:

static ha_text_entity_t text_1 = {
                .name = "文字",
                .unique_id = "text1",
            };
            homeAssistant_device_add_entity(CONFIG_HA_ENTITY_TEXT, &text_1);

image.png

烧录并启动之后,就能看到HomeAssistant有文本实体。

Text 实体使用

1.接收Text内容

同样的Text内容下发也会触发事件,Text的内容下发事件为HA_EVENT_MQTT_COMMAND_TEXT_VALUE,所以需要在HA事件回调函数(ha_event_cb)当中添加HA_EVENT_MQTT_COMMAND_TEXT_VALUE的事件处理,并打印内容:

case HA_EVENT_MQTT_COMMAND_TEXT_VALUE:
            LOG_I("<<<<<<<<<<   HA_EVENT_MQTT_COMMAND_TEXT_VALUE,value=%s", ha_dev->entity_text->command_text->text_value);
            break;

image.png

有细心的同学可能发现了,信息获取的来源都是通过一个以 command_xx命名的结构体来获取的!所以以后获取信息内容,就是用对应结构体的 command_xx成员来读取就行。

验证示例:

image.png

2.Text内容更新

和其他实体更新的方法一样,也是用 homeAssistant_device_send_entity_state函数进行发布,只不过需要重新给Text实体的 text_value参数进行赋值,

使用示例:

读取到HomeAssistant 下发的内容之后,返回 12345678 给HomeAssistant。

case HA_EVENT_MQTT_COMMAND_TEXT_VALUE:
            LOG_I("<<<<<<<<<<   HA_EVENT_MQTT_COMMAND_TEXT_VALUE,value=%s", ha_dev->entity_text->command_text->text_value);
            //查找实体
            ha_text_entity_t* text = homeAssistant_fine_entity(CONFIG_HA_ENTITY_TEXT, "text1");
            //清空原有的内容
            memset(text->text_value, 0, strlen(text->text_value));
            //赋值内容为 12345678
            sprintf(text->text_value, "%d", 12345678);
            //更新内容
            homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_TEXT, text, 0);
            break;

验证结果

输入之后下发,然后刷新一下网页就能发现,文字备改变了

1.gif

总结

Text实体的使用和其他实体差不多,没有什么特殊的参数需要配置,所以简单说说就行,这周给大家开发number实体!

本帖被以下淘专辑推荐:

回复

使用道具 举报

WT_0213 | 2024-5-27 15:16:35 | 显示全部楼层
电子猫眼看着很厉害呀
回复 支持 反对

使用道具 举报

起个名字好难啊 | 2024-5-27 15:44:40 | 显示全部楼层
WT_0213 发表于 2024-5-27 15:16
电子猫眼看着很厉害呀

我们还在改软件,应该快要发布了
回复 支持 反对

使用道具 举报

爱笑 | 2024-5-27 16:30:58 | 显示全部楼层
学起来学起来!
用心做好保姆工作
回复 支持 反对

使用道具 举报

1084504793 | 2024-5-27 16:53:58 | 显示全部楼层
回复

使用道具 举报

iiv | 2024-5-27 19:55:42 | 显示全部楼层
真的爱了啊
回复 支持 反对

使用道具 举报

bzhou830 | 2024-5-28 06:06:11 | 显示全部楼层
外壳很漂亮,爱了爱了
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

WT_0213 | 2024-5-28 08:47:27 | 显示全部楼层
起个名字好难啊 发表于 2024-5-27 15:44
我们还在改软件,应该快要发布了

最好是屏幕那面也可以开启屏幕可以观察外面情况呢
回复 支持 反对

使用道具 举报

bzhou830 | 2024-5-28 11:01:04 | 显示全部楼层
起个名字好难啊 发表于 2024-5-27 15:44
我们还在改软件,应该快要发布了

莫哥, 外壳可以分享个step文件吗
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

起个名字好难啊 | 2024-5-28 13:59:49 | 显示全部楼层
bzhou830 发表于 2024-5-28 11:01
莫哥, 外壳可以分享个step文件吗

过几天先,等解决一个问题
回复 支持 反对

使用道具 举报

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

本版积分规则