Print Friendly, PDF & Email

In diesem Tutorial zeige ich euch, wie man mithilfe des Programmes ESPEasy einen ESP-32 mit MQTT ansteuert. Dies kann bei Smart Home sehr hilfreich sein. Ich verwende dies vor allem in Verbindung mit OpenHAB, meinem Smart-Home System.

Material

Folgendes solltet ihr Besitzen:

  • einen ESP-32
  • USB-A auf microUSB-Kabel
  • Computer (ich verwende Windows 10 Enterprise, erkläre es aber auch für Linux und macOS) mit Python
  • eventuell MQTT-Broker (kann auch der Computer übernehmen

Schritt 1: Benötigte Software installieren & ESP flashen

Windows

1.Unter Windows geht ihr auf die Webseite der Entwickler und ladet euch die ZIP-Datei herunter (ganz unten auf der Seite)

2. Entpackt die ZIP-Datei (rechtsklick -> Alles Extrahieren -> Extrahieren)

3. Gebt im Startmenü cmd ein und macht einen rechtsklick auf “Eingabeaufforderung” und wählt “Als Administrator ausführen” aus.

4. Gebt folgenden Befehl ein:

pip install esptool

5. Nach Abschluss dieses Befehls, verbindet euren ESP32 und Computer mithilfe des microUSB-Kabels.

6. Gebt nun folgenden Befehl ein:

esptool.py erase_flash

7. Wartet erneut, bis die Aktion abgeschlossen ist. Drückt nun auf dem ESP32 den EN-Taster 1 Sekunde, er startet jetzt neu.

8. Geht in den Ordner, den wir vorhin heruntergeladen & entpackt haben.

10. Schaut im Geräte-Manager nach, welchen COM-Port der ESP hat. (Startmenü Geräte-Manager -> Anschlüsse (COM&LPT): hier befindet sich ein Gerät mit der Bezeichnung Silicon Labs … und dahinter in Klammern COM und eine Zahl. Diese Zahl ist der COM-Port.)

11. Startet die Datei flashSerial.cmd und gebt den COM-Port ein und drückt dann Enter

12. Nun benötigt ihr den Build. Dieser ist im Ordnernamen enthalten: Die Zahl nach dem ESPEasy32_R des Downloads. Bei mir ist das 20100.

13. Warten. Dieser Prozess kann einen Moment dauern, der ESP wird jetzt mit der ESPEasy Firmware geflasht.

14. Sobald dort etwas wie Drücken sie eine beliebige Taste… steht, schließe das Fenster. Ziehe nun den ESP für mehrere Sekunden vom Computer ab (so dass er ganz aus geht) und schließe ihn dann dort an, wo du ihn später auch anschließen möchtest. (Springe jetzt zu Schritt 2)

Linux

1.Gehe in die Kommandozeile (ins Terminal) und gebe folgenden Befehl ein (denke daran, dass Python installiert sein muss):

sudo pip install esptool

2. Schließe deinen ESP mittels USB am Computer an. Wenn es erfolgreich installiert ist, gebe folgenden Befehl ein, um die COM-Adresse deines ESP’s herauszufinden:

sudo ls /dev/ttyUSB*

Meistens heißt der ESP irgendwas mit Silicon Labs.

Merkt euch nun den Pfad des ESP’s (siehe oben). Er sollte in etwa so aussehen:

/dev/ttyUSB0

3. Ladet euch die ZIP-Datei von der Seite der Entwickler herunter. Wechselt mittels cd in den Ordner, z.B.:

cd ~

dann

cd Downloads

4. Nun könnt ihr mittels unzip die Datei entpacken:

unzip ESPEasy32_R<irgendne Zahl>

Tipp: Wenn ihr die Zahl nicht wisst, dann Tippt bis zum R ab (oder kopiert) und drückt dann TAB zum vervollständigen

5. Wechselt in den Ordner mittels cd (z.B. cd ESPEasy32_R20100)

6. Gebt nun folgenden Befehl in das Terminal ein(denkt daran das <VERSION> durch die Zahl hinter dem R des Ordnernamens sowie das <PORT> durch den Pfad von oben zu ersetzen! Ihr müsst außerdem eure Speichergröße eingeben, wie im Befehl unten auch steht):

esptool.py --port <PORT> write_flash -fs 1[oder]4MB -fm dout 0x00000 ESPEasy32_R<VERSION>.bin

z.B.:

esptool.py --port /dev/ttyUSB0 write_flash -fs 4MB -fm dout 0x00000 ESPEasy32_R20100.bin

Nach dem Abschluss dieses Befehls zieht ihr den ESP vom Computer ab, damit er aus ist. Nach einigen Sekunden könnt ihr ihn an der gewünschten Stelle im Haus anschließen. Jetzt könnt ihr zu Schritt 2 springen.

macOS

Wenn ihr den ESP unter macOS flashen wollt, möchte ich an dieser Stelle an einen guten Beitrag verlinken, man muss ja nicht alles doppelt machen ;-). Ihr findet die Installationsanleitung an folgender Stelle: https://www.heise.de/ct/artikel/ESPEasy-installieren-4076214.html

Info zum Artikel: Ihr müsst alles von den Überschriften “Vorbereitung” und “ESPEasy installieren” machen. Danach hier zu Schritt 2 wechseln.

Noch etwas: Ihr müsst statt der dort verlinkten Firmware folgende Verwenden: https://www.letscontrolit.com/wiki/index.php/ESPEasy32 dort findet ihr am Ende der Seite den Download, ihr müsst beim letzten Befehl statt espeasy.bin die entsprechende ESPEasy32_R<irgendwas>.bin Datei im gedownlodeten Ordner verwenden!

Schritt 2: ESPEasy konfigurieren

1.Schließt euren ESP-32 am Strom an.

2. Verbindet euch mit einem Gerät eurer Wahl (unter Windows funktioniert es leider manchmal nicht, daher Empfehlung für andere Devices wie iPad & co.) mit dem WLAN des ESP’s, meistens folgendes:

ESP_Easy-0

Das Passwort ist folgendes:

configesp

3. Jetzt wechseln wir in den Browser und gehen auf folgende Adresse:

http://192.168.4.1/

4. Auf der nun angezeigten Seite wählt ihr euer heimisches WLAN aus und gebt unter “Password” das Passwort ein. Klickt nun auf “Connect”

5. Jetzt wartet ihr, bis der Countdown abgelaufen ist.

6. Verbindet euch jetzt wieder mit dem normalen WLAN. Jetzt könnt ihr im Browser auf den Button “Proceed to main config”

Ich gebe euch hier einen Überblick, was ihr wie einstellen müsst (kursiv gedrucktes ist unwichtig und muss nicht unbedingt gesetzt werden, dick gedrucktes muss unbedingt gesetzt werden!):

Unit NameEinen Geräte-Namen eurer Wahl, der nicht bereits in eurem Netzwerk existiert.
Unit NumberEuer erster ESP mit ESPEasy erhält die Nummer 0. Wenn ihr mehrere habt, erhöht mit jedem neuen die Zahl um 1.
Admin PasswordHier setzt ihr das Admin-Passwort. Merkt es euch gut, ihr braucht es für die Konfiguration!
SSIDSollte bereits gesetzt sein, hier euer Haupt-WLAN Name (SSID)
WPA Key
Sollte bereits gesetzt sein, hier euer Haupt-WLAN Passwort
Fallback SSIDFalls euer WLAN zusammenbricht und ihr ein Ersatz-WLAN habt, hier die SSID (der WLAN-Name)
Fallback WPA KeyErsatz-WLAN Passwort
WPA AP Mode KeyFINGER WEG!
Client IP filteringWenn ihr nicht wisst, was hiermit gemeint ist und wie es funktioniert, braucht ihr es nicht und lasst besser die Finger weg 🙂
IP SettingsGenau so wie Client IP filtering
Sleep ModeSollte bei den Standard-Einstellungen bleiben.

Jetzt auf jeden Fall Submit drücken! Sonst wird es nicht gespeichert….

7. Jetzt noch auf den Tab Controllers wechseln und bei Nr. 1 auf “Edit” drücken.

8. Ihr müsst es wie folgend erklärt konfigurieren:

ProtocolOpenHAB MQTT
Locate ControllerUse IP address
Controller IPDie lokale IP-Adresse des MQTT-Brokers (mehr dazu siehe unten unter “MQTT-Broker”)
Controller PortDer Port des MQTT-Brokers, meistens 1883
Controller UserWenn man einen Benutzernamen für den Broker braucht, hier eingeben
Controller PasswordWenn man ein Passwort für den Broker braucht, hier eingeben
Controller SubscribeEinfach lassen
Controller PublishEinfach lassen
EnabledHäkchen setzen

Wenn ihr alles richtig gemacht habt, solltet ihr jetzt wie folgt den ESP GPIO steuern können:

Steuerung der ESP-32 GPIO’s mit MQTT

Einfaches An/Aus

MQTT-Topic:

 /<Unit Name (siehe oben)>/GPIO/<Gewünschter GPIO-Pin>

z.B:

/ESPEasy/GPIO/27

Werte:

0
LOW
1HIGH
2HIGH-Z (siehe GPIO)

PWM (Pulsweiten-Modulation)

Hiermit könnt ihr digital dimmen.

Funktionsweise

Die Funktionsweise ist sehr komplex. Eventuell kommt ein extra Beitrag dazu im Physik-Teil. Hier könnt ihr mehr darüber erfahren:

https://www.mikrocontroller.net/articles/Pulsweitenmodulation

https://www.mikrocontroller.net/articles/LED-Fading

MQTT

Topic:

/<Unit Name(siehe Oben)>/PWM/<GPIO>

Werte: Ihr könnt den PWM-Pins des ESP32 (siehe hier) Werte zwischen 0 und 1023 zuweisen.

Weitere GPIO-Modi

Mehr GPIO-Modi findet ihr hier.

Geht dazu nach folgendem Topic-Schema vor:

/<Unit Name (siehe oben)>/<Command (in der Tabelle, Kommas durch / ersetzen)>

Werte findet ihr in der Tabelle unter “Values”

Beispiel:

/ESPEasy/Pulse/14/1 500

MQTT-Broker

HiveMQ.com
Grafik von HiveMQ.com

MQTT stand einst für MQ Telemetry Transport und definiert heute einen OASIS- bzw. ISO Standard (ISO/IEC PRF 20922). Dahinter verbirgt sich eine leichtgewichtige Publish/Subscribe-Lösung, bei der Anwender Topics einrichten können, über die Clients (in der Rolle eines Publishers) Nachrichten bereitstellen und andere Clients (in der Rolle eines Subscribers) Nachrichten entnehmen. Ein Topic lässt sich als schwarzes Brett mit eindeutiger Inventarnummer interpretieren, wobei sich alle anmelden müssen, die Informationen auf dem Brett veröffentlichen wollen, ebenso diejenigen, die Nachrichten lesen wollen.

Quelle: heise Developer

Clients können auch beide Rollen besitzen. Um Art und Inhalt der Nachrichten kümmert sich MQTT nicht. Das bleibt den Anwendungen überlassen.

Quelle: heise Developer

Die zentrale Komponente von MQTT ist ein sogenannter MQTT-Broker, der die Topics inklusive der darin enthaltenen Nachrichten verwaltet sowie den Zugriff auf die Topics regelt. Für Datensicherheit sind dort entsprechende Mechanismen vorhanden.

Quelle: heise Develope

Wenn ihr keinen MQTT-Broker eingerichtet habt, könnt ihr, bis ich selber ein Tutorial dazu mache, hier sehr gute Anleitungen, wie man sie installiert finden:

Windows: https://wiki.instar.de/Erweitert/OpenHAB_Heimautomatisierung/Mosquitto_Installation_unter_Windows/

Linux: http://www.steves-internet-guide.com/install-mosquitto-linux/

macOS: https://simplifiedthinking.co.uk/2015/10/03/install-mqtt-server/

Schlusswort

Ich hoffe, das Tutorial hat euch gefallen.

An dieser Stelle möchte ich mich entschuldigen, dass so lange keine Beiträge mehr kamen, jetzt geht es aber wieder los 🙂 Ich wünsche euch eine schöne Woche und schaut mal im Upload-Kalender (Über->Kalender) nach, wann der nächste Beitrag kommt. Ich werde dort immer vermerken, wenn ich einen Termin sicher einhalten kann.

Viele Grüße aus Karlsruhe,

Philipp


0 Kommentare

Kommentar verfassen

%d Bloggern gefällt das: