Python paho mqtt 클라이언트는 동시에 게시 및 구독하지 않습니다.

Axelle

MQTTLens를 통해 게시를 테스트하면 작동합니다. 그러나 버튼을 누르면 "on_publish"가 트리거되지만 상대방의 on_message에서는 아무것도 수신되지 않습니다. 트리거되지 않습니다. 동일한 스크립트를 실행하는 두 개의 Raspberry Pi가 있으며 유일한 차이점은 브로커 IP이며 주제가 반대입니다.

import RPi.GPIO as io
import os
import json
from time import sleep
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish

############### MQTT section ##################

Broker = "192.168.1.10"

rcv_topic = "home/groundfloor/livingroom/lights/lightx"    # receive messages on this topic
snd_topic = "home/groundfloor/kitchen/lights/lightx"       # send messages to this topic

def on_connect(mqttc, obj, flags, rc):
    print("rc: "+str(rc))
    mqttc.subscribe(rcv_topic) #receving/subscriber    

#when receving a message:
def on_message(mqttc, obj, msg):
    print("sub") #this is not being executed on button push, but it is when I publish through the MQTTLens
    print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))
    try:
        p = msg.payload.decode("utf-8")
        print("decoded payload: " + p)
        x = json.loads(p)
        set_leds(leds, tuple(x['leds'])) #set leds to received value

        return
    except Exception as e:
        print(e)

# callback functie voor publish  event
def on_publish(mqttc, obj, mid):
    print("pub")
    return

mqttc = mqtt.Client()
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
mqttc.on_subscribe = on_subscribe
mqttc.connect(Broker, 1883, 60) #last could be a port too
mqttc.loop_start() #client.loop_forever()

############### led&button section ##################
def init_leds(leds):
    io.setup(leds, io.OUT)

def set_leds(leds, states):
    print("leds and states: " + str(leds) + " " + str(states))
    io.output(leds, states)

def snd_msg(led):
    dataToSend=json.dumps({"leds":[led1State,led2State]})
    print("data: " + dataToSend)
    mqttc.publish(snd_topic, dataToSend)

io.add_event_detect(btn1,io.FALLING,callback=lambda *a: snd_msg(1),bouncetime=500)

############### main ##################

def main():
    try:
        while True:
            init_leds(leds)
    except KeyboardInterrupt:
        pass
    finally:
        io.cleanup()

#toplevel script
#below will only execute if ran directly - above is always accessible
if __name__ == '__main__':
    main()

내 문제와 직접 관련된 코드 부분 만 포함하고 일부를 더 짧게 변경했습니다. 그러나 더 많은 코드가 필요한 경우 언제든지 제공 할 수 있습니다.

나는 이것이이 질문 의 중복 일 수 있음을 알고 있지만 이미 답변에서 내 코드를 도출하려고 시도했으며 내가 잘못하지 않는 한 내 문제를 해결하지 못하는 것 같습니다.

아르 바즈 알람

두 개의 서로 다른 IP에 게시 및 구독중인 것 같습니다. 메시지를 받으려면 TOPIC_TEST (가정) 주제에 IP 192.168.1.10 (이는 브로커 IP라고 가정)에 게시하고 동일한 주제 TOPIC_TEST에 IP 192.168.1.10에 등록해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python Paho MQTT 라이브러리에서 구독하지 않고 메시지 받기

분류에서Dev

동일한 클라이언트 지역을 구독하는 두 개의 paho.mqtt 클라이언트

분류에서Dev

MQTT Paho JavaScript 클라이언트 사용을 시작하는 방법은 무엇입니까?

분류에서Dev

paho-MQTT python : loop_forever가 구독 메시지를 지원하도록하는 방법?

분류에서Dev

Paho Python 클라이언트가 짧은 메시지를 게시하지만 긴 메시지는 게시하지 않는 이유

분류에서Dev

paho-mqtt는 대기중인 메시지를 제공하지 않습니다.

분류에서Dev

pika (python 클라이언트)를 사용하여 RabbitMQ를 통해 MQTT 메시지 게시 / 구독

분류에서Dev

paho-mqtt 클라이언트가 동시에 여러 브로커에 연결할 수 있습니까?

분류에서Dev

MQTT에서 동일한 주제를 구독하는 일부 클라이언트에게 메시지 보내기

분류에서Dev

Python Azure IoT Hub 클라이언트 SDK에서 mqtt 게시 메시지에 대한 QoS 수준 0을 설정하는 방법은 무엇입니까?

분류에서Dev

paho-mqtt에서 여러 주제를 구독하고 게시하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

mosquitto mqtt 브로커는 구독자에게 20 개 이상의 게시 패킷을 보내지 않습니다.

분류에서Dev

Paho MQTT (C ++) 클라이언트가 Mosquitto에 연결하지 못함

분류에서Dev

MQTT 게시 및 구독, 동일한 장치에서 다른 주제?

분류에서Dev

PAHO mqtt에 주제를 게시 한 이유는 return-8이 나타났습니다.

분류에서Dev

Paho (MQTT) 클라이언트가 연결할 수 없습니다.

분류에서Dev

Worklight-Paho MQTT Javascript : Android 기기에서 항상 시간 초과 및 시뮬레이터에서 작동

분류에서Dev

Meteor 게시 / 구독이 서버 폴더에서 작동하지 않습니다.

분류에서Dev

Chrony 클라이언트는 시스템 및 하드웨어 날짜를 변경하지 않습니다.

분류에서Dev

Eclipse Paho Mqtt Client는 QoS-2에서 브로커가 전달하도록 ACK 될 때까지 게시 된 모든 메시지를 유지합니까?

분류에서Dev

QoS1 대 QoS2 메시지-Java에서 Paho MQTT 클라이언트를 사용한 처리의 차이점

분류에서Dev

다시 시작할 때 마지막 메시지를 반복하는 MQTT 클라이언트

분류에서Dev

python-osc 클라이언트의 OSC 메시지는 ChucK 서버에서 선택되지 않습니다.

분류에서Dev

여러 활동에서 액세스해야하는 Android에서 paho MQTT 클라이언트를 구현하는 방법

분류에서Dev

파이썬에서 paho mqtt를 사용하여 수신 된 메시지 처리

분류에서Dev

Debian에 eclipse / paho.mqtt C ++ 클라이언트 설치

분류에서Dev

MQTT 서버는 연결 권한이 없다는 메시지를 클라이언트에 어떻게 보내나요?

분류에서Dev

Autobahn-JS는 동일한 페이지에 게시하기위한 구독을받지 않습니다 (샘플).

분류에서Dev

명령 줄 mqtt 클라이언트를 실행할 때이 mqtt 메시지에 \ r을 포함하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Python Paho MQTT 라이브러리에서 구독하지 않고 메시지 받기

  2. 2

    동일한 클라이언트 지역을 구독하는 두 개의 paho.mqtt 클라이언트

  3. 3

    MQTT Paho JavaScript 클라이언트 사용을 시작하는 방법은 무엇입니까?

  4. 4

    paho-MQTT python : loop_forever가 구독 메시지를 지원하도록하는 방법?

  5. 5

    Paho Python 클라이언트가 짧은 메시지를 게시하지만 긴 메시지는 게시하지 않는 이유

  6. 6

    paho-mqtt는 대기중인 메시지를 제공하지 않습니다.

  7. 7

    pika (python 클라이언트)를 사용하여 RabbitMQ를 통해 MQTT 메시지 게시 / 구독

  8. 8

    paho-mqtt 클라이언트가 동시에 여러 브로커에 연결할 수 있습니까?

  9. 9

    MQTT에서 동일한 주제를 구독하는 일부 클라이언트에게 메시지 보내기

  10. 10

    Python Azure IoT Hub 클라이언트 SDK에서 mqtt 게시 메시지에 대한 QoS 수준 0을 설정하는 방법은 무엇입니까?

  11. 11

    paho-mqtt에서 여러 주제를 구독하고 게시하는 가장 좋은 방법은 무엇입니까?

  12. 12

    mosquitto mqtt 브로커는 구독자에게 20 개 이상의 게시 패킷을 보내지 않습니다.

  13. 13

    Paho MQTT (C ++) 클라이언트가 Mosquitto에 연결하지 못함

  14. 14

    MQTT 게시 및 구독, 동일한 장치에서 다른 주제?

  15. 15

    PAHO mqtt에 주제를 게시 한 이유는 return-8이 나타났습니다.

  16. 16

    Paho (MQTT) 클라이언트가 연결할 수 없습니다.

  17. 17

    Worklight-Paho MQTT Javascript : Android 기기에서 항상 시간 초과 및 시뮬레이터에서 작동

  18. 18

    Meteor 게시 / 구독이 서버 폴더에서 작동하지 않습니다.

  19. 19

    Chrony 클라이언트는 시스템 및 하드웨어 날짜를 변경하지 않습니다.

  20. 20

    Eclipse Paho Mqtt Client는 QoS-2에서 브로커가 전달하도록 ACK 될 때까지 게시 된 모든 메시지를 유지합니까?

  21. 21

    QoS1 대 QoS2 메시지-Java에서 Paho MQTT 클라이언트를 사용한 처리의 차이점

  22. 22

    다시 시작할 때 마지막 메시지를 반복하는 MQTT 클라이언트

  23. 23

    python-osc 클라이언트의 OSC 메시지는 ChucK 서버에서 선택되지 않습니다.

  24. 24

    여러 활동에서 액세스해야하는 Android에서 paho MQTT 클라이언트를 구현하는 방법

  25. 25

    파이썬에서 paho mqtt를 사용하여 수신 된 메시지 처리

  26. 26

    Debian에 eclipse / paho.mqtt C ++ 클라이언트 설치

  27. 27

    MQTT 서버는 연결 권한이 없다는 메시지를 클라이언트에 어떻게 보내나요?

  28. 28

    Autobahn-JS는 동일한 페이지에 게시하기위한 구독을받지 않습니다 (샘플).

  29. 29

    명령 줄 mqtt 클라이언트를 실행할 때이 mqtt 메시지에 \ r을 포함하는 방법은 무엇입니까?

뜨겁다태그

보관