阿里雲提供RDS數據庫功能 (包含MySQL, MS SQL數據庫) ,HMI可以直接連入並存取數據。另外方面,使用阿里雲物聯網平臺,能將HMI所取得的數據,以MQTT方式接入雲上,透過規則引擎轉發至其他裝置,實現數據轉發的M2M雙向通訊功能。同時也可以直接轉發至阿里雲RDS數據庫,快速且直接將數據導入後臺雲服務應用。
阿里雲關係型數據庫(Relational Database Service,簡稱RDS)是一種穩定可靠、可彈性伸縮的在線數據庫服務,並且提供了容災、備份、恢復、監控、遷移等方面的全套解決方案,徹底解決數據庫運維的煩惱。威綸通人機支持的MySQL(最受歡迎的開源數據庫)、MS SQL Server(大量企業採用的數據庫) 都可以在阿里雲端上建立運行。
數據庫為付費服務,需要於阿里雲內購買或申請RDS數據庫實例。購買方式與套餐費用請參考阿里雲的說明文檔。購買實例後,便可以在雲數據庫RDS列表中看到目前可以運作的數據庫資源。
若要實現自物聯網平臺接入數據直接存取到數據庫(規則引擎),數據庫實例地域設置必須與物聯網平臺平臺相同,目前僅中國國內僅華東二 (上海)服務器同時支持此兩個功能。
進入數據庫實例管理頁面,於基本信息處,可看到內網地址,表示由阿里雲服務連入數據庫所用的地址。另外如有從外網連入需求(阿里雲服務器之外),例如從HMI寫入數據庫,就必須激活外網地址;以此外網地址,才能允許由外部連入存取數據庫。
在賬號管理中,建立一個賬號,這個賬號將擁有此數據庫的最高權限。利用此賬號,再進入數據庫管理其他一般連入用賬號。
為保障數據庫存取安全,需要在數據安全性設置頁中,事先輸入允許訪問的地址,包含其他阿里雲服務。設置說明請參考阿里雲文檔說明。如果要從HMI/計算機訪問,則需要將該HMI/計算機的外網IP加入此白名單中。
使用“登錄數據庫” 按鈕,可開啟阿里雲提供的數據庫管理工具(DMS)。第一次先使用以上創建的高權限賬號登入。以高權限賬號登入後,可以在DMS中創造管理其他賬戶。爾後便可以使用其他客戶端軟件程序(Workbench, DBMS)連入數據庫,或是使用HMI連入。
如果有遠程直接存取的需求。(例如:直接用HMI,或是PC端DBMS系統連入阿里雲數據庫) 請務必啟用外網地址,並且將IP地址加入白名單。
要管理數據庫內容數據,數據庫用戶帳戶,需要使用高權限賬號登錄數據庫後設置。點選上方登錄數據庫,即開啟阿里雲RDS數據庫DMS系統登入頁面,輸入內網地址:端口和高權限賬號登入系統。
登入後可見數據庫的內容、狀態以及操作數據庫的功能列表。
物聯網平臺可使用HMI的MQTT功能連入傳送訊息。本章節說明連入阿里雲物聯網平臺的操作步驟。目前區域僅支持 華東二 (上海)區域服務器。
首先,需在[物聯網平臺]>>[產品管理]中創建產品,使用基礎版,節點類型=設備,自定義產品名稱後,按下確定創建產品。
進入[設備管理]中,由下拉選單中選擇上一步創建的產品,並進入添加設備步驟。添加完成後會提示此設備的ProductKey, DeviceName, DeviceSecret,記下這些數據以作為後續MQTT連入的使用參數。回到設備列表中可以觀看設備連入的狀態。
物聯網平臺上的設備即表示一臺設備數據的接入點,因此在此要為每一臺HMI在雲上添加一個對應設備,直到所有要上傳數據的人機在物聯網平臺上都有對應設備為止。
查看設備詳情的頁面,可以取得Topic 列表,表示這個設備使用的Topic。Topic名稱會包含了ProduceKey, DeviceName。Update表示發佈的Topic,由HMI發佈到這個Topic,物聯網平臺就會接收到。
EBPro端,將利用MQTT功能連上阿里雲,發送數據上阿里雲物聯網平臺。
雲端服務 | 一般 |
---|---|
通訊協議 | MQTT v3.1.1 |
域名 | 勾選使用域名。華東二 節點為 <ProductKey>.iot-as-mqtt.cn-shanghai.aliyuncs.com |
端口號 | 1883 |
Client ID | <ConnectID>|securemode=3,signmethod=hmacsha1,timestamp=123| <ConnectID>可以是自定義的值。 |
驗證 | 要勾選 |
用戶名稱 | <DeviceName>&<ProductKey> |
密碼 | 以sha1算法用以下數據計算出之HMAC 消息: clientId<clientId>deviceName<deviceName> productKey<productKey>timestamp123 密鑰:<DeviceSecret> 可提供此計算的一個網站 https://1024tools.com/hmac |
備註:<XXXX> 請連同<>以實際的數值取代,例如: deviceName值是mydevice就是代表 <deviceName>要用mydevice進行取代。
原則上,從HMI上傳數據是屬於發佈,即update。因此,在MQTT中設置Topic發佈並用完整的topic名為: /<ProductKey>/<deviceName>/update。QoS設置不支援QoS 2。格式建議保持使用JSON,方便後續解析運用。Topic所內含的數據為希望自HMI上傳的地址。
設計工程文件完成後,使用模擬或是下載到HMI上。正常聯機狀況下,MQTT狀態會顯示已連接。
利用規則引擎,可以將消息發送到其他的阿里雲服務。例如:
物聯網平臺只是一個接口工具,實際數據應該轉送到雲端其他服務,才產生價值。
物聯網平臺內設備,可以送到阿里雲對列服務中。在產品列表 (對創建的產品進行查看),選擇服務端訂閱,將物聯網平臺的消息推送到隊列中,然後服務端能基於SDK從隊列中獲取消息實現通信。
利用物聯網平臺的規則引擎發送到阿里雲RDS,輕易實現MQTT轉存入數據庫,大大方便後續分析應用。
數據庫的架構必須事先定義,並且數據格式與上送的數據能對應正確。在此使用阿里雲的DMS 網頁系統操作為範例圖。需要建置的設置有:
建立數據庫
在DMS中創建數據庫即可。確認數據庫名,其他一般使用默認的設置。
在數據庫中建立表。
“列名”是傳送數據進入此數據表的依據。 “類型”設置的數據格式與將來存入的數據也需要正確對應。通常除了傳入的數據列外,會另外保留一列,作為唯一索引,設置AUTO INCREMENT (自動增長)以及PRIMAY KEY (主鍵)。
物聯網平臺中是透過規則引擎將收到的數據根據規則轉發。規則引擎設置只要區分兩個階段步驟:處理數據和轉發數據。。
物聯網平臺收到數據後,使用數據處理引擎進行比對過濾,決定是否轉發此數據以及轉 的內容。數據處理引擎使用SQL SELECT語法查詢。
使用接口會協助完成SQL語句,僅需依序填入字段,Topic,和條件。
{ "d" : { "value1" : [ true ], "value2" : [ 0 ] }, "ts" : "2018-07-06T17:58:25.493665" }
因此字段應輸入d.value1, 其中value1為該數據的名稱。
填妥信息後,SQL SELECT語句會自動於上方生成。
自上一步處理數據取出需要的數據後,此步驟決定如何轉發。在轉發數據區塊,添加操作,選擇存儲到雲數據庫(RDS)中。各項目依照以下填入:
(控制可能需要AliyunIOTAccessingRDSRole授權,請依照阿里雲指示提供物聯網平臺連入RDS的授權)
關於此篇所提及功能之使用限制,請參考官方幫助文檔。