X

Waschmaschine vergessen war gestern: Automatische Fertigmeldung per E-Mail

Geschrieben amgeschrieben von Dennis, zuletzt aktualisiert am RSS Feed
Kennst du das? Die Waschmaschine läuft, du widmest dich anderen Aufgaben und vergisst völlig, dass du sie angeschaltet hast. Das Signal hörst du nicht, weil du dich gerade im Garten oder in einem anderen Stockwerk aufhältst. Die Wäsche liegt dann stundenlang in der Trommel und wartet darauf, aufgehängt zu werden.

Dieses Problem gehört der Vergangenheit an! Mit dieser Anleitung erstellst du eine intelligente Lösung, die den Stromverbrauch deiner Waschmaschine misst und dir automatisch eine E-Mail sendet, sobald der Waschgang beendet ist. Und das Beste daran: Das System läuft vollständig lokal bei dir zu Hause – ganz ohne externe Cloud.

Waschmaschine vergessen war gestern: Automatische Fertigmeldung per E-Mail


Vorbereitung


Benötigte Hardware
  • Ein zuverlässiger Minicomputer oder Server, der 24/7 läuft. Ideal sind eine Intel NUC * oder ein vergleichbarer Mini-PC *, da diese kompakt, sparsam und leistungsstark genug sind. Für den kleineren Geldbeutel genügt für diese Anleitung aber auch ein Raspberry Pi 5 (4 GB) *.

  • Shelly Plug S *: Ein WLAN-gesteuerter Smart Plug mit integrierter Leistungsmessung. Wir verwenden in dieser Anleitung die 2. Generation des Shelly Plug S *.


Benötigte Software
  • Ein Betriebssystem das Docker und Docker Compose unterstützt. Wir nutzen hier OpenMediaVault 7.

  • Docker und Docker Compose (Bestandteil OpenMediaVault-Erweiterung.

  • n8n: Ein leistungsstarkes Automatisierungstool, das die Logik für unsere E-Mail-Benachrichtigung steuert.

  • Postgres + pgAdmin: Datenbank zur Speicherung des Waschmaschinen-Status und Verwaltungsoberfläche..


Voraussetzungen
  • Grundkenntnisse in OpenMediaVault und Docker

  • Shelly Plug ist über die App eingerichtet

  • Ein SMTP-E-Mail-Konto

  • Zugang zum Heimnetzwerk




Schritt-für-Schritt-Anleitung


1. Docker Container erstellen
Installiere die benötigte Software als Docker-Container. Das ist sauber, effizient und leicht zu verwalten. Melde dich im OpenMediaVault-Webinterface an und gehe zu Dienste ? Compose ? Dateien.

1.1. Postgres-Container erstellen
Klicke auf „Hinzufügen“ (+), gib dem Container einen Namen (z. B. „postgres“) und füge den folgenden Code ein:
services:
  postgres:
    image: postgres:15-alpine
    container_name: postgres
    restart: always
    environment:
      - POSTGRES_USER=waschmaschine_user
      - POSTGRES_PASSWORD=dein_super_sicheres_passwort
      - POSTGRES_DB=waschmaschine
    ports:
      - "5432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data

volumes:
  postgres-data:


Waschmaschine vergessen war gestern: Automatische Fertigmeldung per E-Mail

Passe die Werte für POSTGRES_USER, POSTGRES_PASSWORD und POSTGRES_DB an. Klicke dann auf "Speichern", wähle den neu erstellen Container aus und klicke auf "up" (Pfeil nach Oben).


1.2 pgAdmin-Container erstellen
Erstelle einen weiteren Container mit dem Namen "pgAdmin" und folgendem Code:

services:
  pgadmin:
    image: dpage/pgadmin4
    container_name: pgadmin
    restart: always
    environment:
      - [email protected]
      - PGADMIN_DEFAULT_PASSWORD=dein_pgadmin_passwort
    ports:
      - "8080:80"


Passe hier die Werte für PGADMIN_DEFAULT_EMAIL und PGADMIN_DEFAULT_PASSWORD an. Klicke dann wieder auf "Speichern & Up".

Nun kannst du über die IP deines Servers und den Port 8080 (z.B. http://192.168.1.11:8080) auf pgAdmin zugreifen.


1.3 n8n-Container erstellen
Erstelle den letzten Container namens n8n mit diesem Code:

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=n8n
      - N8N_BASIC_AUTH_PASSWORD=dein_n8n_passwort
      - GENERIC_TIMEZONE=Europe/Berlin
      - N8N_PROMETHEUS_METRICS=false
      - N8N_SECURE_COOKIE=false
    ports:
      - "5678:5678"
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:


Auch hier die Anmeldedaten (N8N_BASIC_AUTH_USER+N8N_BASIC_AUTH_PASSWORD) anpassen. Klicke dann auf "Speichern & Up".

Du erreichst n8n jetzt unter http://[IP DEINES SERVERS]:5678 (z.B. http://192.168.1.11:5678).


Nun muss in der Container-Übersicht der Status aller installierten Container auf „Up“ stehen.

Waschmaschine vergessen war gestern: Automatische Fertigmeldung per E-Mail


2. Datenbankstruktur in Postgres erstellen
Melde dich jetzt bei pgAdmin an (z.B. http://192.168.1.11:8080).

Waschmaschine vergessen war gestern: Automatische Fertigmeldung per E-Mail

Hier erstellen wir jetzt eine neue Datenbank:

  1. Klicke auf der Übersichtsseite auf "Neuen Server hinzufügen".

  2. Gib unter "Allgemein" einen Namen wie z.B. "n8n" ein.

  3. Wechsle zum Tab "Connection" und gib die IP deines Servers, Port 5432, den Benutzernamen und das Passwort an, das du bei der Postgres-Installation gewählt hast. Aktiviere "Passwort speichern". Klicke auf "Speichern".

  4. Klappe im Objekt-Explorer deinen neu erstellten Server und dann den nächsten Unterpunkt "Datenbanken" auf. Hier findest du deine erstellte Datenbank. Mit der rechten Maustaste auf deine Datenbank klicken und "Abfragewerkzeug" auswählen.

  5. Füge folgenden SQL-Code ein und führe ihn aus (Play-Symbol), um die Tabelle washer_state zu erstellen:

CREATE TABLE public.washer_state (
    key character varying(255) PRIMARY KEY,
    state character varying(50),
    highcnt integer,
    lowcnt integer,
    laststartts timestamptz,
    updatedat timestamptz
);




3. Shelly Plug S * konfigurieren
Damit n8n die Messwerte deines Shelly Plug S * abfragen kann, muss dieser eine feste IP-Adresse haben. Wechsle dazu in die Einstellungen deines Routers (z.B. FritzBox) und vergebe eine feste IP-Adresse für den Shelly-Plug.

4. n8n-Workflow importieren und konfigurieren
Jetzt kommt das Herzstück der Anleitung: Der n8n-Workflow. Dieser ist komplett fertig erstellt und muss nur noch in n8n importiert werden.

  1. Kopiere den Link zu der von uns erstellten JSON-Datei (Download). Diese enthält den fertigen n8n-Workflow.

  2. Melde dich in n8n an (http://[IP DEINES SERVERS]:5678), klicke oben rechts auf "Create Workflow".

  3. Klicke oben rechts auf die 3 Punkte (...) und gehe hier auf "Import from URL". Hier die URL zu unserer JSON-Datei eingeben und importieren.

  4. Du siehst nun die einzelnen Knoten (Trigger, Daten vom Shelly Plug, Daten Lesen, Code, Status in Datenbank schreiben, Maschine fertig?, Fertigmeldung). Daten Lesen, Status in Datenbank schreiben und Fertigmeldung sind rot umrandet. Das liegt daran, dass hier noch deine Zugangsdaten fehlen.

  5. Klicke auf den Knoten Daten Lesen, dort oben auf "Select Credential" und dann auf "Create new credential". Hier hinterlegst du dann die Zugangsdaten für die Postgres-Datenbank, die du zuvor festgelegt hast. Diese Zugangsdaten sind nun gespeichert und im ersten Knoten automatisch hinterlegt, im Knoten Status in Datenbank schreiben musst du diese im gleichen Feld jetzt noch auswählen. Als letztes muss noch der Knoten Fertigmeldung mit den Zugangsdaten versehen werden, hier gibst du dann die Zugangsdaten deines E-Mailservers an.

  6. Der Knoten Daten vom Shelly Plug beinhaltet eine Dummy-IP, die müsst ihr auf die IP eures Shelly Plugs anpassen. Der Rest der URL bleibt wie er ist.

  7. Im Knoten Fertigmeldung müssen die E-Mail-Adressen unter "From Email" und "To Email" angepasst werden.

  8. Im Knoten Code ist die gesamte Logik für die Zustands-Erkennung hinterlegt. Passe diese Werte bei Bedarf an deine Waschmaschine an.
    const POLL_SEC = 5; -> Das Abfrage-Intervall (muss mit dem Trigger-Knoten übereinstimmen).
    const START_W = 10; -> Schwellenwert in Watt, ab dem die Maschine als "laufend" erkannt wird.
    const START_SEC = 30; -> Wie lange der Verbrauch über START_W liegen muss, damit der Status auf "running" wechselt.
    const FINISH_W = 5; -> Schwellenwert in Watt, ab dem die Maschine als "fertig" gilt.
    const FINISH_SEC = 60; -> Wie lange der Verbrauch unter FINISH_W liegen muss, damit der Status auf "idle" wechselt.


  9. Als letztes muss der Workflow noch aktiviert werden, dazu oben auf den Schalthebel neben "Inactive" klicken (damit wird der Workflow zusätzlich gespeichert). Der Workflow startet nun alle 5 Sekunden und prüft den Status deiner Waschmaschine.




Häufige Fehler und Lösungen


Die E-Mail kommt nicht an.
Überprüfe deine SMTP-Zugangsdaten im Fertigmeldung-Knoten. Stelle sicher, dass du die korrekten Daten für deinen E-Mail-Provider (Port, Hostname, Passwort) eingegeben hast. Manchmal blockiert der E-Mail-Provider auch den Versand, wenn die Authentifizierung fehlschlägt.
Die Waschmaschine wird nicht als "running" erkannt, obwohl sie läuft.
Deine Waschmaschine verbraucht im Ruhezustand möglicherweise mehr als 10W. Passe den Wert START_W im Code-Knoten auf einen niedrigeren Wert an. Du kannst den aktuellen Verbrauch deines Shelly über die Web-Oberfläche einsehen.
Der Workflow scheitert mit einem Datenbankfehler.
Überprüfe die Zugangsdaten im Postgres-Knoten. Stelle sicher, dass der Host die korrekte IP deines Servers und nicht localhost ist.
Der Workflow startet, aber es kommen keine Daten vom Shelly.
Falsche IP oder Gen-1 statt Gen-2 API-Pfad. Prüfe die URL im HTTP-Node. Für Gen 2: [SHELLY-IP]/rpc/Switch.GetStatus?id=0. Teste die URL direkt im Browser.



Ein paar Hinweise zum Schluss


Dieses System lässt sich auch leicht an andere Geräte anpassen, die ihren Betriebszustand über den Stromverbrauch anzeigen, wie z.B. einen Trockner. Hierzu einfach die IP des Shelly entsprechend anpassen und den Wert "washer", hier in der Anleitung und im n8n-Workflow, durch einen anderen passenden Begriff ersetzen. Für meinen Trockner nutze ich z. B. "dryer".

Um zu prüfen ob alles korrekt in die Datenbank geschrieben wird, kann man diesen Code im Abfragewerkzeug (wie oben beschrieben) ausführen:
SELECT * FROM public.dryer_state WHERE key='dryer';


Um die korrekten Schwellenwerte zu ermitteln kann man in die Shelly-App gucken und dort den aktuellen Stromverbrauch verfolgen. Ich habe es mir etwas einfacher gemacht und habe mir einen Workflow in Node-RED gebaut (Download), der den Stromverbrauch jede Sekunde in eine InfluxDB schreibt. Die Werte lasse ich mir dann in Grafana als Graph anzeigen, somit hatte ich eine perfekt Übersicht welche Schwellenwerte ich ideal nutzen kann. Wie das im Detail geht, hat Stefan in dieser Anleitung beschrieben: MQTT Daten mit Node-RED in InfluxDB2 speichern und in Grafana visualisieren


Fazit


Glückwunsch! Du hast erfolgreich eine automatische Fertigmeldung für deine Waschmaschine eingerichtet. Durch die Nutzung von Docker, n8n und einem Shelly Plug S * hast du eine robuste und flexible Lösung geschaffen, die dich per E-Mail benachrichtigt, sobald deine Wäsche fertig ist. Das System lässt sich ganz einfach an andere Geräte anpassen, bei denen man den Betriebszustand durch den aktuellen Stromverbrauch ermitteln kann.

Achte darauf, dass alle Dienste reibungslos laufen, auf korrekte IP-Adressen, persistente Volumes und passende Schwellenwerte, damit die Benachrichtigungen zuverlässig funktionieren. Mit den obigen Compose-Beispielen und dem fertigen Workflow bist du in weniger als einer Stunde startklar und hast nie wieder muffige Wäsche – dank smarter Automatisierung!

Bei Links, die mit einem * gekennzeichnet sind, handelt es sich um Affiliate-Links, bei denen wir bei einem Kauf eine Vergütung durch den Anbieter erhalten.
VG-Wort

Kommentare (0)


Diesen Artikel kommentieren:

Hinweis:

  • Nur Fragen / Antworten direkt zum Artikel
  • Kein Support für andere Hard- oder Software !


   
   
Ergebnis der Rechenaufgabe   Bild neu laden

   
optional
  Wenn Du eine E-Mail-Adresse angibst, informieren wir dich, sobald es hier etwas Neues gibt.
   
 
E-Mail Abo
Spamfreies E-Mail Abo nur bei neuen Artikeln
RSS Feed
Abonniert unseren RSS-Feed
benötigt einen RSS-Reader