jjacques68 Posté(e) le 8 octobre 2017 Signaler Posté(e) le 8 octobre 2017 Oui en effet c’est plus simple !!!
flechg Posté(e) le 8 octobre 2017 Auteur Signaler Posté(e) le 8 octobre 2017 j ai essaye rien a faire ca fonctionne pas est ce possible de faire une scène avec activation et désactivation du ventilo selon la température ---activation du ventilo exemple HC2:GET("/control?cmd=GPIO,16,1"); merci cdt
flechg Posté(e) le 9 octobre 2017 Auteur Signaler Posté(e) le 9 octobre 2017 salut a tous encore le casse pied avec son nan et nan voila si je veux passer par une scène pour allumer ou éteindre le ventilo j ai fait ca mais ca marche pas une idée --[[ %% properties 747 value %% events %% globals --]] local value = fibaro:getValue(747, "ui.lbl1.value") local tempMax = 38 while true do fibaro:debug(value) fibaro:sleep(6*1000) if (tonumber(value) == 200 and tonumber(err)==0) then if value > tempMax then fibaro:call(747, "pressButton", "2"); fibaro:debug("allumage ventilo") end end end merci encore
flechg Posté(e) le 9 octobre 2017 Auteur Signaler Posté(e) le 9 octobre 2017 --[[ %% autostart %% properties 747 value %% events %% globals --]] while true do local value = fibaro:getValue(747, "ui.lbl1.value") local tempMax = "38 °C" -- penser °c autrement compare nil value erreur local tempMin = "32 °C" fibaro:debug(value) fibaro:sleep(60*1000) --Pour traiter le "nan" if value == "nan" then value = "tempMin" end if value > tempMax then fibaro:call(747, "pressButton", "2"); fibaro:debug("allumage ventilo") end if value < tempMin then fibaro:call(747, "pressButton", "3"); fibaro:debug("extinction ventilo") end end Bon voila la scène est fonctionnel elle peut être amélioré sûrement si vous avez des suggestions merci
jjacques68 Posté(e) le 9 octobre 2017 Signaler Posté(e) le 9 octobre 2017 Ha ben voilà !! Nickel ça ! tu pourrais peut être rajouter ce bout de code dans le main du VD, ça te fera une scène en moins, et tout sera au meme endroit... par contre si tu fais ça, pas besoin du while true do... il boucle tout seul... 1
flechg Posté(e) le 9 octobre 2017 Auteur Signaler Posté(e) le 9 octobre 2017 (modifié) merci encore pour ton aide effectivement je vais grouper les deux se sera mieux bonne nuit Modifié le 9 octobre 2017 par flechg
flechg Posté(e) le 9 octobre 2017 Auteur Signaler Posté(e) le 9 octobre 2017 bon je savais que c était pas fini [DEBUG] 00:23:20: nan °C [DEBUG] 00:23:35: extinction ventilo [DEBUG] 00:23:35: allumage ventilo [DEBUG] 00:23:35: nan °C [DEBUG] 00:23:50: extinction ventilo [DEBUG] 00:23:50: allumage ventilo [DEBUG] 00:24:50: nan °C [DEBUG] 00:25:05: extinction ventilo [DEBUG] 00:25:05: allumage ventilo comment on pourrait régler cela je vais chercher mmais demain bonne nuit a tous
jjacques68 Posté(e) le 10 octobre 2017 Signaler Posté(e) le 10 octobre 2017 Je crois que je viens de comprendre le « nan », il faut y ajouter le « °C » aussi ... Ensuite attention, tu dois ajouter la convertion des chaînes (value, tempMax et tempMin) comme dans le code précédent. Avant de faire la comparaison --[[ %% autostart %% properties 747 value %% events %% globals --]] while true do local value = fibaro:getValue(747, "ui.lbl1.value") local tempMax = "38 °C" -- penser °c autrement compare nil value erreur local tempMin = "32 °C" fibaro:debug(value) fibaro:sleep(60*1000) --Pour traiter le "nan" ATTENTION au "°C" après le "nan" if value == "nan °C" then value = "tempMin" end if value > tempMax then fibaro:call(747, "pressButton", "2"); fibaro:debug("allumage ventilo") elseif value < tempMin then fibaro:call(747, "pressButton", "3"); fibaro:debug("extinction ventilo") end end 1
flechg Posté(e) le 10 octobre 2017 Auteur Signaler Posté(e) le 10 octobre 2017 (modifié) re salut bon va t on y arriver voila ma requête du fait que le "nan °C" ne fonctionne pas est il possible d attribuer une local nan et lui dire que cette local est = ou < a la température Mini ex local nul = nan ou "nan °C" local nul < local tempMin parce que la je pense que la valeur nan est comprise comme valeur > a la température Max ou alors peut être plus simple mais je sais pas si cela est possible si valeur = nan alors on remonte a la ligne 1 merci encore bonne soirée Modifié le 10 octobre 2017 par flechg
jjacques68 Posté(e) le 10 octobre 2017 Signaler Posté(e) le 10 octobre 2017 Mais tu as essayé avec les convertions de type ? Voilà le code les comprenant : --[[ %% autostart %% properties 747 value %% events %% globals --]] while true do local value = fibaro:getValue(747, "ui.lbl1.value") local tempMax = "38 °C" -- penser °c autrement compare nil value erreur local tempMin = "32 °C" fibaro:debug(value) fibaro:sleep(60*1000) --Pour traiter le "nan" ATTENTION au "°C" après le "nan" if value == "nan °C" then value = "tempMin" end --convertion value = string.format("%.1f",value) tempMax = string.format("%.1f",tempMax) tempMin = string.format("%.1f",tempMin) --debug pour être sur des valeurs : fibaro:debug("value = "..tonumber(value)) fibaro:debug("tempMax = "..tonumber(tempMax)) fibaro:debug("tempMin = "..tonumber(tempMin)) if tonumber(value) > tonumber(tempMax) then fibaro:call(747, "pressButton", "2"); fibaro:debug("allumage ventilo") elseif tonumber(value) < tonumber(tempMin) then fibaro:call(747, "pressButton", "3"); fibaro:debug("extinction ventilo") end end
flechg Posté(e) le 10 octobre 2017 Auteur Signaler Posté(e) le 10 octobre 2017 salut non ca fonctionne pas [DEBUG] 23:48:14: nan °C [DEBUG] 23:48:29: line 22: bad argument #2 to 'format' (number expected, got string) la ligne 22 value = string.format("%.1f",value) par contre j ai trouvé une méthode qui ne me plait pas mais bon tant que la valeur est a nan on relance la boucle while value == erreurnan do -- reboot si nan fibaro:call(747, "pressButton", "3"); fibaro:debug("ventilo off") end qu en penses tu merci
jjacques68 Posté(e) le 11 octobre 2017 Signaler Posté(e) le 11 octobre 2017 (modifié) C’est clairement un problème de convertion de type. essayes ça Dans le paragraphe convertion : --convertion value = string.match(value, "[0-9.]+") tempMax = string.match(tempMax, "[0-9.]+") tempMin = string.match(tempMin, "[0-9.]+") Modifié le 11 octobre 2017 par jjacques68 1
flechg Posté(e) le 11 octobre 2017 Auteur Signaler Posté(e) le 11 octobre 2017 SALUT bon alors le nan une belle m....................... avec ton code dans le debug on a plus le °C mais que la valeur numérique mais quand le NAN apparaît alors bug [DEBUG] 19:49:20: 38.63 °C [DEBUG] 19:50:20: value = 38.63 [DEBUG] 19:50:20: tempMax = 38 [DEBUG] 19:50:20: tempMin = 32 [DEBUG] 19:50:20: allumage ventilo [DEBUG] 19:50:20: nan °C [DEBUG] 19:51:20: line 26: attempt to concatenate a nil value pouf!!!!!!!!!!!!!!!!!!!!!!! merci en tout cas je penses que je vais le faire rebooter quand il y a nan
jjacques68 Posté(e) le 11 octobre 2017 Signaler Posté(e) le 11 octobre 2017 Ah le boulet, j’avais pas vu !! C’est normal !! --Pour traiter le "nan" ATTENTION au "°C" après le "nan" if value == "nan °C" then value = "tempMin" end C’est faux !! voilà ce qu’il faut : enlever les double quote autour de tempMin. enfait ce qu’on a fait, c’est que si value = nan °C alors value = tempMin et non 32 ! --Pour traiter le "nan" ATTENTION au "°C" après le "nan" if value == "nan °C" then value = tempMin end 1
flechg Posté(e) le 11 octobre 2017 Auteur Signaler Posté(e) le 11 octobre 2017 SALUT POPOPOPOP CA MARCHE!!!!!!!!!!!!!!!!!!!!!!!! moi aussi j avais pas vu un grand merci j ai aimé cette collaboration qui ma fait avancé un peu merci encore
flechg Posté(e) le 11 octobre 2017 Auteur Signaler Posté(e) le 11 octobre 2017 encore une petite question peux tu m expliquer ce code je ne vois pas a quoi il sert if (tonumber(status) == 200 and tonumber(err)==0) then merci @+
jjacques68 Posté(e) le 11 octobre 2017 Signaler Posté(e) le 11 octobre 2017 Ce bout de code que tu trouves après l’exécution de ta requête HTTP, permet de contrôler le retour d’état de celle-ci. si status = 200 veut dire que tout s’est bien passé et err=0 veut dire qu’il n’y a pas d’erreur en retour. Donc avec ces 2 conditions, tu peux donc continuer à traiter ton code. Sinon ça sert à rien, ton code va planter. Il sera possible aussi du coup d’afficher le code erreur renvoyé( en option). 1
flechg Posté(e) le 11 octobre 2017 Auteur Signaler Posté(e) le 11 octobre 2017 MERCI c est plus clair cdt
flechg Posté(e) le 12 octobre 2017 Auteur Signaler Posté(e) le 12 octobre 2017 Bonsoir voila le code du vd pour ne pas utiliser la scène est il d après vous correct il est fonctionnel il remonte le nan mais sans poser de problème pour moi il a l air bien si vous voyez des erreurs merci de m en informer cdt local selfId = fibaro:getSelfId() local WEB = Net.FHttp("192.168.1.24",80) -- IP to your espeasy local response ,status, err = WEB:GET("/json?tasknr=1") -- task id on espeasy local VgHc2 = fibaro:getGlobal("TempHc2") local jsonTable = json.decode(response) local value = jsonTable.Temperature local tempMax = 38,00 local tempMin = 32,00 local nan = 10,00 if (tonumber(status) == 200 and tonumber(err)==0) then --Pour traiter le "nan" -- if value == nan then value = VgHc2 end --update label VD if value == nan then fibaro:call(selfId, "setProperty", "ui.lbl1.value", "10 °C") --remplace le nan par "0 °C" elseif value ~= nan then fibaro:call(selfId, "setProperty", "ui.lbl1.value", value.. " °C") --sinon insere la température end --debug + log fibaro:log(value) fibaro:debug("Valeur mesurée = "..value) fibaro:debug("Valeur mémorisée = "..VgHc2) --conversion des string value = string.format("%.1f",value) --convertion en chiffre -----> A TESTER value = tonumber(value) VgHc2 = tonumber(VgHc2) --Pour voir la modif --fibaro:debug("Valeur mesurée modifiée = "..value) --fibaro:debug("Valeur mesurée modifiée = "..VgHc2) --Comparaison entre la Temperature mémorisée et la température mesurée if value > VgHc2 then fibaro:setGlobal("TempHc2", value) fibaro:debug("température supérieure = Mise à jour de la VG") else fibaro:debug("température inférieure = rien") end if VgHc2 == 85 then fibaro:call(747, "pressButton", "5"); fibaro:debug("eraz variable") end end if value == nan then value = tempMin end value = tonumber(value) tempMax = tonumber(tempMax) tempMin = tonumber(tempMin) fibaro:debug("value = "..tonumber(value)) fibaro:debug("tempMax = "..tonumber(tempMax)) fibaro:debug("tempMin = "..tonumber(tempMin)) if value > tempMax then fibaro:call(747, "pressButton", "2"); fibaro:debug("allumage ventilo") elseif value < tempMin then fibaro:call(747, "pressButton", "3"); fibaro:debug("extinction ventilo") end merci bonne soirée
jjacques68 Posté(e) le 13 octobre 2017 Signaler Posté(e) le 13 octobre 2017 Ouch ! Tu as fait un mix de tout c’est un peu le cirque... Je viens de réécrire, à essayer pour voir... À essayer... j’ai pas testé donc peut être des erreurs... quand tu codes, n’hésites pas à mettre des commentaires, debug et respecter l’indentation pour plus de facilité à relire le code et le comprendre... je comprends pas le coup du 85 °C ??? local selfId = fibaro:getSelfId() --ID du VD de type integer local WEB = Net.FHttp("192.168.1.24",80) -- IP to your espeasy local VgHc2 = fibaro:getGlobal("TempHc2") --valeur mémorisée de type string local tempMax = "38 °C" --de type string local tempMin = "32 °C" --de type string local tempNan = "10 °C" --de type string local response ,status, err = WEB:GET("/json?tasknr=1") -- task id on espeasy if (tonumber(status) == 200 and tonumber(err)==0) then -- si réponse ok local jsonTable = json.decode(response) --recupère la table des valeurs de retour local value = jsonTable.Temperature -- sélectionne que la température --force value à tempNan si réponse = "nan °C" if value == "nan °C" then value = tempNan end --debug fibaro:debug("Valeur mesurée = "..value) --update label VD (le "°C" est dans value) fibaro:call(selfId, "setProperty", "ui.lbl1.value", value) --conversion des string if value then value = string.match(value, "[0-9.]+") end if tempMax then tempMax = string.match(tempMax, "[0-9.]+") end if tempMin then tempMin = string.match(tempMin, "[0-9.]+") end if tempNan then tempNan = string.match(tempNan, "[0-9.]+") end if VgHc2 then VgHc2 = string.match(VgHc2, "[0-9.]+") end --debug des valeur converti pour info fibaro:debug("valeur converti :") fibaro:debug("value = "..tonumber(value)) fibaro:debug("tempNan = "..tonumber(tempNan)) --Comparaison entre la Temperature mémorisée et la température mesurée fibaro:debug("Comparaison pour stockage dans variable : ") fibaro:debug("Valeur mémorisée actuelle = "..VgHc2) if tonumber(value) > tonumber(VgHc2) then fibaro:debug("température mesurée supérieure -> Mise à jour de la VG") fibaro:setGlobal("TempHc2", value.." °C") else fibaro:debug("température mesurée inférieure ou égal -> pas de mémorisation") end --si temperature = 85 alors appui sur Btn 5 du device 747 fibaro:debug("Comparaison avec 85 °C :") if tonumber(VgHc2) == 85 then fibaro:call(747, "pressButton", "5"); fibaro:debug("= 85 °C -> eraz variable") else fibaro:debug("<> 85 °C -> rien à faire") end --allumage ou pas du ventilo fibaro:debug("Comparaison pour allumage du ventilo :") fibaro:debug("tempMax = "..tonumber(tempMax)) fibaro:debug("tempMin = "..tonumber(tempMin)) if tonumber(value) > tonumber(tempMax) then fibaro:call(747, "pressButton", "2"); fibaro:debug("allumage ventilo") elseif value < tempMin then fibaro:call(747, "pressButton", "3"); fibaro:debug("extinction ventilo") end fibaro:sleep(10*1000) -- en option : petite tempo pour calmer le code dans le VD end 1
flechg Posté(e) le 13 octobre 2017 Auteur Signaler Posté(e) le 13 octobre 2017 salut le code fonctionne mais dés que nan apparaît il y a un message d erreur c est sûre que c est beaucoup mieux c est pas le bazar comme le mien je vais étudier le code et je reviens vers toi pour des améliorations cela va me permettre de comprendre merci encore @+
jjacques68 Posté(e) le 13 octobre 2017 Signaler Posté(e) le 13 octobre 2017 C’est quoi le message d’erreur ?
jjacques68 Posté(e) le 13 octobre 2017 Signaler Posté(e) le 13 octobre 2017 Le top serait que tu postes le debug complet quand le nan apparaît... 1
flechg Posté(e) le 14 octobre 2017 Auteur Signaler Posté(e) le 14 octobre 2017 Salut ok je vois demain car aujourd'hui je ne suis pas chez moi Bon weekEnvoyé de mon MHA-L09 en utilisant Tapatalk
Messages recommandés