BenjyNet Posté(e) le 7 mars 2014 Signaler Posté(e) le 7 mars 2014 (modifié) Si comme moi vous avez votre sèche-linge à l'autre bout de la maison et que vous désirez savoir à quel moment il est terminé, voici un petit script utilisant un wallplug pour vérifier la consommation de ce dernier. Bien sur il faudra adapter en fonction du votre. En cadeau des petits icônes pour les 5 états : Tout d'abord un petit relevé des consommations, nous obtenons ceci pour un cycle complet de chauffage : Un peu plus en détail sur le défoulement à la fin : Reste plus qu'à repérer les différentes phases en fonction de la consommation de la machine à l'aide d'un script sans prétention : --[[ %% autostart %% properties %% globals --]] -- Tumble dryer - scene process check v 1.0.3 [03-2015] -- Copyright © 2014 BenjyNet local sourceTrigger = fibaro:getSourceTrigger(); local id_wallplug = 42; local current_conso = 0; local power = 0; if (sourceTrigger["type"] == "autostart") then fibaro:debug("Script sèche-linge démarré"); while true do local flag = 0; current_conso = tonumber(fibaro:getValue(id_wallplug, "power")); if current_conso > 500 then power = 1; fibaro:debug(os.date() .. " - Start tumble dryer"); fibaro:debug(os.date() .. " - PHASE 1"); fibaro:sleep(5*60*1000); -- wait 5 min while current_conso > 500 do fibaro:sleep(2*60*1000); -- check conso every 2 min current_conso = tonumber(fibaro:getValue(id_wallplug, "power")); end fibaro:debug(os.date() .. " - PHASE 2"); while current_conso > 100 do fibaro:sleep(1*60*1000); -- check conso every min current_conso = tonumber(fibaro:getValue(id_wallplug, "power")); end fibaro:debug(os.date() .. " - PHASE 3"); while (current_conso > 2 and flag < 149) do if current_conso > 100 then flag = 0; current_conso = tonumber(fibaro:getValue(id_wallplug, "power")); else flag = flag + 1; current_conso = tonumber(fibaro:getValue(id_wallplug, "power")); end -- fibaro:debug(flag); fibaro:sleep(2*1000); -- check conso every 2s end fibaro:debug(os.date() .. " - Tumble dryer process terminated - flag : " .. flag .. " conso : " .. current_conso); -- Send notification to cellphone here fibaro:call(9, "sendEmail", "Sèche-linge", "Processus terminé"); fibaro:call(101, "sendPush", "Le sèche-linge est terminé"); end if current_conso > 2 then power = 1; fibaro:debug(os.date() .. " - Tumble dryer power ON - Please power OFF"); --fibaro:call(10, "setProperty", "currentIcon", 1009); current_conso = tonumber(fibaro:getValue(id_wallplug, "power")); end if (current_conso == 0 and power == 1) then power = 0; fibaro:debug(os.date() .. " - Tumble dryer power OFF"); --fibaro:call(10, "setProperty", "currentIcon", 1008); end fibaro:sleep(5*60*1000); -- check if tumbler dryer is ON every 5 min end end Modifié le 27 mars 2015 par BenjyNet 6
Shad Posté(e) le 7 mars 2014 Signaler Posté(e) le 7 mars 2014 BIen, va falloir que je me refasse un stock de wall plug moi
lolomail Posté(e) le 7 mars 2014 Signaler Posté(e) le 7 mars 2014 Mis en place pour le lave linge et le sèche linge, y a plus qu'a tester
lolomail Posté(e) le 7 mars 2014 Signaler Posté(e) le 7 mars 2014 Question, j'ai un doute , faut cocher "scène active" ou pas?
BenjyNet Posté(e) le 7 mars 2014 Auteur Signaler Posté(e) le 7 mars 2014 A ton avis ? Bon juste pour info ça marche impec...
lolomail Posté(e) le 7 mars 2014 Signaler Posté(e) le 7 mars 2014 Bizarre sur cette scène je n'ai pas "démarrer avec HC2" après j'ai %%autostart, cela ne la lancera pas au démarrage?
lolomail Posté(e) le 7 mars 2014 Signaler Posté(e) le 7 mars 2014 Cool merci Je testerais surement demain
darklite44 Posté(e) le 8 mars 2014 Signaler Posté(e) le 8 mars 2014 Parfait, je voulais fait exactement ça ! Merci Ben.
BenjyNet Posté(e) le 8 mars 2014 Auteur Signaler Posté(e) le 8 mars 2014 Ahah ma femme est une blagueuse Elle m'a remis une nouvelle machine, juste derrière la précédente sans éteindre le seche-linge. Résultat, je suis bloqué dans ma boucle qui regarde si elle l'a éteint ! Une petite modification s'impose ! Je vois ça et vous le post sur le 1er post dès que c'est fait.
BenjyNet Posté(e) le 8 mars 2014 Auteur Signaler Posté(e) le 8 mars 2014 Bon je viens de modifier mon script, mais les pros, est-ce que vous savez si on peut modifier les icones à la volée comme dans les VD ? J'ai essayé avec fibaro:call(scene_id,"setProperty","currentIcon",1008); mais ça ne marche pas.
Krikroff Posté(e) le 8 mars 2014 Signaler Posté(e) le 8 mars 2014 je fais cela pour changer le label d'un bouton dans un vd, il faut l'adapter pour ton besoin mais le principe reste le même local deviceToEdit = fibaro:getSelfId(); local ID = "btnOnOffAllScenes"; --Block all scenes execution --Unblock scenes execution HC2 = Net.FHttp("192.168.1.220",80); HC2:setBasicAuthentication("admin", "admin"); --get the device to change response ,status, errorCode = HC2:GET("/api/virtualDevices?id="..deviceToEdit) if (tonumber(status) == 200) then jsonTable = json.decode(response); for key,value in pairs(jsonTable.properties.rows) do name = jsonTable.properties.rows[key].elements[1].name; --fibaro:debug(name); if(name==ID) then n = key; match = true; caption = jsonTable.properties.rows[n].elements[1].caption; fibaro:debug(caption); break; end end -- if (match) then fibaro:debug(name .." found, caption is [".. caption .."]"); jsonTable.properties.rows[n].elements[1].caption = "Unblock scenes execution" -- send back json = json.encode(jsonTable); response2 ,status2, errorCode2 = HC2:PUT("/api/virtualDevices?id="..deviceToEdit, json); if (tonumber(errorCode2)==0) then fibaro:debug("Edit complete text set "..status2) else fibaro:debug("Error update "..errorCode2) end else fibaro:debug(ID .. " not found!") end else fibaro:debug("error"); end
BenjyNet Posté(e) le 8 mars 2014 Auteur Signaler Posté(e) le 8 mars 2014 Oh con le truc de malade pour changer un icone !
Shad Posté(e) le 8 mars 2014 Signaler Posté(e) le 8 mars 2014 Non tu peux faire plus simple ^^. Il te monte juste le système.
BenjyNet Posté(e) le 10 mars 2014 Auteur Signaler Posté(e) le 10 mars 2014 Bon en utilisant l'api si j'ai bien compris je dois d'abord récupérer une table json - json.decode avec un HC2:GET puis je dois modifier cette table et la replacer avec un json.encode et un HC2:PUT. Et est-ce que faire ça permet de rafraîchir la page et donc de voir le changement d'icone ? ou faudra-t-il faire F5 àla mano ?
BenjyNet Posté(e) le 12 mars 2014 Auteur Signaler Posté(e) le 12 mars 2014 Oups j'ai fait une boulette dans le script, j'ai corrigé.
lolomail Posté(e) le 16 mars 2014 Signaler Posté(e) le 16 mars 2014 Tu avais fais quoi comme boulette?
BenjyNet Posté(e) le 16 mars 2014 Auteur Signaler Posté(e) le 16 mars 2014 Je remettais pas à0 ma variable flag. Donc au bout de quelques machines le script ne rentrait plus dans la phase 3 et disait machine terminé alors que non ! C'est corrigé dans le post initial. Faudra que je le fasse evoluer pour modifier les icones en fonction du cycle, j'aime le côté visuel et en plus c'est tres waf
lolomail Posté(e) le 16 mars 2014 Signaler Posté(e) le 16 mars 2014 Ok je viens de regarder les deux et j'ai vu que tu as déplacé le flag mais je préférais avoir la confirmation. Bon je vais faire la modif sur mes deux scripts Pour les icônes cela pourrait être sympa.
Messages recommandés