Tasmota flashen – leicht gemacht

Unser Haus wird nach und nach immer weiter „automatisiert“, bzw. smart. Ein Großteil der automatisierten Steuerung von Heizung, Licht, etc. wird bereits von FHEM auf einem Raspberry Pi gesteuert. Inzwischen auch die Weihnachtsbeleuchtung. Anstatt nun alle Lichter per Hand oder Zeitschaltuhr zu steuern habe ich diese Beleuchtungssteuerung auf Wifi-Steckdosen umgerüstet. Kostet nur minimal mehr wie Zeitschaltuhren, bringt aber u.a. den Vorteil mit dass man dank FHEM zum Beispiel den Ausschaltzeitpunkt am Morgen dem Sonnenaufgang anpassen kann oder, wenn man mal tagsüber das Licht anknipsen will das zentral mit einem Befehl an Alexa erledigen kann.

Nun kocht ja jeder Hersteller sein eigenes Süppchen und liefert für seine Geräte eigene Apps und eigene Cloud-Dienste. Hat man dann aber diverse Hersteller im Haus, benötigt man auch deren Apps und ist von deren Cloud-Diensten abhängig.
Gottseidank sind in fast allen Steckdosen und Schaltern ESP8266 Chips verbaut und die kann man mit etwas Löten und nem Programmierer auf ein alternatives Betriebssystem namens Tasmota flashen

Tasmota werkelt dann im eigenen WLAN ohne Cloud und wird per MQTT gesteuert.
Details dazu erspare ich mir an dieser Stelle, die findet man alle auf der Tasmota-Seite. Ebenso alle unterstützen Hardware Komponenten wie Sonoff, Shelly oder sogar die billigen Baumarkt-Steckdosen von OBI.
Ich gehe ebenfalls nicht darauf ein wo man welche Pins zum flashen findet, das ist bei jeder Komponente anders, aber auf der Projektseite ziemlich genau erklärt.

Was dort aber etwas umständlich beschrieben steht ist wie man Tasmota auf den ESP8266 drauf bekommt. Ich habe früher mit der Arduino IDE herum gewerkelt, dann mit diversen Programmern mit unzähligen Einstellmöglichkeiten und bin schließlich beim NodeMCU PyFlasher geblieben.
3 Einstellungen anpassen, flashen, fertig.

Und das geht so:
Programmer mit dem ESP8266 verbinden (findet man auf der Tasmota Seite welche Pins wo sitzen), beim Einstecken des USB-Programmers den ESP in den Flash-Mode setzen (dazu wird in der Regel der Pin GPIO0 mit Ground beim Einstecken verbunden und kann dann getrennt werden), Das Programm starten, (1) COM-Port auswählen , (2) Firmware auswählen (die man vorher auf der Tasmota-Seite geladen hat), (3) Baud-Rate wählen (115200), (4) Flash-Mode auf „Dual Output (DOUT)“ stellen, (5) „Erase Flash“ auf „yes“ und (6) „flash NodeMCU“ klicken.
Nach 2-3 Minuten ist das Flashen erledigt und man kann beginnen Tasmota zu konfigurieren.

Auch das ist kinderleicht. Das Device neu starten (GPIO0 kann jetzt offen bleiben) und ein offenes WLAN namens „tasmota“, gefolgt von einer Nummer, suchen und verbinden. Man wird aufgefordert das Netzwerk zu bestätigen und wird auf die erste Konfigurationsseite von Tasmota gelenkt. Dort gibt man die Zugangsdaten seines WLAN-Netzwerkes ein, startet das Device neu und kann ab dann das Device neu aufsuchen und konfigurieren.
Aber das alles zu erklären sprengt diesen Rahmen, man findet alle möglichen Einstellungen auf der Tasmota-Webseite.

Der „Notfall“-Taster – eine FHEM-Spielerei

Für „spezielle“ Notfälle

Nachdem ich in unserem Bad einen Abluftventilator eingebaut und die Steuerung feuchtigkeitsabhängig mit FHEM in die Hausautomation eingebunden habe kam mir die „Schnapsidee“: Was ist eigentlich wenn man auf dem „Thron“ hockt und ein Notfall eintritt? (Muss ich das wirklich näher erläutern 😉 ) Das ließe sich doch bestimmt mit Trick 17 und FHEM lösen…

Die erste Idee versuchte meine Frau dann niederzuschmettern mit dem Argument „Dafür haben wir doch dieses Raumspray Brise One Touch„.
Aber ich wäre nicht ich wenn ich dafür nicht eine Gadget-Lösung erfinden könnte. Und das Argument meiner Frau brachte mich auf eine noch größere Idee – eine Verbindung aus beidem!!!. Also ran ans Werk!

mit Fritzing zusammen gepfuscht

Zuerst habe ich mir Gedanken gemacht wie ich überhaupt ein Signal absetzen kann damit die Hausautomation den Lüfter aktivieren kann. Da bei mir bereits MQTT auf dem Raspberry läuft wollte ich auf das System setzen. Im Keller lagen noch ein paar Bauteile wie Taster und ESP8266 herum mit denen man das realisieren könnte. Ähnlich einem Dash-Button von Amazon habe ich dann einen WLAN-Taster gebaut der eine MQTT-Message absetzt. Anregungen dazu findet man zu Hauf im Netz, ich habe mich für die allereinfachste Variante entschieden: Ein ESP8266 der im Deepsleep schlummert, auf Tastendruck auchwacht, eine bestimmte Message absetzt und wieder in den Deepsleep zurück fällt. Bevor jetzt gemault wird „warum denn der ESP8266 12e? Der ESP-01 langt doch vollkommen!“: Ja, der langt, aber ich hatte aus einer Falschlieferung noch ne Menge 12e übrig und da musste ich auch keine Stifte auslöten 😉  (Pinouts für den 12e und den ESP-01)
Die Schaltung ist nicht zu 100% perfekt (man könnte am Taster noch nen PullDown-Widerstand einsetzen), für meinen Anwendungszweck aber ausreichend und bisher hatte ich noch keine Ausfälle. Ebenso könnte man die Batterie durch eine andere Variante tauschen, aber auch hier wollte ich es so einfach wie möglich haben und habe mich für 2 AAA-Batterien entschieden. Aktuell habe ich einen Satz seit rund 7 Monaten in Betrieb und die Spannung langt immer noch für die Schaltung.

Nun zur Software auf dem ESP. Grundlage hierfür war ein Script von Andy Wolff welches ich für meine Zwecke etwas „ausgedünnt“ habe (Ich brauche nicht alle Funktionen).

Was macht das Script? Durch Tastendruck den ESP aus dem Deepsleep aufwecken, MQTT-Message mit Schaltzustand und Batteriespannung absetzen, ESP wieder in den Deepsleep setzen. (Moment, hatte ich das nicht schon erwähnt?)

Script auf den ESP flashen, testen, weiter geht es.

Natürlich würde das jetzt schon langen um den Lüfter zu aktivieren. Aaaaber: meine Frau sprach ja was von „Raumspray“. Das muss natürlich auch mit integriert werden.
Also ein Gehäuse entwerfen wo Batterien, der ESP nebst Taster und so eine Brise One Touch Kartusche rein passen UND auch noch zusammen aktiviert werden können!
Gemessen, gemessen, gemessen und in Fusion360 konstruiert. Nach einiger Zeit war dann die Grundplatte fertig und mit dem 3D-Drucker gedruckt. Schaltung eingebaut, Deckel gedruckt, Taster etwas „feingetunt“ (Ich hab ein Stück Zellkautschuk drüber geklebt um den Druck etwas abzufangen) und ausprobiert: fertig.

 

 

 

 

 

Ist nicht schick aber funktional. Die Dateien für den 3D-Drucker könnt ihr bei Thingiverse downloaden (ihr findet dort auch einen Deckel ohne Schriftzug).

In FHEM wird die MQTT_Message  mittels eines MQTT-Device ausgelesen und in meinem Fall mit einem DOIF ein Watchdog-Timer gesetzt der den Badlüfter für 5 Minuten aktiviert (hier: Fall ## 1)

## 1
([Paniktaster] eq "ON" )
(set Watchdog_Paniktaster on-for-timer 300)
(set Bad_Luefter on)
## 2
DOELSEIF
([Sensor_Badezimmer:humidity] > 70)
(set Bad_Luefter on)
## 3
DOELSEIF
([Watchdog_Paniktaster] eq "off" and [Sensor_Badezimmer:humidity] < 70)
(set Bad_Luefter off)

Fertig!