『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 842|回复: 4

[基础教程] 智能家居之旅,第八站:Text(文本)实体使用方法

[复制链接]

11

主题

27

帖子

152

积分

注册会员

Rank: 2

积分
152
金钱
125
HASS币
0
发表于 2024-6-26 10:15:34 | 显示全部楼层 |阅读模式
本帖最后由 安信可科技 于 2024-6-26 10:15 编辑

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

                               
登录/注册后可看大图

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

                               
登录/注册后可看大图

Text 实体创建

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

                               
登录/注册后可看大图

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

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


                               
登录/注册后可看大图

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

Text 实体使用

1.接收 Text 内容
同样的 Text 内容下发也会触发事件,Text 的内容下发事件为 HA_EVENT_MQTT_COMMAND_TEXT_VALUE,所以需要在 HA 事件回调函数(ha_event_cb)当中添加 HA_EVENT_MQTT_COMMAND_TEXT_VALUE 的事件处理,并打印内容:
static ha_text_entity_t text_1 = {
                .name = "文字",
                .unique_id = "text1",
            };
            homeAssistant_device_add_entity(CONFIG_HA_ENTITY_TEXT, &text_1);


                               
登录/注册后可看大图

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


                               
登录/注册后可看大图

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;

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


                               
登录/注册后可看大图

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



回复

使用道具 举报

4

主题

114

帖子

653

积分

高级会员

Rank: 4

积分
653
金钱
539
HASS币
0
发表于 2024-6-26 10:40:45 | 显示全部楼层
用nodered创建是不是更简单
回复

使用道具 举报

6

主题

86

帖子

586

积分

高级会员

Rank: 4

积分
586
金钱
500
HASS币
0
发表于 2024-6-26 11:53:13 | 显示全部楼层
不懂觉厉,主要用不到,所以也懒的研究,等用到直接来翻大佬教程
回复

使用道具 举报

11

主题

27

帖子

152

积分

注册会员

Rank: 2

积分
152
金钱
125
HASS币
0
 楼主| 发表于 2024-6-26 13:54:53 | 显示全部楼层
snowing 发表于 2024-6-26 10:40
用nodered创建是不是更简单

这个没研究过
回复

使用道具 举报

11

主题

27

帖子

152

积分

注册会员

Rank: 2

积分
152
金钱
125
HASS币
0
 楼主| 发表于 2024-6-26 13:59:53 | 显示全部楼层
hnjzjql 发表于 2024-6-26 11:53
不懂觉厉,主要用不到,所以也懒的研究,等用到直接来翻大佬教程

可以呀,有一整套的教程,从入门开始,在前面的帖子
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 16:20 , Processed in 0.179409 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表