999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于物聯網云平臺的NB- IoT 單燈通信接口實現

2021-10-18 08:57:38孟凡輝
科學技術創新 2021年27期
關鍵詞:設備

孟凡輝 肖 聲

(國電南瑞科技股份有限公司,江蘇 南京 210061)

NB-IoT 簡介:隨著互聯網和移動互聯網技術的發展,最幾年物聯網技術也有了飛速發展[1], 從最早期的短距離無線局域網(如Zigbee、Z-Wave、WiFi)和蜂窩網絡(廣域網,2G/3G/4G…),慢慢形成了LPWAN(低功耗廣域網),典型的有NB-IoT、eMTC、LoRa、SigFox。

NB-IoT(Narrow Band Internet of Things,窄帶物聯網)技術是一種主要應用于低功耗廣覆蓋(LPWA)物聯網(IoT)市場的新興技術。NB-IoT 技術具有連接多、功耗少、覆蓋廣、成本低、速率低、架構優等特點。

NB-IoT 技術在國內的快速發展, 針對NB-IoT 技術的特點,越來越多的城市開始使用NB-IoT 單燈,以實現對單燈設備的精細化監控,為萬物互聯、有效節能提供有力基礎。

一種典型的NB-IoT 實時監控系統如圖1 所示:本文主要闡述的是圖1 中接口服務器接收HTTP 推送和控制的方案(基于工廠模式的PocoC++ HTTP 服務、共享內存維護模塊,其中應用服務器與接口服務器的通信通過消息中間件來進行通信),消息中間件和其他方面不在本文的討論范圍內。

圖1

物聯網云平臺簡介: 物聯網云平臺提供海量設備和數據連接的能力和維護,應用服務器只需處理數據的內容,而不需要維護海量設備的鏈接。物聯網云平臺具有免心跳、命令緩存、擁塞控制、遠程升級、基站定位、無碼開發、RA 功能、數據業務安全保證等特點,能夠有效減少設備上報次數,保證數據和業務的可靠。

物聯網云平臺目前安裝公司主要分為兩類,一類是互聯網企業物聯網平臺,另一類是運營商物聯網云平臺。

阿里、騰訊、Amazon、華為等互聯網企業主要提供的是物聯網通用云平臺,將物聯網能力、網絡能力和云服務結合起來,按需向用戶提供融合服務,能夠強大的平臺層服務,其收費模式主要以平臺功能收費和按接口收費,且只提供平臺層服務接口[2]。

隨著物聯網的發展,近幾年各大運營商(中國電信、中國移動、中國聯通)開始搭建物聯網云平臺,其與互聯網物聯網云平臺相比具有以下特點:

(1)能夠提供端到端服務(網絡入口)。

(2)計費方式和傳統的2G、3G、4G 卡類似,按照流量和連接數收費,用戶較為清晰和理解。

(3)運營商物聯網云平臺的平臺層能力雖然相對互聯網企業相對較弱。

本文通過訂閱物聯網云平臺變化數據推送的方式, 實現當NB-IoT 單燈有數據變化上送或者周期性上送時,通過物聯網云平臺http 推送單燈數據到接口服務器和調用物聯網云平臺http控制接口,實現對單燈數據的實時監測和控制。

基于工廠模式的Poco C++ HTTP 服務: 工廠模式是一種設計模式,當需要增加一個產品時,只需增加一個工廠類就可以,它通過隱藏對象如何被創建和組合在一起達到使整個系統獨立的目的,具有很好的擴展性。

由于NB-IoT 單燈設備通過不同物聯網云平臺將數據推送到接口服務器,其通信協議和數據組織方式有相關差異。為了滿足接口服務器的擴展性, 本接口服務器是基于工廠模式的Poco C++ HTTP Server 來實現。

Poco C++ 是一種開源跨平臺、全面的、完整的C++框架,易學易用,性能優秀,能夠低內存占用,具有很多特性[4]:

(1)HTTP 客戶端和服務端(支持SSL),C++ 服務器頁面編譯器。

(2)多線程框架(線程池,活動對象,工作隊列等)。

(3)支持SSL/TLS,基于OpenSSL。

(4)TCP 服務器框架(多線程)。

(5)網絡數據流類庫,支持Base64,HexBinary 編解碼,壓縮等等。

(6)共享內存管理等。

基于工廠模式的Poco C++ HTTP Server 主要包含兩個產品類,一個是HTTP 請求處理產品類,一個是TCP 服務器連接產品類。其中TCP 服務器連接工廠類(TCP 服務器連接產品類子類),是根據HTTP 請求處理工廠類(HTTP 請求處理產品類子類)來進行創建。由于不同物聯網平臺數據格式有差異,不同的物聯網云平臺請求則對應不同的HTTP 請求處理工廠, 但是它們推送和調用都是基于HTTP 協議, 故TCP 服務器連接工廠類是相同的。所以當有新的物聯網云平臺NB-IoT 設備時,只需新增一個的HTTP 請求處理工廠類和處理句柄即可, 滿足了不同物理網云平臺的擴展性。

基于工廠模式的Poco C++ HTTP Server 中的HTTPServer類是TCPServer 子類,TCPServer 類實現了一個功能齊全的基于線程池的TCPServer。HTTPServer 初始化的時候需創建一個ServerSocket,并使其監聽,同時設置HTTPServerParams 參數來滿足不同服務器需求的配置, 并需提供HTTP 請求處理工廠類,該類用于創建對應物聯網云平臺HTTPRequestHandler 對應的工廠。

例如, 當有聯通物聯網云平臺的HTTP 推送請求的時候,該HTTP 請求處理工廠類創建一個UnicomNBRequestHandle (是HTTPRequestHandler 的子類),通過handleRequest 函數實現對聯通物聯網云平臺NB-IoT 設備請求數據的處理。

TCPServer 多線程的實現是基于線程池的, 其中HTTPServer初始化的時候,將父類TCPServer 也同時進行了初始化,并根據HTTP 請 求 處 理 工 廠 類 , 新 建 了 一 個HTTPServerConnectionFactory 的工廠類(與HTTP 請求處理工廠類對應),設置線程池大小,并創建一個TCPServerDispatcher 對象,其中TCPServerDispather 將鏈接加入隊列,當有新HTTP 請求時,根據線程池情況,幫助TCPServer 分配不同服務鏈接線程,根據HTTPServerConnectionFactory 的 工 廠 類 創 建 一 個HTTPServerConnection,并調用HTTP 請求處理函數,即HTTP 請求處理工廠類的實現。HTTPServer 主要類之間的關聯圖,如圖2所示。當需要增加其他物理網云平臺的時候, 新增類似UnicomNBRequestHandle 和UnicomNBRequesetHandleFactory 類即可,程序架構不變,只需重載實現handleRequest 函數,易于擴展。

圖2

對于實時控制信息, 本文是基于Poco C++ HTTP Client 來實現。HTTP Client 相對HTTPServer 來說結構簡單,因為是一對一的,沒有很大的并發量,對于控制,只需組織相關發送內容,通過HTTPClient 一個類即可發送。

綜上,基于Poco C++網絡庫提供的HTTPServer 通過工廠模式和線程池技術,能夠有效對數據進行并發處理和精確控制,并具有很好的擴展性。

一種基于物聯網云平臺的NB-IoT 單燈通信接口:本文在基于工廠模式的Poco C++ HTTP 服務的基礎上,為了實現對云平臺物聯網單燈的實時控制和并發數據處理,達到精確管控,提出了一種基于物聯網云平臺的NB-IoT 單燈通信接口。

一種基于物聯網云平臺的NB-IoT 單燈通信接口主要包含共享內存模塊、HTTP 服務模塊、調用消息中間件模塊。

(1)共享內存模塊:共享內存模塊是接口機中一個獨立模塊,主要負責定時循環讀取數據庫中關于NB-IoT 的設備關鍵信息,主要結構可以用下面結構體(以聯通NB-IoT 單燈為例)表示,其中EXTEND_NB_DEV 主要是一類設備的一些關鍵信息,DEV_LAMP_SHM除了包含EXTEND_NB_DEV,包含了單燈的總數量和設備最新讀取時間, 單燈數量的讀取使得讀寫共享內存程序,只需寫一定數量的單燈數據,無需將最大單燈數量都進行處理,提高處理速度。

共享內存使用Poco 中SharedMemory 模塊將文件的全部內容映射到一個共享內存段中, 共享內存的大小即是DEV_LAMP_SHM的大小。根據讀取數據庫的聯通單燈情況,即共享內存的起始地址,將結構體的信息寫入該共享內存塊。為了保證數據一致性,在循環讀取數據庫寫入共享內存的時候,需加入信號量的P、V 操作,保證數據的唯一性和一致性。

共享內存模塊同時也提供一個根據名稱來訪問的內存名稱的獨立接口,滿足其他服務的讀取訪問。

(2) HTTP 服務模塊: 針對基于工廠模式的Poco C++ HTTP服務的特性, 本文在其基礎上, 重寫了PocoC++ 網絡庫中TCPServer 類和HTTPServer 類, 增加循環讀取共享內存NB-IoT單燈信息,接收物聯網云平臺的實時數據推送,并通過調用消息中間件的形式, 將NB-IoT 單燈數據解析后發送到應用服務器。對于控制NB-IoT 單燈的下行消息, 本文在TCPServer 中增加循環監測消息中間件是否發送控制消息,若收到,解析后,組成相對應的格式通過調用HTTP Client 的接口, 按照物聯網云平臺的API 格式,通過物聯網云平臺控制具體相關設備。

為了能夠校驗設備正確性、數據解析處理實時性、以及可靠性,本文增加讀循環取設備共享內存模塊,將單燈設備增加到一個實時內存map 中去。在循環的函數中,判斷當前刷新時間和共享內存刷新時間,如果時間差(可自定義)較大,則重寫map,保證設備數據正確有效。

對于應用服務器的控制命令,繼續重寫TCPServer,注冊一個消息中間件,循環監測單燈控制命令,進行控制命令解析,調用運營商云平臺對應的HTTP API 進行設備控制。

因為物理網云平臺的HTTPAPI 有差異,本文依據工廠模式,按照類似HTTPServer 的方式重寫HTTPClient 使其為一個接口類,具體實現由不同的子產品(子類)實現,如以下代碼所示(華為OC 云平臺的HTTP API 實現方式,截取片段):

其中UnicomNBHttpsClient 繼承HTTPClient 類,nbinvoke 是其實現接口,當對不同物聯網云平臺進行控制時,選擇對應的物聯網云平臺控制類進行實例化,進行控制內容處理。

處理上報數據時增加判斷在共享內存中沒有錄入,如果沒有則放棄處理。對于有效數據, 通過消息中間件寫入到后臺實時庫,實現監控系統的實時監控,本文使用的消息中間件,通過注冊消息來進行數據發送。

(3)消息中間件模塊:本文中的消息中間件模塊是用于與應用服務器進行收發消息的通道,一般都會提供消息注冊接口,本文在處理物聯網云平臺的推送數據和接收應用服務器的控制消息時需要用到,在此不在進行詳細描述。

本文提出的一種基于物聯網云平臺的NB-IoT 單燈接口實現,重寫基于工廠模式和線程池的HTTPServer 和HTTPClient 服務,使用共享內存技術,并調用消息中間件接口來實現數據實時處理和控制。本接口有很好的擴展性,有效解決了NB-IoT 單燈數據的并發實時處理和實時控制。該方案已經在天津路燈指揮系統中穩定可靠運行,支持移動、聯通、華為、電信物聯網云平臺的NB-IoT 單燈,目前已有接近3 萬盞單燈的并發使用。

猜你喜歡
設備
諧響應分析在設備減振中的應用
調試新設備
當代工人(2020年13期)2020-09-27 23:04:20
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發射設備中平衡輸入與不平衡輸入的轉換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點滿滿的可穿戴智能設備
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
HTC斥資千萬美元入股虛擬現實設備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設備篇
如何在設備采購中節省成本
主站蜘蛛池模板: 天天激情综合| 色九九视频| 欧美一区二区三区香蕉视| 欧美色综合网站| 美女国产在线| 欧美精品1区| 国产人妖视频一区在线观看| 欧美日韩成人| 免费不卡视频| 九九热视频在线免费观看| 青青操国产| 欧美国产精品拍自| 色偷偷av男人的天堂不卡| 国产乱子精品一区二区在线观看| 制服丝袜国产精品| 日韩激情成人| 亚洲毛片一级带毛片基地| 无码专区在线观看| 免费在线看黄网址| 亚洲美女一级毛片| 欧美一区二区丝袜高跟鞋| 伊人国产无码高清视频| 粗大猛烈进出高潮视频无码| 波多野结衣一区二区三区四区视频| 久久久久免费精品国产| 欧美乱妇高清无乱码免费| 国产激情无码一区二区APP | 伊人成人在线| 国产精品无码一区二区桃花视频| 国产第四页| 亚洲国产黄色| 久久黄色一级片| 久久黄色影院| 国产美女丝袜高潮| 欧美黄网在线| 欧美黄网站免费观看| 欧美精品不卡| 美女毛片在线| 97青青青国产在线播放| 人妻丰满熟妇av五码区| 欧美国产视频| 91精品视频播放| 99尹人香蕉国产免费天天拍| 国产精品va免费视频| 青青草久久伊人| 高h视频在线| 五月天久久婷婷| 免费国产好深啊好涨好硬视频| 精品视频福利| 九九热在线视频| 青青青国产视频| 国产69精品久久久久孕妇大杂乱 | a级毛片免费网站| 国产成人高精品免费视频| 91综合色区亚洲熟妇p| 久久精品91麻豆| 国产精品久久久久无码网站| 在线毛片免费| 91久久精品日日躁夜夜躁欧美| 免费jjzz在在线播放国产| 免费看av在线网站网址| 亚洲AV无码精品无码久久蜜桃| 国产天天射| 青草国产在线视频| 91在线丝袜| 天天色天天综合网| 伊人欧美在线| 久久黄色一级视频| 超碰91免费人妻| 五月婷婷亚洲综合| 亚洲二三区| 91精品啪在线观看国产| igao国产精品| 欧美精品色视频| 毛片视频网| 二级特黄绝大片免费视频大片| 99视频国产精品| 日本不卡在线| 天天视频在线91频| 国产成人8x视频一区二区| 国产在线观看人成激情视频| 国产精欧美一区二区三区|