提交物模型消息解析脚本
提交物模型消息解析脚本
重要:本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文以解析上、下行属性消息数据的脚本为例,介绍在数据格式为透传或自定义的产品下,如何编写并提交物模型消息解析脚本。
前提条件
创建产品时已定义数据格式为透传/自定义。具体操作,请参见创建产品。
背景信息
数据格式为ICA标准数据格式,设备按照物联网平台定义的标准数据格式生成消息上报,标准Alink JSON数据格式说明,请参见设备属性、事件、服务。
数据格式为透传/自定义,设备通信时,需要物联网平台调用您提交的消息解析脚本,将上行物模型消息解析为物联网平台定义的标准格式(Alink JSON),将下行物模型消息据解析为设备的自定义数据格式。
说明
本示例中的属性为默认模块属性,若使用自定义模块,标识符(identifier)的格式为${模块标识符}:${属性标识符}
。例如,model1:prop_int16
。
步骤一:编辑脚本
-
单个添加物模型:为该产品定义物模型属性。
本示例中定义了以下三个属性:
标识符(identifier) 数据类型 取值范围 读写类型 prop_float 浮点单精度(float) -100~100 读写 prop_int16 整数型(int32) -100~100 读写 prop_bool 布尔型(bool) 0:开;1:关 读写 消息解析脚本会根据这里定义的物模型来编写,用于解析上、下行物模型消息的数据。
本示例通信中参数值长度定义:
-
设备上报数据请求
字段 字节数 帧类型 1字节 请求ID 4字节 属性prop_int16 2字节 属性prop_bool 1字节 属性prop_float 4字节 -
设备上报数据响应
字段 字节数 帧类型 1字节 请求ID 4字节 结果code 1字节 -
设置属性请求
字段 字节数 帧类型 1字节 请求ID 4字节 属性prop_int16 2字节 属性prop_bool 1字节 属性prop_float 4字节 -
属性设置响应
字段 字节数 帧类型 1字节 请求ID 4字节 结果code 1字节
-
-
编写脚本。
-
在产品页面,单击产品对应的查看。
-
在产品详情页面,单击消息解析页签。
-
选择脚本语言,然后在编辑脚本下的输入框中输入脚本。
支持的脚本语言 设备自定义数据格式转Alink JSON格式数据的函数(上行通信) Alink JSON格式数据转为设备自定义数据格式的函数(下行通信) 示例代码 JavaScript(ECMAScript 5) rawDataToProtocol protocolToRawData JavaScript脚本示例 Python 2.7 raw_data_to_protocol protocol_to_raw_data Python脚本示例 PHP 7.2 rawDataToProtocol protocolToRawData PHP脚本示例 说明
您还需编写自定义Topic的上行消息解析脚本,相关脚本编写说明,请参见提交消息解析脚本。
有关自定义Topic消息解析和物模型消息解析的完整示例脚本,请参见透传/自定义产品完整示例脚本(JavaScript)、透传/自定义产品完整示例脚本(Python)和透传/自定义产品完整示例脚本(PHP)。
-
步骤二:在线测试脚本
重要
下文中传入和返回的十六进制字符串和JSON格式数据仅为示例,实际场景中,不可直接用于调试。
脚本编辑完成后,在模拟输入下,选择模拟类型,输入模拟数据在线测试脚本。
-
模拟解析设备上报的属性数据。
选择模拟类型为设备上报数据,输入以下模拟的设备上报数据,然后单击执行。
说明
以下传入参数模拟数据仅适用于JavaScript脚本,更多示例内容,请参见JavaScript脚本示例。
Python、PHP脚本的传入参数模拟数据,请参见Python脚本示例、PHP脚本示例。
您可使用字符串转十六进制工具,将待传入参数JSON格式数据转为十六进制格式数据。例如转化后为
00002233441232013fa00000
,则输入如下数据。
0x00002233441232013fa00000
数据解析引擎会按照脚本规则,将透传数据转换为JSON格式数据。
单击运行结果,查看解析结果。
-
{ "method": "thing.event.property.post", "id": "2241348", "params": { "prop_float": 1.25, "prop_int16": 4658, "prop_bool": 1 }, "version": "1.0" }
-
模拟解析物联网平台下发的返回结果数据。
选择模拟类型为设备接收数据,输入以下JSON格式数据,然后单击执行。
{ "id": "12345", "version": "1.0", "code": 200, "method": "thing.event.property.post", "data": {} }
-
数据解析引擎会将JSON格式数据转换为以下数据:
0x0200003039c8
-
模拟解析物联网平台下发的属性设置数据。
选择模拟类型为设备接收数据,输入以下JSON格式数据,然后单击执行。
{ "method": "thing.service.property.set", "id": "12345", "version": "1.0", "params": { "prop_float": 123.452, "prop_int16": 333, "prop_bool": 1 } }
数据解析引擎会将JSON格式数据转换为以下数据:
0x0100003039014d0142f6e76d
-
模拟解析设备返回的属性设置结果数据。
选择模拟类型为设备上报数据,输入以下数据,然后单击执行。
0x0300223344c8
数据解析引擎会将透传数据转换为以下JSON格式数据:
{ "code": "200", "data": {}, "id": "2241348", "version": "1.0" }
步骤三:提交脚本
重要
仅提交后的脚本才能被物联网平台调用;草稿状态的脚本不能被调用。
确认脚本可以正确解析数据后,单击提交,将该脚本提交到物联网平台系统,以供设备数据上下行时,物联网平台调用该脚本解析数据。
步骤四:使用真实设备调试
正式使用脚本之前,请使用真实设备与物联网平台进行上下行消息通信,以验证物联网平台能顺利调用脚本,解析上下行数据。
您可使用物联网平台提供的Link SDK开发设备接入物联网平台。详细内容,请参见Link SDK。
-
测试上报属性数据。
- 使用设备端上报设备属性数据,例如
0x00002233441232013fa00000
。 - 在物联网平台控制台,选择*设备管理* > *设备***。
- 单击设备对应的查看,然后在设备详情页*物模型数据* > *运行状态***页签下,查看是否有相应的属性数据。
- 使用设备端上报设备属性数据,例如
-
测试下发属性数据。
-
在物联网平台控制台,选择*监控运维* > *在线调试***。
-
选择要调试的产品和设备,并选择
默认模块
,功能选择为要调试的属性identifier,如属性(prop_int16),方法选择为
设置
,输入以下数据,单击
发送指令
。
{ "method": "thing.service.property.set", "id": "12345", "version": "1.0", "params": { "prop_float": 123.452, "prop_int16": 333, "prop_bool": 1 } }
-
查看设备端是否收到该属性设置指令。
-
在该设备的设备详情页面的*物模型数据* > *运行状态***页签下,查看设备是否上报当前属性数据。
-
可选:更新消息解析脚本
提交消息解析脚本成功后,您可在消息解析页签,修改或删除脚本代码后,重新提交。
警告
修改或删除脚本代码重新提交后,该产品下设备消息解析服务不可用、用户业务中断。请谨慎操作。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)