文章介绍了如何将HomeAssistant-C进行改进以支持Ai-WB2,详细阐述了如何获取并配置Ai-WB2 SDK和HomeAssistant-C,以及如何修改代码开始运行。文章还包含了一些关于开发环境和移植教程的信息。
Ai-WB2更具性价比,将HomeAssistant-C改进以支持Ai-WB2能够更充分利用Ai-WB2的资源,实现更高效、更便捷的智能家居控制。
包括复制“station”文件夹下的文件、修改“bouffalo.mk”文件内容、在“Makefile”文件添加内容等步骤。
包括添加homeAssisatnt_device_t变量、回调函数定义以及修改需要连接的路由账号和密码等步骤。
提供了关于Linux和Windows开发环境的搭建教程,以及移植HomeAssistant-C到Windows的教程链接。
2. 然后删除"
Ai-M6x_HomeAssistant-C
"的"
bouffalo.mk
"文件的所有内容,并添加以下内容:
COMPONENT_ADD_INCLUDEDIRS :=./HomeAssistant-C
COMPONENT_SRCDIRS := ./HomeAssistant-C
COMPONENT_OBJS := $(patsubst %.c,%.o, $(COMPONENT_SRCS))
3.在"Makefile"文件添加以下内容:
INCLUDE_COMPONENTS += axk_common tcp_transport http-parser axk_tls axk_mqtt cjson
INCLUDE_COMPONENTS += Ai-M6x_HomeAssistant-C
EXTRA_COMPONENT_DIRS += $(PROJECT_PATH)/Ai-M6x_HomeAssistant-C
4. 在main.c 文件引用接口头文件 :
#include "homeAssistantPort.h"
5. 修改使用Ai-WB2的宏定义
HomeAssistant-C 默认使用了Ai-M6x 的接口,需要修改成Ai-WB2的,只在"
homeAssistantPort.c
"文件屏蔽掉"
#define CONFIG_Ai_M6x
",并添加"#define CONFIG_Ai_WB2":
完成这一步之后,就可以编译了:
编译成功:
话不多说,直接复制:《
智能家居之旅,第三站:Ai-M61/M62 接入HomeAssistant 实现点灯
》
中的测试代码。
3.1 在main.c 文件的第 172 行 下面添加:
static homeAssisatnt_device_t ha_device;
ha_device.mqtt_info.mqtt_clientID = "Ai-WB2_Kit_Switch";
ha_device.mqtt_info.mqtt_host = "mqtt服务器地址";
ha_device.mqtt_info.port = 1883;
ha_device.mqtt_info.mqtt_username = "HomeAssistant_switch";
ha_device.mqtt_info.mqtt_password = "12345678";
ha_device.name = "我的Ai-WB2开发板";
ha_device.model = "Ai-wb2开发板";
ha_device.manufacturer = "取个名字真难";
homeAssistant_device_init(&ha_device, ha_event_cb);
3.2 并且在 main() 函数上面粘贴回调函数及内容,这里定义了一个开关的实体:
void ha_event_cb(ha_event_t event, homeAssisatnt_device_t* ha_dev)
{
switch (event)
{
case HA_EVENT_MQTT_CONNECED:
HA_LOG_I("<<<<<<<<<< HA_EVENT_MQTT_CONNECED\r\n");
static ha_sw_entity_t entity_sw1 = {
.name = "开关1",
.icon = "mdi:power",
.unique_id = "ai-wb2_sw1",
};
homeAssistant_device_add_entity(CONFIG_HA_ENTITY_SWITCH, &entity_sw1);
homeAssistant_device_send_status(HOMEASSISTANT_STATUS_ONLINE);
homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_SWITCH, &entity_sw1, 0