FANDOMOTIQUE Posté(e) le 31 août 2016 Signaler Posté(e) le 31 août 2016 Bonjour à tous cher amis domoticien Voilà , faute de temps j'avais complétement délaisser ma HC2 et depuis 1 semaine, je reprends. Après avoir jouer avec tous mes modules et quelques scènes en mode graphique dont je m'aperçois vite des limites, j'arrive au LUA et là , c'est le drame. Je ne suis absolument pas programmeur et j'avoue avoir passé pas mal d'heure à essayer de scripter un petit truc mais sans succès. Si ça vous dit d'enrichir le forum et surtout de m'aider à mettre en place ce script, n'hésitez pas Donc voici le contexte : - La Machine à Laver est reliée à un WallPlug. - Quand le WallPlug est allumé et que la machine est également allumé mais ne fonctionne pas, elle consomme 4,6 w mini. - A plein régime, elle monte à plus de 2000w mais ensuite, une fois que l'eau est chaude, elle tourne plus vers les 120 - 140 w voire moins. - Une fois le cycle de lavage complètement terminé, la machine reviens à 4,6w. L'idée du script : Je souhaiterais que la HC2 vérifier constamment si une machine est en cours ou pas. Si une machine est en cours et qu'elle se termine, alors la HC2 envoie une notification push sur mon téléphone. J'ai trouvé ceci mais pas pour HC2 : https://www.kzenjoy.net/2015/domoticz-notification-de-votre-machine-a-laver/ J'ose même pas vous poster les tests que j'ai fait en LUA A suivre donc... 1
Moicphil Posté(e) le 31 août 2016 Signaler Posté(e) le 31 août 2016 Salut Il existe un script pour ce que tu souhaites. C'est ici : http://www.domotique-fibaro.fr/index.php?/topic/569-Sèche-Linge---Cycle-De-Chauffe-&-Notification
jojo Posté(e) le 31 août 2016 Signaler Posté(e) le 31 août 2016 ou bien tu utilises GEA. Il te sera très utile pour plein d'autres automatismes également. Pour celui-ci : 1 ligne pour t'informer du début de la machine, et 1 ligne pour t'informer quand elle est finie
FANDOMOTIQUE Posté(e) le 1 septembre 2016 Auteur Signaler Posté(e) le 1 septembre 2016 Merci de vos réponses rapide ! Moicphil, j'avais bien vu ça mais je suis incapable de décoder le script et mon objectif est double, j'aimerai tant qu'a faire apprendre en plus de faire fonctionner ce script Je vais y regarder en détail et je vous tiens au courant. Jojo, merci également mais alors là GEA, je pige rien !
jojo Posté(e) le 1 septembre 2016 Signaler Posté(e) le 1 septembre 2016 la bible GEA : http://gea.piccand.me/doku.php (c'est beaucoup plus simple que du LUA)
Steven Posté(e) le 2 septembre 2016 Signaler Posté(e) le 2 septembre 2016 Si on se base sur la consommation électrique, c'est assez simple. Il te faut d'abord créer une variable global (exemple : "LAVELINGE") qui sera utilisée pour savoir si le lave linge est en cours de lavage ou non. Puis utiliser le script suivant ... NON TESTE Il faut remplace le 100 par l'ID de ton wallplug (dans l'entête ET id_wallplug = XXX) Et l'ID de ton portable (id_portable = XXX) Cela devrait fonctionner --[[ %% properties 100 value --]] local id_wallplug = 100 local id_portable = 2 local consoArret = 4.6 -- en dessous de cette valeur on considère le lave-linge comme arrêté local globalVariable = "LAVELINGE" local conso = fibaro:getValue(id_wallplug, "value") local status = fibaro:getGlobalValue(globalVariable) -- la 1ère fois, la variable est vide donc on l'initialise à OFF if (status == "") then fibaro:setGlobal(globalVariable, "OFF") if (conso <= consoArret) then -- arret de la machine if (status ~= "OFF") then -- si le status n'est pas encore à OFF, on averti l'utilisateur de la fin fibaro:call(id_portable, "sendPush", "Fin du cycle de lavage") end fibaro:setGlobal(globalVariable, "OFF") else if (status ~= "RUNNING") then -- si le status n'est pas encore à RUNNING, on averti l'utilisateur du démarrage fibaro:call(id_portable, "sendPush", "Démarrage du lavage") end fibaro:setGlobal(globalVariable, "RUNNING") end
FANDOMOTIQUE Posté(e) le 3 septembre 2016 Auteur Signaler Posté(e) le 3 septembre 2016 Waouh, Merci beaucoup Steven, Je viens de mettre en place cette scène en l'adaptant très facilement avec mes ID. Reste plus qu'a attendre la prochaine machine Je vous tiens au courant. Encore merci !
FANDOMOTIQUE Posté(e) le 3 septembre 2016 Auteur Signaler Posté(e) le 3 septembre 2016 Bon, j'étais confiant mais ça ne marche pas du premier coup. Le code suivant : --[[ %% properties 137 value %% events %% globals --]] local id_wallplug = 137 local id_portable = 96 local consoArret = 5 -- en dessous de cette valeur on considère le lave-linge comme arrêté local globalVariable = "LAVELINGE" local conso = fibaro:getValue(id_wallplug, "value") local status = fibaro:getGlobalValue(globalVariable) -- la 1ère fois, la variable est vide donc on l'initialise à OFF if (status == "") then fibaro:setGlobal(globalVariable, "OFF") if (conso <= consoArret) then -- arret de la machine if (status ~= "OFF") then -- si le status n'est pas encore à OFF, on averti l'utilisateur de la fin fibaro:call(id_portable, "sendPush", "Fin du cycle de lavage") end fibaro:setGlobal(globalVariable, "OFF") else if (status ~= "RUNNING") then -- si le status n'est pas encore à RUNNING, on averti l'utilisateur du démarrage fibaro:call(id_portable, "sendPush", "Démarrage du lavage") end fibaro:setGlobal(globalVariable, "RUNNING") end Me retourne l'erreur : suivante : [DEBUG] 10:42:37: line 33: 'end' expected (to close 'if' at line 18) near J'ai donc ajouté un END à la ligne 19 comme ceci : --[[ %% properties 137 value %% events %% globals --]] local id_wallplug = 137 local id_portable = 96 local consoArret = 5 -- en dessous de cette valeur on considère le lave-linge comme arrêté local globalVariable = "LAVELINGE" local conso = fibaro:getValue(id_wallplug, "value") local status = fibaro:getGlobalValue(globalVariable) -- la 1ère fois, la variable est vide donc on l'initialise à OFF if (status == "") then fibaro:setGlobal(globalVariable, "OFF") end if (conso <= consoArret) then -- arret de la machine if (status ~= "OFF") then -- si le status n'est pas encore à OFF, on averti l'utilisateur de la fin fibaro:call(id_portable, "sendPush", "Fin du cycle de lavage") end fibaro:setGlobal(globalVariable, "OFF") else if (status ~= "RUNNING") then -- si le status n'est pas encore à RUNNING, on averti l'utilisateur du démarrage fibaro:call(id_portable, "sendPush", "Démarrage du lavage") end fibaro:setGlobal(globalVariable, "RUNNING") end Et maintenant j'ai cette erreur : [DEBUG] 10:44:52: line 20: attempt to compare string with number Une idée ?
Steven Posté(e) le 3 septembre 2016 Signaler Posté(e) le 3 septembre 2016 Oups, en effet, désolé pour le END Remplace la ligne local conso = fibaro:getValue(id_wallplug, "value") par local conso = tonumber(fibaro:getValue(id_wallplug, "value"))
FANDOMOTIQUE Posté(e) le 4 septembre 2016 Auteur Signaler Posté(e) le 4 septembre 2016 Un grand merci Steven, en effet, plus de problème DEBUG. Toutefois, je viens de tester de mettre en service la machine et aucune notification de démarrage reçue. J'attends la fin du cycle et vous tiens au courant si la notification de fin fonctionne.
jojo Posté(e) le 4 septembre 2016 Signaler Posté(e) le 4 septembre 2016 es-tu sûr de l'id de ton device ? tu peux la vérifier ainsi http://<IP Box>/api/devices?type=iOS_device vérifie également que ton device soit sélectionné dans "Configuration -> Access control" pour recevoir des notifs
FANDOMOTIQUE Posté(e) le 5 septembre 2016 Auteur Signaler Posté(e) le 5 septembre 2016 En effet, un problème d'ID qui ne correspondait pas ! A la mise en service du script, je reçois de suite la notif fin de cycle. Reste plus qu'a tester en mode de fonctionnement normal Je vous tiens au courant.
FANDOMOTIQUE Posté(e) le 5 septembre 2016 Auteur Signaler Posté(e) le 5 septembre 2016 C'est curieux en fait, au démarrage de la machine, je reçois une notification qui indique "Fin de cycle de lavage" et puis plus rien. Voici l'état de la conso pendant le cycle. Ne faudrait-il pas que la mesure de conso soit inférieur à 4,6w pendant 2 min par exemple ?
FANDOMOTIQUE Posté(e) le 5 septembre 2016 Auteur Signaler Posté(e) le 5 septembre 2016 Juste pour situé, voici où j'en suis au niveau du code : --[[ %% properties 137 value %% events %% globals --]] local id_wallplug = 137 --ID du Wallplug de la machine local id_portable = 95 --ID du téléphone qui reçoit les notifications local consoArret = 5 -- en dessous de cette valeur on considère le lave-linge comme arrêté local globalVariable = "LAVELINGE" --Variable LAVELINGE local conso = tonumber(fibaro:getValue(id_wallplug, "value")) --Variable = àla consomation actuelle du WallPlug local status = fibaro:getGlobalValue(globalVariable) --Variable qui mémorise l'état du Lavelinge -- la 1ère fois, la variable est vide donc on l'initialise àOFF if (status == "") then fibaro:setGlobal(globalVariable, "OFF") end -- Si la conso est inférieure ou égale àla valeur mini définit dans consoArrêt if (conso <= consoArret) then -- Arret de la machine if (status ~= "OFF") then -- si le status n'est pas encore àOFF, on averti l'utilisateur de la fin -- Envoie d'une notification sur le portable en mode Push fibaro:call(id_portable, "sendPush", "Machine terminée") end fibaro:setGlobal(globalVariable, "OFF") -- Et Passage de la variable statut àOFF else if (status ~= "RUNNING") then -- si le status n'est pas encore àRUNNING, on averti l'utilisateur du démarrage -- Envoie d'une notification sur le portable en mode Push fibaro:call(id_portable, "sendPush", "Démarrage de la machine àlaver") end fibaro:setGlobal(globalVariable, "RUNNING") -- Et Passage de la variable statut àRUNNING end
jojo Posté(e) le 5 septembre 2016 Signaler Posté(e) le 5 septembre 2016 moi, j'aurais mis power et pas value Egalement, je ne modifie la variable que si nécessaire, jamais pour rien Voici le code que je te propose d'essayer --[[ %% properties 137 power %% events %% globals --]] local id_wallplug = 137 --ID du Wallplug de la machine local id_portable = 95 --ID du téléphone qui reçoit les notifications local consoArret = 5 -- en dessous de cette valeur on considère le lave-linge comme arrêté local globalVariable = "LAVELINGE" --Variable LAVELINGE local conso = tonumber(fibaro:getValue(id_wallplug, "power")) --Variable = àla consomation actuelle du WallPlug local status = fibaro:getGlobalValue(globalVariable) --Variable qui mémorise l'état du Lavelinge -- la 1ère fois, la variable est vide donc on l'initialise àOFF if (status == "") then fibaro:setGlobal(globalVariable, "OFF") end -- Si la conso est inférieure ou égale àla valeur mini définit dans consoArrêt if (conso <= consoArret) then -- Arret de la machine if (status ~= "OFF") then -- si le status n'est pas encore àOFF, on averti l'utilisateur de la fin -- Envoie d'une notification sur le portable en mode Push fibaro:call(id_portable, "sendPush", "Machine terminée") -- Et Passage de la variable statut àOFF fibaro:setGlobal(globalVariable, "OFF") end else if (status ~= "RUNNING") then -- si le status n'est pas encore àRUNNING, on averti l'utilisateur du démarrage -- Envoie d'une notification sur le portable en mode Push fibaro:call(id_portable, "sendPush", "Démarrage de la machine àlaver") -- Et Passage de la variable statut àRUNNING fibaro:setGlobal(globalVariable, "RUNNING") end end en fait regarde dans le json du device http://<IP Box>/api/devices/<# id>
Steven Posté(e) le 6 septembre 2016 Signaler Posté(e) le 6 septembre 2016 100% d'accord avec @jojo et désolé de t'avoir induit en erreur avec le "value"
FANDOMOTIQUE Posté(e) le 6 septembre 2016 Auteur Signaler Posté(e) le 6 septembre 2016 Ok, je viens de modifier le script et je vous tiens au courant. Merci de votre aide et aucun souci Steven, j'essaye de comprendre et vous m'aidez beaucoup tout les deux Petite remarque : A chaque modification du script, je dois le démarrer avec le bouton démarrer et là , j'ai directement la notification "Fin de cycle".
Steven Posté(e) le 6 septembre 2016 Signaler Posté(e) le 6 septembre 2016 Normalement, ce script doit s'exécuter automatiquement à chaque changement de consommation de ta prise. N'oublie pas de créer la variable globale : LAVELINGE
FANDOMOTIQUE Posté(e) le 6 septembre 2016 Auteur Signaler Posté(e) le 6 septembre 2016 Bien, en effet, je viens de créer la variable Script modifié, j'attends le prochain cycle. 1
FANDOMOTIQUE Posté(e) le 6 septembre 2016 Auteur Signaler Posté(e) le 6 septembre 2016 Bon ça y est, les notifications arrivent.... sans arrêt à chaque modification de la valeur du WallPlug j'ai l'impression. Au démarrage de la machine 2-3 minutes où rien ne se passe et depuis, notification toute les 10 secondes ! Je vais annuler le script en attendant la modif
jojo Posté(e) le 6 septembre 2016 Signaler Posté(e) le 6 septembre 2016 pour aider àdébuguer, quelle notif reçois-tu "Machine terminée" ou "Démarrage de la machine àlaver" ?
FANDOMOTIQUE Posté(e) le 6 septembre 2016 Auteur Signaler Posté(e) le 6 septembre 2016 Les deux de manière alterné (80 notif le temps d'arrêter le script.)
jojo Posté(e) le 6 septembre 2016 Signaler Posté(e) le 6 septembre 2016 es-tu sûr et certain que la variable prédéfinie LAVELINGE est correctement crée, avec les 2 valeurs possibles "OFF" et "RUNNING" EN RESPECTANT la casse ?
FANDOMOTIQUE Posté(e) le 6 septembre 2016 Auteur Signaler Posté(e) le 6 septembre 2016 Tout à fait. Je pense que le souci vient du fait que la machine ne cesse de passer de 0 à xxx Watt sans arrêt et à chaque fois que ça passe sous et au dessus des 5w, ça notif.
Messages recommandés