MQTT:如何修改CE端SenML JSON默认解析器行为以获取完整Khomp网关报文
Khomp网关接入ThingsBoard获取原始SenML报文解决方案
你所使用的Khomp网关上报的SenML报文格式示例如下:
message: [ { "bn": "000D6FFFFE642E09", "bt": 1611339204 }, { "n": "model", "vs": "nir21z" }, { "n": "Geladeira Temp", "u": "Cel", "v": 4.0 } ]
针对你需要在网关默认拆分报文前获取完整原始报文的需求,可采用以下任意方案实现:
- 自定义ThingsBoard网关预处理器
在ThingsBoard网关的配置文件中,找到Khomp设备对应的连接器配置项,添加pre-processing自定义处理脚本,该脚本的执行优先级高于内置的SenML解析逻辑,可以直接读取到未被拆分的完整原始报文。你可以在脚本中将完整报文存入消息元数据后再走后续默认解析流程,也可以直接提取bn字段的MAC地址完成设备身份匹配,再自行拆分报文上报遥测数据。 - 部署前置报文中转服务
在Khomp网关和ThingsBoard网关之间部署一层轻量报文中转服务,Khomp网关的上报报文先发送到中转服务,中转服务留存完整原始报文后再转发到ThingsBoard网关的对应端口,你可以在中转服务中提前完成MAC地址提取、报文校验等预处理操作,无需修改ThingsBoard原有配置。 - 停用内置SenML解析逻辑
直接在Khomp对应的连接器配置中关闭默认SenML解析开关,所有上报报文会以原始字符串形式透传到ThingsBoard根规则链,你可以在根规则链起始位置添加脚本转换节点,自行完成SenML数组解析、设备匹配、遥测数据拆分的全流程操作。
内容的提问来源于stack exchange,提问作者Vinicius Leite
相关产品推荐
相关产品推荐

