单元 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=id123456
  • securemode=2
  • timestamp=1234567890

Client ID 将是:id123456|securemode=2,signmethod=sha256,timestamp=1234567890|

Username

Username 的格式为 {deviceKey}&{productKey}。Device key 和 product key 可在 人体传感器 设备的设备详情页面上获取。


例如,某设备的 deviceKeyabcdefgproductKey1234567,则此处的 username 为 abcdefg&1234567

Password

Password 的格式为 toUpperCase(sha256({content}{deviceSecret}))。将 {content}{deviceSecret} 拼接得来的字符串用 SHA256 算法计算出新的字符串,再将新的字符串的字母全部转换成大写字母。

  • content:按照 clientId,deviceKey,productKey,timestamp 的顺序,将字段名称和值串联组合。


    例如:设备的参数值如下所示

    • clientId=id123456
    • deviceKey=dK987654
    • productKey=pK11111
    • timestamp=1234567890

    content = clientIdid123456deviceKeydK987654productKeypK11111timestamp1234567890


  • deviceSecret:Device secret 可在 人体传感器 设备的设备详情页面上获取。 deviceSecret 的值应该以没有任何空格或符号附加到 content 后。


注解

获取设备的 Device Secret 前,需确保当前账号拥有 设备管理服务 的 Full Access 权限。若无请联系组织管理员。

上报事件

建立连接后,可以使用透传模式上报设备事件。使用透传模式使设备能够将原始数据(如 Hex 数据)发送到云端。EnOS 将使用 人体传感器产品 中定义的脚本将原始数据转换为 JSON 格式。


上报事件的 topic 为 /sys/{productKey}/{deviceKey}/thing/model/up_raw


更多信息,参见 设备信息上报 (透传)

结果

  1. 事件上报后将会根据 Checkpoint 节点到 EnOS_default 规则的路由保持至 EnOS。打开 人体传感器 设备的 设备详情 页面,点击 事件,便可查看事件的信息。


    ../../_images/s2_view_event.png


  2. 一条短信将发送到 SMS 节点中的指定号码。


    ../../_images/s2_sms.jpg