???智慧小區(qū)安全防護(hù)系統(tǒng)——真實(shí)設(shè)備接入報告
???????????????????楊小龍
1.項目背景
隨著時代的進(jìn)步與科學(xué)技術(shù)的快速發(fā)展批钠,我們對于智慧化的生活越來越需要,而我們更需要的是安全,安全的重要性不言而喻。智能小區(qū)的建設(shè)融合了一系列現(xiàn)代化高新技術(shù)糯累,是IC卡技術(shù)逞度、通信技術(shù)悍手、計算機(jī)技術(shù)經(jīng)過深度融合與集成之后而形成的一種結(jié)果逢慌,同時也是社會發(fā)展悠轩、時代進(jìn)步、科學(xué)技術(shù)水平提升環(huán)境下的必然產(chǎn)物攻泼。智能小區(qū)使用多種高科技手段火架,達(dá)到防火、防盜忙菠、防煤氣泄漏等安全要求距潘,小區(qū)本身的安防系統(tǒng)建立采取點(diǎn)、線和面的立體防護(hù)只搁,確保做到“防患于未然”。讓智能小區(qū)里的住戶擁有居家安全感俭尖。
2.項目目標(biāo)
1氢惋、基于真實(shí)設(shè)備,搭建軟硬件環(huán)境稽犁,接入 OneNET 平臺并實(shí)現(xiàn)設(shè)備屬性上報焰望;
2、通過 OneNET 平臺的“設(shè)備調(diào)試”實(shí)現(xiàn)設(shè)備屬性下發(fā)已亥;
3熊赖、通過 OneNET 平臺的“API 調(diào)試”實(shí)現(xiàn)設(shè)備屬性下發(fā);
4虑椎、直接基于 API 方式實(shí)現(xiàn)設(shè)備屬性下發(fā)震鹉;
3.項目步驟
第一步:基于 OneNET 物聯(lián)網(wǎng)實(shí)驗箱搭建實(shí)訓(xùn)項目終端硬件平臺
在實(shí)驗箱背板上插入這四個模塊(“核心模塊”、“Wifi 模塊”捆姜、“蜂鳴器模塊”传趾、 “超
聲波模塊”)搭建場景。
第二步:在Keil5中修改項目三代碼
步驟一:
工程相對路徑\device\src\net_device.c 約 677 行處泥技,將{熱點(diǎn)名稱}浆兰、{熱點(diǎn)密碼}替換為設(shè)備所在 Wifi 網(wǎng)絡(luò)用戶名和密碼(將{}括號一起替換,下同)珊豹;
步驟二:
工程相對路徑\onenet\src\onenet.c 約 56 行處簸呈,依次修改{產(chǎn)品key}、{產(chǎn)品 id}店茶、{設(shè)備名稱}為之前步驟中在 OneNET Studio 中所創(chuàng)建的產(chǎn)品蜕便、設(shè)備相關(guān)信息,本例中設(shè)備名稱就是之前步驟中創(chuàng)建的“controller”設(shè)備忽妒,并對應(yīng)填入其設(shè)備密鑰玩裙;
步驟三:
工程相對路徑\applications\application.c 約 132 行處兼贸,增加屬性點(diǎn)標(biāo)識符以及對應(yīng)需上報的設(shè)備數(shù)據(jù)變量,如下所示吃溅;
{"beep", &beep_info.beep_status[0], TYPE_BOOL, 1},
{"distance",&Sonic_Info.sonic_distance,TYPE_FLOAT,1},
步驟四:
工程相對路徑\onenet\src\cmd_callback.c 約 51 行處溶诞,添加代碼“{“beep”,CALLBACK_Beep},”
,逗號前面的字符串標(biāo)識符為"beep"决侈,逗號后的處理方法名為 CALLBACK_Beep螺垢。
步驟五:
同時在該文件頭部,增加void CALLBACK_Beep(int value);
這樣的方法聲明
步驟六:
在文件適當(dāng)位置增加該方法的具體實(shí)現(xiàn)邏輯代碼:
第三步:編譯工程赖歌,連接下載器燒寫程序到設(shè)備中
下載器的連接以及燒寫過程略枉圃。下載成功后設(shè)備重新加電,等待一定時間庐冯,進(jìn)入下一步孽亲。
第四步: 在OneNET 平臺查看設(shè)備狀態(tài)
登錄 OneNET Studio,查看“controller”設(shè)備運(yùn)行狀態(tài)為在線展父。若此時設(shè)備顯示為不在線返劲,則排查前面關(guān)于網(wǎng)絡(luò)接入、OneNET 鑒權(quán)等代碼修改處是否有誤栖茉。重復(fù)步驟 3篮绿、4、5吕漂,再次檢查并修改亲配,直到本步驟查看狀態(tài)為上線。
第五步:在OneNET 平臺查看設(shè)備上報數(shù)據(jù)信息
進(jìn)入設(shè)備詳情頁面惶凝,查看屬性表格頁展示的各個數(shù)據(jù)點(diǎn)顯示的信息吼虎,重點(diǎn)關(guān)注距離(標(biāo)識符“distance”)、蜂鳴器狀態(tài)(標(biāo)識符“beep”)等屬性點(diǎn)梨睁,是否已經(jīng)有數(shù)值上報鲸睛。(下圖僅為示例參考)
第六步:通過 OneNETStudio 的設(shè)備調(diào)試方式進(jìn)行屬性下發(fā)
選擇MQTT產(chǎn)品下的 “controller” 設(shè)備,切換調(diào)試方式為 “應(yīng)用模擬器”坡贺。
勾選蜂鳴器功能點(diǎn)官辈,點(diǎn)擊true下發(fā)數(shù)值,再點(diǎn)擊頁面下方的“屬性設(shè)置”按鈕遍坟,右側(cè)調(diào)試日志展示了下發(fā)的報文拳亿,設(shè)備端也同時將該數(shù)值執(zhí)行生效(蜂鳴器開始鳴叫)。
注 1:如設(shè)備端沒有生效愿伴,需要分析上一實(shí)訓(xùn)任務(wù)中肺魁,有關(guān)屬性下發(fā)的命令執(zhí)行代碼是否正確添加。
注 2:調(diào)試日志中會有超時等響應(yīng)報文隔节,這是因為設(shè)備收到屬性下發(fā)后沒有在規(guī)定時間內(nèi)返回確認(rèn)鹅经,OneNET 平臺會認(rèn)為設(shè)備響應(yīng)超時從而給 API 請求端回復(fù)超時報文寂呛。
注 3:設(shè)備執(zhí)行屬性設(shè)置動作后,可以修改設(shè)置值為“false”瘾晃, 再次下發(fā)贷痪,使設(shè)備端生效新的值。
第七步:下發(fā)屬性在終端設(shè)備上執(zhí)行生效(API 調(diào)試)
點(diǎn)擊“運(yùn)維監(jiān)控”菜單下“API 調(diào)試”子菜單蹦误,并將工作頁面左列顯示的兩大類調(diào)試類別中“應(yīng)用開發(fā)類”下拉列表展開劫拢。往下滾動到“設(shè)備屬性設(shè)置”功能項,點(diǎn)擊使之處于選中狀態(tài)强胰,在中間一列展示的必填參數(shù)中舱沧,填寫頁面中輸入必要的參數(shù),如下圖所示偶洋,本次任務(wù)中熟吏,填入真實(shí)接入的設(shè)備“controller”所對應(yīng)的相關(guān)信息,同時其中的 params 內(nèi)容填寫要設(shè)置的屬性標(biāo)識符以及對應(yīng)設(shè)置值玄窝,本次任務(wù)中設(shè)置蜂鳴器狀態(tài)為 false分俯,文本示例參考:
{
"beep": false
}
設(shè)備端蜂鳴器收到命令關(guān)閉
第八步:基于 API 方式實(shí)現(xiàn)設(shè)備屬性下發(fā)
步驟一 使用API調(diào)試工具Postman,并填入必要參數(shù):
(1)確定設(shè)備屬性設(shè)置的請求方式為 post哆料,請求 url 為:
http://openapi.heclouds.com/application?action=SetDeviceProperty&version=1
填入到 Postman 工具上面頁面的請求 url 輸入框中,修改左側(cè)請求提交方式是 POST
(2)確定請求 body 內(nèi)容及格式吗铐,project_id东亦、product_id、device_name 等關(guān)鍵參數(shù)的值均可參考前述任務(wù)中相同的查看方式通過 OneNET Studio 頁面獲得唬渗,以鍵值對形式將上述需要設(shè)置的具體參數(shù)組裝為 body 報文內(nèi)容典阵,最終填入 Postman 工具的 Body 選項頁內(nèi)。
{
"project_id": "gZtv5W",
"product_id": "I971NKjoBg",
"device_name": "controller",
"params": {
"beep": true
}
}
(3)確定請求的 Header 內(nèi)容镊逝,這里需要一個向 OneNET 平臺鑒權(quán)所需的必要信息字段壮啊,就是“authorization ”信息(注意大小寫須一致),該信息可以使用“token計算工具”生成撑蒜,生成方式如下圖:
補(bǔ)充Headers其余內(nèi)容歹啼。
步驟二 發(fā)起 API 請求,查看結(jié)果:
發(fā)起請求前確認(rèn)當(dāng)前真實(shí)設(shè)備已在線座菠,以蜂鳴器屬性值(beep)下發(fā)為例狸眼,通過postman 發(fā)起請求,通過平臺鑒權(quán)后浴滴,該請求會下發(fā)到對應(yīng)的真實(shí)設(shè)備拓萌,打開蜂鳴器開關(guān),蜂鳴器會按照程序里預(yù)置的邏輯進(jìn)行鳴響升略。
更改“beep”屬性值為false
{
"project_id": "gZtv5W",
"product_id": "I971NKjoBg",
"device_name": "controller",
"params": {
"beep": false
}
}
發(fā)送請求后蜂鳴器會按照程序預(yù)置的邏輯關(guān)閉鳴響
第九步:基于 OneNET 云平臺的場景聯(lián)動
步驟一 進(jìn)入 OneNET Studio 場景聯(lián)動管理功能:
進(jìn)入 OneNET Studio 控制臺頁面微王,直接在“Studio 使用概覽”中點(diǎn)擊“我的項目”下已建立的項目名進(jìn)入項目管理功能屡限。
注:如用戶沒有創(chuàng)建過有關(guān)項目,OneNET Studio 提示需先創(chuàng)建項目炕倘,可參考之前實(shí)訓(xùn)任務(wù) 1 拓展任務(wù)中有關(guān)項目管理的操作步驟完成項目創(chuàng)建钧大、設(shè)備添加等準(zhǔn)備工作后,進(jìn)入下一個實(shí)訓(xùn)環(huán)節(jié)激才。
然后直接點(diǎn)擊“場景聯(lián)動”子菜單拓型,進(jìn)入場景聯(lián)動管理功能頁面。
步驟二 創(chuàng)建場景聯(lián)動規(guī)則:
點(diǎn)擊功能頁面右側(cè)“添加規(guī)則”按鈕瘸恼,在滑出的頁面規(guī)則名稱中輸入“距離探測告警”劣挫,點(diǎn)擊“添加”按鈕完成規(guī)則創(chuàng)建。
步驟三 編輯距離探測告警的聯(lián)動規(guī)則:
點(diǎn)擊創(chuàng)建好的這條規(guī)則的操作列中“編輯規(guī)則”功能入口东帅,進(jìn)入具體編輯頁面压固,因為是初次進(jìn)入,這里展示的觸發(fā)條件以及執(zhí)行動作內(nèi)容為空靠闭,點(diǎn)擊右側(cè)的“編輯規(guī)則”按鈕帐我,在滑出的頁面中具體編輯:
首先編輯觸發(fā)條件:
(1)執(zhí)行限制:滿足全部條件執(zhí)行
(2)觸發(fā)方式:“設(shè)備數(shù)據(jù)觸發(fā)”
(3)產(chǎn)品:之前實(shí)訓(xùn)任務(wù)中創(chuàng)建的產(chǎn)品
(4)設(shè)備:之前加入到項目里的“controller”
(5)功能:之前物模型中的“間隔距離”屬性點(diǎn)
(6)數(shù)值判斷條件:邏輯判斷選“<”,數(shù)值填入“5”
其次編輯執(zhí)行動作:
(1)動作類型:選擇“設(shè)備執(zhí)行”
(2)產(chǎn)品:之前實(shí)訓(xùn)任務(wù)中創(chuàng)建的產(chǎn)品
(3)設(shè)備:之前加入到項目里的“controller”
(4)功能:之前物模型中的“蜂鳴器”屬性點(diǎn)
(5)布爾:選擇“true - 1”
最后點(diǎn)擊“完成”按鈕愧膀,確認(rèn)本次編輯內(nèi)容拦键。
步驟四 再新增一個聯(lián)動規(guī)則,實(shí)現(xiàn)距離安全時取消告警:
參考步驟 2 描述檩淋,再新增一個聯(lián)動規(guī)則芬为,名稱可以為“距離安全取消告警”。
參考步驟 3 描述蟀悦,編輯該規(guī)則的具體條件及動作媚朦,參考如下:
編輯觸發(fā)條件:
(1)執(zhí)行限制:滿足全部條件執(zhí)行
(2)觸發(fā)方式:“設(shè)備數(shù)據(jù)觸發(fā)”
(3)產(chǎn)品:之前實(shí)訓(xùn)任務(wù)中創(chuàng)建的產(chǎn)品
(4)設(shè)備:之前加入到項目里的“controller”
(5)功能:之前物模型中的“間隔距離”屬性點(diǎn)
(6)數(shù)值判斷條件:邏輯判斷選“>”,數(shù)值填入“10”
編輯執(zhí)行動作:
(1)動作類型:選擇“設(shè)備執(zhí)行”
(2)產(chǎn)品:之前實(shí)訓(xùn)任務(wù)中創(chuàng)建的產(chǎn)品
(3)設(shè)備:之前加入到項目里的“controller”
(4)功能:之前物模型中的“蜂鳴器”屬性點(diǎn)
(5)布爾:選擇“false - 0”
最后點(diǎn)擊“完成”按鈕日戈,確認(rèn)本次編輯內(nèi)容询张。
步驟五 設(shè)備上線,觀察場景實(shí)現(xiàn)效果:
近距離遮擋超聲波模塊的距離探測器探頭浙炼,稍等一定時間后份氧,蜂鳴器模塊鳴叫,移開超聲波模塊遮擋弯屈,約 15 秒鐘后半火,蜂鳴器模塊停止鳴叫。
注:如設(shè)備未按場景聯(lián)動的規(guī)則邏輯執(zhí)行季俩,可通過規(guī)則頁面的“聯(lián)動日志查詢”tab 頁查看具體原因钮糖。響應(yīng)日志會有 Fail 的失敗日志,這是因為場景聯(lián)動觸發(fā)后,執(zhí)行的屬性下發(fā)后沒有在規(guī)定時間內(nèi)收到設(shè)備端的執(zhí)行返回確認(rèn)(該部分代碼在示例工程代碼中未實(shí)現(xiàn))店归,OneNET 平臺會認(rèn)為設(shè)備響應(yīng)超時從而判斷為失敗阎抒。
4.項目總結(jié)
在本次項目實(shí)驗中,基于真實(shí)設(shè)備接入 OneNET 平臺消痛,實(shí)現(xiàn)了通過OneNET 平臺對設(shè)備屬性下發(fā)并且還實(shí)現(xiàn)了直接基于 API 方式實(shí)現(xiàn)設(shè)備屬性下發(fā)且叁。通過拓展實(shí)訓(xùn)部分體驗了基于 OneNET 云平臺的場景聯(lián)動。經(jīng)過這次的實(shí)驗使得我對OneNET云平臺的使用更加熟練秩伞,對實(shí)驗實(shí)施的流程思路更清晰逞带。也讓我明白了OneNET云平臺還有更多的功能等著我去探索。