このレッスンでは、NodeMCUとDHT11を使用してリアルタイムの環境温度/湿度データを取得し、MQTTプロトコルを介してMQTTブローカにデータを送信し、MQTTクライアントがこれらのメッセージをサブスクライブする方法を紹介します。
ハードウェア:
ソフトウェア:
NodeMCU | DHT11 センサー |
3.3v | VCC |
D3 | DATA |
GND | Ground |
NodeMCUをUSBケーブルでパソコンに接続し、Arduino IDE(Version1.6.4+)でスケッチ を開きます:
次の操作のように、独自の 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クライアント設定
MQTTブローカーがclientID、ユーザー名、パスワード認証を必要とする場合は、次のように変更する必要があります。
if (client.connect(clientId.c_str()))
to
if (client.connect(clientId,userName,passWord)) //put your clientId/userName/passWord here
そうでなければ、デフォルトのままにしておく。
その後、以下のように対応するボード タイプとポート タイプを選択し、スケッチを NodeMCU にアップロードします。
MQTTクライアントの設定方法はこちらをご覧ください。
トピックの設定
アップロードが完了し、無線LANホットスポットのsidとパスワードの設定が問題なく、すべての接続が正常であれば、シリアルモニターを開き、次の結果が表示されます:NodeMCUのシリアルポートは6秒ごとにリアルタイムの湿度と温度のデータを出力し続け、これらのメッセージはMQTTプロトコルを介してMQTTブローカーに公開され、MQTTクライアントによって購読されます。
同時に、MQTTクライアントを開き、”OsoyooData “というトピックの購読を選択すると、以下のようにリアルタイムの湿度と温度のデータが表示されます:
MQTTパブリッシュトピック側では、ペイロード “0 “または “1 “を “OsoyooCommand “トピックにパブリッシュすると、NodeMCUはこれらのペイロードをサブスクライブし、フィードバックを行います。ペイロードが “0 “の場合、NodeMCUはDHT11からリアルタイムの湿度データを取得し、シリアルポートに出力します。ペイロードが “1 “の場合、NodeMCUはリアルタイムの温度データを出力します:
DownLoad Url osoyoo.com