单元 4:上报设备事件到 EnOS¶
规则配置后,就可以通过标准的 MQTT 协议与 EnOS 建立连接,并使用透传模式将 Hex 数据发送到指定的主题和将设备事件上报至 EnOS。
使用 MQTT 协议与 EnOS 云端建立连接¶
使用 MQTT 协议建立连接,需要准备 3 样东西。
Client ID
Username
Password
更多信息,参见 与 EnOS 云端建立连接。
Client ID¶
Client ID 的格式为 {clientId}|securemode={secureMode},signmethod=sha256,timestamp={timeStamp}|
。
clientId
:人体传感器 设备的 asset ID,可在 设备管理 > 设备资产 页面获取。secureMode
:使用 2(静态激活认证方式)。timeStamp
:当前的时间的 UNIX 时间戳,单位为毫秒。
假设使用了以下内容。
clientId
=id123456securemode
=2timestamp
=1234567890
Client ID 将是:id123456|securemode=2,signmethod=sha256,timestamp=1234567890|
。
Username¶
Username 的格式为 {deviceKey}&{productKey}
。Device key 和 product key 可在 人体传感器 设备的设备详情页面上获取。
例如,某设备的 deviceKey
为 abcdefg,productKey
为 1234567,则此处的 username 为 abcdefg&1234567
。
Password¶
Password 的格式为 toUpperCase(sha256({content}{deviceSecret}))
。将 {content}{deviceSecret}
拼接得来的字符串用 SHA256 算法计算出新的字符串,再将新的字符串的字母全部转换成大写字母。
content
:按照 clientId,deviceKey,productKey,timestamp 的顺序,将字段名称和值串联组合。例如:设备的参数值如下所示
clientId
=id123456deviceKey
=dK987654productKey
=pK11111timestamp
=1234567890
则
content
=clientIdid123456deviceKeydK987654productKeypK11111timestamp1234567890
。deviceSecret
:Device secret 可在 人体传感器 设备的设备详情页面上获取。deviceSecret
的值应该以没有任何空格或符号附加到content
后。
备注
获取设备的 Device Secret
前,需确保当前账号拥有 设备管理服务 的 Full Access 权限。若无请联系组织管理员。
上报事件¶
建立连接后,可以使用透传模式上报设备事件。使用透传模式使设备能够将原始数据(如 Hex 数据)发送到云端。EnOS 将使用 人体传感器产品 中定义的脚本将原始数据转换为 JSON 格式。
上报事件的 topic 为 /sys/{productKey}/{deviceKey}/thing/model/up_raw
。
更多信息,参见 设备信息上报 (透传)。
结果¶
事件上报后将会根据 Checkpoint 节点到 EnOS_default 规则的路由保持至 EnOS。打开 人体传感器 设备的 设备详情 页面,点击 事件,便可查看事件的信息。
一条短信将发送到 SMS 节点中的指定号码。