1、编解码
编解码插件是供物联网平台调用,可以完成二进制格式与JSON、JSON与JSON之间的格式相互转换。
数据上报:设备上报二进制码流数据,物联网平台调用编解码插件,将数据解码为JSON数据,发送给应用服务器。
数据下发:应用服务器发送JSON数据,物联网平台调用编解码插件,将JSON数据编码为二进制码流,下发给设备。
2、设备影子
设备影子是一个JSON文件,存储设备的在线状态、最近一次上报的设备属性值、应用服务器期望下发的配置。
数据上报:设备上报数据,将更新影子设备report区的属性值
数据下发:应用服务器下发数据时,将更新影子设备desired区的属性值,若设备在线,则将期望值同步到设备;若设备不在线,则等设备在线后,在同步期望值到设备。
3、规则引擎
规则引擎是指用户可以在物联网平台上对接入平添的设备设定相应的规则,在条件满足设定的规则后,平台会触发相应的动作来满足用户需求。包括以下两种类型:
1)设备联动
设备联动指通过条件触发,基于预设的规则,引发多设备的协同反应,实现设备联动、智能控制。如温度感应器上报温度超过50度,自动发送邮件或短信,或者平台自动下达命令给设备,执行关闭动作。
2)数据转发
数据转发无缝与华为云其他服务对接,实现设备数据的存储、计算、分析的全栈服务。
创建数据转发规则时,需要编写SQL来解析和处理设备上报的JSON数据。
3)SQL语句
由SELECT子句和WHERE子句组成,设备消息上报的SQL源数据实例:
{
"resource" : "device.message",
"event" : "report",
"event_time" : "20151212T121212Z",
"notify_data" : {
"header" : {
"device_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
"product_id" : "ABC123456789",
"app_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
"gateway_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
"node_id" : "ABC123456789",
"tags" : [ {
"tag_value" : "testTagValue",
"tag_key" : "testTagName"
} ]
},
"body" : {
"topic" : "topic",
"content" : {
"temperature" : 40,
"humidity" : 24
}
}
}
}
在源数据中,body中的content是设备消息上报的数据,设置当设备上报数据中temperature大于38时触发条件,并筛选出device_id、content,不需要任何其他字段时,SQL语句示例如下:
SELECT notify_data.header.device_id AS device_id, notify_data.body.content WHERE notify_data.body.content.temperature > 38
当设备上报消息中temperature大于38度时,会触发转发,转发后的数据格式如下:
{
"device_id": "d4922d8a-6c8e-4396-852c-164aefa6638f",
"notify_data.body.content" : {
"temperature" : 40,
"humidity" : 24
}
}