Buy from US Buy from UK Buy from DE Buy from IT Buy from FR Buy from ES ここでご購入を!
  1. はじめに
  2. 準備
  3. ライブラリのインストール
  4. MQTTクライアントのインストール
  5. スケッチのアップロード
  6. MQTTクライアント(MQTTBox)の移行
  7. プログラム実行結果

はじめに

このレッスンでは、NodeMCUボード上でのMQTTプロトコルの基本的な使い方を紹介します。ここでは、MQTTクライアントとしてMQTTBoxを使用し、NodeMCUを使って以下の処理を行います:

ブロッキング再接続関数を使用して、接続が切れた場合にサーバーに再接続する。メインループをブロックせずに同じ結果を得る方法については、’mqtt_reconnect_nonblocking’ の例を参照のこと。

準備:

NodeMCUとPCをUSBケーブルで接続します。

ライブラリのインストール

MQTTブローカーと通信するためにMQTTエンドポイントライブラリ(PubSubClient)をインストールします:

https://osoyoo.com/wp-content/uploads/samplecode/pubsubclient.zip

上記のファイルを解凍し、解凍したフォルダをアルドゥイーノIDEライブラリフォルダに移動します。

install lib

アルドゥイーノIDEを開くと、”Examples “欄に “pubsubclient “があります:

example_pubsubclient

MQTTクライアントのインストール:

これらのレッスンでは、MQTTクライアントとしてMQTTBoxを使用します。(他のクライアントを使用することもできます )

インストールが完了するとこのような画面が表示されます:

MQTTBOX

スケッチのアップロード

以上の操作が完了したら、アルドゥイーノIDE->File->Example->pubsubclient->mqtt esp8266を開くと、以下のコードが表示されます:

upload sketch

以下のように、自分のWiFiとMQTTの設定に合わせてコードを編集してください:

1)WIFIの設定:

const char* ssid = “your_hotspot_ssid”;

const char* password = “your_hotspot_password”;

上記のコード行を探し、そこに自分のssidとパスワードを記述します。

2)MQTTサーバーアドレスの設定

const char* mqtt_server = “broker.mqtt-dashboard.com”;

上記のmqtt_serverの値には、自分のMQTTブローカーのURLやIPアドレスを使うことができます。また、”broker.mqtt-dashboard.com”、”iot.eclipse.org “などの有名なフリーのMQTTサーバーを使用してプロジェクトをテストすることもできます。

3)MQTT Client Settings

MQTTブローカーがclientID、ユーザー名、パスワード認証を必要とする場合は、次のように変更する必要があります。

if (client.connect(clientId.c_str()))

to

if (client.connect(clientId,userName,passWord)) //put your clientId/userName/passWord here

そうでなければ、デフォルトのままにしておく。

その後、以下のように対応するボード タイプとポート タイプを選択し、スケッチを NodeMCU にアップロードします。

board port settings

MQTTクライアント(MQTTBOX)の移行

このステップでは、MQTTBox上にMQTTクライアントを作成する方法を説明します。

MQTTBoxを開き、青いボタンをクリックして新しいMQTTクライアントを追加します。

create mqtt client

すると

MQTTBOX2

MQTT CLIENT SETTINGSを以下のように設定します:

クリックして変更を保存します。

boxsettings

上記の設定が全て正しければ、”Not Connected “が “Connected “に変わり、MQTTクライアント名とホスト名がこのページの上部に表示されます。

トピックの設定

MQTTクライアントのパブリッシュトピックが、アルドゥイーノスケッチのサブスクライブトピック(トピックはこちら)と同じであることを確認してください。

MQTTクライアントのサブスクライブトピックが、アルドゥイーノスケッチのパブリッシュトピック(outTopic)と同じであることを確認してください。

スケッチ側

プログラム実行結果:

アップロードが完了し、無線LANホットスポットの名前とパスワードの設定に問題がなく、MQTTブローカーが接続されていれば、シリアルモニターを開くと、次のような結果が表示されます:

serial result

次にMQTTクライアントを開き、ペイロード “1 “をトピックにパブリッシュすると、NodeMCUは “inTopic “にサブスクライブしてこれらのメッセージを受信し、LEDが点灯します。

IMG_20170511_175505

このトピックにペイロード「0」を発行すると、NodeMCUのLEDが消灯します。

IMG_20170511_175535

下図右のように、Subscribeボタンをクリックすると、このNodeMCUが発行したメッセージをSubscribeし続けます。

box pubsub