阿里雲物聯網平臺與數據庫

阿里雲提供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功能連上阿里雲,發送數據上阿里雲物聯網平臺。

  1. MQTT中的Server設置
雲端服務 一般
通訊協議 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進行取代。

  1. MQTT Topic設置

原則上,從HMI上傳數據是屬於發佈,即update。因此,在MQTT中設置Topic發佈並用完整的topic名為: /<ProductKey>/<deviceName>/update。QoS設置不支援QoS 2。格式建議保持使用JSON,方便後續解析運用。Topic所內含的數據為希望自HMI上傳的地址。

設計工程文件完成後,使用模擬或是下載到HMI上。正常聯機狀況下,MQTT狀態會顯示已連接。

利用規則引擎,可以將消息發送到其他的阿里雲服務。例如:

  • 發送到另一個Topic。(實現設備到設備間通訊)
  • 發送到MQ。MQ是如同MQTT 服務器(MQTT Server)的服務。可以支持標準的一對多Pub/Sub方式發佈MQTT消息。關於如何設置MQ可以參考其他說明文檔。
  • 發送到RDS。RDS是阿里雲上的關係型數據庫,支持MySQL, MS SQL等數據庫系統。

物聯網平臺只是一個接口工具,實際數據應該轉送到雲端其他服務,才產生價值。

物聯網平臺內設備,可以送到阿里雲對列服務中。在產品列表 (對創建的產品進行查看),選擇服務端訂閱,將物聯網平臺的消息推送到隊列中,然後服務端能基於SDK從隊列中獲取消息實現通信。

利用物聯網平臺的規則引擎發送到阿里雲RDS,輕易實現MQTT轉存入數據庫,大大方便後續分析應用。

數據庫的架構必須事先定義,並且數據格式與上送的數據能對應正確。在此使用阿里雲的DMS 網頁系統操作為範例圖。需要建置的設置有:

  1. 建立數據庫

    在DMS中創建數據庫即可。確認數據庫名,其他一般使用默認的設置。

  2. 在數據庫中建立表。

    “列名”是傳送數據進入此數據表的依據。 “類型”設置的數據格式與將來存入的數據也需要正確對應。通常除了傳入的數據列外,會另外保留一列,作為唯一索引,設置AUTO INCREMENT (自動增長)以及PRIMAY KEY (主鍵)。

物聯網平臺中是透過規則引擎將收到的數據根據規則轉發。規則引擎設置只要區分兩個階段步驟:處理數據和轉發數據。。

物聯網平臺收到數據後,使用數據處理引擎進行比對過濾,決定是否轉發此數據以及轉 的內容。數據處理引擎使用SQL SELECT語法查詢。

使用接口會協助完成SQL語句,僅需依序填入字段,Topic,和條件。

  • 字段: 表示希望由消息中取出的數據。支持JSON語法。HMI的MQTT傳送消息的JSON格式是如以下的例子,上層為d, ts,實際數據列於d的下一層級。
{
  "d" : {
    "value1" : [ true ],
    "value2" : [ 0 ]
  },
  "ts" : "2018-07-06T17:58:25.493665"
}

因此字段應輸入d.value1, 其中value1為該數據的名稱。

  • Topic: 表示希望處理的Topic消息。
  • 條件: 如有特定條件,於此輸入。例如: 希望 value1>10 時,才將處理消息,則輸入 d.value>10。

填妥信息後,SQL SELECT語句會自動於上方生成。

自上一步處理數據取出需要的數據後,此步驟決定如何轉發。在轉發數據區塊,添加操作,選擇存儲到雲數據庫(RDS)中。各項目依照以下填入:

(控制可能需要AliyunIOTAccessingRDSRole授權,請依照阿里雲指示提供物聯網平臺連入RDS的授權)

  • RDS實例: 選擇開通的RDS實例
  • MySQL數據庫: 選擇在[數據庫設置]中建立的數據庫。
  • 賬號/密碼:從下拉選單選擇賬號,並輸入該賬號的密碼。
  • 表名: 選擇在[數據庫設置]中建立的表。
  • 鍵 (key): 表中的列名。
  • 值 (value): 要填入的數據的來源。可以填入常數,或是填入上一步驟處理而來的數據。以${value1}表示,表示傳入value1的值。可輸入多組鍵值組合。

  1. 阿里雲數據庫RDS建置
  2. 物聯網平臺的產品與旗下設備建置。使用MQTT上報消息至設備應使用的Topic。
  3. 啟用物聯網平臺中的規則引擎,確認處理數據的SQL會選擇到正確的Topic,轉發的數據對應到RDS數據庫上正確的欄位。

關於此篇所提及功能之使用限制,請參考官方幫助文檔。