3.2 新建连接程序
3.2.1 复制例程并且重命名
新建程序我建议直接复制原有的工程:HomeAssistant_basic,这个例程中有一个开关的实体,适合点灯,但是连接的服务器是安信可的MQTT服务器,只需要做一下简单的修改就可以实现连接了。你可以使用VS code 的复制粘贴功能(因为大家都已经知道了,所以我就不打算再讲),也可以使用命令行 的"cp"指令(为了能够正常运行,建议命名和我的保持一致):
cp HomeAssistant_basic/ -r HomeAssistant_switch
复制结果如下:
3.2.2 修改烧录配置文件
打开 “
HomeAssistant_switch
” 下的 “flash_prog_cfg.ini” 文件,把
第 26 行
“
filedir = ./build/build_out/HomeAssistant_basic_$(CHIPNAME)*.bin
”改成:
filedir = ./build/build_out/HomeAssistant_switch_$(CHIPNAME)*.bin
如下:
一定要改好,不要再烧录的时候回出错。
3.2.3 修改WiFi 连接
这个例程有一个简单的WiFi 连接,默认连接的WiFi 是:
备注
:这个是笔者的路由器名称和密码,如果不修改的话,是不能正常连接网络的。
VScode 找到 “HomeAssistant_example/HomeAssistant_switch/components/wifi”目录下的“wifi_event.c”文件并打开,编辑界面找到
第 62 行
,把:
staWiFiConnect("FAE@Seahi", "fae12345678");
里面的参数改成你自己的WiFi名称和密码,
切记WiFi名称一定是2.4GHz的:
staWiFiConnect(“WiFi名称”, "密码");
3.2.4 修改MQTT 配置
在例程当中,MQTT配置使用的是默认的MQTT参数,这些默认参数可以在 "Ai-M6x_HomeAssistant-C/HomeAssistant-C/"目录中的 “homeAssistantDevConfig.h”文件中找到:
当然,你可以直接修改配置文件里面相关宏定义,也可以在main.c 中修改参数,所以就有两种方法修改MQTT配置参数。
在 HomeAssistant_switch/main目录中打开 main.c ,编辑页下拉到
第 75 行
,回车添加以下内容
:
ha_device.mqtt_info.mqtt_clientID="Ai-M6X_Kit_Switch";
ha_device.mqtt_info.mqtt_host="你的服务器地址";
ha_device.mqtt_info.port=1883;
ha_device.mqtt_info.mqtt_username="HomeAssistant_switch";
一定要记住,服务器地址要和HomeAssistant 上的MQTT连接的服务器地址保持一致,比如我的HomeAssistant 上MQTT连接的地址:
那MQTT 配置就是这样:
ha_device.mqtt_info.mqtt_clientID="Ai-M6X_Kit_Switch";
ha_device.mqtt_info.mqtt_host="wx.ai-thinker.com";
ha_device.mqtt_info.port=1883;
ha_device.mqtt_info.mqtt_username="HomeAssistant_switch";
直接打开Ai-M6x_HomeAssistant-C/HomeAssistant-C/"目录中的 “homeAssistantDevConfig.h”文件,然后修改宏定义后面的内容。
不推荐的原因
:homeAssistantDevConfig.h 文件是 HomeAssistant-C库里面的内置文件,一旦更新仓库之后还需要重新配置一遍。你的程序就没办法按照之前的配置连接到正确的MQTT服务器上。
3.2.5 修改实体信息
原工程 HomeAssistant_basic 中的实体有个唯一的信息,它在你的HomeAssistant 中表示这个实体的ID,所以必须要修改,在 HomeAssistant_switch/main的main.c中找到
第 38 行
,把 .unique_id= "switch1"改成:
.unique_id = "switch_v1",
可以改成其他的数值,只要是确保唯一性就行,推荐使用MAC地址来赋值,像这样:
static ha_sw_entity_t entity_sw1 = {
.name = "开关1",
.icon = "mdi:power",
};
entity_sw1.unique_id = pvPortMalloc(16);
uint8_t STA_MAC[6] = { 0 };
aiio_wifi_sta_mac_get(STA_MAC);
sprintf(entity_sw1.unique_id, "sw_%02x%02x", STA_MAC[4], STA_MAC[5]);
然后就可以烧录测试,查看连接状况情况了,运行:
cd <b style="background-color: rgb(255, 255, 255);">HomeAssistant_switchb>
连接成功的LOG:
查看HomeAssistant 中的连接情况:
3.2.6 修改设备信息
当然设备信息也是可以改的,只需要在MQTT 配置信息的下面加入以下配置:
ha_device.name="我的板子";
ha_device.model="Ai-M61开发板";
ha_device.manufacturer="取个名字真难";
添加之后如下:
重新烧录上线之后,HomeAssistant 的设备信息: