網(wǎng)站建設(shè) 價格新聞軟文自助發(fā)布平臺
一、開發(fā)準(zhǔn)備
在設(shè)備開發(fā)這里我們就能看到物模型的topic,跟之前用stm32+esp8266一樣
附上之前的鏈接:
STM32+ESP8266連接騰訊IOT上傳數(shù)據(jù)(四)_stm32通過esp8266上傳數(shù)據(jù)到云平臺-CSDN博客https://blog.csdn.net/Try1harder/article/details/134914027?spm=1001.2014.3001.5501這一次我只建立了一個溫度和一個燈
訂閱和發(fā)布的主題:
?二、訂閱和發(fā)布
1、總?cè)蝿?wù)
上一篇已經(jīng)說到這個mqtt的task其實很簡單明了,我們現(xiàn)在要實現(xiàn)的訂閱,只需要在mqtt_demo_loop任務(wù)內(nèi)處理,然后發(fā)布的話,我創(chuàng)建了一個generate_json的函數(shù)。
2、發(fā)布任務(wù):
把獲取芯片內(nèi)部溫度的函數(shù)修改了一下,然后直接用cJSON庫(W801已經(jīng)移植)
這里還有一個地方要注意,用CJSON的時候,編譯報會報一個找不到floor的錯誤。
CSDN搜索了一下,找到了解決辦法,感謝老哥,鏈接貼上
聯(lián)盛德W801系列8-編譯鏈接時找不到標(biāo)準(zhǔn)數(shù)學(xué)庫函數(shù)的解決方法_w801 cjson-CSDN博客
3、觸發(fā)發(fā)布任務(wù)
這里直接跟心跳一樣,開啟一個定時的任務(wù),主打的就是一個心跳有的發(fā)布任務(wù)都有就可以了:
定時器的任務(wù)就是發(fā)送MQTT_DEMO_CMD_PUBSEDD這個消息給任務(wù)隊列
這樣15s就會執(zhí)行一次我們的發(fā)布任務(wù)
4、處理訂閱
訂閱這里直接在原先的訂閱任務(wù)增加一個解析函數(shù):
這里就是用CJON庫解析數(shù)據(jù),收到1就全部開燈,0就全部關(guān)燈
當(dāng)然這里我只是做簡單的測試處理。后續(xù)要完整做的話,mqtt這個框架我認(rèn)為不需要動,就在此基礎(chǔ)上增加要處理的數(shù)據(jù),但是這個任務(wù)我還沒完全跑過,要注意一下資源,看看會不會跑死,然后控制部分,控制之后要再上報燈的狀態(tài),這里燈可以切換成開關(guān)之類的等等,就可以做成很多個情境的智能采集和控制設(shè)備了。后續(xù)我有時間也會做成一個項目。
三、實測
1、發(fā)布
2、訂閱
視頻鏈接貼上:
用w801mqtt連接騰訊云,控制燈的開關(guān)視頻-CSDN直播用w801mqtt連接騰訊云,控制燈的開關(guān)視頻https://live.csdn.net/v/460135