Inhalt:
Da unsere Waschmaschine im Keller steht,
hatte wir oft die Verlegenheit sie zu vergessen bzw. zu früh entleeren zu wollen…
Und das auch noch als FHEM Nutzer!
Das kann man natürlich nicht so belassen, und so war schnell eine Vorstellung der Umsetzung geboren.
Es sollten die drei folgende Features umgesetzt werden:
- Benachrichtigung beim Anlauf des Waschvorgang
- Als Benachrichtigung per Telegram Meldung
- Man(n) vergisst doch mal das Einschalten nach dem Befüllen 😉
- Als Benachrichtigung per Telegram Meldung
- Fertig Meldung nach dem Waschvorgang
- Als Benachrichtigung per Telegram Meldung
- Als akustische Meldung über mein Sonos System
- Der Stromverbrauch wäre auch noch nett
- Als Benachrichtigung per Telegram Meldung
Die passende Hardware war recht schnell gefunden, so das ich einen Sonoff Pow* bestellt und mit Tasmato geflasht habe.
Auch die FHEM Integration war dank den Tasmota FHEM Module von Matthias Kleine (haus-automatisierung.com) kein Problem.
(Noch zu erwähnen ist, das immer noch ein MQTT-Broker benötigt wird.)
Aber nun erst einmal zur Hardware:
Benötigte Teile:
Das Pinout des Sonoff Pow*:
Nun laden wir erst einmal die Firmware sonoff-DE.bin und den ESPEasy Flasher herunter.
Verwenden werden wir hier den ESPEasy Flasher aus dem ESPEasy Projekt, da dieser sehr einfach zu handhaben ist und so Fehlern vorbeugt.
Die sonoff-DE.bin muss nun in den Order des ESPEasy Flasher kopiert werden, nach dem starten des ESPEasy Flasher taucht nun die sonoff-DE.bin in den Dropdown Menü (wie auf den Bild zu erkennen) auf.
Jetzt muss nur nur noch lange Taster beim anstecken des FTDI´s kutz gehalten werden. und dann kann auf den Button Flash geklickt werden..
Das war es dann auch schon:)
Wenn der Flashvorgang beendet ist sollte man den Sonoff Pow einmal von den FTDI trennen und wieder verbinden.
Jetzt sollte ein Wlan-Netzwerk von den Sonoff Pow bereitgestellt werde (wenn nicht einfach 4x schnell den Taster drücken bis die Blaue LED Blinkt), worüber man dann die Wlan Konfiguration des Pow´s vornehmen kann.
Nachdem die Wlan-Einstellungen vorgenommen wurde, ist die eigentliche Konfigurationsseite über die von Router zugewiesene IP erreichen.
Als erstes muss nun eingestellt werden um was für ein Gerätetyp es hierbei handelt:
Einstellungen –> Gerät konfigurieren –> 06 Sonoff Pow
Nun die MQTT-Einstellungen:…
Einstellungen –> Sonstige Konfiguration –> Harken setzen / Namen anpassen
Einstellungen –> MQTT konfigurieren –> Server Daten
Und jetzt nur noch die Telemetrieperiode (dies ist die Häufigkeit der Abfrage der Sensoren)
Einstellungen –> Logging konfigurieren –> Telemetrieperiode –> 10
Jetzt sind wir auf der FHEM Seite angekommen …..
Zuerst müssen wir das Repo von den Tasmota FHEM Module zu unserer FHEM Instanz hinzufügen:
update add https://raw.githubusercontent.com/klein0r/fhem-tasmota/master/controls_tasmota.txt update check tasmota update all tasmota
Nun können wir unser TASMOTA_DEVICE (den Sonoff Pow) anlegen:
defmod WK.Geraet.Waschmaschine TASMOTA_DEVICE WK.Geraet.Waschmaschine Haus/%topic%/%prefix% attr WK.Geraet.Waschmaschine IODev MQTTBroker attr WK.Geraet.Waschmaschine room 1.9_Waschküche attr WK.Geraet.Waschmaschine stateFormat {\ sprintf(\ "%s [Aktuell: %.1f W (%.3f A) Tag: %.2f kWh]", \ ReadingsVal("WK.DOIF.Waschmaschine","washState","n/a"),\ ReadingsVal($name,"sensor-energy-power",-1), \ ReadingsVal($name,"sensor-energy-current",-1), \ ReadingsVal($name,"sensor-energy-today",-1)\ \ )\ }
Wenn das dann geklappt hat sollte sich das Device fix mit Readings füllen…
Um jetzt auch etwas Nutzen von den neugewonnenen Daten zu ziehen habe ich dieses DOIF erstellt.
defmod WK.DOIF.Waschmaschine DOIF ([WK.Geraet.Waschmaschine:sensor-energy-power] > 8)\ (\ set $SELF washState running,\ set $SELF start_kWh {(ReadingsVal("$DEVICE","sensor-energy-total",0))},\ (msgtelegram @00000000 @00000000 ?Die Waschmaschine wurde gestartet.),\ )\ DOELSEIF ([WK.Geraet.Waschmaschine:sensor-energy-power] < 8)\ (\ set $SELF washState finish,\ set $SELF end_kWh {(ReadingsVal("$DEVICE","sensor-energy-total",0))},\ set $SELF lastRun_kWh {(sprintf ('%.3f',(ReadingsVal("$SELF","end_kWh",0) - ReadingsVal("$SELF","start_kWh",0))))},\ (msgtelegram @00000000 @00000000 ✅Die Waschmaschine ist fertig! Und hat [$SELF:lastRun_kWh] kWh verbraucht.?),\ (SpeakWohnzimmer 20 |gong| Die Waschmaschine ist fertig!)\ ) attr WK.DOIF.Waschmaschine readingList washState start_kWh end_kWh lastRun_kWh attr WK.DOIF.Waschmaschine room 9.2_DOIF attr WK.DOIF.Waschmaschine wait 45:120
Hier ist noch zu erläutern das der CMDAlias msgtelegram bei mir Telegram Messages versendet,
und der CMDAlias SpeakWohnzimmer eine Audioausgabe von den übergeben Text auf mein Sonos System im Wohnzimmer ausgibt.
Des weiteren ist das Attribut wait hier noch sehr wichtig, dieses sorgt in meinen Fall dafür das die erste Bedingung erst nach 45 Sekunden und die Zweite nach 120 Sekunden der kontinuierlichen Einhaltung erfüllt wird.
Das CMDAlias msgtelegram baut sich folgt auf:
defmod c_msgTelegram cmdalias msgTelegram .* AS set TelegramBot message $EVENT;;
Und das CMDAlias SpeakWohnzimmer so:
defmod c_SpeakWohnzimmer cmdalias SpeakWohnzimmer .* AS \ {\ my $m = $EVENT;;\ my $p = $EVTPART0;;\ $m =~ s/$p//;;\ fhem("set Sonos_Wohnzimmer Speak $p de $m");;\ }
Die Einrichtung vom TelegramBot gibt es hier im FHEM Wiki beschrieben,
und eine sehr verständliche erklärt wie man SonosSpeak einrichtet findet man beim meintechblog.de.
So das sollte jetzt alles gewesen sein, viel Spaß beim nachbauen!
Mit * markierte Links sind Amazon ParnerNet Affiliate Links