Détecter que sa machine à laver a fini son programme
Dans les maisons il arrive que la machine à laver soit au sous sol. Du coup on n’entend pas le signal qui indique que le programme est fini. Avec un module de mesure d’énergie il est possible d’y arriver.
Cet article fait parti de la série « Mon appartement domotique » . Installation basée sur le controleur Domotique VeraLite.
Mon deuxième objectif
Personnellement, j’ai un deuxième objectif c’est de ne pas entendre cette sonnerie après 22h. Quand on est dans son lit il est pénible de devoir ressortir pour mettre le linge à sécher. Donc dans mon cas je souhaite être notifié de la fin du programme uniquement si on est entre 8h et 22h.
1er pré requis : installer un module de mesure d’énergie
Le modèle de AEON Labs est un module qui permet de mesure l’énergie. On va donc le placer sur la prise électrique qui alimente la machine à laver.
Quand la machine à laver est lancée, le module mesure jusqu’à 233W. Quand le programme est fini et que la machine passe en veille, sa consommation est de 2w. Donc il suffit de détecter le moment où la mesure passe en dessous de 3W pour savoir que le programme est fini. En toute logique il faut qu’on note le moment où la machine est lancée.
2nd pré requis : créer un module virtuel symbolisant la machine à laver
A l’aide d’un module virtuel qui symbolise la machine à laver on va indiquer si la machine est lancée ou pas. Il suffit de vérifier si sa consommation est au dessus de 3W. Si c’est le cas, un programme est en cours.
Pour faire simple, on va considérer que la machine est une ampoule avec donc deux états « allumée » ou « éteinte ».
Sur la Veralite les modules sont typés selon le standard uPnP.
Le module est de type « urn:schemas-upnp-org:device:BinaryLight:1« .
Avant de créer le module il faut « uploader » le fichier « I_BinaryLight1.xml ». Vous le trouverez sur le site FAQ de MIOS.
Il suffit d’aller dans le menu « Develop Apps » puis « Luup files » et d’uploader le fichier en cliquant sur la case « Restart luup engine after upload ».
Puis allez dans « Create device », dans le champ description saisissez le nom du module virtuel.
Dans le champ « Upnp Device Filename » saisissez « D_BinaryLight1.xml ».
Dans le champ « Upnp Implementation Filename » saisissez « I_BinaryLight1.xml ».
Votre module va apparaitre tout de suite mais faites rafraichir votre dashboard pour que votre module soit parfaitement installé.
Création de la scène
Il reste à créer une scène qui va vérifier toutes les 5 minutes l’état de la machine.
La scène est uniquement constituée d’un code en Luup, qui sera exécuté selon le planning mis dans l’onglet « Schedule ».
local t = os.date(‘*t’) — récupère le temps
local current_second = t.hour * 3600 + t.min * 60 + t.sec — converti en seconde depuis minuit
local min_time_in_seconds = 8 * 3600 + 0 * 60 — 08:00
local max_time_in_seconds = 22 * 3600 + 0 * 60 — 22:00local lul_device = 47 — module mesure energie placé sur la prise de la machine
local lul_device_machine = 54 — module virtuel de la machine à laver— on récupère l’état des modules
local status_machine = luup.variable_get( « urn:upnp-org:serviceId:SwitchPower1 », « Status », lul_device_machine) or « 0 »— on récupère la consommation de la machine
local status_module = luup.variable_get( « urn:upnp-org:serviceId:SwitchPower1 », « Status », lul_device) or « 0 »
local watts = luup.variable_get( « urn:micasaverde-com:serviceId:EnergyMetering1 », « Watts », lul_device)
watts = tonumber( watts, 10) or 0— si la consommation est au dessus de 3watt c’est que la machine est en cours
— on met le status du module virtuel a ON
if (status_module ~= « 0 » and watts > 3) then
— on met le device virtuel a 1
luup.call_action(« urn:upnp-org:serviceId:SwitchPower1 », « SetTarget », {newTargetValue = « 1 »}, lul_device_machine)
end— si la machine est allumée et que la consommation est < 3watt, le programme est fini
— on remet le status de la machine à OFF et on notifie si c’est avant 22h !!!if (status_machine ~= « 0 » and status_module ~= « 0 » and watts < 3 and current_second > min_time_in_seconds and current_second < max_time_in_seconds) then
luup.inet.wget(« http://api.pushingbox.com/pushingbox?devid=xxxxxxxxxxxxxxxx »)
endif (status_machine ~= « 0 » and status_module ~= « 0 » and watts < 3) then
— on met le device virtuel a 0
luup.call_action(« urn:upnp-org:serviceId:SwitchPower1 », « SetTarget », {newTargetValue = « 0 »}, lul_device_machine)
return true
else
return false
end
La touche finale
Pour finir j’ai eu envie de remplacer la sonnerie de la machine par une notification plus amusante. Donc après quelques recherches je suis tombé sur une notice qui explique comment désactiver la sonnerie, sur ce coup là j’ai eu de la chance. Puis via pushingbox.com j’ai configuré la notification pour que ce soit mon Karotz qui nous informe « La machine à laver a terminé son programme ».
C’est qui a été amusant c’est de rendre la machine à laver en un objet communiquant.
Je me demande si en analysant plus finement la consommation d’énergie il ne serait pas possible de détecter à quelle étape du programme elle est. De cette façon on pourrait indiquer dans le module visuellement l’étape en cours.

