MQTT中Hex转换为可识别格式

环境

  • EMQX 版本: [5.4.1]
  • 操作系统版本:Ubuntu 20.

重现此问题的步骤

  1. 按照官网上将 “MQTT 数据写入到 PostgreSQL”的示例配置好之后发现它动作执行都是失败的,用MQTTX HEX能查看,其他格式都是乱码



你好,请问你发送的 MQTT 消息中的 Payload 是不可见的二进制对吗?

请问对应这这个 PostgreSQL 这张 t_mqtt_msg 的 payload 列类型是什么呢?

ps: 另外也可以翻下 EMQX 的日志,看看报错的内容是什么原因呢?

payload 列类型是 text

下面这个是日志
freestrong.zip (1.4 KB)

所以是由于 text 格式没法存储,二进制数据导致写入 PGSQL 失败了? 试试改下格式,或者把 “动作”的 SQL 模板中的 ${payload} 改成一个硬编码的字符串。做对比测试,来找下失败原因

有可供参考的sql吗

我根据官网上写的
INSERT INTO t_mqtt_msg(msgid, sender, topic, qos, payload, arrived)
VALUES (
${id},
${clientid},
${topic},
${qos},
${payload},
TO_TIMESTAMP(${timestamp}::bigint / 1000)
);
您看需要怎么改呢呢

这类设备一般发出的数据通常是字节流,需要转换为字符串