0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Ai-WB2使用HomeAssistant-C庫(kù)接入HomeAssistant

安信可科技 ? 來源:安信可科技 ? 2024-06-15 14:00 ? 次閱讀

前言

之前所有寫的《智能家居之旅》帖子代碼都是基于Ai-M61來開發(fā)的,不少大佬跟我反饋說:

Ai-M61/62只用來連接MQTT太浪費(fèi)資源了,Ai-WB2更具性價(jià)比!

我覺得有道理,所以昨天就把HomeAssistant-C 給做了一次大改,提升了耦合性,目前倉(cāng)庫(kù)的master分支也可以支持Ai-WB2了,順便再貼個(gè)庫(kù)的鏈接:

https://gitee.com/Ai-Thinker-Open/Ai-M6x_HomeAssistant-C

現(xiàn)在,跟著我來試試吧!

01 獲取Ai-WB2 SDK

SDK地址:https://gitee.com/Ai-Thinker-Open/Ai-Thinker-WB2

推薦使用git來克隆SDK:

Linux 開發(fā)環(huán)境請(qǐng)參考:Ai-WB2系列模組linux開發(fā)環(huán)境搭建Windows 開發(fā)環(huán)境請(qǐng)參考:【二次開發(fā)教程】Ai-WB2系列的eclipes搭建環(huán)境教程

務(wù)必先搭建好開發(fā)環(huán)境,并且能成功燒錄運(yùn)行。

我使用的是Linux 的開發(fā)環(huán)境,如果你已經(jīng)有Windows 的開發(fā)經(jīng)驗(yàn),也可以參考本貼來移植HomeAssistant-C ,歡迎分享你的Windows移植教程。

02 獲取HomeAssistant-C

HomeAssistant-C 只是一個(gè)連接庫(kù),不能作為工程直接運(yùn)行,所以在獲取之前先找一個(gè)可運(yùn)行工程,我這里使用的是WiFi的連接例程:

cd Ai-Thinker-WB2/applications/wifi/station

1、復(fù)制 “station”文件夾下的"bouffalo.mk"文件到

"Ai-M6x_HomeAssistant-C" 下面:

92d6ffda-2a37-11ef-a4c8-92fbcf53809c.png

2. 然后刪除"Ai-M6x_HomeAssistant-C"的"bouffalo.mk"文件的所有內(nèi)容,并添加以下內(nèi)容:

COMPONENT_ADD_INCLUDEDIRS :=./HomeAssistant-C
COMPONENT_SRCDIRS := ./HomeAssistant-C
COMPONENT_OBJS := $(patsubst %.c,%.o, $(COMPONENT_SRCS))

92e6b8bc-2a37-11ef-a4c8-92fbcf53809c.png

3.在"Makefile"文件添加以下內(nèi)容:

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

92fc15b8-2a37-11ef-a4c8-92fbcf53809c.png

4. 在main.c 文件引用接口頭文件 :

#include "homeAssistantPort.h"

5. 修改使用Ai-WB2的宏定義

HomeAssistant-C 默認(rèn)使用了Ai-M6x 的接口,需要修改成Ai-WB2的,只在"homeAssistantPort.c"文件屏蔽掉"#define CONFIG_Ai_M6x",并添加"#define CONFIG_Ai_WB2":

#define CONFIG_Ai_WB2

完成這一步之后,就可以編譯了:

make -j32

編譯成功:

9312441e-2a37-11ef-a4c8-92fbcf53809c.png

03 改代碼開始運(yùn)行

話不多說,直接復(fù)制:《智能家居之旅,第三站:Ai-M61/M62 接入HomeAssistant 實(shí)現(xiàn)點(diǎn)燈》中的測(cè)試代碼。

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服務(wù)器地址";
    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開發(fā)板"; //設(shè)備名稱
    ha_device.model = "Ai-wb2開發(fā)板";//模塊名稱
    ha_device.manufacturer = "取個(gè)名字真難";//產(chǎn)商名稱




    homeAssistant_device_init(&ha_device, ha_event_cb);

3.2 并且在 main() 函數(shù)上面粘貼回調(diào)函數(shù)及內(nèi)容,這里定義了一個(gè)開關(guān)的實(shí)體:

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
");
            //一定要加static
            static ha_sw_entity_t entity_sw1 = {
                 .name = "開關(guān)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
");


            break;
        case HA_EVENT_MQTT_COMMAND_SWITCH:
            HA_LOG_I("<<<<<<<<<<  HA_EVENT_MQTT_COMMAND_SWITCH
");
            // LOG_I("switch addr =%p", ha_dev->entity_switch->command_switch);
            HA_LOG_I(" switch %s is %s
", 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
", ha_dev->entity_switch->command_switch->name, ha_dev->entity_switch->command_switch->switch_state?"true":"flase");


            break;
        default:
            break;
    }
}

3.3 修改需要連接的路由賬號(hào)及密碼

934c77f6-2a37-11ef-a4c8-92fbcf53809c.png

3.4 在獲取到IP地址之后,啟動(dòng)HomeAssistant 連接

在 "CODE_WIFI_ON_GOT_IP"事件下添加:

homeAssistant_device_start();

 homeAssistant_device_start();

935ecafa-2a37-11ef-a4c8-92fbcf53809c.png

燒錄測(cè)試:make flash結(jié)果:

937a9bfe-2a37-11ef-a4c8-92fbcf53809c.png

// 未完待續(xù)

我預(yù)測(cè)一下,會(huì)有人問:我不會(huì)Ai-WB2二次開發(fā),能不能做個(gè)AT指令的鏈接庫(kù)?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209496
  • 智能家居
    +關(guān)注

    關(guān)注

    1928

    文章

    9562

    瀏覽量

    185114
  • 開發(fā)環(huán)境
    +關(guān)注

    關(guān)注

    1

    文章

    225

    瀏覽量

    16617

原文標(biāo)題:?智能家居之旅(5):Ai-WB2 使用HomeAssistant-C庫(kù)接入HomeAssistant

文章出處:【微信號(hào):安信可科技,微信公眾號(hào):安信可科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Ai-WB2模組HTTP客戶端POST請(qǐng)求方法

    需要準(zhǔn)備的軟硬件:Ai-WB2系列模組或者開發(fā)板,Type-C數(shù)據(jù)線。
    的頭像 發(fā)表于 10-28 09:05 ?1723次閱讀
    <b class='flag-5'>Ai-WB2</b>模組HTTP客戶端POST請(qǐng)求方法

    Ai-WB2系列模組/開發(fā)板連接亞馬遜云的方法介紹

    Ai-WB2系列模組/開發(fā)板一個(gè)
    的頭像 發(fā)表于 01-13 15:11 ?1303次閱讀
    <b class='flag-5'>Ai-WB2</b>系列模組/開發(fā)板連接亞馬遜云的方法介紹

    飛騰派折騰初見成效,HomeAssistant順利運(yùn)行!

    ,提升易用性才能更好的使用。我們朋友在搞智能家居,前端時(shí)間還跟我溝通了一些關(guān)于智能家居控制主機(jī)的事情,他代理云起智能設(shè)備做智能家裝項(xiàng)目,有時(shí)候客戶會(huì)有些設(shè)備接入需求,HomeAssistant貌似
    發(fā)表于 11-09 11:37

    【昉·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】以容器的方式安裝 HomeAssistant

    【昉·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】以容器的方式安裝 HomeAssistant 下載并啟動(dòng)容器 HomeAssisatant 官方并沒有提供基于RISC-V 的容器,所以只能自己下載
    發(fā)表于 02-21 18:07

    使用Tasmota和HomeAssistant自制Sonoff觸控模塊

    電子發(fā)燒友網(wǎng)站提供《使用Tasmota和HomeAssistant自制Sonoff觸控模塊.zip》資料免費(fèi)下載
    發(fā)表于 07-21 09:54 ?2次下載
    使用Tasmota和<b class='flag-5'>HomeAssistant</b>自制Sonoff觸控模塊

    Ai-WB2模組與手機(jī)建立SPP連接,在UART-Bluetooth LE透?jìng)髂J较聜鬏敂?shù)據(jù)

    需要準(zhǔn)備的軟硬件:Ai-WB2系列模組或者開發(fā)板,Type-C數(shù)據(jù)線,藍(lán)牙調(diào)試助手。
    的頭像 發(fā)表于 05-22 11:46 ?1888次閱讀
    <b class='flag-5'>Ai-WB2</b>模組與手機(jī)建立SPP連接,在UART-Bluetooth LE透?jìng)髂J较聜鬏敂?shù)據(jù)

    Ai-WB2系列模組中靜態(tài)內(nèi)存和動(dòng)態(tài)內(nèi)存的獲取

    eclipse軟件,bl_iot_sdk,Ai-WB2系列模組或者開發(fā)板,靜態(tài)內(nèi)存分析軟件bouffalo_parse_tool-win32。
    的頭像 發(fā)表于 09-18 09:48 ?520次閱讀
    <b class='flag-5'>Ai-WB2</b>系列模組中靜態(tài)內(nèi)存和動(dòng)態(tài)內(nèi)存的獲取

    Ai-WB2系列模組AT固件使用教程

    需要準(zhǔn)備的軟硬件:Ai-WB2系列模組或者開發(fā)板,Type-C數(shù)據(jù)線,安信可透?jìng)髟品?wù)器。
    的頭像 發(fā)表于 09-24 11:19 ?2897次閱讀
    <b class='flag-5'>Ai-WB2</b>系列模組AT固件使用教程

    安信可Ai-WB2系列模組基于TCP的MQTT連接服務(wù)器使用示例

    安信可Ai-WB2系列模組基于TCP的MQTT連接服務(wù)器使用示例
    的頭像 發(fā)表于 10-16 10:21 ?985次閱讀
    安信可<b class='flag-5'>Ai-WB2</b>系列模組基于TCP的MQTT連接服務(wù)器使用示例

    Ai-WB2模組HTTP客戶端HEAD和GET請(qǐng)求方法

    需要準(zhǔn)備的軟硬件:Ai-WB2系列模組或者開發(fā)板,Type-C數(shù)據(jù)線。
    的頭像 發(fā)表于 10-21 16:37 ?646次閱讀
    <b class='flag-5'>Ai-WB2</b>模組HTTP客戶端HEAD和GET請(qǐng)求方法

    打卡智能家居之旅(2):設(shè)備接入HomeAssistant的方法

    Ai-WB2 或者Ai-M6x等模組)接入服務(wù)器必定要使用網(wǎng)絡(luò)協(xié)議,而MQTT 是這些網(wǎng)絡(luò)協(xié)議中最常用的。例如:阿里云的物聯(lián)網(wǎng)平臺(tái),例如米家、鴻蒙等都有基于MQTT協(xié)議的接入方式,而
    的頭像 發(fā)表于 06-07 09:36 ?1445次閱讀
    打卡智能家居之旅(<b class='flag-5'>2</b>):設(shè)備<b class='flag-5'>接入</b><b class='flag-5'>HomeAssistant</b>的方法

    智能家居之旅(3):Ai-M61/M62 接入HomeAssistant 實(shí)現(xiàn)點(diǎn)燈

    上一篇我們介紹了MQTT設(shè)備如何接入HomeAssistant(打卡智能家居之旅(2):設(shè)備接入HomeAssistant的方法),這一篇就
    的頭像 發(fā)表于 06-07 10:07 ?582次閱讀
    智能家居之旅(3):<b class='flag-5'>Ai</b>-M61/M62 <b class='flag-5'>接入</b><b class='flag-5'>HomeAssistant</b> 實(shí)現(xiàn)點(diǎn)燈

    智能家居之旅(7):HomeAssistant開發(fā)板的RGB顏色

    上描述為 Light,HomeAssistant-C 上默認(rèn)也是不開啟的,所以需要在 homeAssistantDevConfig.h 當(dāng)中把#define CONFI
    的頭像 發(fā)表于 07-03 16:39 ?497次閱讀
    智能家居之旅(7):<b class='flag-5'>HomeAssistant</b>開發(fā)板的RGB顏色

    如何用一塊免費(fèi)的PCB板完成2元USB小夜燈控制器?

    HomeAssistant的方法 智能家居之旅(3):Ai-M61/M62 接入HomeAssistant 實(shí)現(xiàn)點(diǎn)燈 智能家居之旅(4):神器在手,摸魚我有!用Rd-01做個(gè)老板監(jiān)視器
    的頭像 發(fā)表于 07-30 10:33 ?283次閱讀
    如何用一塊免費(fèi)的PCB板完成<b class='flag-5'>2</b>元USB小夜燈控制器?

    智能家居之旅(15):HA傳感器采集主板低功耗設(shè)計(jì)的遭遇

    智能家居之旅(4):神器在手,摸魚我有!用Rd-01做個(gè)老板監(jiān)視器 智能家居之旅(5):Ai-WB2 使用HomeAssistant-C庫(kù)接入Ho
    的頭像 發(fā)表于 09-05 10:27 ?393次閱讀
    智能家居之旅(15):HA傳感器采集主板低功耗設(shè)計(jì)的遭遇