не в состоянии публиковать данные в брокере комаров постоянно - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь непрерывно отправлять данные с Raspberry Pi на ПК с Windows, используя MQTT, я пытаюсь отправить 5 данных в Mosquitto, но, похоже, Mosquitto получает только одно значение

кодирование в Raspberry Pi

import paho.mqtt.client as mqtt
client=mqtt.Client()
client.connect("192.168.0.104",1883,60)
for i in range(0,5):
    data={"protocol":"mqtt"}
    client.publish("/test",str(data))

кодирование в брокере для получения данных:

import paho.mqtt.client as mqtt

print("attempting to connect...")


def on_connect(client, userdata, flags, rc):
    if(rc==0):
        print("connection successful broker linked")
    elif(rc==1):
        print("connection refused -  incorrect protocol version")
    elif(rc==2):
        print("connection refused - invalid client identifier")
    elif(rc==3):
        print("connection refused- server unavailable")
    elif(rc==4):
        print("connection refused- bad username or password")
    elif(rc==5):
        print("connection refused- not authorised")
    else:
        print("currently unused")

    client.subscribe("s/test")

def on_message(client, userdata, msg):
    data=eval(msg.payload)
    print(data)

client = mqtt.Client()
client.connect("localhost",1883,60)

client.on_connect = on_connect
client.on_message = on_message
client.loop_forever()

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Необходимо убедиться, что сетевой цикл работает как для клиента публикации, так и для подписчика.Сетевой цикл фактически обрабатывает отправку сообщений.

Ниже приведено простейшее изменение вашего кода.

import paho.mqtt.client as mqtt
client=mqtt.Client()
client.connect("192.168.0.104",1883,60)
for i in range(0,5):
    data={"protocol":"mqtt"}
    client.publish("/test",str(data))
    client.loop()
0 голосов
/ 25 сентября 2018

Задумывались ли вы о том, чтобы следовать ответу, который я разместил здесь?

https://github.com/eclipse/mosquitto/issues/972

...