伙伴們,還記得之前小美讓我做的“老板監(jiān)視器”嗎?不記得不要緊,連接在這:神器在手,摸魚我有?巧用雷達(dá)感應(yīng)器的驚險(xiǎn)一刻。
就是這個(gè)小東西:

這個(gè)DEMO所用的就是安信可的Rd-01 人體存在雷達(dá)傳感器,這個(gè)雷達(dá)傳感器的特點(diǎn)參考資料:https://docs.ai-thinker.com/rd-01。
自帶的WiFi 功能,可以接入任何云平臺(tái),這次接入的就是HomeAssistant,通過配置自動(dòng)化檢測(cè),實(shí)現(xiàn)平板電腦或手機(jī)的彈窗提示,達(dá)到警告作用。
這次要講的就是類似Rd-01 雷達(dá)傳感器,這種只有0和1的二進(jìn)制傳感器如何使用HomeAssistant-C 庫接入HomeAssistant。

一、binary Sensor 介紹
binary Sensor 實(shí)體,中文名叫:二進(jìn)制傳感器。
顧名思義數(shù)據(jù)只有0和1兩種狀態(tài),我們所用過的紅外人體存在傳感器、火焰?zhèn)鞲衅?、Rd-01人體存在雷達(dá)、甚至是手扶梯的人體檢測(cè)都屬于二進(jìn)制傳感器。所以,這些傳感器在HomeAssistant對(duì)它們的配置是最簡(jiǎn)單的。
好的,binary Sensor 就(實(shí))介(在)紹(編)完(不)了(下去了)!
二、binary Sensor 實(shí)體創(chuàng)建
這一小節(jié)需要大家已經(jīng)實(shí)現(xiàn)了“switch”實(shí)體的創(chuàng)建并完成點(diǎn)燈,如果你還沒有是實(shí)現(xiàn)這個(gè),馬上、立刻去看:智能家居之旅,第三站:Ai-M61/M62 接入HomeAssistant 實(shí)現(xiàn)點(diǎn)燈。
因?yàn)橹笾唤榻B對(duì)應(yīng)的實(shí)體怎么使用,不會(huì)繼續(xù)介紹其他內(nèi)容,為了方便測(cè)試,代碼更不會(huì)重新建立工程。
打開之前創(chuàng)建的"HomeAssistant_switch"工程中"main.c"文件,在"ha_event_cb"回調(diào)函數(shù)中的 HA_EVENT_MQTT_CONNECED 事件下創(chuàng)建實(shí)體:
//創(chuàng)建二進(jìn)制實(shí)體
static ha_Bsensor_entity_t entity_binary_sensor = {
.name = "二進(jìn)制傳感器",//給個(gè)名字
.unique_id = "binary_sensor1",//聲明一個(gè)唯一的id 號(hào)
};
//向HomeAssistant 添加二進(jìn)制實(shí)體
homeAssistant_device_add_entity(CONFIG_HA_ENTITY_BINARY_SENSOR, &entity_binary_sensor);
代碼如下:

就這樣,一個(gè)二進(jìn)制實(shí)體就創(chuàng)建好了,燒錄驗(yàn)證一下:

可以看到,剛剛創(chuàng)建的"二進(jìn)制傳感器"已經(jīng)在之前建立的設(shè)備當(dāng)中了,但是它處于不可用狀態(tài),這個(gè)怎么辦呢?
方法一:復(fù)位一下開發(fā)板
方法二:等我修復(fù)...........
三、上傳binary Sensor
binary Sensor 傳感器已經(jīng)創(chuàng)建好了,那下一步就是數(shù)據(jù)上傳了。
其實(shí)HomeAssistant-C 上傳數(shù)據(jù)只需要一個(gè)函數(shù):homeAssistant_device_send_state。上傳binary sensor 數(shù)據(jù):
homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_BINARY_SENSOR, <實(shí)體節(jié)點(diǎn)>, <0/1>);
比如:

燒錄并且重新復(fù)位之后,能看到HomeAssistant中的 "二進(jìn)制傳感器"處于"開啟"狀態(tài)。
homeAssistant_device_send_state函數(shù)的第二個(gè),是一個(gè)實(shí)體的節(jié)點(diǎn),為了大家能夠在任何地方能夠正確獲取到需要的節(jié)點(diǎn),HomeAssistant-C 庫提供了一個(gè)函數(shù):
homeAssistant_fine_entity(char* entity_type,const char* unique_id)
在使用這個(gè)函數(shù)的時(shí)候,只需要傳遞實(shí)體的類型和unique id,比如找到unique id=binary_sensor1的二進(jìn)制實(shí)體:
ha_Bsensor_entity_t* entity_bs = homeAssistant_fine_entity(CONFIG_HA_ENTITY_BINARY_SENSOR, "binary_sensor1");
有了這個(gè)函數(shù),可以在其他代碼段使用
homeAssistant_device_send_entity_state函數(shù)發(fā)送數(shù)據(jù),像這樣:
homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_BINARY_SENSOR,homeAssistant_fine_entity(CONFIG_HA_ENTITY_BINARY_SENSOR, "binary_sensor1"), 1);
四、測(cè)試
延續(xù)上一節(jié)的問題:三個(gè)開關(guān)怎么識(shí)別只有開關(guān)1能控制藍(lán)燈?
答案:通過unique id來識(shí)別。
可以通過homeAssistant_fine_entity,先找到需要判斷的實(shí)體,然后再通過雙方的unique id 來識(shí)別就能確認(rèn),下發(fā)的命令是否是"開關(guān)1",同時(shí)上傳一下二進(jìn)制傳感器的狀態(tài):
ha_sw_entity_t* sw1_s = homeAssistant_fine_entity(CONFIG_HA_ENTITY_SWITCH, "sw1");//找到"開關(guān)1實(shí)體"
//判斷是否是開關(guān)1的命令
if (ha_dev->entity_switch->command_switch->unique_id==sw1_s->unique_id&&ha_dev->entity_switch->command_switch->switch_state) {
bflb_gpio_set(gpio, GPIO_PIN_15);
然后可以看到如下效果:

最后的最后
審核編輯 黃宇
-
傳感器
+關(guān)注
關(guān)注
2578文章
55581瀏覽量
794333 -
監(jiān)視器
+關(guān)注
關(guān)注
1文章
805瀏覽量
35254
發(fā)布評(píng)論請(qǐng)先 登錄
深入解析MAX15031:80V、300mW升壓轉(zhuǎn)換器與電流監(jiān)視器
LTC2921/LTC2922系列電源跟蹤器與輸入監(jiān)視器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)
低功耗電源管理神器——LTC2935 電壓監(jiān)視器詳解
LTC2992 雙寬范圍功率監(jiān)視器:設(shè)計(jì)與應(yīng)用的全面解析
深入剖析LTC2965 100V微功耗單電壓監(jiān)視器
深入剖析LM96194硬件監(jiān)視器:功能、應(yīng)用與設(shè)計(jì)要點(diǎn)
BQ7692000PWR 3 至 5 節(jié)電池鋰離子和鋰磷酸鹽電池監(jiān)視器
BQ7693001DBTR 6 至 10 節(jié)電池鋰離子和鋰磷酸鹽電池監(jiān)視器
安信可雷達(dá)模組如何快速配網(wǎng)和調(diào)參?
請(qǐng)問NuMicro? Cortex-M? 系列芯片是否支持 I2C 監(jiān)視器功能?
德州儀器ADS131B24-Q1高壓電池組監(jiān)視器技術(shù)解析
Texas Instruments AMC6V704模擬監(jiān)視器和控制器數(shù)據(jù)手冊(cè)
使用SIL級(jí)電源監(jiān)視器的優(yōu)勢(shì)
Analog Devices Inc. LTC3337一次電池健康狀況監(jiān)視器數(shù)據(jù)手冊(cè)
Analog Devices Inc. ADES1830/ADES1831 16通道電池監(jiān)視器數(shù)據(jù)手冊(cè)
神器在手,摸魚我有!用Rd-01做個(gè)老板監(jiān)視器
評(píng)論