自定义协议对接平台

# 平台端创建BOX - 协议选择创建的自定义协议 - MQTT连接信息一般自动生成 ![image.png](https://cos.easydoc.net/16860085/files/lotf6a0t.png) >d注意:连接的clientId或者username不宜过长,自动生成的可以适当删减 # 设备端MQTT填写 - MQTT按照新建的BOX自动生成的信息填写即可 ![image.png](https://cos.easydoc.net/16860085/files/lotf91py.png) # 上传数据 ## 上传数据主题 上传数据主题:sys/device/${客户端ID}/${序列号}/variant_data 例子:sys/device/yp&110706410001/110706410001/variant_data ## 上传脚本协议修改 ```python /** * 处理从设备端接收到的消息 * @param {string} topic 消息主题 * @param {array} payload 消息内容 */ function on_receive(topic, payload) { var jsonStr = getStringFromBytes(payload); var obj = JSON.parse(jsonStr); var params = {}; function onData(data) { params[data.id] = data.val; } forEach(obj.data[0].point, onData); var ret_params = { "type": "variant_data", "version": "1.0", "params": params } return ret_params } ``` >i1.forEach后数据的解析 2.ret_params里面json格式 3.function onData(data) # 下发数据 ## 下发数据主题 下发数据主题:sys/device/${客户端ID}/${序列号}/system/WriteData system/WriteData:return中topic定义的 ## 下发脚本协议修改 ```python /** * 处理将要发送到设备端的消息 * @param {object} message 消息参数 */ function on_send(message) { var obj = JSON.parse(message); var param = { Version: 1.0, Data: [] }; /** * 下面这段function是下发格式如下: * {"Version":1,"Data":[{"温度":"88"}]} */ function onParam(value, key) { kv ={}; kv[key]=value; param.Data.push(kv); } /** * 下面这段function是下发格式如下: * {"Version":10,"Data":[{"name":"温度","value":"23"}]} */ /** function onParam(value, key) { param.Data.push({ name: key, value: value }); } */ forEach(obj.params, onParam); return { topic: "system/WriteData", payload: JSON.stringify(param) } } ```