Anleitung - Waschmaschine mit einer Smart-Steckdose domotisieren

Hallo zusammen,

Hier möchte ich euch zeigen, wie ihr eine Waschmaschine mit nur einer Steckdose einfach smart machen könnt und ein solches Ergebnis erzielt:

Achtung: Dieser Leitfaden wird sich weiterentwickeln und einige Screenshots werden im Laufe der Zeit aufgrund möglicher Fehlerbehebungen oder hinzugefügter Funktionen geändert werden :slight_smile:
Der Changelog wird am Ende des Leitfadens verfügbar sein

Ich werde viele Screenshots ohne begleitenden Text einfügen, aber wenn ihr Fragen, Anmerkungen oder Vorschläge habt, zögert nicht :wink:

Ich habe mich stark von dem Tutorial auf Domo-Blog inspirieren lassen, das ihr hier findet:
https://www.domo-blog.fr/comment-connecter-et-monitorer-la-machine-a-laver-sous-la-domotique-home-assistant/


Voraussetzungen:

  • MQTT-Integration
  • Zigbee2Mqtt-Integration
  • Eine Zigbee-Steckdose (In meinem Fall diese hier)
  • Die integrierte Zigbee-Steckdose in die Zigbee2Mqtt-Integration

1. Erstellung des Waschmaschinen-Geräts in der MQTT-Integration:


2. Erstellung der Funktionen am MQTT-Waschmaschinen-Gerät:


3. Erstellung des EDF-Geräts in der MQTT-Integration:


1. Erstellung des Geräts, um den letzten Tag des Monats abzurufen:


4. Erstellung der Funktion am MQTT-EDF-Gerät:


5. Erstellung der Szene für EDF, um die Kosten Ihres Abonnements anzuzeigen:
Ihr könnt diese Aufgabe mit dem folgenden Tutorial automatisieren:
https://community.gladysassistant.com/t/tuto-recuperer-le-prix-de-son-abonnement-delectricite-via-le-site-data-gouv-fr/8838

Führt diese Szene einmal manuell aus und die nächsten Male, wenn sich Ihr Tarif ändert, wenn ihr die Automatisierung nicht verwendet :wink:


6. Erstellung der Szene „Waschmaschine in Betrieb“:



7. Erstellung der Szene „Waschmaschine aus“:


8. Erstellung der Szene „Monatswerte zurücksetzen“:

9. Erstellung der Szene „Statische Werte aktualisieren“:

Wenn ihr eure Maschine 48 Stunden lang nicht benutzt, werden einige Werte nicht mehr im Dashboard angezeigt. Dieser Wert ist in den Einstellungen → Gladys-System einstellbar:

Ich habe daher eine Szene erstellt, die die Werte alle 24 Stunden zu einer Zeit aktualisiert, zu der ich weiß, dass meine Maschine nicht läuft :slight_smile:


10. Erstellung der Szene „Jährliche Werte aktualisieren“:

Ein kleiner Hinweis zu dieser Szene: Ihr müsst dieses Datum jedes Jahr ändern

11. Erstellung des Node-Red-Flows, um den letzten Tag des Monats abzurufen:

[
    {
        "id": "b7191a33c07d23e0",
        "type": "tab",
        "label": "Letzten Tag des aktuellen Monats überprüfen",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "d0e045cb.9f4ef",
        "type": "http request",
        "z": "b7191a33c07d23e0",
        "name": "WorldTime API",
        "method": "GET",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "http://worldtimeapi.org/api/ip",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 260,
        "y": 200,
        "wires": [
            [
                "91df43f4.81a518"
            ]
        ]
    },
    {
        "id": "91df43f4.81a518",
        "type": "function",
        "z": "b7191a33c07d23e0",
        "name": "Monat extrahieren",
        "func": "var mois_actuel = msg.payload.datetime.substring(5, 7);\nmsg.mois_actuel = parseInt(mois_actuel);\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 430,
        "y": 260,
        "wires": [
            [
                "7894f4e2.dcb4f4"
            ]
        ]
    },
    {
        "id": "7894f4e2.dcb4f4",
        "type": "function",
        "z": "b7191a33c07d23e0",
        "name": "Letzten Tag des Monats bestimmen",
        "func": "var mois_30_jours = [4, 6, 9, 11];\nvar mois_31_jours = [1, 3, 5, 7, 8, 10, 12];\n\nif (mois_30_jours.includes(msg.mois_actuel)) {\n    msg.payload = 30;\n} else if (mois_31_jours.includes(msg.mois_actuel)) {\n    msg.payload = 31;\n} else {\n    var annee_actuelle = parseInt(msg.payload.datetime.substring(0, 4));\n    if ((annee_actuelle % 4 == 0 && annee_actuelle % 100 != 0) || annee_actuelle % 400 == 0) {\n        msg.payload = 29; // Schaltjahr\n    } else {\n        msg.payload = 28;\n    }\n}\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 640,
        "y": 320,
        "wires": [
            [
                "b55312bdd26f4bda"
            ]
        ]
    },
    {
        "id": "fbac43b9673078da",
        "type": "mqtt out",
        "z": "b7191a33c07d23e0",
        "name": "",
        "topic": "gladys/master/device/mqtt:datetime/feature/mqtt:dernier-jour-moisencours/text",
        "qos": "2",
        "retain": "true",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "0ee77e0f90aa9681",
        "x": 1220,
        "y": 440,
        "wires": []
    },
    {
        "id": "b55312bdd26f4bda",
        "type": "function",
        "z": "b7191a33c07d23e0",
        "name": "Tag extrahieren",
        "func": "const payload = msg.payload;\nmsg.payload = payload;\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 860,
        "y": 380,
        "wires": [
            [
                "fbac43b9673078da"
            ]
        ]
    },
    {
        "id": "65287af29bc457b9",
        "type": "cronplus",
        "z": "b7191a33c07d23e0",
        "name": "",
        "outputField": "payload",
        "timeZone": "",
        "storeName": "",
        "commandResponseMsgOutput": "output1",
        "defaultLocation": "",
        "defaultLocationType": "default",
        "outputs": 1,
        "options": [
            {
                "name": "schedule1",
                "topic": "topic1",
                "payloadType": "default",
                "payload": "",
                "expressionType": "cron",
                "expression": "30 00 1 * *",
                "location": "",
                "offset": "0",
                "solarType": "all",
                "solarEvents": "sunrise,sunset"
            }
        ],
        "x": 100,
        "y": 160,
        "wires": [
            [
                "d0e045cb.9f4ef"
            ]
        ]
    },
    {
        "id": "0ee77e0f90aa9681",
        "type": "mqtt-broker",
        "name": "Gladys",
        "broker": "mqtt://192.168.0.248",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "autoUnsubscribe": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthRetain": "false",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closeRetain": "false",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willRetain": "false",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]

12. Erstellung der Szene für das monatliche Kosten-Diagramm, wenn das Monatsende der 30. ist:

13. Erstellung der Szene für das monatliche Kosten-Diagramm, wenn das Monatsende der 31. ist:

14. Diagramm im Dashboard zur monatlichen Verfolgung:


Nur eine kleine Präzisierung zur 2-minütigen Wartezeit in der Szene „Waschmaschine gestoppt“, ich musste dies tun, weil selbst nach 1 Minute meine Waschmaschine die Szene auslöste, da es einen Moment gab, in dem die Waschmaschine auf 0W ging und nach 1 Minute wieder bei 0W war. Jedenfalls erkläre ich es so… ^^
Ich hatte danach keine Probleme mehr, nachdem ich es auf 2 Minuten erhöht hatte


Changelog zu kommen:

  • Keine (Ihre Kommentare :slight_smile: )

Edit 10/04/2024:

  • Änderung des Auslösewerts (Leistungsaufnahme) zur Berücksichtigung der verzögerten Abfahrt
  • Hinzufügen der Berechnung für die Kosten über 1 Monat

Edit 12/04/2024:

  • Behebung mehrerer Fehler

Edit 16/04/2024:

  • Hinzufügen des Links für die Automatisierung der Stromtarifabfrage
  • Fehler erkannt und versucht zu beheben, der die Szene „Waschmaschine gestoppt“ betrifft, die sich mehrmals ausführt, insbesondere am Ende des Zyklus :frowning:

Edit 21/04/2024:

  • Behebung des Fehlers in der Szene „Waschmaschine gestoppt“, die sich am Ende des Zyklus mehrmals ausführte
  • Hinzufügen einer Szene, damit die Werte immer im Dashboard angezeigt werden, basierend auf dem Parameter „Verzögerung vor Ablauf eines Status“
  • Implementierung der Rundung auf 2 Dezimalstellen für die Kosten + 3 Dezimalstellen für den Verbrauch der letzten Wäsche
  • Hinzufügen der Jahreskosten

Edit 22/04/2024:

  • Mea culpa, der Fehler war überhaupt nicht behoben, jetzt ist es erledigt :slight_smile:
  • Optimierung der Szene „Waschmaschine gestoppt"

Edit 03/05/2024:

  • Hinzufügen eines Diagramms zur monatlichen Verfolgung der Kosten

Super Tutorial, das mache ich schon bei mir zu Hause (so ähnlich) aber ich habe mir nie die Zeit genommen, ein Tutorial zu machen… Also ein großes Dankeschön!! :grin:

Ja, tatsächlich, danke, ich habe es gerade korrigiert :slight_smile:

Super Tuto, danke @prohand :slight_smile:

Kleine Änderung zur Berücksichtigung des verzögerten Starts
Der Verbrauch beträgt 3W, wenn die Maschine beim verzögerten Start im Standby-Modus ist

Und ich kann nicht mehr aufhören :sweat_smile:
Ich habe gerade die Berechnung für die Kosten des laufenden Monats hinzugefügt

Du bist gerade voll im Flow :grin:

Ich habe gezögert, die jährlichen Kosten zu berechnen, aber ich werde warten, um zu sehen, ob dieser Teil bereits gut eingespielt ist :slight_smile:

Geteilt auf Twitter:

Vielen Dank :slight_smile:

Kleiner Fehler auf der Waschmaschinen-Szene im Betrieb bezüglich der Aktion 2, es muss gleich 0 sein
Ich korrigiere den Screenshot, sobald ich kann :wink:

Edit: Es ist korrigiert

@pierre-gilles Ich habe gerade festgestellt, dass die Berechnungen nicht funktionieren, wenn man sie in „MQTT-Nachricht senden“ verwendet:

Der Wert in mqtt wird hier nicht durch die Berechnung ersetzt.

Ist das normal oder ein Bug?

Edit: Lösung gefunden, indem man über Pufferfunktionen geht (MQTT-Topic zum Abhören)

Edit 2: Das Tutorial ist aktualisiert :slight_smile:

Ich habe eine kleine Frage zu den Nachkommastellen bei der Währungsfunktion.

Ich sehe, dass im MQTT-Broker der Wert korrekt ist:

image

Aber die Anzeige sieht so aus:

Man sieht deutlich, dass bei der Leistungsfunktion mehrere Nachkommastellen angezeigt werden. Gibt es hier eine Blockade? Wie kann ich die Währungsfunktion ändern, um zwei Nachkommastellen anzuzeigen?

Ich nutze die Gelegenheit, um zu fragen, wie man die Anzahl der Nachkommastellen bei der Leistungsfunktion auf 2 oder 3 Nachkommastellen ändern kann?

Ich habe dies gesehen, aber nichts anderes:( : Dashboard - arrondi des données affichées - #4 par Kevin

Ich hätte für diesen Funktionswunsch gestimmt, aber ich habe mein Limit erreicht:( : Dashboard - arrondi des données affichées

Danke :slight_smile:

Ja, das ist normal. Es soll keine Berechnung durchführen, sondern den Text verketten, wie bei der Aktion „Nachricht senden“.

Zur Information, ich habe gerade mehrere Bugs behoben.
Der Leitfaden ist aktuell :wink:

Ich habe gerade einen Link hinzugefügt, um die Tarife über den folgenden Leitfaden zu automatisieren:

https://community.gladysassistant.com/t/tuto-recuperer-le-prix-de-son-abonnement-delectricite-via-le-site-data-gouv-fr/8838

Ich versuche gerade, einen Bug zu beheben, bei dem die Szene „Waschmaschine ausgeschaltet“ am Ende des Zyklus mehrmals hintereinander gestartet wird. Ich werde euch Bescheid geben, sobald ich den Leitfaden mit dem behobenen Bug aktualisiert habe. :blush:

Tutorial-Update :slight_smile:
Siehe Changelog im ersten Beitrag.
Danke :wink:

Nachträgliche Information zum Jahreskosten :blush:
Falls Sie Vorschläge für neue Funktionen oder Bug-Reports haben, zögern Sie nicht.

Tutorial-Update :slight_smile:
Siehe Changelog im ersten Beitrag.
Danke :wink:

Tutorial aktualisiert :slight_smile:
Siehe Changelog im ersten Beitrag.
Danke :wink: