NodeMCUとRaspberryPi 3 B +間のMQTT通信
MQTT、NodeMCU、DHT22、RaspberryPi、およびIoT MQTTPanelを使用して温度と湿度を監視します。
Raspberry Pi 3 B +を、温度と湿度を測定し、IoTMQTTパネルアプリで監視するDHT-22センサーを備えた複数のNodeMCUのブローカーとして使用します。 NodeMCUとRaspberryのアルゴリズムをエスカレート可能にしました。公開およびサブスクライブしているトピックを変更し、IoT MQTT Panelアプリを追加するだけで、いつでもすべてのデータを手元に置くことができます。
ラズベリー、パイソン、MQTTの知識がないので、インターネットでたくさんの情報を検索しました。そこで、私が学んだことをすべて要約し、それらのWebサイトにクレジットを与えました。
インターネット接続が失われた場合、センサーはブローカーにデータを送信し続けます。つまり、データを保存できます!!! (もちろん、プログラミングを行う必要があります)
更新があれば私に従ってください。すぐに私は実行中のすべてのビデオを投稿します! 🙂
1。物事をつなぐ:
ネットワークはどのようになりますか:
2。プログラミング:
まず、すべてのライブラリがArduinoIDEとRaspberryPi 3B +にインストールされていることを確認する必要があります。
2.1 Arduino
ArduinoIDEにライブラリをインストールします。
- MQTT – https://github.com/knolleary/pubsubclient/releases/tag/v2.7
- DHTセンサーライブラリ:https://github.com/adafruit/DHT-sensor-library
- Adafruit Unified Sensor Lib:https://github.com/adafruit/Adafruit_Sensor
- Esp8266 – https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi
2.2 Raspberry Pi 3 b +
PythonIDEにライブラリをインストールします。
- time –Pythonのネイティブライブラリ
- Paho MQTT –LXターミナルで「pipinstallpaho-mqtt」と入力してMQTTライブラリをインストールします。疑問がある場合は、このWebサイトは素晴らしいです!! http://www.steves-internet-guide.com/mqtt/
2.3コードのアップロード
コードをそれぞれNodeMCUとRaspberryにアップロードします。
2.4コードの説明– ARDUINO IDE
これらは、ArduinoIDEにインストールされる前述のライブラリです。
#include // Esp8266 / NodeMCU Library#include // MQTT Library#include "DHT.h" // DHTセンサー
コード全体で使用されることが宣言されている変数:
const char * mqtt_server ="Broker_IP_Address"; // MQTTサーバーのIPアドレス
mqtt_server :Raspberry piのIPアドレスを取得するには、ターミナル画面を開いて次のように入力します。
[email protected]:〜$ ifconfigwlan0:flags =4163 mtu 1500 inet 192.168.1.200 netmask 255.255.255.0 broadcast 192.168.1.255
この例では、IPアドレスは192.168.1.200
になります。 const char * clientID ="room1"; //クライアントIDはNodeMCUデバイスを識別します。
clientID :使用しているNodeMCUを識別するための任意の名前または番号。この場合、それはroom1に配置されます。そのため、room1という名前になります。
const char * topicT ="/ room1 / temperature"; //トピックtemperatureconstchar * topicH ="/ room1 / humidity"; //トピックの湿度
topicT :温度を公開するトピック。このroom1温度の例では、トピックは「/ room1 / temperature」になります。
topicH :湿度を公開するトピック。このroom1湿度の例では、トピックは「/ room1 / humidity」になります。
const char * willTopic ="/ room1 / status"; //トピックStatusconstchar * willMessage ="0"; // 0-切断
willTopic :遺言を公開するトピック。これは、NodeMCUが接続/オンになっているかどうかを確認するために使用されます。切断すると、 willMessage が公開されます willTopic。 この場合、「/ room1 / status」
willMessage : willTopic に公開されるメッセージ NodeMCUが切断/オフになっている場合。
int willQoS =0; boolean willRetain =true;
willQoS :サービス品質を設定するために使用されます。この場合は0です。
willRetain :切断の場合に意志メッセージを保持するために使用されます。 Trueに設定します。
int counter =0; // MQTTサーバーに再接続するために使用されますconstchar * swversion ="1.0"; //ソフトウェアバージョン
カウンター :再接続ルーチンで使用されるカウンター。
swversion :ソフトウェアのリビジョンを制御するために使用されます。
WiFiClient wifiClient; PubSubClient client(mqtt_server、1883、wifiClient); // 1883はブローカーのリスナーポートです
wifiClient :client.connect()で定義されているように、指定されたインターネットIPアドレスとポートに接続できるクライアントを作成します。
client() :クライアントは、すべてのWiFiクライアントベースの通話の基本クラスです。直接呼び出されるのではなく、それに依存する関数を使用するたびに呼び出されます。
DHT dhtA(2、DHT22); // dhtAという名前のDHTインスタンス、NodeMCUD4のピンとセンサータイプ
DHT :dhtAという名前のインスタンスを作成し、センサーDHT-22のNodeMCU V3(D4)のピン2を割り当てます。以下の回路図による。別のピンを使用する場合は、値を正しいピンに変更してください。使用するピンを変更する前に、以下のピン配置を確認して正しいピンを割り当ててください。
- ピンD2-> GPIO4を使用
- DHT dhtA(4、DHT22)
DHT-11を使用している場合は、次のようになります。
- ピンD2-> GPIO4を使用
- DHT dhtA(4、DHT11)
注: 私と同じライブラリを使用している場合。別のライブラリを使用する場合は、ライブラリのドキュメントを確認して、使用するピンとセンサーを宣言する方法を確認してください。
void setup() :ここで初期化します。
void setup(){Serial.begin(9600); //デバッグの目的で、DHTとMQTT Brokerとの接続が機能しているかどうかを確認しますSerial.print(swversion); //デバッグします。ソフトウェアversiondhtA.begin(); // DHT-22を起動します
MQTTブローカーに接続しています。
delay(2000); // MQTTブローカーとの最初の接続を許可するための遅延
delay(2000) :最初の接続が失敗した場合は時間を増やします。この場合、2000ではNodeMCUがブローカーに接続できます。
if(client.connect(clientID、 ""、 ""、willTopic、willQoS、willRetain、willMessage、true)){// MQTTブローカーに接続する
>
client.connect() :以下に説明します。取得元:https://pubsubclient.knolleary.net/api.html#connect5
____________________________________________________________
ブール接続(clientID、username、password、willTopic、willQoS、willRetain、willMessage、cleanSession)
Willメッセージ、ユーザー名、パスワード、およびクリーンセッションフラグを指定してクライアントを接続します。
注 : cleanSession
false
に設定されています / 0
クライアントは 再試行失敗qos1公開。このフラグは、ブローカーのサブスクリプションを維持するためにのみ使用されます。
パラメータ
- clientID:サーバーに接続するときに使用するクライアントID。
- username:使用するユーザー名。 NULLの場合、ユーザー名またはパスワードは使用されません(const char [])
- password:使用するパスワード。 NULLの場合、パスワードは使用されません(const char [])
- willTopic:意志メッセージで使用されるトピック(const char [])
- willQoS:willメッセージで使用されるサービス品質(int:0,1または2)
- willRetain:意志を保持フラグ(int:0または1)で公開するかどうか
- willMessage:willメッセージのペイロード(const char [])
- cleanSession:clean-sessionに接続するかどうか(ブール値)
返品
- false –接続に失敗しました。
- true –接続に成功しました。
出典:NodeMCUとRaspberry Pi 3 B +間のMQTT通信
製造プロセス