阿里云物联网平台与数据库

阿里云提供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数据库上正确的栏位。

关于此篇所提及功能之使用限制,请参考官方帮助文檔。