伙伴們,還記得之前小美讓我做的“老板監(jiān)視器”嗎?不記得不要緊,連接在這:神器在手,摸魚我有?巧用雷達(dá)感應(yīng)器的驚險一刻。
就是這個小東西:
這個DEMO所用的就是安信可的Rd-01 人體存在雷達(dá)傳感器,這個雷達(dá)傳感器的特點(diǎn)參考資料:https://docs.ai-thinker.com/rd-01。
自帶的WiFi 功能,可以接入任何云平臺,這次接入的就是HomeAssistant,通過配置自動化檢測,實現(xiàn)平板電腦或手機(jī)的彈窗提示,達(dá)到警告作用。
這次要講的就是類似Rd-01 雷達(dá)傳感器,這種只有0和1的二進(jìn)制傳感器如何使用HomeAssistant-C 庫接入HomeAssistant。
一、binary Sensor 介紹
binary Sensor 實體,中文名叫:二進(jìn)制傳感器。
顧名思義數(shù)據(jù)只有0和1兩種狀態(tài),我們所用過的紅外人體存在傳感器、火焰?zhèn)鞲衅鳌d-01人體存在雷達(dá)、甚至是手扶梯的人體檢測都屬于二進(jìn)制傳感器。所以,這些傳感器在HomeAssistant對它們的配置是最簡單的。
好的,binary Sensor 就(實)介(在)紹(編)完(不)了(下去了)!
二、binary Sensor 實體創(chuàng)建
這一小節(jié)需要大家已經(jīng)實現(xiàn)了“switch”實體的創(chuàng)建并完成點(diǎn)燈,如果你還沒有是實現(xiàn)這個,馬上、立刻去看:智能家居之旅,第三站:Ai-M61/M62 接入HomeAssistant 實現(xiàn)點(diǎn)燈。
因為之后只介紹對應(yīng)的實體怎么使用,不會繼續(xù)介紹其他內(nèi)容,為了方便測試,代碼更不會重新建立工程。
打開之前創(chuàng)建的"HomeAssistant_switch"工程中"main.c"文件,在"ha_event_cb"回調(diào)函數(shù)中的 HA_EVENT_MQTT_CONNECED 事件下創(chuàng)建實體:
//創(chuàng)建二進(jìn)制實體
static ha_Bsensor_entity_t entity_binary_sensor = {
.name = "二進(jìn)制傳感器",//給個名字
.unique_id = "binary_sensor1",//聲明一個唯一的id 號
};
//向HomeAssistant 添加二進(jìn)制實體
homeAssistant_device_add_entity(CONFIG_HA_ENTITY_BINARY_SENSOR, &entity_binary_sensor);
代碼如下:
就這樣,一個二進(jìn)制實體就創(chuàng)建好了,燒錄驗證一下:
可以看到,剛剛創(chuàng)建的"二進(jìn)制傳感器"已經(jīng)在之前建立的設(shè)備當(dāng)中了,但是它處于不可用狀態(tài),這個怎么辦呢?
方法一:復(fù)位一下開發(fā)板
方法二:等我修復(fù)...........
三、上傳binary Sensor
binary Sensor 傳感器已經(jīng)創(chuàng)建好了,那下一步就是數(shù)據(jù)上傳了。
其實HomeAssistant-C 上傳數(shù)據(jù)只需要一個函數(shù):homeAssistant_device_send_state。上傳binary sensor 數(shù)據(jù):
homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_BINARY_SENSOR, <實體節(jié)點(diǎn)>, <0/1>);
比如:
燒錄并且重新復(fù)位之后,能看到HomeAssistant中的 "二進(jìn)制傳感器"處于"開啟"狀態(tài)。
homeAssistant_device_send_state函數(shù)的第二個,是一個實體的節(jié)點(diǎn),為了大家能夠在任何地方能夠正確獲取到需要的節(jié)點(diǎn),HomeAssistant-C 庫提供了一個函數(shù):
homeAssistant_fine_entity(char* entity_type,const char* unique_id)
在使用這個函數(shù)的時候,只需要傳遞實體的類型和unique id,比如找到unique id=binary_sensor1的二進(jìn)制實體:
ha_Bsensor_entity_t* entity_bs = homeAssistant_fine_entity(CONFIG_HA_ENTITY_BINARY_SENSOR, "binary_sensor1");
有了這個函數(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);
四、測試
延續(xù)上一節(jié)的問題:三個開關(guān)怎么識別只有開關(guān)1能控制藍(lán)燈?
答案:通過unique id來識別。
可以通過homeAssistant_fine_entity,先找到需要判斷的實體,然后再通過雙方的unique id 來識別就能確認(rèn),下發(fā)的命令是否是"開關(guān)1",同時上傳一下二進(jìn)制傳感器的狀態(tài):
ha_sw_entity_t* sw1_s = homeAssistant_fine_entity(CONFIG_HA_ENTITY_SWITCH, "sw1");//找到"開關(guān)1實體"
//判斷是否是開關(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)注
2553文章
51390瀏覽量
756586 -
監(jiān)視器
+關(guān)注
關(guān)注
1文章
780瀏覽量
33244
發(fā)布評論請先 登錄
相關(guān)推薦
評論