Thingsboard CE 3.3.1 ISO 8601格式时间戳上报遥测失败问题咨询
问题结论
这不是Thingsboard CE v3.3.1的固有局限,也不需要额外配置,问题根源是你在Windows命令行执行mosquitto_pub命令时的参数格式错误,导致上报的JSON不完整。
原因说明
- 从报错日志的
MalformedJsonException: Unterminated object at line 1 column 18 path $.t可以看出,平台接收到的JSON只到ts字段的首字母t就中断了,属于JSON格式本身不合法,和ts字段的时间格式没有直接关联。 - 你在构造命令时将
-m参数后的JSON内容拆分为了两行,Windows环境下的CMD/PowerShell默认不会自动拼接换行的字符串参数,导致实际发送的只有第一行的半截内容,触发解析错误。 - 你修改为UNIX时间戳后上报成功,是因为那次执行时JSON内容没有被截断,和时间格式无关。
解决方法
将命令和完整JSON放在同一行,注意转义JSON内部的双引号,正确命令示例:
mosquitto_pub -d -q 1 -h "192.168.0.108" -t "device/sck/ybuers/readings" -i xxxxx -m "{\"ts\":\"2021-11-08T16:17Z\",\"value1\":\"99\",\"value2\":\"24\"}"
补充说明
Thingsboard原生支持ISO 8601格式的字符串作为ts字段值,不需要额外做任何配置,只要上报的JSON格式合法就能正常解析。
内容的提问来源于stack exchange,提问作者Ric
相关产品推荐
相关产品推荐

