開源物聯網平台建設、參考解決方案


一、什么是物聯網平台

物聯網平台是一個集成了設備管理、數據安全通信和消息訂閱等能力的一體化平台。

向下支持連接海量設備,采集設備數據上雲;向上提供雲端API,服務端可通過調用雲端API將指令下發至設備端,實現遠程控制。

物聯網平台與設備、服務端、客戶端的消息通信流程如下。

企業基於物聯網平台的業務鏈路

使用物聯網平台實現設備完整的通信鏈接,需要您完成設備端的設備開發、雲端服務器的開發(雲端SDK的配置)、數據庫的創建、手機App的開發。在設備和服務器開發中,您需完成設備消息的定義和處理邏輯。

物聯網應用是企業和開發者進行設備管理、告警&故障監測、業務監控、數據分析的重要工具。

物聯網平台屏蔽了設備接入的復雜性和協議的差異性,解耦應用與設備,為上層應用提供統一格式的數據,簡化終端廠商開發的同時,也讓應用提供商聚焦於自身的業務開發。基於華為物聯網平台的應用開發方案如下。

1.png

應用服務器作為應用側的業務處理核心,分析物聯網平台推送的設備消息,並根據分析結果與應用客戶端進行交互,完成業務處理。

1.1 物聯網應用基礎服務平台應具備的能力

(1)建設物聯網應用基礎服務平台(M2M平台 ) ,實現軟件系統開發與部署。

(2)實現行業終端的適配接入,對采集到的數據實現報警、轉發、存數據庫等操作。

(3)提供開放的平台和數據結構,為各物聯網應用的擴展提供數據。

(4)提供詳盡的歷史記錄,及靈活的報表定制工具,易於生成任意格式的報表。

(5)提供易於擴展的、分布式平台框架及冗余運行模式,支持大規模、大數據量的應用。

(6)提供強大的服務支持能力及通用的 M2M業務生成框架,為物聯網應用開發提供可視化的集成開發工具,提高二次開發效率。

(7)提供強大的用戶及權限管理,保證系統運行的安全性。

(8)實現對現有部分行業終端的接入調試、數據處理及監控管理。

M2M:M2M(MachinetoMachine),是通過移動通訊對設備進行有效控制,從而將商務的邊界大幅度擴展或創造出較傳統方式更高效率的經營方式或創造出完全不同於傳統方式的全新服務。M2M是將數據從一台終端傳送到另一台終端,也就是機器與機器之間的信息交流與傳遞,透過網絡及機器設備通訊的傳遞與鏈接達到信息共享的概念。

M2M的構成

M2M涉及到5個重要的技術部分:機器、M2M硬件、通信網絡、中間件、應用。

M2M是一種以機器終端智能交互為核心的、網絡化的應用與服務。

1.2 物聯網平台定位要求

M2M平台提供物聯網各行業應用對接入層、通訊層以及行業應用基礎層的通用解決方案,基於 M2M平台各行業應用實現自己的業務邏輯處理。

1.2.1 提供統一的終端接入平台

通過 M2M平台,為所有物聯網應用終端提供的統一的數據接入方案。

數據接入支持多種通訊設備、通訊協議,對接收到的數據進行辨識、分發,以及報警分析等預處理。

1.2.2 提供統一的應用基礎運行平台

物聯網應用軟件與傳統的應用軟件相比,有底層終端數量多、上層行業應用復雜的特點,各種行業終端數量規模往往能達到百萬甚至更高級別,要求 M2M平台能維護大量共享數據和控制數據,提供物聯網應用的統一運行環境,從概念、技術、方法與機制等多個方面無縫集成數據的實時處理與歷史記錄,實現數據的高時效調度與處理,並保證數據的一致性。

1.2.3 提供統一的安全認證

以用戶信息、系統權限為核心,集成各業務系統的認證信息,提供一個高度集成且統一的認證平台。

1.2.4 提供統一的數據交換平台

M2M平台提供統一的“數據交換平台”,通過中間件作為粘合劑連接各種業務相關的異構系統、應用以及數據源,滿足重要系統之間無縫共享和交換數據的需要。

1.2.5 提供統一的門戶支撐平台

提供一個靈活、規范的信息組織管理平台和全網范圍的網絡協作環境,實現集成的信息采集、內容管理、信息搜索,能夠直接組織各類共享信息和內部業務基礎信息,面向不同使用對象,通過門戶技術實現個性化服務,實現信息整合應用。

1.2.6 提供多種業務基礎構件

為各行業應用業務提供開發輔助工具、快速定制、地理信息服務、權限管理、數據展現及挖掘等多種平台支撐服務。通過這些基礎構件,實現系統的松散耦合,提高系統的靈活性和可擴展性,保障快速開發、降低運營維護成本。

1.3 物聯網平台功能結構

1.3.1 數據通訊模塊

包括數據采集、數據處理、終端控制等功能。所有的終端設備發到平台的數據都由數據通訊模塊接收並預處理,是平台與終端設備交互的橋梁。

數據通訊模塊支持各種終端設備的通訊協議及動態配置加載、卸載終端設備到系統。

所有的終端設備發到平台的數據都由數據通訊模塊接收並預處理,數據通訊模塊完成實時數據采集、數據處理、終端控制等業務目標,實現數據接入適配、統一數據結構、數據處理等功能。

1.3.2 報警處理模塊

報警主要分成兩種情況:一種是終端設備直接發上來的報警事件, 另一種是根據用戶需要配置到系統中的報警規則產生的報警, 報警規則是根據需求預先設定好的。

當終端傳上來的實時數據觸發報警規則時, 應該實時產生報警,並在用戶界面給予顯示, 報警的延時時間應小於 5 秒。

報警處理模塊實現對測量值的范圍、變化速度的預警,包括限值報警、變化率報警、偏差報警、異常報警等,以及通過對測量值進行數學運算 ( 報警公式 ) ,然后對運算結果進行報警檢查而產生。

支持自動記錄報警信息、報警確認信息、報警恢復 ( 報警消除 ) 等信息,按照重要程度可分為多個優先級,如低級、高級、緊急。

報警發生時系統可以通過彈出報警窗口、發出聲響、發送短信、電子郵件或打印報警信息等多種方式通知用戶,用戶可以自由設定報警通知方式。

報警處理模塊支持在終端設備側直接產生的、通過網絡上報的報警,並根據用戶預設的聯動策略方式進行相應操作。

支持報警確認和復位,用不同顏色標示報警狀態,包括:

  • 未確認、未復位;

  • 已確認、未復位的報警;

  • 未確認、已復位的報警;

  • 已確認、已復位的報警。

用戶可通過 B/S 或 C/S 兩種客戶端根據預定權限設置進行報警信息的查詢、操作、跟蹤。

M2M平台會記錄所有報警信息,以備用戶查詢、生成報表。

1.3.3 策略聯動

當系統產生了報警或其他事件時,可以在此模塊中設置需要控制聯動的設備或人員。

不同的設備通過 M2M平台粘合,形成一個有機的整體,提供自動、及時、准確的服務。

聯動策略模塊支持的主要功能要求包括

(1)可配置策略模塊啟動時要執行的腳本;

(2)可配置可循環執行的腳本,循環時間可以設定;

(3)可配置策略模塊停止時要執行的腳本;

(4)可配置日程表設置的日程所要執行的腳本;

(5)可配置當產生報警事件時要執行的腳本;

(6)可配置某項的值改變時所要執行的腳本。當腳本設置的監控項發生改變時,系統自動刷新。

聯動策略模塊至少支撐以下策略模式:

(1)啟動執行:當策略模塊啟動的時候執行,僅一次。

(2)循環執行:按設定的時間間隔執行。

(3)退出執行:當策略模塊退出的時候執行,僅一次。

(4)周期執行:當日程表被觸發時執行。

(5)事件執行:當產生報警事件時執行。

(6)值改變執行:根據腳本中包含的項ID,判斷當該項的值發生改變時執行。

1.3.4 腳本服務

實現動態靈活的設置系統操作或向終端設備發送控制指令。腳本語法需至少支持JavaScript 語法。在腳本中還應該提供各種系統變量,以滿足各種腳本需求。

1.3.5 日程管理

日程管理為系統提供各種有規律的定時操作,提高系統的自動化管理水平。

1.3.6 數據備份

數據定時壓縮備份降低硬盤的使用容量,並可在需要時對備份的數據進行無損還原。

1.3.7 雙機備份

提供雙機熱備功能,當主站系統出現問題時,從站系統可以接管工作,最大程度保證平台的穩定運行。

1.3.8 權限管理

對系統的權限資源、用戶、角色、角色組進行管理,除了系統管理員外不同的區域有自己的管理員,可以對所在區域以及下屬區域進行權限、用戶和角色的划分。

1.3.9 日志管理

具有完善的日志功能,包括操作日志、系統運行日志,能夠記錄系統異常情況及其他安全事件。

1.3.10 報表功能

支持兩種類別平台報表:一種是專門針對各業務的單獨的報表系統, 只能由業務的所屬合作伙伴或管理員查詢, 關注的是本業務的運營情況;

另一種是把所有業務統一抽取的平台運營分析報表,此種報表對平台所有業務進行運營分析, 可以使管理者對平台的運營狀況有總體的認識和了解,為決策提供數據依據。

1.4 平台接口設計

1.4.1 與行業終端的接口

M2M平台與行業終端接口應盡量統一,有助於標准體系的形成。如果已有標准的行業,應支持現有標准。

支持的協議應包括:工業控制領域中的 OPC、MODBUS、RS232/485 協議,環境保護行業國標 HJ/T212-2005 ,中國移動 M2M終端 WMMP協議等。

M2M平台應實現統一管理終端,實現終端登錄會話,實現終端的數據認證與加密。

行業應用平台可通過 M2M平台對終端進行管理與反控,下發指令並反饋執行結果。

1.4.2 與行業應用的接口

M2M平台作為各物聯網行業應用的基礎服務平台,應具有完備的接口與各應用交換數據,應提供規范化的接口規范,實現 M2M平台的對外數據交互標准、通用接口,接口形式包括 ESB、RMI接口、 WebService 接口、數據庫接口等。

1.4.3 與其他系統的接口

M2M平台預留與其他系統的信息接口,如上報本系統終端告警數據、行業統計數據等,接口形式包括 ESB、RMI 接口、 WebService 接口、數據庫接口等。

二、物聯網+大數據

物聯網大數據平台所需具備的能力分析。

1.1 高效分布式

必須是高效的分布式系統。物聯網產生的數據量巨大,僅中國而言,就有5億多台智能電表,每台電表每隔15分鍾采集一次數據,一天全國智能電表就會產生500多億條記錄。這么大的數據量,任何一台服務器都無能力處理,因此處理系統必須是分布式的,水平擴展的。為降低成本,一個節點的處理性能必須是高效的,需要支持數據的快速寫入和快速查詢。

1.2 實時處理

必須是實時處理的系統。互聯網大數據處理,大家所熟悉的場景是用戶畫像、推薦系統、輿情分析等等,這些場景並不需要什么實時性,批處理即可。但是對於物聯網場景,需要基於采集的數據做實時預警、決策,延時要控制在秒級以內。如果計算沒有實時性,物聯網的商業價值就大打折扣。

1.3 高可靠性

需要運營商級別的高可靠服務。物聯網系統對接的往往是生產、經營系統,如果數據處理系統宕機,直接導致停產,產生經濟有損失、導致對終端消費者的服務無法正常提供。比如智能電表,如果系統出問題,直接導致的是千家萬戶無法正常用電。因此物聯網大數據系統必須是高可靠的,必須支持數據實時備份,必須支持異地容災,必須支持軟件、硬件在線升級,必須支持在線IDC機房遷移,否則服務一定有被中斷的可能。

1.4 高效緩存

需要高效的緩存功能。絕大部分場景,都需要能快速獲取設備當前狀態或其他信息,用以報警、大屏展示或其他。系統需要提供一高效機制,讓用戶可以獲取全部、或符合過濾條件的部分設備的最新狀態。

1.5 實時流式計算

需要實時流式計算。各種實時預警或預測已經不是簡單的基於某一個閾值進行,而是需要通過將一個或多個設備產生的數據流進行實時聚合計算,不只是基於一個時間點、而是基於一個時間窗口進行計算。不僅如此,計算的需求也相當復雜,因場景而異,應容許用戶自定義函數進行計算。

1.6 數據訂閱

需要支持數據訂閱。與通用大數據平台比較一致,同一組數據往往有很多應用都需要,因此系統應該提供訂閱功能,只要有新的數據更新,就應該實時提醒應用。而且這個訂閱也應該是個性化的,容許應用設置過濾條件,比如只訂閱某個物理量五分鍾的平均值。

1.7 和歷史數據處理合二為一

實時數據和歷史數據的處理要合二為一。實時數據在緩存里,歷史數據在持久化存儲介質里,而且可能依據時長,保留在不同存儲介質里。系統應該隱藏背后的存儲,給用戶和應用呈現的是同一個接口和界面。無論是訪問新采集的數據還是十年前的老數據,除輸入的時間參數不同之外,其余應該是一樣的。

1.8 數據持續穩定寫入

需要保證數據能持續穩定寫入。對於物聯網系統,數據流量往往是平穩的,因此數據寫入所需要的資源往往是可以估算的。但是變化的是查詢、分析,特別是即席查詢,有可能耗費很大的系統資源,不可控。因此系統必須保證分配足夠的資源以確保數據能夠寫入系統而不被丟失。准確的說,系統必須是一個寫優先系統。

1.9 數據多維度分析

需要對數據支持靈活的多維度分析。對於聯網設備產生的數據,需要進行各種維度的統計分析,比如從設備所處的地域進行分析,從設備的型號、供應商進行分析,從設備所使用的人員進行分析等等。而且這些維度的分析是無法事先想好的,而是在實際運營過程中,根據業務發展的需求定下來的。因此物聯網大數據系統需要一個靈活的機制增加某個維度的分析。

1.10 支持數據計算

需要支持數據降頻、插值、特殊函數計算等操作。原始數據的采集可能頻次挺高,但具體分析時,往往不需要對原始收據進行,而是數據降頻之后。系統需要提供高效的數據降頻操作。設備是很難同步的,不同設備采集數據的時間點是很難對齊的,因此分析一個特定時間點的值,往往需要插值才能解決,系統需要提供線性插值、設置固定值等多種插值策略才行。工業互聯網里,除通用的統計操作之外,往往還需要支持一些特殊函數,比如時間加權平均。

1.11 即席分析和查詢

需要支持即席分析和查詢。為提高大數據分析師的工作效率,系統應該提供一命令行工具或容許用戶通過其他工具,執行SQL查詢,而不是非要通過編程接口。查詢分析的結果可以很方便的導出,再制作成各種圖標。

1.12 靈活數據管理策略

需要提供靈活的數據管理策略。一個大的系統,采集的數據種類繁多,而且除采集的原始數據外,還有大量的衍生數據。這些數據各自有不同的特點,有的采集頻次高,有的要求保留時間長,有的需要多個副本以保證更高的安全性,有的需要能快速訪問。因此物聯網大數據平台必須提供多種策略,讓用戶可以根據特點進行選擇和配置,而且各種策略並存。

1.13 開放的系統

必須是開放的。系統需要支持業界流行的標准SQL,提供各種語言開發接口,包括C/C++,Java,Go,Python,RESTful等等,也需要支持Spark,R,Matlab等等,方便集成各種機器學習、人工智能算法或其他應用,讓大數據處理平台能夠不斷擴展,而不是成為一個孤島。

1.14 支持異構環境

系統必須支持異構環境。大數據平台的搭建是一個長期的工作,每個批次采購的服務器和存儲設備都會不一樣,系統必須支持各種檔次、各種不同配置的服務器和存儲設備並存。

1.15 支持邊雲協同

需要支持邊雲協同。要有一套靈活的機制將邊緣計算節點的數據上傳到雲端,根據具體需要,可以將原始數據,或加工計算后的數據,或僅僅符合過濾條件的數據同步到雲端,而且隨時可以取消,更改策略。

1.16 單一后台管理

需要單一的后台管理系統。便於查看系統運行狀態、管理集群、管理用戶、管理各種系統資源等,而且系統能夠與第三方IT運維監測平台無縫集成,便於管理。

1.17 私有化部署

便於私有化部署。因為很多企業出於安全以及各種因素的考慮,希望采用私有化部署。而傳統的企業往往沒有很強的IT運維團隊,因此在安裝、部署上需要做到簡單、快捷,可維護性強。

三、物聯網開源項目

3.1 Thingsboard

一個開源的用於數據收集,處理,可視化和設備管理的開源物聯網平台。
它通過行業標准的物聯網協議(MQTT,CoAP和HTTP)實現設備連接,並支持雲和本地部署。

ThingsBoard結合了可伸縮性,容錯性和性能,因此您永遠不會丟失數據。

3.1.1 ThingsBoard特性

1. 遙測數據收集

以可靠的方式收集和存儲遙測數據,以應對網絡和硬件故障。使用可自定義的Web儀表板或服務器端API訪問收集的數據。

2. 多租戶

開箱即用地支持多租戶安裝。單個租戶可能具有多個租戶管理員以及數百萬個設備和客戶。

3. 數據可視化

提供30多個可立即配置的小部件,並能夠使用內置編輯器創建自己的小部件。內置線圖,數字和模擬儀表,地圖等等。

4. 橫向可擴展性

隨着以群集模式添加新的Thingsboard服務器,受支持的服務器端請求和設備的數量呈線性增加。無停機時間,服務器重啟或應用程序錯誤。

5. 物聯網規則引擎

根據實體屬性或消息內容,使用靈活的規則鏈處理傳入的設備數據。使用自定義邏輯將數據轉發到外部系統或觸發警報。在警報上配置復雜的通知鏈。增強服務器端功能或使用高度可定制的規則來操作設備。使用拖放規則鏈設計器定義您的應用程序邏輯。

6. 容錯

所有Thingsboard服務器都是相同的。沒有主人工人或熱備用人員。自動檢測到節點故障。可以在不停機的情況下更換發生故障的節點。使用可靠的NoSQL數據庫復制持久數據。

7. 設備管理

提供注冊和管理設備的功能。允許監視客戶端和供應服務器端設備屬性。為服務器端應用程序提供API,以將RPC命令發送到設備,反之亦然。

8. 安全

支持MQTT和HTTP協議的傳輸加密。支持設備認證和設備憑證管理。

9. 資產管理

提供注冊和管理資產的功能。允許供應服務器端資產屬性 並監視相關警報。使用關系建立實體層次的能力。

10. 定制與整合

使用可自定義的規則鏈,小部件和傳輸實現擴展默認平台功能。除了MQTT,CoAP和HTTP支持之外,ThingsBoard用戶還可以使用自己的傳輸實現或自定義現有協議的行為。

11. 警報管理

提供了創建和管理能力的報警與你的實體:設備,資產,客戶等可以實時報警監控和報警傳播到相關實體的層次結構。在設備斷開連接或不活動事件時發出警報。

12. 100%開源

ThingsBoard已獲得Apache許可2.0的許可,因此您可以在商業產品中免費使用它。您甚至可以將其托管為SaaS或PaaS解決方案。

13. 微服務或單片

支持針對入門環境或小型環境的整體部署。提供升級到微服務的功能,以實現高可用性和水平可伸縮性。

SQL,NoSQL和混合數據庫

支持各種數據庫選項以及選擇存儲主要實體和遙測數據的位置的功能

3.1.2 系列文章

3.2 Node-RED

由IBM新興技術服務團隊構建的可視化物聯網編排工具,可基於瀏覽器的流程編輯器連接設備、服務器和 API 應用。

他是一個可視化的項目,后台使用的是NodeJS語言,提供了Web頁面,來編寫Flow,
這是該項目提供的頁面。
在這里插入圖片描述

這里的Flow你可以理解為一個最小可用的服務。創建Flow的主要方式是通過在瀏覽器拖拽完成的。所有所見即所得,基於瀏覽器的流程編輯,所以說他是一個可視化的編排工具。此外它還支持,http,mqtt,websocket,tcp,utp,等協議。支持所有主流的鏈接設備和服務器。此外他還是一個可以無限擴展的平台,目前平台有超過225,000個模塊,你可以輕松地在擴展面板中添加並使用他們。

總結一下Node-RED工具的特點

  • 可視化,直接在瀏覽器拖拽創建Flow
  • 平台可使用模塊豐富
  • 支持http,mqtt,websocket,tcp,utp協議
  • 使用Nodejs事件驅動的非阻塞模型,非常適合在低成本硬件運行
  • 完全開源,可以自主開發

3.2.1 系列文章

Gitee地址:https://gitee.com/jetlinks/jetlinks-community

JetLinks 基於Java8,Spring Boot 2.x,WebFlux,Netty,Vert.x,Reactor等開發, 是一個開箱即用,可二次開發的企業級物聯網基礎平台。平台實現了物聯網相關的眾多基礎功能, 能幫助你快速建立物聯網相關業務系統。

3.3.1 核心特性

開放源代碼

全部源代碼開放,可自由二次開發.前后端分離,接口全開放.

統一設備接入,海量設備管理

TCP/UDP/MQTT/HTTP、TLS/DTLS、不同廠商、不同設備、不同報文、統一接入,統一管理.

強大的規則引擎

強大的可視化規則設計器.以及多種規則模型支持(設備告警,場景聯動等). rule-engine.png

可視化大屏

可視化大屏設計器,靈活配置大屏展示。 big-screen.png

多租戶

靈活的非侵入多租戶數據權限控制。可實現不同租戶,不同用戶共享數據。

在線演示地址: http://demo.jetlinks.cn

(opens new window) 用戶名:test 密碼: test123456.

3.3.2 架構

platform

3.4 iot-dc3

DC3是基於Spring Cloud的開源可分布式物聯網(IOT)平台,用於快速開發、部署物聯設備接入項目,是一整套物聯系統解決方案。

Gitee地址:https://gitee.com/pnoker/iot-dc3

3.4.1 DC3 架構設計

iot-dc3-architecture

DC3模塊拆分,四層架構:

  • 驅動層:用於提供標准或者私有協議連接物理設備的 SDK,負責南向設備的數據采集和指令控制,基於 SDK 可實現驅動的快速開發;

  • 數據層:負責設備數據的收集和入庫,並提供數據管理接口服務;

  • 管理層:用於提供微服務注冊中心、設備指令接口、設備注冊與關聯配對、數據管理中心,是所有微服務交互的核心部分,負責各類配置數據的管理,並對外提供接口服務;

  • 應用層(開發中...):用於提供數據開放、任務調度、報警與消息通知、日志管理等,具備對接第三方平台能力。

DC3功能設計,定位目標:

  • 可伸縮:水平可伸縮的平台,構建使用領先的 Spring Cloud 開源技術;
  • 容錯:沒有單點故障弱,集群中的每個節點是相同的;
  • 健壯和高效:單一服務器節點可以處理甚至數百成千上萬的設備根據用例;
  • 可定制:添加新的設備協議,並注冊到服務中心;
  • 跨平台:使用 Java 環境可異地、分布式多平台部署;
  • 自主可控:私有雲、公有雲、邊緣部署;
  • 完善性:設備快速接入、注冊、權限校驗;
  • 安全(開發中...):數據加密傳輸(mqtt 驅動已實現數據加密傳輸);
  • 多租戶:命名空間,多租戶化;
  • 雲原生:Kubernetes;
  • 容器化:Docker。

3.4.2 DC3技術實現

DC3 平台是基於 Spring Cloud 架構開發的,是一系列松耦合、開源的微服務集合。 微服務集合由4個微服務層和兩個增強的基礎系統服務組成,提供從物理域數據采集到信息域數據處理等一系列的服務。

iot-dc3-architecture

3.5 IOTGate

Gitee:https://gitee.com/willbeahero/IOTGate

官網:www.uiotp.com

演示賬號:用戶名 guest001 密碼 123456

浩欣物聯平台采用分布式微服務架構、分布式消息隊列、分布式緩存、時序數據存儲、流計算等技術實現的支持物聯設備遙測數據采集、告警數據預警等功能的泛行業IOT物聯網平台,可作為物聯網上層應用的物聯數據中台, 負責與各種不同規約類型的物聯設備直接交互,並為上層應用提供統一的接口和響應數據格式能極大降低物聯網研發的成本提高物聯網研發效率。浩欣物聯平台設備側采用IOTGate企業版作為物聯感知設備網絡入口。

煙台華崟科技有限公司:參與項目開源的貢獻,位於高新區藍海創業園。

四、參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM