2021年5月9日日曜日

Raspberry Pi Zero上のEclipse Mosquittoとpaho MQTTで、Grove Base HAT for Raspberry Piに繋いだGrove LEDモジュールを制御する

Raspberry Pi Zero上のEclipse Mosquittoとpaho MQTTで、Grove Base HAT for Raspberry Piに繋いだGrove LEDモジュールを制御するには、以下の手順を実行します。

実装手順

1. grove.pyとpaho-mqttモジュールをインストール
以下のコマンドでgrove.pyとpaho-mqttモジュールをインストールします。
curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s -

pip3 install paho-mqtt

2. paho MQTTでメッセージを受信するプログラムを作成する
以下のプログラムで受け取ったメッセージによってLEDを点灯・消灯します。

mosquitto_sub_led.py
import paho.mqtt.client as mqtt
from grove.grove_led import GroveLed
import time

PIN_D5 = 5
led = GroveLed(PIN_D5)

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))
    print(str(msg.payload))
    if msg.payload.decode('utf-8')  == 'on':
      print("turn on.")
      led.on()
    if msg.payload.decode('utf-8') == 'off':
      print("turn off.")
      led.off()

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_led.py

3. LED制御メッセージの送信
以下のプログラムでLED制御メッセージを送信します。

mosquitto_pub_led.py
import sys
import paho.mqtt.publish as publish
from grove.factory import Factory
import time


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

if len(sys.argv) == 1:
  print("python3 mosquitto_pub_led.py on/off")
else:
  if sys.argv[1] == 'on' or sys.argv[1] == 'off':
    publish.single(topic, sys.argv[1], hostname=host, port=port, keepalive=secs_keep_alive)

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

・消灯時コマンド
python3 mosquitto_pub_led.py off

関連情報

Groveデバイスまとめ

Raspberry Pi Zeroと小型ターンテーブルをREST APIで制御する

0 件のコメント:

コメントを投稿