1.實驗背景
智慧城市光照監(jiān)控系統(tǒng)是智慧城市建設(shè)中專門針對城市照明系統(tǒng)而設(shè)計的一個智能化管理系統(tǒng)弊攘。它通過集成物聯(lián)網(wǎng)、云計算摔癣、大數(shù)據(jù)奴饮、傳感器技術(shù)等先進(jìn)的信息技術(shù)手段,實現(xiàn)對城市范圍內(nèi)路燈择浊、景觀燈等照明設(shè)備的實時監(jiān)控戴卜、遠(yuǎn)程控制、故障報警琢岩、數(shù)據(jù)分析與決策支持等功能投剥。智慧城市光照監(jiān)控系統(tǒng)的出現(xiàn)便于節(jié)約能源、保護(hù)環(huán)境担孔,在建設(shè)美麗中國中有著重大的作用江锨!
2.實驗?zāi)繕?biāo)
- 提高城市照明的智能化水平
- 實現(xiàn)照明設(shè)備的精準(zhǔn)控制和高效管理
- 提升城市照明的質(zhì)量、節(jié)能減排
- 優(yōu)化城市環(huán)境
3.實驗步驟
實驗一 數(shù)據(jù)上云平臺
-
步驟 1 添加傳感器資源
1.在項目二智慧城市溫濕度監(jiān)測系統(tǒng)的源代碼基礎(chǔ)上進(jìn)行修改糕篇,在 main.c 文件中啄育,更改 IMEI 和IMSI 信息,在 OneNET 平臺添加設(shè)備時娩缰,指定了設(shè)備的“IMEI;IMSI”灸撰,這里谒府,必須在代碼中將 IMEI 和 IMSI 改成跟OneNET 平臺上的一樣拼坎。這樣,就可以實現(xiàn)真實設(shè)備與OneNET 平臺上的虛擬設(shè)備一對一映射完疫,修改位置如下:
2.在 main.c 文件中添加包含“BH1750.h”和"Lcd_Driver.h"頭文件的預(yù)處理命令泰鸡,如下圖所示:
#include "BH1750.h" /* 光照傳感器 */
#include "Lcd_Driver.h" /* Lcd屏*/
3.在 main.c 文件中增加光照和 LED 的類型結(jié)構(gòu),并聲明外部變量壳鹤。添加位置和代碼如下圖所示:
添加的具體代碼段如下:
nbiot_value_t illumi; /* 光照 */
nbiot_value_t led; /* led燈*/
extern float result_lx; /* 光照 */
4.) 在 main.c 文件的主函數(shù)中盛龄,在“寫”回調(diào)函數(shù)添加 LED 燈模擬打開、關(guān)閉的代碼芳誓。具體添加位置余舶,如下圖所示:
添加的具體代碼段如下:
if (objid == 3311 && instid ==0 && resid ==5850) /* LED燈 */
{
if(data->value.as_bool)
{
//打開白色背景以模擬LED燈打開
Lcd_Clear (WHITE );
ledStatus.Led1Sta=1;
}
else
{
//打開黑色背景以模擬LED燈關(guān)
Lcd_Clear (BLACK );
ledStatus.Led1Sta=0;
}
}
5.在 main.c 文件的主函數(shù)中,在“讀”回調(diào)函數(shù)添加光照和 LED 燈的控制代碼锹淌,當(dāng)從平臺接收到控制寫入命令時匿值,響應(yīng)控制。具體添加位置如下圖所示:
添加的具體代碼段如下:
else if (objid == 3301 && instid == 0 && resid == 5700) { /* 光 照 */
BH1750_test();
illumi.value.as_float = result_lx;
} else if (objid == 3311 && instid == 0 && resid == 5850) { /* LED */
led.value.as_bool = ledStatus.Led1Sta;
}
- 在 main.c 文件里增加光照值赂摆、LED 數(shù)值的讀取更新挟憔,具體添加位置如下所示:
添加的具體代碼段如下:
/* 更新光照數(shù)值 */
illumi.flag |= NBIOT_UPDATED;
BH1750_test()钟些;
illumi.value.as_float = result_lx;
/* 更新 LED 數(shù)值*/
led.flag |= NBIOT_UPDATED;
led.value.as_bool = ledStatus.Led1Sta;
7.在 main.c 文件里增加光照、LED 資源绊谭,具體添加位置如下所示:
添加的具體代碼段如下:
// 添加光照資源
illumi.type = NBIOT_FLOAT;
illumi.flag = NBIOT_READABLE;
ret = nbiot_resource_add(dev, 3301, 0, 5700, &illumi);
if (ret)
{
nbiot_device_destroy(dev);
printf("device add resource(illumi) failed, code = %d.\r\n", ret);
}
// 添加 LED 燈資源
led.type = NBIOT_BOOLEAN;
led.flag = NBIOT_READABLE | NBIOT_WRITABLE;
ret = nbiot_resource_add(dev, 3311, 0, 5850, &led);
if (ret)
{
nbiot_device_destroy(dev);
printf("device add resource(led) failed, code = %d.\r\n", ret);
}
-
步驟 2 實驗箱模塊組裝
本實驗需要用到核心板政恍、溫濕度模塊、NB-IoT 模塊达传、光照模塊和 LCD 模塊篙耗,組裝如下:
-
步驟 3 編譯下載調(diào)試
顯示“0錯74警告”是正常現(xiàn)象宪赶。
-
步驟 4 OneNET 物聯(lián)網(wǎng)開放平臺操作
1.編譯燒錄代碼后登錄 OneNET 平臺鹤树,進(jìn)入【設(shè)備管理】,查看設(shè)備是否在線逊朽。當(dāng)設(shè)備顯示在線后罕伯,在操作欄選擇【詳情】,進(jìn)入【設(shè)備資源】
2.在【設(shè)備資源】界面叽讳,可以查看到溫度追他、濕度、光照岛蚤、LED 燈等對象名稱邑狸,點擊對應(yīng)的三角標(biāo),可進(jìn)入對象界面涤妒,查看屬性值等单雾。
- 在設(shè)備資源列表界面,可查看到光照傳感器和光照控制的三元組objId/instId/resId 代碼她紫;
- 選擇 Light Control-0對象硅堆,進(jìn)入詳情頁面,具體操作界面如下圖所示:進(jìn)入詳情頁面后可以觀察到終端上報平臺的狀態(tài)與上報時間贿讹。點擊【寫】操作按鈕渐逃,可以對LED 燈進(jìn)行開關(guān)控制。操作界面如下圖所示:
- 點擊“寫”操作按鈕后民褂,在彈出的對話框中輸入“true”點擊確定茄菊,就可以打開開發(fā)板上的 LED白色背光,輸入“false”點擊確定赊堪,可以關(guān)閉 LED面殖,顯示黑色背光。操作界面如下圖所示:
實驗二 平臺API調(diào)用
-
步驟1 安裝“Postman”軟件
在網(wǎng)頁上搜索“Postman”進(jìn)行安裝
-
步驟2 創(chuàng)建文件
1.安裝完成后進(jìn)行登錄注冊哭廉,隨后點擊界面左側(cè)“+”號脊僚,在出現(xiàn)的下拉欄里選擇“Blank collection”創(chuàng)建新文件。
2.點擊“Blank collection”后群叶,會出現(xiàn)一個默認(rèn)名為“New Collection”的文件吃挑,可在右側(cè)直接更改命名钝荡;亦或是右鍵單擊“New Collection”文件,選擇“Rename”進(jìn)行重命名舶衬。
3.創(chuàng)建文件完成后埠通,點擊“Add a request”添加“GET”請求。
-
步驟3 編寫調(diào)試命令
1.登錄打開 OneNET 平臺逛犹,點擊“文檔”端辱,點擊“ OneNET物聯(lián)網(wǎng)開放平臺 ”,這里面有詳細(xì)的API調(diào)試步驟虽画。
2.進(jìn)入“ OneNET物聯(lián)網(wǎng)開放平臺 ”后舞蔽,在左側(cè)菜單欄找到“平臺API”,下拉選擇“接口詳情”码撰,在里面找到“命令下發(fā)”渗柿。
3.在“命令下發(fā)”下找到“LwM2M-即時命令”,選擇“讀設(shè)備資源”并打開脖岛。打開后可以看到有接口地址朵栖、API說明以及各類參數(shù)名稱。
4.打開“Postman”軟件柴梆,選擇請求方式為“GET”,將“接口地址https://iot-api.heclouds.com/nb-iot”復(fù)制到請求處陨溅,填寫“imei”和“obj_id”參數(shù)。
注:value值均可在OneNET云平臺上找到
5.“Params”處填寫完后绍在,點擊“Headers”進(jìn)行填寫门扇,在Key處添加一個“Authorization”;“value”值需要打開“Token計算器”進(jìn)行轉(zhuǎn)換偿渡。
“Token計算器”所在位置:
- 打開“Token計算器”后臼寄,需要修改res、et卸察、Key和version脯厨。铅祸、
注: - 355111為OneNET云平臺的用戶ID坑质,可以在云平臺上查找,登錄云平臺后點擊右上角临梗,找到“賬號信息”涡扼,點擊“訪問權(quán)限”,在此界面就可以看到自己的用戶ID以及密鑰盟庞。
- 時間戳:在瀏覽器搜索“時間戳”進(jìn)行轉(zhuǎn)換吃沪,時間要是未來的某一個時間
-
version:時間設(shè)置為2022-05-01
6.填寫完后點擊“Send”保存。在未連接設(shè)備時什猖,點擊“Send”會出現(xiàn)“device not online”票彪。
-
步驟4 創(chuàng)建LwM2M-緩存命令
創(chuàng)建步驟如上红淡,分別創(chuàng)建LwM2M-緩存命令的POST請求和GET請求,創(chuàng)建完后點擊“Send”保存降铸。
注:
POST請求中在旱,需要在“Headers”處多添加一個Key“Content -Type”,如圖所示:
實驗三 使用 HTTP 數(shù)據(jù)推送自動開關(guān) LED燈
-
步驟1 打開燈光推送應(yīng)用用戶門戶
以O(shè)neNET注冊用戶的 用戶id 和用戶AcessKey 登陸,門戶地址如下:
注意:
1推掸、首次登陸桶蝎,會提示該用戶id未使用記錄,需要再次輸入相同的用戶id和用戶AcessKey谅畅,登陸即可
成功登渣。
2、需要使用本人在OneNET注冊用戶的 用戶id 和用戶AcessKey毡泻,如填錯胜茧,則使用燈光控制功能會
因為鑒權(quán)錯誤而功能失敗。具體的信息在OneNET官網(wǎng)(用戶中心-訪問權(quán)限頁面)仇味,用戶id為6位數(shù)字竹揍,AcessKey需點擊查看:
-
步驟2 綁定NB-IoT設(shè)備的IMEI號
進(jìn)入“我的物聯(lián)網(wǎng)”-“設(shè)備”菜單頁面,填寫IMEI號(用于數(shù)據(jù)推送時匹配)邪铲,點擊確定完成綁
定芬位。
注意:IMEI號需要正確填寫在OneNET官網(wǎng)上創(chuàng)建的LwM2M設(shè)備IMEI號
-
步驟3 實例創(chuàng)建
進(jìn)入OneNET物聯(lián)網(wǎng)開放平臺“開發(fā)者中心”,選擇菜單欄中的數(shù)據(jù)流轉(zhuǎn)下的資源管理带到,點擊HTTP推送實例昧碉,每個實例對應(yīng)一個HTTP的推送配置。點擊添加實例揽惹。
具體的配置如下:
實例名稱:自己取一個合理的名稱被饿。
推送地址url:http://1.14.71.134:8080/receive ,注意 URL 后面必須包含 /receive搪搏,
Token:填入“111”狭握。
-
消息加密方式:選擇“明文模式”,不進(jìn)行消息加密疯溺。
-
步驟4 實例驗證
實例創(chuàng)建成功后论颅,下一步進(jìn)行實例驗證。在實例列表頁面囱嫩,點擊驗證恃疯。
-
步驟5 規(guī)則引擎配置
進(jìn)入OneNET物聯(lián)網(wǎng)開放平臺“開發(fā)者中心”,選擇菜單欄中的數(shù)據(jù)流轉(zhuǎn)下的規(guī)則引擎墨闲,點擊直接添加規(guī)則今妄。
具體的配置如下:
- 規(guī)則名稱:LED遠(yuǎn)程控制
- 產(chǎn)品篩選:選擇指定產(chǎn)品,后面一欄是在云平臺所創(chuàng)設(shè)備中選
- 消息源:默認(rèn)選擇設(shè)備數(shù)據(jù)點消息
- 轉(zhuǎn)發(fā)方式:選擇HTTP推送
- 使用資源:默認(rèn)選擇剛剛創(chuàng)建的實例
配置完成后,啟動該規(guī)則引擎盾鳞。
-
步驟6 觀察光照數(shù)值變化與LCD模塊顏色狀態(tài)的變化
接下來觀察LCD的變化犬性,確保設(shè)備在線的情況下,當(dāng) NB-IoT 設(shè)備上下線腾仅、上報新數(shù)據(jù)時仔夺,應(yīng)用服務(wù)器就能夠獲得這些數(shù)據(jù),當(dāng)數(shù)據(jù)上報時攒砖,程序會解析其中的光照度數(shù)據(jù)缸兔,并且根據(jù)預(yù)設(shè)的閾值,對 LCD 燈進(jìn)行控制吹艇。
1惰蜜、室內(nèi)照明情況下,LCD模塊應(yīng)處于“關(guān)閉”狀態(tài)(顏色程序編寫的“關(guān)”狀態(tài)顏色)受神,如下圖:
2抛猖、用物體遮擋光照傳感器模塊(約30秒),LCD模塊應(yīng)處于“開啟”狀態(tài)(顏色程序編寫的“開”
狀態(tài)顏色)鼻听,如下圖:
3财著、拿開遮蓋物,約30秒后撑碴,LCD模塊應(yīng)處于“關(guān)閉”狀態(tài)(顏色程序編寫的“關(guān)”狀態(tài)顏色)撑教。
4、同時可在平臺上通過查看實例獲得推送數(shù)據(jù)統(tǒng)計醉拓,進(jìn)入資源管理下的HTTP推送實例伟姐,點擊管理卓囚,可查看實例的基本信息付魔、推送數(shù)據(jù)統(tǒng)計、近一月數(shù)據(jù)趨勢泵喘。至此排吴,數(shù)據(jù)推送完成