5. @MQTTを使用したクラウド呼び出しシステム¶
Message Queuing Telemetry Transport(MQTT)はシンプルなメッセージングプロトコルです。 また、IoT(Internet of Things)の最も一般的なメッセージングプロトコルでもあります。
MQTTプロトコルは、IoTデバイスがデータを転送する方法を定義します。 これらはイベント駆動であり、Pub/Subモデルを使用して相互接続されています。 送信者(Publisher)と受信者(Subscriber)は、トピックを介して通信します。 デバイスが特定のトピックでメッセージを公開すると、そのトピックに登録されたすべてのデバイスがメッセージを受け取ります。
このセクションでは、Pico W、HiveMQ(無料の公開MQTTブローカーサービス)、および4つのボタンを使用してサービスベルシステムを作成します。 4つのボタンはレストランの4つのテーブルを意味し、顧客がボタンを押すとHiveMQでどのテーブルのゲストがサービスが必要かが表示されます。
1. 必要なコンポーネント
このプロジェクトには、以下のコンポーネントが必要です。
全体のキットを購入するのが確かに便利です、リンクはこちら:
名前 |
このキットに含まれるアイテム |
リンク |
---|---|---|
Kepler Kit |
450以上 |
以下のリンクから個別にも購入できます。
SN |
コンポーネント |
数量 |
リンク |
---|---|---|---|
1 |
1 |
||
2 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
4(10KΩ) |
||
6 |
4 |
||
7 |
1 |
||
8 |
18650バッテリー |
1 |
|
9 |
バッテリーホルダー |
1 |
2. 回路を組み立てる
警告
図に示されているようにLi-po充電モジュールが接続されていることを確認してください。それ以外の場合、短絡が原因でバッテリーや回路が壊れる可能性があります。
3. HiveMQにアクセス
HiveMQは、IoTデバイスへの迅速かつ効率的な信頼性の高いデータ転送を可能にするMQTTブローカーおよびクライアントベースのメッセージングプラットフォームです。
ブラウザで HiveMQ Web Client を開きます。
クライアントをデフォルトの公開プロキシに接続します。
新しいトピックの購読を追加 をクリックします。
フォローしたいトピックを入力し、 購読 をクリックします。ここで設定するトピックは、他のユーザーからメッセージを受け取らないように、より個別化されるべきです。また、大文字と小文字に注意してください。
4. MQTTモジュールのインストール
プロジェクトを開始する前に、Pico W用のMQTTモジュールをインストールする必要があります。
既に書いた
do_connect()
をShellで実行してネットワークに接続します。注釈
以下のコマンドをShellに入力し、
Enter
を押して実行します。もしPico Wに
do_connect.py
とsecrets.py
スクリプトがない場合は、 1. ネットワークへのアクセス を参照して作成してください。
from do_connect import * do_connect()
成功したネットワーク接続の後、シェルで
mip
モジュールをインポートし、MicroPython用の簡易化されたMQTTクライアントであるumqtt.simple
モジュールをmip
でインストールします。import mip mip.install('umqtt.simple')
インストールが完了したら、
umqtt
モジュールがPico Wの/lib/
パスにインストールされていることがわかります。
5. スクリプトを実行する
kepler-kit-main/iot
のパス下で5_mqtt_publish.py
ファイルを開きます。現在のスクリプトを実行する ボタンをクリックするか、F5キーを押して実行します。
再度 HiveMQ Web Client に戻って、ブレッドボード上のボタンのいずれかを押すと、HiveMQ上でメッセージプロンプトが表示されます。
このスクリプトが起動できるようにしたい場合、それをRaspberry Pi Pico Wに
main.py
として保存できます。
動作の仕組みは?
Raspberry Pi Pico Wは、 1. ネットワークへのアクセス で説明されているように、インターネットに接続する必要があります。このプロジェクトではそのまま使用します。
from do_connect import *
do_connect()
4つのボタンピンを初期化します。
sensor1 = Pin(16, Pin.IN)
sensor2 = Pin(17, Pin.IN)
sensor3 = Pin(18, Pin.IN)
sensor4 = Pin(19, Pin.IN)
MQTTブローカーに接続するために使用する URL
と client ID
を保存するための2つの変数を作成します。
公開ブローカーを使用しているので、 client ID
は必須ではありません。
mqtt_server = 'broker.hivemq.com'
client_id = 'Jimmy'
MQTTエージェントに接続し、1時間保持します。失敗した場合は、Pico Wをリセットします。
try:
client = MQTTClient(client_id, mqtt_server, keepalive=3600)
client.connect()
print('Connected to %s MQTT Broker'%(mqtt_server))
except OSError as e:
print('Failed to connect to the MQTT Broker. Reconnecting...')
time.sleep(5)
machine.reset()
変数 topic
を作成します。これは、購読者がフォローする必要があるトピックです。それは上記の 2. HiveMQに訪れる の ステップ4 で記入したトピックと同じでなければなりません。
ちなみに、ここでの b
は、MQTTがバイナリベースのプロトコルであるため、文字列をバイトに変換します。
topic = b'SunFounder MQTT Test'
各ボタンに割り込みを設定します。ボタンが押されたら、 topic
の下にメッセージが投稿されます。
def press1(pin):
message = b'button 1 is pressed'
client.publish(topic, message)
print(message)
sensor1.irq(trigger=machine.Pin.IRQ_RISING, handler=press1)