ESP8266, Tasmota und PushButton für ioBroker

In diesem Artikel schauen wir uns einen Beispiel-Aufbau eines ESP8266 Mikrocontrollers in Verbindung mit Tasmota, ioBroker und einem PushButton an.

Tasmota ist eine kostenlose, quell-offene und alternative Firmware für ESP8266 basierte Geräte. Tasmota wurde im Jahre 2017 von Theo Arends entwickelt, der Name Tasmota steht für Theo-Arends-Sonoff-MQTT-OTA.

Der folgende Screenshot zeigt das Tasmota Menü. Über dieses Menü können später Informationen von angeschlossenen Sensoren eingesehen, sowie auch Zustände verändert werden. Zudem stehen hier alle Einstellungen und auch optionale Firmeware Updates zur Verfügung. Wir werden später auf die einzelnen Funktionen und Möglichkeiten näher eingehen.



Flashen des ESP8266

Im ersten Schritt laden wir uns jetzt ein geeignet Flash-Tool für das Aufspielen der Firmware herunter. Ich flashe den ESP8266 Mikrocontroller mit meinem Windows 10 Notebook, daher lade ich mir den Tasmota-Pyflasher herunter:

https://github.com/tasmota/tasmota-pyflasher/releases

Nach dem wir uns die Software zum Flashen heruntergeladen haben, laden wir uns im nächsten Schritt ein Tasmota Image im Bin-Format herunter. Auf der Github-Projektseite findest Du die Images der aktuellen Version in verschiedenen Sprachen. In der Liste der Assets lade ich nun die aktuelle Version v8.1.0 in Deutsch als Bin-Datei herunter.

https://github.com/arendst/Tasmota/releases/tag/v8.1.0

Den Flasher sowie auch die Bin-Datei habe ich unter C:\temp\tasmota gespeichert. Nun können wir direkt den ESP8266 per Mikro-USB-Kabel mit dem Notebook/PC verbinden und im Verzeichnis C:\temp\tasmota die Datei Tasmota-PyFlasher-1.0.exe ausführen.

Nach dem Start des Tasmota Pyflasher Tools wählen wir nun zunächst den COM-Port aus, an dem unser ESP8266 eingesteckt ist. Bei mir ist das COM5. Im nächsten Schritt wählen wir die Tasmota Firmware als Bin-Datei aus C:\temp\tasmota. Die Einstellung Erase flash habe ich mit yes so belassen. Wir können jetzt den Flash-Vorgang starten.

Nach ca. 30 Sekunden wurde der Flash-Vorgang mit folgender Meldung erfolgreich beendet.

Im nächsten Schritt können wir nun den ESP8266 vom PC aus- und wieder einstecken, sodass der ESP8266 neu gestartet wird.

Jetzt verbinden wir uns mit dem neu gestarteten ESP8266 über die WLAN-Verbindung. Dazu einfach die Liste der WLAN-Netze öffnen und nach Tasmota suchen. Mit einem Klick auf das Tasmota-XXXX Netzwerk stellen wir nun eine Verbindung her und es sollte sich automatisch der Browser öffnen.

Nach dem Start von Tasmota müssen wir nun die WLAN-Einstellungen anpassen. Hierzu die WLAN-Einstellungen auf Tasmota öffnen und unser WLAN-Netz (SSID) sowie das WLAN-Kennwort eintragen. Hier können wir optional auch zwei WLAN-Netzwerke hinterlegen. Wichtig ist noch hier den Hostname korrekt und am besten sprechend zu vergeben. Ich habe zu Testwecken hier tasmota_test vergeben. Nach dem Speichern der Konfiguration können wir dann einen Neustart durchführen.

Während dem Neustart trennen wir zudem auch wieder die Netzwerkverbindung zum Tasmota-Netzwerk und verbinden uns mit dem normalen WLAN-Netzwerk.

Über unseren Router können wir nun die IP-Adresse des ESP8266 herausfinden.



Optional eine feste IP-Adresse in Tasmota hinterlegen

Im nächsten Schritt habe ich nun über die Tasmota Konsole eine feste IP-Adresse definiert. Klicke dazu auf die Schaltfläche Konsole.

Nun öffnet sich die Tasmota Konsole, über die Kommandos ausgeführt werden können.

Setze nun die beiden folgenden Befehle über die Konsole ab. Hierzu natürlich die IP-Adresse entsprechend an das eigene Netzwerk anpassen.

savedata 1
ipaddress1 192.168.2.130
savedata 0

Wir haben nun die Basis-Konfiguration der Tasmota-Software vorgenommen. Im nächsten Schritt beginnen wir Tasmota entsprechend unserer Beispiel-Anwendung zu konfigurieren. Wir klicken hier nun auf die Schaltfläche Einstellungen.

In den Einstellungen ändern wir den Gerätetyp auf Generic (0) und speichern die Einstellungen. Ich habe nun folgende Schaltung für den PushButton aufgebaut:

In der Schaltung wird einfach der Button zwischen den Pin D3 und GND gesetzt. Damit ziehen wir den Pin D3 bei einem Button-Klick auf Ground.

Im nächsten Schritt konfigurieren wir das Generic Modul innerhalb von Tasmota. Dazu öffnen wir die Geräte-Einstellungen und wählen am Pin D3 den Typ Switch1 aus.

Abschließend können wir die Einstellungen speichern und einen Neustart durchführen.

Im nächsten Schritt öffnen wir die Tasmota Konsole über das Hauptmenü und geben über die Befehlseingabe die folgenden Befehle nacheinander ein und bestätigen jeden Befehl mit der Entertaste.

  • SetOption1 ON
  • SetOption11 ON
  • SetOption32 6
  • SwitchMode 5
  • SwitchTopic 1

Hier nun die Erklärung der einzelnen Befehle:

SetOption1 ON
Mit dem Befehl SetOption1 wird der Multipress Mode eingeschaltet.

SetOption11 ON
Swap pushbutton single and double press functionality

SetOption32 6
Dauer der Hold-Funktionalität setzen.

SwitchMode 5
Aktivierung des Switch Mode 5 (pushbutton with hold)

SwitchTopic 1
MQTT-Modus setzen (set MQTT switch topic to device %topic%)

Im Tasmota Wiki können alle Befehle nachgeschlagen werden.

https://github.com/arendst/Tasmota/wiki/commands

Im nächsten Schritt werden wir nun das Tasmota-Gerät in unsere Haussteuerung integrieren.


MQTT-Einstellungen

Im ersten Schritt öffnen wir nun die Einstellungen und klicken dann auf die MQTT-Einstellungen. In den MQTT-Einstellungen tragen wir hier nun den IP-Adresse von ioBroker sowie den Port des MQTT-Adapters ein.

Abschließen klicken wir auf die Speichern-Schaltfläche und starten zudem noch den Tasmota neu.


Integration in ioBroker

Nach wenigen Sekunden sehen wir nun in den MQTT-Objekten die neuen Datenpunkte des ESP8266. Tasmota legt dazu unterhalb des MQTT-Adapters einen neuen Ordner ccmd – tasmota_button an. In diesem Ordner steht der POWER-Datenpunkt, mit dem der Tastendruck übermittelt wird.

Ein Einfacher Tastendruck schreibt den Wert ON in den Datenpunkt. Mit einem länger gedrückten Tastendruck wird HOLD in den Datenpunkt geschrieben.

Auf diesen Datenpunkt können wir nun einen Trigger hinterlegen, mit dem eine spezielle Aktion ausgeführt werden soll. Bei Bedarf kann ich hier gerne noch einen Folgeartikel veröffentlichen. Schreib mir dazu einfach in die Kommentare, was Du damit schalten möchtest.

Ich hoffe ich konnte Dir damit weiterhelfen. Über Fragen, Kritik oder Anregungen per Kommentar oder E-Mail freue ich mich.


Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

7 Gedanken zu „ESP8266, Tasmota und PushButton für ioBroker

  • 1. Februar 2020 um 11:10
    Permalink

    Danke.
    Toller Artikel.
    Bisher habe ich die feste IP meist über meinen Router zugewiesen. Welchen Vor-/Nachteil hat die feste Zuweisung (im allgemeinen) über die zu erreichenden Geräte selbst?
    Bisher habe ich einen ESP im Außenbereich mit einem BME280 (Temperatur/Luftfeuchte/Luftdruck) sowie einem Helligkeitssensor beide am gleichen I2C und auch alles über MQTT in ioBroker integriert.
    Zukünftig möchte ich noch einen Anemometer (einfachster Art (mit 2 Magnetkontakten auf eine Umdrehung)) anschließen. Hier fehlt mir nur noch das Verständnis/Umsetzung zur Counterfunktion von Tasmota.

    Viele Grüße

    Antwort
  • 1. Februar 2020 um 15:43
    Permalink

    Hallo,
    für was wird diese Anwendung verwendet?

    Antwort
    • 1. Februar 2020 um 20:10
      Permalink

      Hallo Michael,

      ich nutze den Button z.B. zum Einschalten der Beleuchtung, wenn nachts der Hund anschlägt.
      In einem weiteren Artikel werde ich dazu ein praktisches Projekt zeigen. Grundsätzlich kannst Du wirklich alles schalten und steuern 🙂

      Viele Grüße.
      Matthias

      Antwort
  • 7. Februar 2020 um 17:36
    Permalink

    Für einen Neuling wie mich ein sehr guter Einstieg Hardware nach Bedarf zu ändern. Du brauchst den Button zur „Hunde-Beleuchtung“. Hätte ein normaler Shelly Taster die gleiche Funktion ermöglicht?
    Wenn ich mit Netzadmins über SmartHome spreche, sehe ich „rote Punkte in ihren Augen“ und Äußerungen wie „mein sprechender Kühlschrank“ hat das „Firmennetz lahmgelegt“, sind Äußerungen, die die Datensicherheit im WLan-Netz vermisst. Dies verstehe ich, wenn Aktoren eigene Konfig-Wlannetze erstellen um gefunden zu werden. Eine Einbindung der SSID und Passwort ist dann die ganze Miete zum IoT. Wäre eine Einbettung der privaten Adressen als feste private IP in einem VPN-Netz sicherer?
    Heinz

    Antwort
  • 17. Februar 2020 um 23:21
    Permalink

    Ich habe diese Anleitung dazu genommen um es auf einen D1 mini zu flashen. Hat alles bestens geklappt, vielen Dank für die Beschreibung (alleine die Möglichkeit Tasmota so einfach zu flashen, top)
    Im IOBroker ist auch fast alles so angekommen wie beschrieben, leider sagt mit IOBroker aber unter Power nur false und nicht on oder hold. Was habe ich verkehrt gemacht?
    Power State wird auch aktiv grün beim drücken des Buttons.
    Hast du vielleicht einen Tip für mich?
    Danke schon mal im voraus.
    Jürgen

    Antwort
    • 22. Februar 2020 um 18:30
      Permalink

      Ich habe diesen Versuch noch einmal neu aufgebaut, im IOBroker schreibt er jetzt true für einen Klick und false für einen gedrückt Halten.
      Habt Ihr/Du einen Tip was da schief läuft?
      Mfg
      JP

      Antwort
  • 19. März 2020 um 19:57
    Permalink

    nach dem Flashen findet meine Fritzbox den 8266 nicht. Auch ein Wechsel der Firmware oder des Boards, brachte kein erfolg. Was mache ich ggf. falsch?
    Habe auch alle Flash Mode ausprobiert.

    Bord ist in Ordnung. Wenn ich ein Arduino Beispiel flashe, wird es im Wlan erkannt

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.