2021年4月8日木曜日

Debian 10(Buster)/Ubuntu 20.04/Raspberry PiにEclipse MosquittoとPython用Eclipse pahoをインストールする

Eclipse mosquittoはMQTT ブローカー(=MQTTのサーバ)、Eclipse pathoはMQTTプロトコルのライブラリです。
Publish/Subscribeモデルでメッセージを送受信できます。

開発手順

1. mosquittoをインストール
以下のコマンドでmosquittoをインストールします。
sudo apt-get -y install mosquitto mosquitto-clients

2. pipenvの導入
pipenvをインストールしていない場合は、以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

sudo pip3 install --upgrade pip

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

source ~/.bashrc

3. paho-mqttモジュールがインストールされた仮想環境作成
pipenvを使用する場合は以下のコマンドで、paho-mqtt用の仮想環境を作成します。
mkdir -p ~/paho_mqtt

cd ~/paho_mqtt

pipenv --python 3

pipenv install paho-mqtt

pipenv shell

4. Subscribeサンプルプログラム
以下のプログラムで、mosquitto/testというトピックを受信してメッセージを表示します。

mosquitto_sub_test.py
import paho.mqtt.client as mqtt

topic = "mosquitto/test"
host = "localhost"
port = 1883
secs_keep_alive=60

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

def on_message(client, userdata, msg):
    print("received: {}:{}".format(msg.topic, str(msg.payload)))

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

client.connect(host, port, secs_keep_alive)

client.loop_forever()

・実行方法
以下のコマンドで受信プログラムを実行します。止める場合はCtrl+Cで止めてください。
python3 mosquitto_sub_test.py

5. Publishサンプルプログラム
以下のプログラムで、mosquitto/testというトピックにメッセージを送信します。

mosquitto_pub_test.py
import paho.mqtt.publish as publish

topic = "mosquitto/test"
host = "localhost"
port = 1883
secs_keep_alive=60

publish.single(topic, "message test", hostname=host, port=port, keepalive=secs_keep_alive)

・実行方法
以下のコマンドで送信プログラムを実行します。
python3 mosquitto_pub_test.py

Mosquittoのコマンドによる送受信

mosquittoのコマンドで、メッセージを送受信する事も出来ます。

・送信用コマンド
mosquitto_pub -t mosquitto/test -h localhost -m "test message by command."

・受信用コマンド
mosquitto_sub -t mosquitto/test -h localhost

0 件のコメント:

コメントを投稿