You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LHT65N传感器Hex数据解码异常原因及解决办法

LHT65N传感器数据解码无效问题及解决方法

问题背景

使用2台LHT65N传感器、Wisgate Edge Lite 2网关,将传感器负载转发至Mosquitto代理,通过mqtt.js接收并展示数据。接收的传感器数据包中data字段为Hex字符串,但使用自定义解码方法后,无法得到有效数据。

接收的数据包示例

{"applicationID": "1","applicationName": "ptxd_temp_humid","devEUI": "a84041a777864399","deviceName": "sensor_uphill","timestamp": 1674051438,"fCnt": 179,"fPort": 2,"data": "CBCF09200203017FFF7FFF","data_encode": "hexstring","adr": true,"rxInfo": [{"gatewayID": "ac1f09fffe08bf79","loRaSNR": 0,"rssi": -59,"location": {"latitude": 0,"longitude": 0,"altitude": 0}}],"txInfo": {"frequency": 868800000,"dr": 7}}

自定义解码方法

decoder(bytes: any) {
  var batt_v = ((bytes[0] << 8 | bytes[1]) & 0x3FFF)/1000;
  var temp_int = ((bytes[2] << 24 >> 16 | bytes[3])/100).toFixed(2);
  var temp_ext = ((bytes[7] << 24 >> 16 | bytes[8])/100).toFixed(2);
  var hum_int = ((bytes[4] << 8 | bytes[5])/10).toFixed(1);
  var ext_sen = {
    "0":"No external sensor",
    "1":"Temperature Sensor",
  }[bytes[6]&0x7F];
  return {
    Ext_sensor: ext_sen,
    BatV: batt_v,
    TempC_SHT: temp_int,
    Hum_SHT: hum_int,
    TempC_DS: temp_ext,
  };
}

问题现象

预期解码后得到正常的传感器数据,但实际输出全为无效值。已排查网关配置、Hex转换器、LHT65N负载格式化工具,确认API密钥无误,均未解决问题。

解决方案

问题根源在于传入解码方法的参数类型错误:直接将Hex字符串传入了解码函数,而解码函数需要的是字节数组(UInt8Array)类型数据。将Hex字符串转换为Buffer(Node.js中Buffer属于UInt8Array的子类)后,解码恢复正常。

实现代码如下:

client.on('message', (topic, message: Buffer, packet: mqtt.IPublishPacket) => {
  let payload = JSON.parse(message.toString())
  console.log(Buffer.from(payload.data, 'hex'))
  this.data = this.Decoder(Buffer.from(payload.data, 'hex'));
  console.log(this.data)
})

内容的提问来源于stack exchange,提问作者ptxd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:50:21