Orange Pi Zero에서 Raspberry Pi로 MQTT로 통신

Raspberry Pi에 Mosquitto Broker를 설치했습니다. 그래서 Orange Pi에서 MQTT를 사용하여 게시하고 Raspberry Pi에서 subscribe 해보십시오. 이번에는 Python의 MQTT Python client library paho-mqtt을 이용합니다.

Raspberry Pi (Subscriber) 측 준비



Subscriber 측 코드 (mqtt_subscriber.py)는 다음과 같습니다.
#!/usr/bin/env python

import paho.mqtt.client as mqtt

host = '127.0.0.1'
port = 1883
keepalive = 60
topic = 'mqtt/test'

def on_connect(client, userdata, flags, rc):
    print('Connected with result code ' + str(rc))
    client.subscribe(topic)

def on_message(client, userdata, msg):
    print(msg.topic + ' ' + str(msg.payload))

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect(host, port, keepalive)

client.loop_forever()
on_connect는 Broker와의 연결을 설정할 때 호출되는 콜백 함수입니다. 또한 on_message는 Broker로부터 메시지를 받았을 때 호출되는 콜백 함수입니다.

그런 다음이 코드를 모든 디렉토리에서 실행합니다.
$ virtualenv venv
$ source venv/bin/activate
$ pip install paho-mqtt
$ python mqtt_subscriber.py
Connected with result code 0

Orange Pi (Publisher) 측 준비



Publisher 측 코드 (mqtt_publisher.py)는 다음과 같습니다.
#!/usr/bin/env python

import time
import paho.mqtt.client as mqtt

host = 'xxx.xxx.xxx.xxx'
port = 1883
keepalive = 60
topic = 'mqtt/test'

client = mqtt.Client()
client.connect(host, port, keepalive)

for i in range(3):
    client.publish(topic, 'hello from orangepi')
    time.sleep(1)

client.disconnect()

1초 간격으로 세 번 "hello from orangepi"라는 메시지를 Broker에 publish하고 있습니다. host는 Raspberry Pi의 IP 주소를 지정합니다.

Subscriber 측이 실행 중인지 확인한 후 다음 코드도 실행합니다.
$ virtualenv venv
$ source venv/bin/activate
$ pip install paho-mqtt
$ python mqtt_publisher.py

실행 결과


$ python mqtt_subscriber.py
Connected with result code 0
mqtt/test hello from orangepi
mqtt/test hello from orangepi
mqtt/test hello from orangepi

안전한 MQTT는 Orange Pi Zero에서 Raspberry Pi로 통신 할 수있었습니다

좋은 웹페이지 즐겨찾기