ebouilleur Posté(e) le 7 juin 2019 Signaler Posté(e) le 7 juin 2019 Bonsoir, J'essaye de faire un VD qui me permet d'éteindre toute mes wallplug. Bizarre j'arrive a tout allumer, mais éteindre ça ne veut pas. Une idée : local ID_wallplug = {75,75}; --ID wallplug local conso = 10; -- consommation en dessous de laquelle on coupe les prises fibaro:setGlobal("SysPrise_auto","OFF"); fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", "Toujours OFF"); fibaro:debug("début scene toujours off") for i=1, #ID_wallplug do id_w = tonumber(ID_wallplug[i]); fibaro:debug("debut") fibaro:debug(tonumber(fibaro:getValue(id_w, "value"))) fibaro:debug(id_w) fibaro:debug("fin") if tonumber(fibaro:getValue(id_w, "value")) then fibaro:debug(id_w.." allumé") if tonumber(fibaro:getValue(id_w, "power")) < conso then fibaro:debug("veille => turnOff "..id_w) fibaro:call(id_w, 'turnOff'); end end end En fait il ne passe jamais dans le if : if tonumber(fibaro:getValue(id_w, "value")) then et le debug de : fibaro:debug(tonumber(fibaro:getValue(id_w, "value"))) m'affiche rien Et autre question, j'ai du mal a comprendre cet histoire de tonumber et j'ai pas réussi a trouver une explication clair... Merci
Kana-chan Posté(e) le 8 juin 2019 Signaler Posté(e) le 8 juin 2019 Bonjour, Il ne manquerait pas un test dans votre if ? tonumber(fibaro:getValue(id_w, "value")) cela donne un nombre, mais pas un test... Voilà ...
ebouilleur Posté(e) le 8 juin 2019 Auteur Signaler Posté(e) le 8 juin 2019 En effet je l'ai vu entre temps, que j'ai corrigé en if tonumber(fibaro:getValue(id_w, "value")) == 1 then Mais en fait ca ne va pas dans le if, car fibaro:debug(fibaro:getValue(id_w, "value")) Ne m'affiche rien... et je ne comprend pas pourquoi je continue de chercher
jjacques68 Posté(e) le 9 juin 2019 Signaler Posté(e) le 9 juin 2019 étrange j'ai copié/collé ton code et chez moi ça marche très bien (juste supprimé la ligne avec la VG) ! tu n'aurais pas la fonction "Always ON mode" de ce wallplug qui serait activée par hasard ? pour le tonumber : c'est une histoire de type de données : local conso = 10 ---> dans ce cas, conso prend la valeur 10, avec 10 considéré comme en nombre (pas besoin de tonumber quand tu utilise la variable conso) local conso = "10" ---> dans ce cas, conso prend la valeur 10, avec 10 considéré comme chaîne de caractères (besoin de tonumber si tu veux faire des calculs ou comparaisons) fibaro:getValue(id_w, "power") cela te retourne une valeur considérée comme chaîne de caractère, exemple "10,5" et bien sur tu ne peux pas comparer une chaîne de caractère avec un nombre ! du coup c'est pour ça qu'on utilise tonumber : tonumber(fibaro:getValue(id_w, "power")) autre exemple, celui-là est inutile : id_w = tonumber(ID_wallplug[i]) car ton tableau ID_Wallplug{} contient des nombre (75,75) et non des chaînes ("75","75") celui-là aussi inutile : (c'est de l'affichage, donc obligatoirement du texte) fibaro:debug(tonumber(fibaro:getValue(id_w, "value"))) ceux-là obligatoire car tu fais une comparaison à un nombre : if tonumber(fibaro:getValue(id_w, "value")) == 1 then if tonumber(fibaro:getValue(id_w, "power")) < conso then
ebouilleur Posté(e) le 9 juin 2019 Auteur Signaler Posté(e) le 9 juin 2019 Il y a 12 heures, jjacques68 a dit : étrange j'ai copié/collé ton code et chez moi ça marche très bien (juste supprimé la ligne avec la VG) ! La ligne avec VG ? En tout cas merci pour ton explication, j'avais supposé ça, mais bon, au moins je suis sur et tu as super bien expliqué clairement merci ! Pour revenir au code, est ce qu'il ne marche que dans une boucle principale? ou dans le code d'un bouton c'est sensé marché? car c'est ce que j'au fait. Si jamais tu veux regarder ce que j'au fait, j'ai mis le module en PJ Ici ce qui ne marche pas étant le bouton "power OFF" qui est donc sensé couper les prises. Le power ON lui fonctionne. Merci Prise_auto.vfib
jjacques68 Posté(e) le 9 juin 2019 Signaler Posté(e) le 9 juin 2019 (modifié) Nan nan ça doit macher dans un bouton. Faudra que je regarde le code du main, mais n'y aurait-il pas un conflit avec le main justement ? essaye de désactiver le code du main et tu verras... Modifié le 9 juin 2019 par jjacques68
ebouilleur Posté(e) le 10 juin 2019 Auteur Signaler Posté(e) le 10 juin 2019 (modifié) Non je ne vois pas ce qui créerais un conflit (tester et confirmé). Et puis ça bug lorsque je passe par l'outil pour déboguer justement Par curiosité, j'ai testé avec un autre wallplug, qui s'est bien éteind... et dont les debug m'affiches bien des valeurs. Edit : Bon, j'ai trouvé.. et c'est un peu la honte. Ce nouveau wallplug était nouveau et je n'y ai pas touché depuis son insertion, et il portait le nom 75.0 j'ai supposé, à tord, que son id était 75, mais non, son id c'est 76... et du coup ça marche mieux Bon après il y a surement plus simple que mon code rajouter dans les bouton ON et OFF, mais bon ^^ Enfin, merci Jacques j'ai quand même appris des choses et au moins j'ai vu ma bêtise ^^ bon lundi Modifié le 10 juin 2019 par ebouilleur 1
Messages recommandés