MQTTを使用したクラウドコールシステム¶
メッセージキューイングテレメトリートランスポート(MQTT)は、直感的なメッセージングプロトコルです。これは、インターネットオブシングス(IoT)の分野で最も広く使用されているメッセージングプロトコルでもあります。
MQTTプロトコルは、IoTデバイスがデータを交換する方法を定義します。イベント駆動型であり、Publish/Subscribeモデルを使用して相互に接続されます。送信者(パブリッシャー)と受信者(サブスクライバー)はトピックを介して通信します。デバイスは特定のトピックにメッセージを公開し、そのトピックにサブスクライブしているすべてのデバイスがメッセージを受け取ります。
このセクションでは、UNO R4、HiveMQ(無料の公開MQTTブローカーサービス)、および4つのボタンを使用してサービスベルシステムを作成します。4つのボタンのそれぞれがレストランのテーブルに対応し、顧客がボタンを押すと、HiveMQ上でどのテーブルにサービスが必要かを確認できます。
必要なコンポーネント
このプロジェクトには以下のコンポーネントが必要です。
全体のキットを購入すると便利です。こちらがリンクです:
名称 |
このキットのアイテム数 |
リンク |
---|---|---|
Elite Explorer Kit |
300+ |
以下のリンクから別々に購入することもできます。
コンポーネント紹介 |
購入リンク |
---|---|
- |
|
配線図
回路図
遊び方は?
HiveMQは、IoTデバイスへの迅速で効率的で信頼性の高いデータ転送を促進するMQTTブローカーおよびクライアントベースのメッセージングプラットフォームです。
Webブラウザで HiveMQ Web Client を開きます。
クライアントをデフォルトの公開プロキシに接続します。
Add New Topic Subscription をクリックします。
フォローしたいトピックを入力し、 Subscribe をクリックします。他のユーザーからのメッセージを受け取らないように、ここで設定したトピックがユニークであることを確認し、大文字と小文字の区別に注意してください。
この例のコードでは、トピックを
SunFounder MQTT Test
と設定しました。変更がある場合は、コード内のトピックがWebページで購読したトピックと一致していることを確認してください。
ライブラリのインストール
ライブラリをインストールするには、Arduinoライブラリマネージャーを使用し、「ArduinoMqttClient」と検索してインストールしてください。
ArduinoMqttClient.h
:MQTT通信用に使用します。
コードの実行
注釈
ファイル
04_mqtt_button.ino
をelite-explorer-kit-main\iot_project\04_mqtt_button
のパスから直接開くことができます。または、このコードをArduino IDEにコピーしてください。
注釈
コード内で、SSIDとパスワードは arduino_secrets.h
に格納されています。この例をアップロードする前に、自分のWiFiの認証情報でそれらを修正する必要があります。さらに、コードを共有または保存する際には、この情報を機密に保つためのセキュリティ対策を講じてください。
コードを実行した後、 HiveMQ Web Client に戻り、ブレッドボード上のボタンのいずれかを押すと、HiveMQ上でメッセージプロンプトが表示されます。
どのように動作するのか?
このコードは、Wi-Fiに接続し、MQTTプロトコルを使用してMQTTブローカーと通信するArduinoベースのプロジェクト用です。さらに、4つのボタンが押されたかどうかを検出し、対応するメッセージをMQTTブローカーに送信することができます。
コードの詳細な説明は以下の通りです:
関連するライブラリを含む:
#include <WiFiS3.h> #include <ArduinoMqttClient.h>
機密情報を含む:
arduino_secrets.h
ファイルにはWi-FiネットワークのSSIDとパスワードが含まれています。
#include "arduino_secrets.h" char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS;
変数の初期化:
Wi-FiおよびMQTT接続を管理するための変数。
ボタンピンとボタンの状態を初期化します。
setup()
:シリアル通信を初期化します。
Wi-Fiモジュールの存在をチェックし、Wi-Fiに接続を試みます。
ネットワークデータを印刷します。
MQTTブローカーへの接続を試みます。
MQTTトピックにサブスクライブします。
ボタンを入力モードに設定します。
loop()
:MQTT接続をアクティブに保ちます。
各ボタンが押されたかどうかをチェックし、もしそうならMQTTメッセージを送信します。
その他のユーティリティ関数:
printWifiData()
:現在接続されているWi-Fiネットワークに関する情報を印刷します。printCurrentNet()
:現在のネットワークに関する関連データを印刷します。printMacAddress(byte mac[])
:MACアドレスを印刷します。onMqttMessage(int messageSize)
:MQTTブローカーからメッセージを受信したときにトリガーされるコールバック関数です。受信したメッセージのトピックと内容を印刷します。sendButtonMessage(int buttonNumber)
:ボタンが押されたときにMQTTメッセージを送信するためにこの関数を使用します。