我正在使用我的python代码通过mqttc将消息发布到node-red。问题是在20 mqttc发布后,数据未发布到node-red。
这是我用于发布到node-red的python代码:
mqttc.connect("nodered&mqtt_server_ip",1883)
i=1
while True:
i=i+1
mqttc.publish("sensor",i,1)
time.sleep(1)
我也试过了:
i=1
while True:
mqttc.connect("nodered&mqtt_server_ip",1883)
i=i+1
mqttc.publish("sensor",i,1)
mqttc.disconnect()
time.sleep(1)
无论如何,代码将前20个值发布到node-red,然后停止。
我的节点 - 红色工作流程如下。
答案 0 :(得分:1)
mqttc.connect("nodered&mqtt_server_ip",1883)
i=1
while True:
i=i+1
mqttc.publish("sensor",i,0)//corrected code
time.sleep(1)
答案 1 :(得分:1)
http://mosquitto.org/man/mqtt-7.html
MQTT定义了三个级别的服务质量(QoS)。 QoS定义了代理/客户端尝试确保收到消息的难度。消息可以在任何QoS级别发送,并且客户端可以尝试订阅任何QoS级别的主题。这意味着客户端选择它将接收的最大QoS。例如,如果在QoS 2发布消息并且客户端使用QoS 0订阅,则消息将以QoS 0传递到该客户端。如果第二个客户端也订阅了相同的主题,但具有QoS 2,则它将收到相同的消息,但具有QoS 2.对于第二个示例,如果客户端订阅了QoS 2并且在QoS 0上发布了消息,则客户端将在QoS 0上接收它。
更高级别的QoS更可靠,但涉及更高的延迟并且具有更高的带宽要求。
0:经纪人/客户端将发送一次消息,但没有确认。
1:经纪人/客户将至少发送一次消息,并需要确认。
2:代理/客户端将使用四步握手将消息传递一次。