自定义协议对接平台
# 平台端创建BOX
- 协议选择创建的自定义协议
- MQTT连接信息一般自动生成

>d注意:连接的clientId或者username不宜过长,自动生成的可以适当删减
# 设备端MQTT填写
- MQTT按照新建的BOX自动生成的信息填写即可

# 上传数据
## 上传数据主题
上传数据主题: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)
}
}
```