未从节点-RED mqtt 节点接收到 JSON 格式的 mosquitto MQTT 消息

物联网 MQTT 蚊子 网页服务
2021-06-20 15:57:38

不知道我能在问题中表达多好,但我会尽力解释。

我正在尝试做的事情:

  1. 将 IFTTT Webhook 用于POSTMQTT 格式的 JSON 消息。

    发布网址:test.mosquitto.org
    EG:

   {
       "payload:": "kitchen",
       "topic:": "device/state",
       "retain:": true,
       "qos": 2
   }
  1. 使用 Node-REDmqtt input (subscribe) node并将设置配置为test.mosquitto.org端口 1883 并将主题设置为device/state,我应该能够将我发布到 mosquitto 代理的有效负载检索到我的 Node-RED 节点。

出了什么问题
我认为有些事情可能是错误的POSTtest.mosquitto.org经纪人。

故障排除
通过使用mosquitto_pubmosuqitto_sub命令,我能够在我的 Node-RED 中接收负载(这意味着我的 Node-RED mqtt 节点配置正确)。

命令:
终端 1:mosquitto_sub -h test.mosquitto.org -t device/state -d
终端 2:mosquitto_pub -h test.mosquitto.org -t device/state -m "kitchen"

Node-RED 成功接收到 JSON 对象格式的消息。但是当我尝试使用POST方法通过 Postman 发布到 URL时,它没有收到任何信息

1个回答

MQTT 代理不是 HTTP 服务器,您不能 POST 到代理,它不会工作。

MQTT 和 HTTP 是两种完全不同的协议,如果你想桥接它们,你需要编写程序来做到这一点。在 Node-RED 中这样做很简单。

HTTP-in set to receive POSTs --> MQTT-out to publish to broker
                             |
                             --> HTTP-response node (to close out the HTTP session)

您可以在HTTP-in节点中设置发布到的topic,也可以根据需要在HTTP-in节点和MQTT-out节点之间插入一个function节点来设置topic和qos设置。