Inhaltsverzeichnis:

Raspberry Pi spricht mit ESP8266 über MQTT - Gunook
Raspberry Pi spricht mit ESP8266 über MQTT - Gunook

Video: Raspberry Pi spricht mit ESP8266 über MQTT - Gunook

Video: Raspberry Pi spricht mit ESP8266 über MQTT - Gunook
Video: Tasmota in Grafana überwachen - Skript mit Python + MQTT + InfluxDB 2024, November
Anonim
Raspberry Pi spricht mit ESP8266 über MQTT
Raspberry Pi spricht mit ESP8266 über MQTT

In diesem Projekt werde ich erklären, was das MQTT-Protokoll ist und wie es verwendet wird, um zwischen Geräten zu kommunizieren. Dann werde ich als praktische Demonstration zeigen, wie man ein Client- und Brocker-System einrichtet, wobei ein ESP8266-Modul sowie RPi sprechen miteinander oder senden Sie eine Nachricht, wenn eine Taste gedrückt wird.

Benötigtes Material

1. Raspberry Pi 3

2. NodeMCU

3. LED

4. Taste

5. Widerstände (10k, 475 Ohm)

Schritt 1: Was ist MQTT und wie funktioniert es?

MQTT

MQTT ist ein Machine-to-Machine (M2M) Datenübertragungsprotokoll. MQTT wurde mit dem Ziel entwickelt, Daten von vielen Geräten zu sammeln und diese Daten dann in die IT-Infrastruktur zu transportieren. Es ist leichtgewichtig und daher ideal für die Fernüberwachung, insbesondere bei M2M-Verbindungen, die einen geringen Code-Footprint erfordern oder bei denen die Netzwerkbandbreite begrenzt ist.

So funktioniert MQTT

MQTT ist ein Publish/Subscribe-Protokoll, das es Edge-of-Network-Geräten ermöglicht, an einen Broker zu veröffentlichen. Clients stellen eine Verbindung zu diesem Broker her, der dann die Kommunikation zwischen den beiden Geräten vermittelt. Jedes Gerät kann bestimmte Themen abonnieren oder registrieren. Wenn ein anderer Client eine Nachricht zu einem abonnierten Thema veröffentlicht, leitet der Broker die Nachricht an alle abonnierten Clients weiter.

MQTT ist bidirektional und behält das zustandsbehaftete Sitzungsbewusstsein bei. Wenn ein Edge-of-Network-Gerät die Konnektivität verliert, werden alle abonnierten Clients mit der Funktion „Letzter Wille und Testament“des MQTT-Servers benachrichtigt, sodass jeder autorisierte Client im System einen neuen Wert zurück zum Edge-of-Network veröffentlichen kann. Netzwerkgerät, das die bidirektionale Konnektivität aufrechterhält.

Das Projekt ist in 3 Teile gegliedert

Zuerst erstellen wir einen MQTT-Server auf RPi und installieren einige Bibliotheken.

Zweitens installieren wir Bibliotheken in der Arduino IDE, damit NodeMCU mit MQTT funktioniert, laden den Code hoch und prüfen, ob der Server funktioniert oder nicht.

Schließlich erstellen wir ein Skript in Rpi, laden den erforderlichen Code in NodeMCU hoch und führen das Python-Skript aus, um LEDs sowohl auf der Server- als auch auf der Clientseite zu steuern. Hier ist Server RPi und Client NodeMCU.

Schritt 2: Himbeer-Pi

Himbeer-Pi
Himbeer-Pi
Himbeer-Pi
Himbeer-Pi
Himbeer-Pi
Himbeer-Pi
Himbeer-Pi
Himbeer-Pi

1. Um den neuesten MQTT-Server und -Client in RPi zu installieren und das neue Repository zu verwenden, sollten Sie zuerst den Signaturschlüssel des Repository-Pakets importieren.

wget https://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key add mosquitto-repo.gpg.key

2. Stellen Sie apt das Repository zur Verfügung.

cd /etc/apt/sources.list.d/

3. Je nachdem, welche Debian-Version Sie verwenden.

sudo wget https://repo.mosquitto.org/debian/mosquitto-wheezy.listsudo wget

sudo wget

sudo apt-get update

4. Installieren Sie den Mosquitto-Server mit dem Befehl.

sudo apt-get install mosquitto

Wenn Sie Fehler bei der Installation von Mosquitto wie folgt erhalten.

#################################################################

Die folgenden Pakete haben nicht erfüllte Abhängigkeiten:mosquitto: Abhängig von: libssl1.0.0 (>= 1.0.1) aber nicht installierbar Abhängig von: libwebsockets3 (>= 1.2) aber nicht installierbar E: Probleme können nicht behoben werden, Sie haben kaputt gehalten Pakete.

#################################################################

Verwenden Sie dann diesen Befehl, um Probleme zu beheben.

sudo apt --fix-broken install

5. Installieren Sie nach der Installation des MQTT-Servers den Client mit dem Befehl

sudo apt-get install mosquitto-clients

Sie können Dienste mit dem Befehl überprüfen.

systemctl-status mosquitto.service

Da ist unser MQTT-Server und -Client installiert. Jetzt können wir es mit Abonnieren und Veröffentlichen überprüfen. Zum Abonnieren und Veröffentlichen können Sie die Befehle überprüfen oder die Website wie unten angegeben besuchen.

Moskito-Sub

Moskito-Pub

Um die paho-mqtt-Bibliothek zu installieren, verwenden Sie den folgenden Befehl.

sudo pip install paho-mqtt

Paho

Schritt 3: So richten Sie eine statische IP-Adresse ein

So richten Sie eine statische IP-Adresse ein
So richten Sie eine statische IP-Adresse ein

Gehen Sie in das Verzeichnis cd /etc und öffnen Sie die Datei dhcpcd.conf mit einem beliebigen Editor. Schreiben Sie am Ende diese vier Zeilen.

Schnittstelle eth0 static ip_address=192.168.1.100 // IP die Sie verwenden möchten

Schnittstelle wlan0

statische IP-Adresse=192.168.1.68

statische Router=192.168.1.1 // Ihr Standard-Gateway

statischer domain_name_servers=192.168.1.1

Danach speichern Sie es und starten Sie Ihr Pi neu.

Schritt 4: NodeMCU

KnotenMCU
KnotenMCU
KnotenMCU
KnotenMCU
KnotenMCU
KnotenMCU
KnotenMCU
KnotenMCU

Installieren Sie die erforderlichen Bibliotheken in der Arduino IDE für NodeMCU

1. Gehen Sie zu Sketch ==> Bibliothek einschließen ==> Bibliotheken verwalten.

2. Suchen Sie nach mqtt und installieren Sie die Bibliothek von Adafruit oder installieren Sie eine beliebige Bibliothek.

3. Es hängt von der sleepydog-Bibliothek ab, also brauchen wir diese Bibliothek auch.

Das Programm ist oben angegeben, nur um zu überprüfen, ob es funktioniert oder nicht. Hier habe ich kein Skript in RPi erstellt. Wir verwenden nur Befehle zum Abonnieren und Veröffentlichen. Wir werden später ein Skript für die Steuerung erstellen.

mosquitto_pub -h raspberrypi -t "/leds/pi" -m "ON"

mosquitto_pub -h raspberrypi -t "/leds/pi" -m "OFF"

mosquitto_pub -h raspberrypi -t "/leds/pi" -m "TOGGLE"

mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "ON"

mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "OFF"

mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "TOGGLE"

-h == > Hostname-t == > Thema

-m == > Nachricht

Nachdem Sie das Mqtt_check-Programm überprüft haben, laden Sie das komplette Programm in NodeMCU hoch

Schritt 5: Python-Skript

Python-Skript
Python-Skript
Python-Skript
Python-Skript

Wie ich oben besprochen habe, benötigen wir ein Python-Skript zum Steuern von LEDs mit Schaltflächen. Also werden wir ein Skript erstellen. Skript ist oben angegeben.

Wenn Sie das Skript ausführen, sollte Ihr Skript wie im Bild gezeigt aussehen. Wenn der Ergebniscode nicht Null ist, ist dies ein Fehler, den Sie auf der paho-Website überprüfen können.

Schritt 6: Anschlüsse und Schaltplan

Anschlüsse und Schaltplan
Anschlüsse und Schaltplan
Anschlüsse und Schaltplan
Anschlüsse und Schaltplan

Anbindung Taster, LED mit NodeMCU

NodeMCU === > ButtonGnd === > Gnd

3.3V === > PIN1

GPIO4 (D2) === > PIN2

NodeMCU === > LED

Masse === > Kathode (-ve)

GPIO5 (D1) === > Anode(+ve)

Anbindung Taster, LED mit RPi

RPi === > ButtonGnd === > PIN1

GPIO 23 === > PIN2

RPi === > LED

Masse == > Kathode(-ve)

GPIO 24 === > Anode(+ve)

Schritt 7: Ergebnis

Image
Image
Ergebnis
Ergebnis

Stellen Sie sicher, dass Ihr Skript ausgeführt wird, da es sonst nicht in der Lage ist, LEDs mit Schaltflächen zu steuern.

Empfohlen: