开启 TCP 模块
配置 tcp.protocol.enabled=true,然后启动或重启平台。
这页复用 TCP 接入的开始说明,方便在“快速开始 -> 设备接入 -> TCP设备接入”这条路径下连续阅读。
平台支持通过 TCP 通信的各类设备接入,既包括 JT808、DLT645、Modbus RTU/TCP 这类常见协议设备,也包括厂商自定义的任何私有协议设备。
配置 tcp.protocol.enabled=true,然后启动或重启平台。
接入方式选择 TCP,并准备最小物模型与 ProductKey。
绑定产品,设置 host、port、parserType,保存后启动。
重点关注 decoderType、preDecode、decode、encode。
让设备或调试工具连入平台,先打通第一条上行消息。
确认属性入库、事件上报正常,再验证指令下发与响应。
部署侧先确认配置已经打开,如application-prod.properties:
# TCP协议
tcp.protocol.enabled=true改完后需要启动或重启平台,只改配置不重启不会生效。
在产品管理里新建产品时,接入方式选择 TCP。第一次联调时,建议同时准备好下面几样东西:

这一层才是“设备到底连哪个地址和端口”。
你需要完成 4 个动作:
host、port 和 parserType。这里最重要的一句是: 保存成功 不等于 已经监听,必须看到组件状态是 运行中 才行。

这里开启的是31183端口

如果设备直接发的是平台标准格式,理论上可以少写很多脚本;但大多数 TCP 设备都是厂商自定义报文,所以通常至少要写下面 3 个函数:
preDecode 解决“你是谁”。 先从原始报文里提取 deviceId,确定设备唯一性!decode 解决“你发了什么”。把设备上报解析成 物模型 属性、事件或响应。encode 解决“我要怎么回你”。平台下发的功能调用转成设备报文。下面这个例子适合“自定义 HEX 报文”的入门联调:
var preDecode = (payload, context) => {
var payloadHex = payload.toUpperCase();
var result = {};
if (payloadHex.length() >= 12 && payloadHex.substring(0, 4) === "A5A5") {
result.deviceId = payloadHex.substring(4, 12);
}
return result;
};
//这里返回结果示例:{"deviceId":"abc123"}
var decode = (payload, context) => {
var payloadHex = payload.toUpperCase();
var result = [];
var deviceId = payloadHex.substring(4, 12);
var cmdCode = payloadHex.substring(12, 14);
if (cmdCode === "01") {
result.push({
"messageType": "PROPERTIES",
"deviceId": deviceId,
"properties": {
"raw": payloadHex
}
});
}
if (cmdCode === "02") {
result.push({
"messageType": "EVENT",
"deviceId": deviceId,
"event": "online",
"data": {
"raw": payloadHex
}
});
}
return jsonToStr(result);
};
var encode = payload => {
var obj = toJson(payload);
var deviceId = obj.data.deviceId;
var state = obj.data.state;
if (obj.function === "switch") {
return ("A5A5" + deviceId + "03" + "02" + "01" + state + "5A5A").toUpperCase();
}
return "";
};推荐开发顺序
不要一上来就写完整协议,最稳妥的顺序是:
preDecode,确认能稳定拿到 deviceId。decode,先把一条属性上报打通。encode,验证指令下发。

第一次联调的建议顺序是: 先写通 preDecode,确认平台能认出设备;再写 decode;最后再做 encode。
我们使用模拟器,以下面设备为例,确保啥运行中、绑定了端口和产品信息

我们用模拟器发送第一条消息:3B8E5D1F7A2C9046

查看日志
