Help us understand the problem. What is going on with this article?

Orange Pi ZeroからRaspberry PiにMQTTで通信する

More than 3 years have passed since last update.

Raspberry PiにMosquitto Brokerをインストールしたので、Orange PiからMQTTを用いてpublishし、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へと通信することができました:thumbsup:

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away