摘要:而要實現物物相連,一共有個階段性任務,而這個階段性任務,也伴隨著巨大的挑戰本文分享自華為云社區云駐共創以小窺大,從一盞路燈看億萬物聯網之路云駐共創以小窺大,從一盞路燈看億萬物聯網之路,作者啟明。
摘要:IoT, Internet of Things,物聯網,顧名思義,是物物相連。而要實現“物物相連”,一共有3個階段性任務,而這3個階段性任務,也伴隨著巨大的挑戰
本文分享自華為云社區《【云駐共創】以小窺大,從一盞路燈看億萬物聯網之路》,作者: 啟明。
在介紹華為云IoT設備接入管理服務業務之前,我們需要先了解“IoT”是什么。
IoT, Internet of Things,物聯網,顧名思義,是物物相連。而要實現“物物相連”,一共有3個階段性任務,而這3個階段性任務,也伴隨著巨大的挑戰:
正如嬰兒要融入世界,需要會說話一樣,我們的“物”也需要能夠與外界交流。感知物理世界,變成數字信號:讓萬物可以感知溫度、空間、五覺,并且將自己感知到的進行數據化。在這數據化的過程中,我們發現如下挑戰:
嬰兒光會說話是不行的,要能夠和外界交流,還需要和外界使用共同的語言。對于“物”也是一樣,我們需要將數變成Online,提供標準化數據,讓外部能夠理解“物”說的話。而這就需要有廣聯接和多協議接入,并且數據標準化,統一物模型。可是,現狀卻是:
在可以用同一種語言溝通的基礎上,我們還需要讓嬰兒說有價值的話,才能夠實現高效溝通。對于“物”而言,亦是如此。尤其是在“物”的世界,我們需要解決海量數據處理和分析,因此對算力的要求極高,并且要求實時性。最終的結果就是行業數字化、數字化行業。但是,正如前面說到的:
首先,讓我們在腦海里描繪一盞路燈的樣子,你是不是覺得很簡單?
我們來回顧一下路燈的發展史:
從五六十年代的時間控制器+本地回路控制,定時開關,最簡單的邏輯處理關系;到70年代,加上光電控制器,稍微“聰明”了一些,能夠感知周圍的光感強度,從而調節開關,但是此時還只是在本地回路控制;而到了90年代,已經可以基于無線專網的三遙監控系統,實現遠程回路控制;最后再到現在,基于物聯網技術的智能化系統,實現信息融合、智能場景和應用拓展,從而實現智慧照明場景(如上圖)。
可以看到,智慧場景下的智慧路燈,搭載了許多智能設備,諸如監控組件、LED屏幕、集中控制器、電動汽車充電樁等等,讓一盞路燈實現一個路面能實現的基本功能。
以上,就是一盞燈的智慧之路,在這個過程中,物聯網技術發揮了極大的作用,讓一個單定時控制的路燈,一步步具有多場景、多應用的功能,最后演變為智慧路燈。
而華為云IoT設備接入管理服務,正是基于此技術。
首先,我們對物聯網要有一個正確的認知:物聯網是由多個服務組成的,而非單一的服務。下圖是一個整體的物聯網解決方案。
在圖左側,是設備,體現的是我們前面說到的:讓設備說話、讓設備時候同一種話、讓設備有說價值的話。那么,我們首先要讓這些設備能夠“被”感知到,在這個過程中,我們通過物聯網操作系統(LiteOS)或者SDK使能,使其智能化;然后感知到的東西以數據的形式通過網關、邊緣網關或者直連的方式上傳。具體要上傳到哪里呢?
考慮到設備的海量問題,我們需要有一個物聯網平臺。數據通過前面所說的方式上傳至物聯網平臺中的設備接入服務。在設備接入服務,可以實現多網絡接入、多協議接入、設備影子等等多種功能;而在整體物聯網平臺上,還包括全球SIM連接、設備發放、數據分析等等服務。
在圖右側,更能對接華為云的其他產品,諸如DIS/DCS/OBS等等,幫助客戶快速構筑滿足客戶要求的物聯網應用,如智慧城市、智慧園區、車聯網等等。
回歸到技術本身。我們前面聊到,不同的設備,都可以通過華為云設備接入服務接入,但實際上,他們的接入方式和接入協議都是不一樣的,那么華為云設備接入服務又是怎么屏蔽底端差異,實現設備接入的呢?
我們首先來看下面這張圖:
通訊模型:在華為云設備接入服務里,定義了“通訊模型”。同樣以我們之前說的嬰兒說話為例。人與人之間的溝通,雖然語言有很多種,但是表達的方式還是主要以聲音(說話)或者視覺(手語)為主。而物與物之間,同樣的,主要的內容也主要是幾類:命令下發、命令相應、屬性設備等等。
設備影子:而在此基礎之上,我們還有“設備影子”這一概念。物聯網平臺支持創建設備的“影子”。設備影子是一個JSON文件,用于存儲設備的在線狀態、設備最近一次上報的設備屬性值、應用服務器期望下發的配置。每個設備有且只有一個設備影子,設備可以獲取和設置設備影子以此來同步設備屬性值,這個同步可以是影子同步給設備,也可以是設備同步給影子。
通用協議接入層:在具備“通訊模型”以后,我們需要把設備數據和通訊模型進行關聯,而進行關聯的就是“通用協議接入層”。通過通訊協議接入層,我們可以將不同的協議類型(如MQTT/CoAP/TCP等等)上的不同數據轉化到通訊模型上。
編解碼處理:一款產品的設備上報數據時,如果“數據格式”為“二進制碼流”,則該產品需要進行編解碼插件開發;如果“數據格式”為“JSON”,則該產品下不需要進行編解碼插件開發。
以NB-IoT場景為例,NB-IoT設備和物聯網平臺之間采用CoAP協議通訊,CoAP消息的payload為應用層數據,應用層數據的格式由設備自行定義。由于NB-IoT設備一般對省電要求較高,所以應用層數據一般不采用流行的JSON格式,而是采用二進制格式。但是,物聯網平臺與應用側使用JSON格式進行通信。因此,需要開發編碼插件,供物聯網平臺調用,以完成二進制格式和JSON格式的轉換。
在講解整個框架之前,我們首先要明確的是,華為云IoT設備接入服務內部,實際上是基于Cloud Native(云原生)的微服務的一個架構。里面所有業務相關的服務,都是無狀態的。無狀態的服務就意味著可以隨時被創建,也可以隨時被kill掉。
也就是說,即使任何一個服務實例出現問題,都可以通過創建服務來保證業務的無損。同時在海量并發的情況下,通過彈性的縮、擴容,能夠使服務滿足對應業務量的需求。
在基于無狀態服務的框架下,除了負載均衡層(目的是為了讓海量的設備能夠接入到服務中),上面可以分為兩層:
一層是CIG云通訊網關層,這一層實際上是將各種各樣的設備的不同的協議和不同的數據格式轉換成統一的模型;
另一層是連接&管理業務服務:數據和協議轉換成統一的模型,流轉到這一層后,由業務服務來做處理,比如說消息流轉推送、設備影子、規則引擎服務,以及任務管理服務等等。
更上層是公有云支撐管理服務:通過公有云的支撐服務,像CBC/IAM/SMN等等來整體構建設備接入管理服務。
以上就是設備技術管理服務的一個大致的框架。通過此框架可以了解內部的業務處理邏輯,有助于大家理解后續我們的沙箱實驗體驗。
產品模型,也就是常說的Profile,簡單來說也就是通信模型的映射。
上圖是如何將不同類型的數據映射到通訊模型上面的實例。
在圖左側,有3個不同的表計。雖然它們都是水表,但是它們是由不同的廠家生產的,因此數據格式和協議也是不一樣的,那么我們該如何采集它們的數據形成統一的格式呢?
答案就是產品模型。通過產品模型里面不同的插件,可以將這些不同數據轉換成相同格式的數據。對設備廠商來說,無需修改設備代碼,通過插件即可適配不同企業的訴求,降低設備廠家的維護復雜度。而對上層應用來說,降低了上層應用對設備管理復雜度,通過在平臺規整不同廠家的數據,形成統一的Profile,上層應用無需感知不同設備的差異
接下來再看規則引擎。規則引擎是華為云IoT設備接入服務特有的能力,通過規則引擎可以實現數據流轉和設備聯動。無縫與公有云其他服務對接,實現設備數據按需流轉和處理;
而設備聯動,也是基于規則引擎來實現的,由條件觸發,基于預置規則,引發多設備協同反應,如提醒、告警、狀態報告等等。
在介紹完華為云IoT設備接入管理服務之后,接下來然后就帶大家了解一下相關的沙箱實驗。
智慧路燈沙箱實驗組網結構如上。為了方便大家在線完成路等試驗,我們需要有一個虛擬設備,在此我們使用的是設備模擬器。設備接入平臺,上報屬性,然后接收平臺下發的命令。而在平臺上層,有一個基于華為云軟開云的應用層的實現。大致步驟如下:
1、通過華為云軟件開發平臺構建一個路燈的模擬應用(真實的應用可以參考其構建的方法);
2、申請ECS云服務,將構建的應用部署于ECS上,通過EIP對接IoT設備接入服務,并進行訂閱通知;
3、在實驗桌面運行MQTT模擬器,模擬路燈設備的行為
在正式開始之前,我們先看一下設備模擬器(如下圖)。
連接參數配置區:
設備模擬器打開之后,打開“MQTT設備模擬器”頁簽。在“連接參數配置區”需要指定進入平臺的地址信息,拿到“注冊設備成功”或者設備ID和設備密鑰,并與平臺建立連接;
消息上報區:
與平臺建立連接之后,設備上報數據到平臺。下面有“消息上報區”,可以在指定設備上報屬性的topic之后,在下面將jason格式數據粘貼進來,并進行上報;
日志打印區:
右側是一個類似消息跟蹤的日志打印區域,在此可以看到消息上報的消息記錄,包括平臺的下發的命令,也會在這里做一個打印跟蹤。
Topic訂閱區:
Topic訂閱區是另一個頁簽。設備需要訂閱平臺下發命令的相關topic的時候,就可以在這里指定topic進行訂閱。
在實驗桌面里面,創建代碼倉庫之后,可以查看詳細的源文件。而比較典型的幾個源文件的實現,是對應用側API的實現,比如:
創建設備API:src/main/java/com/huawei/service/RegisterDirectConnectedDevice.java
創建訂閱API:src/main/java/com/huawei/service/SubscribeDataChg.java
下發設備命令API:src/main/java/com/huawei/service/CreateDeviceCommand.java
基于這些源文件的樣例代碼,開發人員可以再基于自己的思路,做定制化開發。
前臺web頁面布局的關鍵文件,就是一個index的html的源文件,加一個 js腳本:
頁面布局:src/main/resources/static/index.html
腳本文件:src/main/resources/static/js/common.js
智慧路燈沙箱實驗,分為7步:
1、編譯構建智慧路燈應用DevCloud
2、創建主題并訂閱SMN
3、創建彈性云服務器ECS
4、部署智慧路燈應用DevCloud
5、導入產品模型IoTDA
6、配置智慧路燈應用Web
7、結果驗證
開發者在登錄華為云賬號,進入沙箱實驗之后,會有上圖頁面:
左上角呈現實驗賬號,開發者拿這個實驗賬號在實驗桌面里面通過firefox瀏覽器登錄華為云,并通過控制臺進入到各個服務。
賬號下有 step by step的實驗步驟指導,按照步驟操作即可。
右上角有一個完成進度顯示,實時刷新,可以得到進度顯示和實驗倒計時。
在左側部分,有一些相關的命令執行,可以方便大家執行的時候快速拷貝。
由于時間限制,我們省略前面簡單的1~4步,從第5步然后創建產品開始,正常后面的正式實驗過程中。
PS:前面1~4步過程中需要注意的事項是在創建主題并訂閱的時候,平臺會發送一個確認的短信到用戶手機上,用戶需要查看短信,點擊里面的鏈接,確認之后才能完成實際的訂閱。
接下來,我們正式進入實驗操作:
在華為云控制臺,展開左側導航,選擇“服務列表”-> “物聯網”->“設備接入IoTDA”,如下圖所示:
在左側欄中選擇“產品”,點擊“創建產品”,參數如下:
①所屬資源空間:Default_APP_Sandbox_user_iot
②產品名稱:自定義,如:StreetLight
③協議類型:MQTT
④數據格式:JSON
⑤廠商名稱:自定義,如:Huawei_IoT
⑥設備類型:自定義,如:StreetLight
填寫完成,點擊“立即創建”,產品創建成功,請記錄“產品ID”信息,并查看“詳情”。
點擊創建的產品進入詳情,然后點擊“上傳模型文件”,選擇SmartStreetLight.zip文件,點擊“確認”完成上傳。
新建瀏覽器標簽頁,輸入http://EIP:8080/index.html(使用步驟3.2中彈性云服務器的彈性公網IP替換地址中的“EIP”),訪問智慧路燈Web頁面。
在彈出的“參數設置”窗口,參數填寫如下:
①數據來源:參數設置頁面下拉框選擇“訂閱推送”。
②本機IP:“控制臺”->“服務列表”->“計算”->“彈性云服務器ECS”進入服務器列表,進行查看并復制彈性公網IP。
③主題URN:“控制臺”->“服務列表”->“管理與監管”->“消息通知服務SMN”進入主題列表,進行查看并復制主題URN。
④APPID:“控制臺”->“服務列表”-> “物聯網”->“設備接入IoTDA”,在左側導航欄選擇“資源空間”,復制獲取產品所需的“APPID”。
⑤賬號名:系統為您分配的華為云實驗賬號名。
⑥IAM用戶名:系統為您分配的華為云實驗用戶名。
⑦IAM用戶密碼:系統為您分配的華為云實驗密碼。
⑧項目ID:控制臺在右上角用戶名下拉框中選擇“我的憑證->API憑證”頁面復制獲取所屬區域為“華北-北京四”的項目ID。
⑨產品ID:“控制臺”->“服務列表”-> “物聯網”->“設備接入IoTDA”,在左側導航欄選擇“產品”,復制獲取產品所需的“產品ID”。
填寫完成后點擊“確定”,彈窗提示如下,表示參數設置成功。
輸入設備標識(自定義,如123456789f),點擊“注冊設備”。
彈窗提示如下,表示注冊設備成功。請記錄“設備Id”和“密鑰”信息,用于后續驗證。
注意:請記錄設備id以及密鑰,便于后期使用!
設備注冊成功后是“未激活”狀態,請選擇“服務列表”-> “物聯網”->“設備接入服務”,在左側欄選擇“設備 > 所有設備”,點擊設備標識碼進入,查看設備Id,或修改密鑰。
在實驗桌面雙擊“Xfce終端”打開Terminal,執行以下命令打開設備接入模擬器(HubSimulator.jar),然后切換到MQTT設備模擬器頁簽。
在MQTT設備模擬器頁簽下,填寫參數如下:
①服務IP:進入“服務列表”-> “物聯網”->“設備接入IoTDA”,在左側欄選擇“總覽”,點擊“平臺接入地址”。
復制使用MQTT/MQTTS接入信息的域名。
?
②設備ID:配置智慧路燈應用,注冊設備成功后返回的設備Id
③設備密鑰:配置智慧路燈應用,注冊設備成功后返回的密鑰
配置好以上參數后,點擊“建立連接”按鈕。
建立連接成功后,右側日志顯示MQTT服務連接成功,如下圖所示:
若無法建立連接,請打開“命令提示符”窗口,輸入“ping 服務IP”查看您的主機是否能和華為云物聯網平臺正常通信,若無法正常通信,請更換主機的網絡環境。
回到物聯網所有設備列表( “服務列表”-> “物聯網”->“設備”→“所有設備”),設備狀態變更為“在線”,如下圖所示:
①在模擬器窗口中的Topic欄中輸入以下代碼:$oc/devices/{device_id}/sys/properties/report,其中的{device_id}需要替換成實際設備ID。
$oc/devices/{device_id}/sys/properties/report
②消息內容:
其中,光感強度可自定義,燈狀態建議為OFF。
在模擬器窗口中的消息編輯欄中輸入以下代碼:
{"services":[{"service_id":"Sensor","properties":{"luminance":"200","light_state":"OFF"}}]}
發送消息成功后,右側日志顯示信息推送成功(圖片僅為示意,請以實際上報數據為準)。
返回智慧路燈Web界面,此時顯示“環境亮度”為200LUX,“燈狀態”為關。
注意:模擬器與Web頁面之間會有短暫延遲,不用刷新頁面,幾秒鐘后可發現頁面會隨之變化!
切換到“訂閱Topic”頁簽,并在Topic欄中輸入以下代碼:
$oc/devices/{device_id}/sys/commands/#,其中的{device_id}需要替換成實際設備ID。
輸入完畢后,點擊“訂閱”按鈕可完成訂閱。
$oc/devices/{device_id}/sys/commands/#
訂閱成功后,右側日志顯示訂閱Topic成功。
返回智慧路燈Web界面,“路燈控制”選擇“終端聯控模式”,開關選擇“開”,單擊“設置”,然后點擊”確認”。
①若當前燈狀態為“關”,開關選擇為“開”,服務后臺會實時下發一條開燈命令,彈窗提示會有5-10秒左右延遲,請耐心等待。
②若當前燈狀態為“關”,開關選擇為“關”,不會觸發命令下發,直接彈窗提示設置成功。
即“燈狀態”與“開關選擇”一致時,不會觸發命令下發;“燈狀態”與“開關選擇”不一致時,會觸發實時命令下發。
因為當前“燈狀態”為關,“開關選擇”為開,查看模擬器日志區域,會收到一條開燈命令。(payload的值經過base64加密,解密后即可得到命令內容)。
①Topic:$oc/devices/{device_id}/sys/properties/report,其中的{device_id}需要替換成實際設備ID。
②消息內容:
其中,光感強度可自定義,燈狀態建議為ON。
{"services":[{"service_id":"Sensor","properties":{"luminance":"110","light_state":"ON"}}]}
如下圖所示,應該顯示“環境亮度”為110LUX,“燈狀態”為開。
在模擬器上單擊“斷開連接”后,重復7.4.1,“路燈控制”選擇“終端聯控模式”,開關選擇“關”,單擊“設置”。
因為燈狀態為“開”,開關選擇為“關”,服務后臺會實時下發一條關燈命令;而設備處于離線狀態,導致命令下發失敗。
此時,系統會發送短信/郵件通知告知訂閱用戶命令下發失敗;通知內容為命令下發失敗的錯誤信息。
通知示例:【華為云】錯誤信息:{"error_code":"IOTDA.014016","error_msg":"Operation not allowed. The device is not online."}
設備變更為“離線”狀態,請登錄華為云控制臺,選擇“物聯網 > 設備接入服務”,在左側導航欄,選擇“設備 > 所有設備”,根據設備標識碼查看設備狀態。
因為當前“環境亮度”為110LUX,“燈狀態”為開,查看模擬器日志區域,應該會收到關燈命令。
①若當前“環境亮度”大于“亮度閾值”,且“燈狀態”為“開”,服務后臺會實時下發一條關燈命令,彈窗提示會有5-10秒左右延遲,請耐心等待。
②若當前“環境亮度”小于“亮度閾值”,且“燈狀態”為“開”,不會觸發命令下發,直接彈窗提示設置成功。
即“環境亮度”小于“亮度閾值”,且“燈狀態”為“開”或“環境亮度”大于“亮度閾值”,且“燈狀態”為“關”時,不會觸發命令下發;反之,則會觸發實時命令下發。
①Topic:$oc/devices/{device_id}/sys/properties/report,其中的{device_id}需要替換成實際設備ID。
②消息內容:
其中,光感強度<100,燈狀態為OFF。
{"services":[{"service_id":"Sensor","properties":{"luminance":"80","light_state":"OFF"}}]}
返回智慧路燈Web界面,單擊“設置”,查看模擬器日志區域,會收到一條開燈命令。
在華為云控制臺,選擇“服務列表”-> “計算”-> “彈性云服務器 ECS”進入,勾選待刪除ECS服務器,如ecs-iot,選擇“更多 > 刪除”,在彈窗中請勾選刪除彈性公網IP和數據盤后,點擊“是”完成刪除。
在華為云控制臺,選擇“服務列表”->“物聯網”->“設備”→“所有設備”進入所有設備列表,根據設備標識碼刪除設備,如123456789f。然后在左側欄選擇“產品”,刪除產品,如StreetLight。
桌面雙擊“Xfce終端”打開Terminal,輸入以下命令下載刪除“HubSimulator.jar”文件。
cd Desktop/
rm HubSimulator.jar
接下來刪除“SmartStreetLight.zip”壓縮包。命令如下:
rm SmartStreetLight.zip
至此實驗體驗完畢。
華為云設備接入服務(IoT Device Access)是華為云的物聯網平臺,提供海量設備連接上云、設備和云端雙向消息通信、批量設備管理、遠程控制和監控、OTA升級、設備聯動規則等能力,并可將設備數據靈活流轉到華為云其他服務,幫助物聯網行業用戶快速完成設備聯網及行業應用集成。全新升級后的設備接入服務IoTDA,整合了原設備接入服務和設備管理服務的功能。
感興趣就來一起體驗一下吧~?https://www.huaweicloud.com/product/iothub.html
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/122380.html
摘要:智能照明控制系統的出現可以完美的解決以上問題,照明系統可以針對學生的活動規律人流量等特定的環境和條件自動實現開關和調光功能,。在云計算物聯網以及移動互聯網等新興技術不斷崛起的大背景下,智慧校園的建設成為實現教育新發展的必要途徑。 每當夜幕降臨,校園里的路燈都會自動亮起氤氳的光芒,透過樹葉的縫隙灑下斑駁的光影,學生們腳下踩著碎碎的亮光,聊著身邊的軼聞,傳頌著城市的故事....每一盞路燈照亮了...
摘要:看看最近的展,通訊行業的大佬華為發布了照明物聯網方案,中興也發布了智能照明方案,將智慧路燈拉進了物聯網。無論是城市還是農村,想要實現智能化,都離不開物聯網。其實和物聯網的核心都是數據。 無論是你是LED菜鳥還是LED精英,相信最近你聽到最多的行業熱名詞就是智能照明、互聯網+、O2O……一批跟互聯網時代接軌的LED行業特有標簽名詞。 這就意味著互聯網已經開始在滲透傳統照明產業,以致于很多企...
摘要:其中感控對象為一個虛擬路燈對象,在實現過程中用隨機數模擬其溫度濕度和環境照度等感知數據,燈作為被控對象,可以通過服務器對其進行打開關閉控制,且用不同顏色表示其開關狀態。 ????????一般一個典型的物聯網系統包括感控層(傳感器),網絡層和應用層組成,而網絡層主要用于實現感控對象與應用層...
摘要:在期間,華為正式發布云服務,聚焦物聯網基礎設施,構建產業生態黑土地,通過做大聯接利用云服務和智能做強產業物聯網,使能行業數字化。在HUAWEI CONNECT 2018期間,華為正式發布IoT云服務2.0,聚焦物聯網基礎設施,構建產業生態黑土地,通過做大聯接、利用云服務和AI智能做強產業物聯網,使能行業數字化。華為云核心網產品線總裁馬海旭發布IoT云服務2.0根據華為GIV(全球產業愿景)報...
閱讀 2932·2023-04-26 01:49
閱讀 2066·2021-10-13 09:39
閱讀 2278·2021-10-11 11:09
閱讀 922·2019-08-30 15:53
閱讀 2815·2019-08-30 15:44
閱讀 916·2019-08-30 11:12
閱讀 2965·2019-08-29 17:17
閱讀 2370·2019-08-29 16:57