Tuto - Domotiser son lave linge avec une prise connectée

Bonjour à tous,

Je vais ici vous présenter comment simplement domotiser une machine à lavée avec seulement une prise et avoir un rendu comme ceci :

Attention ce tutoriel sera amené à évoluer ainsi que certaines copies d’écrans changées au fur et à mesure des corrections éventuelles de bugs ou ajout de fonctionnalités :slight_smile:
Le changelog sera dispo en fin de tutoriel

Je mettrai pas mal de copies d’écrans sans forcement l’accompagner de texte mais si vous avez des questions/remarques/suggestions n’hésitez pas :wink:

Je me suis fortement inspiré du tutoriel sur Domo-Blog que l’on retrouve ici :
https://www.domo-blog.fr/comment-connecter-et-monitorer-la-machine-a-laver-sous-la-domotique-home-assistant/


Pré-requis :

  • Intégration MQTT
  • Intégration Zigbee2Mqtt
  • Une prise connecté Zigbee (Dans mon cas celle-ci)
  • Avoir intégré sa prise connecté Zigbee à l’intégration Zigbee2Mqtt

1. Création de l’appareil lave linge sur l’intégration MQTT :


2. Création des fonctionnalités sur l’appareil MQTT lave linge :


3. Création de l’appareil edf sur l’intégration MQTT :


1. Création de l’appareil pour récupérer le dernier jour du mois :


4. Création de la fonctionnalité sur l’appareil MQTT edf :


5. Création de la scène pour edf afin d’indiquer le coût de votre abonnement :
Vous pouvez automatiser cette tâche avec le tutoriel suivant :
https://community.gladysassistant.com/t/tuto-recuperer-le-prix-de-son-abonnement-delectricite-via-le-site-data-gouv-fr/8838

image

Exécutez cette scène une fois manuellement et les prochaines fois que votre tarif changera si vous n’utilisez pas l’automatisation :wink:


6. Création de la scène lave linge en fonctionnement :

image

image


image


7. Création de la scène lave linge arrêté :

image

image

image


image

image

image

image

image

image

8. Création de la scène reset des valeurs mensuel :

image

9. Création de la scène refresh des valeurs statiques :

Si vous ne faites pas tourner votre machine pendant 48h certaines valeurs n’apparaissent plus sur le Dashboard, cette valeur est trouvable dans Paramètres → Système de Gladys :

image

J’ai donc créé une scène qui met à jour les valeurs par les mêmes valeurs toutes les 24h à un horaire ou je sais que ma machine ne tournera pas :slight_smile:

image

image


10. Création de la scène refresh des valeurs annuelles :

Petite précision sur cette scène, il faudra modifier cette date chaque année

image

image

image

11. Création du flux Node-Red pour récupérer le dernier jour du mois :

[
    {
        "id": "b7191a33c07d23e0",
        "type": "tab",
        "label": "Vérif dernier jour mois en cours",
        "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": "Extract Month",
        "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": "Determine Last Day of Month",
        "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; // Année bissextile\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": "Extraction jour",
        "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. Création de la scène pour le cout par mois graphique si la fin du mois est le 30 :

image

image

13. Création de la scène pour le cout par mois graphique si la fin du mois est le 31 :

image

image

14. Graphique sur le dashboard pour suivre mois par mois :


Juste une petite précision pour l’attente de 2 minutes sur la scène lave linge arrêté, j’ai du faire ceci car même à 1 minute avec mon lave ligne la scène se déclenchait car il devait avoir un moment où le lave linge passait à 0W et après 1 minute était à 0W, en tout cas je l’explique comme ceci… ^^
J’ai n’ai plus eu de problème après l’avoir passé à 2 minutes


Changelog à venir :

  • Aucun (A vos commentaires :slight_smile: )

Edit 10/04/2024 :

  • Modification de la valeur de déclenchement (Puissance prise) pour prendre en compte le départ différé
  • Ajout du calcul pour le coût sur 1 mois

Edit 12/04/2024 :

  • Correction de plusieurs bugs

Edit 16/04/2024 :

  • Ajout du lien pour automatisation récupération tarif électricité
  • Bug détecté et en cours de tentative de résolution concernant la scène « Lave linge arrêté » qui s’exécute plusieurs fois notamment en fin de cycle :frowning:

Edit 21/04/2024 :

  • Correction du bug sur la scène lave linge arrêté qui s’exécutait plusieurs fois en fin de cycle
  • Ajout d’une scène pour que les valeurs soit tout le temps affichées sur le Dashboard en fonction du paramètre « Délai avant expiration d’un état »
  • Mise en place de l’arrondi à 2 décimales sur le coût + 3 décimales sur la consommation dernière lessive
  • Ajout coût année

Edit 22/04/2024 :

  • Mea culpa, le bug n’était pas du tout corrigé, c’est chose faite maintenant :slight_smile:
  • Optimisation de la scène « Lave linge arrêté »

Edit 03/05/2024 :

  • Ajout d’un graphique pour suivre mois par mois le coût
8 « J'aime »

Super tuto, c’est ce que je fais déjà chez moi (en gros) mais je n’ai jamais pris le temps de faire un tuto… Donc un grand merci !! :grin:

1 « J'aime »

Oui effectivement, merci, je viens de corriger :slight_smile:

Super tuto, merci @prohand :slight_smile:

1 « J'aime »

Petite modification pour prendre en compte le départ différé
La prise est à 3W de temps en temps lorsque la machine est en attente de démarrage lors d’un départ différé

1 « J'aime »

Et on ne m’arrête plus :sweat_smile:
Je viens d’ajouter le calcul pour le coût du mois en cours

1 « J'aime »

T’es chaud en ce moment :grin:

1 « J'aime »

J’ai hésité à faire le coût annuel mais je vais attendre pour voir si cette partie est déjà bien rodée :slight_smile:

1 « J'aime »

Partagé sur Twitter :

https://x.com/gladysassistant/status/1778056103344873952?s=46&t=3_Z4ToDnSDTWfPe0oyrqLQ

1 « J'aime »

Un grand merci :slight_smile:

Petite erreur sur la scène lave linge en fonctionnement concernant l’action 2 il faut mettre égal à 0
Je corrige la copie d’écran dès que je peux :wink:

Edit : C’est corrigé

1 « J'aime »

@pierre-gilles Je viens de me rendre compte que les calculs ne fonctionnent pas quand on l’utilise dans « Envoyer un message MQTT » :

image

La valeur dans mqtt ici n’est pas remplacer par le calcul fait.

Est-ce normal ou est-ce un bug ?

Edit : Solution trouvée en passant par des fonctionnalités tampon (Topic MQTT à écouter)

Edit 2 : Le tuto est à jour :slight_smile:

J’ai une petite question concernant les chiffres après la virgule sur la fonctionnalité monnaie.

Je vois que dans le broker mqtt la valeur est bien de :

image

Mais l’affichage sa donne :

image

On voit bien que pour la fonctionnalité puissance nous avons bien plusieurs chiffres après la virgule, y a-t-il un blocage quelque part ? Comment le modifier pour la monnaie pour afficher 2 chiffres après la virgule ?

J’en profite également pour demander comment modifier le nombre de chiffres après la virgule de la fonctionnalité puissance à 2 ou 3 chiffres après la virgules par exemple ?

J’ai vu ceci mais rien d’autres :frowning: : Dashboard - arrondi des données affichées - #4 par Kevin

J’aurai bien voté pour cette demande de fonctionnalités mais j’ai atteint la limite de vote :frowning: : Dashboard - arrondi des données affichées

Merci :slight_smile:

1 « J'aime »

Oui c’est normal, ce n’est pas censé faire un calcul, c’est censé concaténer le texte, comme sur l’action “envoyer un message”

Pour information, je viens de corriger plusieurs bugs.
Le tuto est à jour :wink:

Je viens d’ajouter un lien pour automatiser le tarif via le tutoriel suivant :

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

Je suis en train de tenter de corriger un bug ou le scène « Lave linge arrêté » se lance plusieurs fois de suite en fin de cycle, je vous préviendrais lorsque j’aurai mis le tutoriel à jour avec le bug corrigé :slight_smile:

2 « J'aime »

Mise à jour du tutoriel :slight_smile:
Voir le changelog sur le 1er message.
Merci :wink:

1 « J'aime »

Ajout de dernière minute concernant le coût par année :slight_smile:
Si vous avez des suggestions de nouvelles fonctionnalités ou des remontées de bugs, n’hésitez pas.

1 « J'aime »

Mise à jour du tutoriel :slight_smile:
Voir le changelog sur le 1er message.
Merci :wink:

1 « J'aime »

Mise à jour du tutoriel :slight_smile:
Voir le changelog sur le 1er message.
Merci :wink:

2 « J'aime »