一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Ai-WB2使用HomeAssistant-C庫接入HomeAssistant

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

前言

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

Ai-M61/62只用來連接MQTT太浪費資源了,Ai-WB2更具性價比!

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

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)境請參考:Ai-WB2系列模組linux開發(fā)環(huán)境搭建Windows 開發(fā)環(huán)境請參考:【二次開發(fā)教程】Ai-WB2系列的eclipes搭建環(huán)境教程

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

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

02 獲取HomeAssistant-C

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

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

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

"Ai-M6x_HomeAssistant-C" 下面:

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

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

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

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

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

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

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

編譯成功:

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

03 改代碼開始運行

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

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開發(fā)板"; //設備名稱
    ha_device.model = "Ai-wb2開發(fā)板";//模塊名稱
    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
");
            //一定要加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
");


            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 修改需要連接的路由賬號及密碼

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

3.4 在獲取到IP地址之后,啟動HomeAssistant 連接

在 "CODE_WIFI_ON_GOT_IP"事件下添加:

homeAssistant_device_start();

 homeAssistant_device_start();

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

燒錄測試:make flash結果:

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

// 未完待續(xù)

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

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

    關注

    87

    文章

    11420

    瀏覽量

    212324
  • 智能家居
    +關注

    關注

    1932

    文章

    9713

    瀏覽量

    188670
  • 開發(fā)環(huán)境

    關注

    1

    文章

    237

    瀏覽量

    16974

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

文章出處:【微信號:安信可科技,微信公眾號:安信可科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Ai-WB2模組HTTP客戶端POST請求方法

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

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

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

    飛騰派折騰初見成效,HomeAssistant順利運行!

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

    【幸狐Omni3576邊緣計算套件試用體驗】安裝homeassistant的體驗記錄

    云的: c2b4cfc215074912827f9357c207eff5.mirror.swr.myhuaweicloud.com/homeassistant/home-assistant
    發(fā)表于 03-19 11:58

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

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

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

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

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

    需要準備的軟硬件:Ai-WB2系列模組或者開發(fā)板,Type-C數據線,安信可透傳云服務器。
    的頭像 發(fā)表于 09-24 11:19 ?3534次閱讀
    <b class='flag-5'>Ai-WB2</b>系列模組AT固件使用教程

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

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

    Ai-WB2模組HTTP客戶端HEAD和GET請求方法

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

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

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

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

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

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

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

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

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

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

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

    BW21-CBV-Kit如何接入HomeAssistant實時查看AI攝像頭畫面

    看過這么多關于 HomeAssistant 教程,應該有很多小伙伴已經搭建起自己的 HomeAssistant 了,HomeAssistant 還是很強大的,只要設備可以進行 RTSP 推流就可以在
    的頭像 發(fā)表于 02-18 13:48 ?372次閱讀
    BW21-CBV-Kit如何<b class='flag-5'>接入</b><b class='flag-5'>HomeAssistant</b>實時查看<b class='flag-5'>AI</b>攝像頭畫面