打卡智能家居之旅(5):Ai-WB2 使用HomeAssistant-C库接入HomeAssistant
前言
之前所有写的《智能家居之旅》帖子代码都是基于Ai-M61来开发的,不少大佬跟我反馈说:
Ai-M61/62只用来连接MQTT太浪费资源了,Ai-WB2更具性价比!
我觉得有道理,所以昨天就把HomeAssistant-C 给做了一次大改,提升了耦合性,目前仓库的master分支也可以支持Ai-WB2了,顺便再贴个库的链接:
https://gitee.com/Ai-Thinker-Open/Ai-M6x_HomeAssistant-C
现在,跟着我来试试吧!
01 获取Ai-WB2 SDK
SDK地址:https://gitee.com/Ai-Thinker-Open/Ai-Thinker-WB2
推荐使用git来克隆SDK:
Linux 开发环境请参考:Ai-WB2系列模组linux开发环境搭建
Windows 开发环境请参考:【二次开发教程】Ai-WB2系列的eclipes搭建环境教程
✔务必先搭建好开发环境,并且能成功烧录运行。
我使用的是Linux 的开发环境,如果你已经有Windows 的开发经验,也可以参考本贴来移植HomeAssistant-C ,欢迎分享你的Windows移植教程。
02 获取HomeAssistant-C
HomeAssistant-C 只是一个连接库,不能作为工程直接运行,所以在获取之前先找一个可运行工程,我这里使用的是WiFi的连接例程:
cd Ai-Thinker-WB2/applications/wifi/station
1、复制 “station”文件夹下的"bouffalo.mk"文件到
"Ai-M6x_HomeAssistant-C" 下面:
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":
#define CONFIG_Ai_WB2
完成这一步之后,就可以编译了:
make -j32
编译成功:
03 改代码开始运行
话不多说,直接复制:《智能家居之旅,第三站: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
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);
break;
case HA_EVENT_MQTT_DISCONNECT:
HA_LOG_I("<<<<<<<<<< HA_EVENT_MQTT_DISCONNECT\r\n");
break;
case HA_EVENT_MQTT_COMMAND_SWITCH:
HA_LOG_I("<<<<<<<<<< HA_EVENT_MQTT_COMMAND_SWITCH\r\n");
// LOG_I("switch addr =%p", ha_dev->entity_switch->command_switch);
HA_LOG_I(" switch %s is %s\r\n", ha_dev->entity_switch->command_switch->name, ha_dev->entity_switch->command_switch->switch_state?"true":"flase");
int ret = homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_SWITCH, ha_dev->entity_switch->command_switch, ha_dev->entity_switch->command_switch->switch_state);
if (ret!=-1)HA_LOG_I("%s send entity suceess,state=%s\r\n", ha_dev->entity_switch->command_switch->name, ha_dev->entity_switch->command_switch->switch_state?"true":"flase");
break;
default:
break;
}
}
3.3 修改需要连接的路由账号及密码
3.4 在获取到IP地址之后,启动HomeAssistant 连接
在 "CODE_WIFI_ON_GOT_IP"事件下添加:
homeAssistant_device_start();
烧录测试:make flash结果:
未完待续
我预测一下,会有人问:我不会Ai-WB2二次开发,能不能做个AT指令的链接库?
- |
- +1 赞 0
- 收藏
- 评论 0
本文由中国颜值的半壁江山转载自安信可科技 微信公众号,原文标题为:智能家居之旅(5):Ai-WB2 使用HomeAssistant-C库接入HomeAssistant,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
Ai-BS21系列烧录指导——开发板or模组
本篇以Ai-BS21-32S_Kit为例指导烧录固件,这是由深圳市安信可科技有限公司开发的蓝牙星闪开发板。该模块核心处理器芯片Hi2821是一款高集成2.4GHzSoCBLE&SLE芯片,支持BLE5.4/SLE1.0,集成RF电路,RF包含功率放大器PA、低噪声放大器、TX/RXSwitch、集成电源管理等模块,支持1M/2M/4M3种带宽,最大支持12Mbit/s速率。
设计经验 发布时间 : 2024-06-24
星闪开发板or模组烧录指导
Ai-BS21-32S_Kit是由安信可科技开发的蓝牙星闪开发板。该模块核心处理器芯片Hi2821是一款高集成2.4GHzSoCBLE&SLE芯片,支持BLE5.4/SLE1.0,集成RF电路,RF包含功率放大器PA、低噪声放大器、TX/RXSwitch、集成电源管理等模块,支持1M/2M/4M3种带宽,最大支持12Mbit/s速率。
设计经验 发布时间 : 2024-06-21
安信可星闪开发板与西门子PLC通信的应用探索
星闪技术作为一项中国原生的、具有竞争力的近距离无线通信技术,通过技术创新和标准体系建设,打破了传统蓝牙和Wi-Fi在特定应用领域的一些局限性,为物联网、车联网、工业互联网等场景带来了更高性能、更安全、更具成本效益的无线连接解决方案。随着相关产品的不断推出和生态系统的持续完善,星闪技术有望在全球范围内产生深远影响,成为未来短距离无线通信领域的重要力量。
设计经验 发布时间 : 2024-06-24
低能耗、低时延、快速度,星闪开发板Ai-BS21-32S-Kit更多场景应用,邀您一起来探索!
万众期待的星闪开发板上架了!Ai-BS21-32S-Kit 低延迟,高效率!话不多说!先回顾下基本参数信息。
产品 发布时间 : 2024-06-23
【外设移植】基于AI-WB2-32S开发板的SG90舵机控制案例
介绍Ai-WB2模组驱动舵机控制(SG90)的技术要求和方案。
应用方案 发布时间 : 2024-11-05
高性能开发板Ai-M61-32S-Kit助力Wi-Fi6+BLE5.3模组
Ai-M61-32S-Kit是针对Ai-M61-32S模组设计的开发板。Ai-M61-32S是由深圳市安信可科技有限公司开发的Wi-Fi6+BLE5.3模组,该模组搭载BL618芯片作为核心处理器,支持Wi-Fi 802.11b/g/n/ax协议和BLE协议,支持Thread协议。
产品 发布时间 : 2024-06-22
BW16 Combo-AT指令的开发板和旧版AT指令的开发板不通用吗
指令格式不同,不通用
技术问答 发布时间 : 2024-09-30
复旦微电子推出板载芯片FM33LE026的demo开发板FM33LE0xx,助于客户测试开发和评估
FM33LE0xx开发板是上海复旦微电子集团有限公司提供给客户测试开发和评估的一款demo板,其板载的芯片型号为FM33LE026 (ARM Cortex-M0内核) 芯片。该芯片最高主频为64Mhz,RAM为16KB,Flash为128KB。
原厂动态 发布时间 : 2022-10-10
【应用】ROHM环境光接近传感器模组RPR-0521RS助力智能家居主控面板显示屏,开发简单、功耗低
现多数智能家居主控面板都带有显示屏,本文推荐ROHM推出的环境光接近传感器模组RPR-0521RS用于其中,当客户进入传感器感应距离时才会唤醒主控工作,有效解决常亮问题。此外使用RPR-0521RS能调整显示板及摁键的亮度,从而给用户更好的使用体验。
应用方案 发布时间 : 2021-02-23
TG-12F开发板的开发资料
https://blog.csdn.net/Boantong_/article/details/110559410
技术问答 发布时间 : 2024-09-30
【技术】中移芯昇MCU芯片CM32M101A开发板的使用方法
CM32M101A是中移芯昇推出的首颗MCU芯片。目前已在智能门锁、红外测温仪、工业衣服裁剪机器和挂件运输系统、打印机喷头控制板、车联网北斗数据安全终端、智能双路充电插座相关场景进行应用方案拓展。
技术探讨 发布时间 : 2022-11-20
SMART HOME MICRADAR PERCEPTION Mmwave radar solution provider
型号- R77ABH1,24G-RADAR-EVB,R24ETT3,R24BBD1,R24ETT1,R24ETT2,R60BBD1,R60ATR2,R60AFD1,R60ATR1,R60ATT1,R24DVD1,R60ABD1,R60AMP1,R60APS1
基于CW32的智能家居系统
该系统采用CW32F030单片机作为核心控制器,通过各种传感器实时监测室内环境参数,并根据预设的阈值进行相应控制。例如,当室内光照不足时,系统会自动打开灯光,确保室内光线充足。室内温湿度数据和空气质量通过屏幕显示,并实时上传到云平台,以实现远程监控。
设计经验 发布时间 : 2024-02-07
电子商城
现货市场
服务
可加工PCB层数:1-30层;板材类型:FR4板/铝基板/铜基板/刚扰结合板/FPC板/高精密板/Rogers高频板;成品尺寸:5*5mm~53*84cm;板厚:0.1~5.0mm。
最小起订量: 1 提交需求>
可贴PCB板厚范围:0.6~2.0mm,也支持生产软硬接合板,拼板长宽:50*50mm~550*500mm,PCBA快速贴片支持01005CHIP元件。
最小起订量: 1片 提交需求>
登录 | 立即注册
提交评论