当接收到某些有效载荷为“ 0”的MQTT消息时,我正在使用mqtt-launcher(https://github.com/jpmens/mqtt-launcher)执行命令。
这是配置
user@localhost:~$ mosquitto_sub -h broker -p 1883 -t 'channel/dostuff' -v -u 'user' -P 'mysecurepassword'
每次,我启动python脚本,shell脚本执行两次。
但是我希望它仅在发送带有有效载荷“ 0”的MQTT消息时才执行一次。
我先确定预订时隐式创建的队列为空,然后清除它,然后启动mqtt-launcher,但在程序连接后脚本仍执行两次。
运行channel/dostuff 0
会得到broker.url=tcp://broker:1883
broker.user=openhab
broker.pwd=mysecurepassword
broker.qos=1
broker.retain=false
broker.async=false
我不熟悉蚊子,但是我认为这意味着我收到消息了,对吧?
我转为保留选项,重新启动了openHAB和RabbitMQ,但是仍然发送了消息。这是openHAB mqtt.cfg:
In [1]: tf.layers.MaxPooling2D(2, 2, padding='same')(conv)
Out[1]: <tf.Tensor 'max_pooling2d/MaxPool:0' shape=(20, 64, 64, 32) dtype=float32>
答案 0 :(得分:1)
您已发布一条消息,其中包含有效载荷0
和保留位。
这意味着,无论何时客户端订阅该主题,带有保留位设置的最后一条消息都将传递给该客户端。
您可以通过将保留位设置且有效载荷为空的消息发布到同一主题来清除保留的消息。您可以使用mosquitto_pub命令执行以下操作:
mosquitto_pub -t "channel/dostuff" -u 'user' -P 'password' -r -n
您应确保通常用于发布消息的内容均未设置保留位。