flechg 41 Signaler ce message Posté(e) 11 septembre 2017 Bonsoir a tous voila je voudrais stocker une valeur dans une variable bon ça je sais faire mais la ou ça se complique c est que je voudrais stocker la valeur la plus haute ex j ai une sonde de température et je veux remonter que la valeur au dessus de celle d avant suis je claire par ex 37 degré et après 38 et non si la température tombe en dessous de 37 et ca je sais pas faire merci encore cdt Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 600 Signaler ce message Posté(e) 11 septembre 2017 (modifié) Si température > variable alors on mémorise dans la variable. En gros, tu lis la temp, tu compares la variable, si c'est > tu memorises. Modifié 11 septembre 2017 par jjacques68 2 Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 12 septembre 2017 Et voilà, facile non ? ;-) 1 Partager ce message Lien à poster Partager sur d’autres sites
jojo 2 612 Signaler ce message Posté(e) 12 septembre 2017 @jjacques68 a été "trop" rapide pour répondre. C'est la solution la plus facile à mettre en oeuvre 1 Partager ce message Lien à poster Partager sur d’autres sites
flechg 41 Signaler ce message Posté(e) 12 septembre 2017 Merci a vous je vais essayer de mettre en place et vous tiens au courant si cela fonctionne comme je veux merci encore cdt Partager ce message Lien à poster Partager sur d’autres sites
flechg 41 Signaler ce message Posté(e) 14 septembre 2017 Bonsoir bon je pensais y arriver mais la je suis bloqué dans le mainloop j ai mis fibaro:setGlobal("Temphaute", value) if (tonumber(value) > TempHaute) then TempHaute = tonumber(value) mais j ai un message d erreur please help cdt Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 600 Signaler ce message Posté(e) 14 septembre 2017 alors j'ai pas testé mais un truc comme ça devrait le faire : local IdSonde = xx --tu renseignes l'ID de ta sonde local VgName = yy --tu renseignes le nom de ta variable globale avec les "" local ValeurVariable = tonumber(fibaro:getGlobalValue(VgName)) local ValeurSonde = tonumber(fibaro:getValue(IdSonde, "value")) if ValeurSonde > ValeurVariable then fibaro:setGlobal(VgName, ValeurSonde) fibaro:debug("température supérieure = Mise à jour de la VG") else fibaro:debug("température inférieure = rien") end 1 Partager ce message Lien à poster Partager sur d’autres sites
flechg 41 Signaler ce message Posté(e) 14 septembre 2017 Merci de ton aide j ai un message d erreur line20 attempt to compare number with nil Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 600 Signaler ce message Posté(e) 14 septembre 2017 (modifié) Ah ! ?? Ajoutes avant le bloc if ces 2 lignes pour voir le contenu des variables : fibaro:print(ValeurVariable) fibaro:print(ValeurSonde) Oups, désolé, c'est fibaro:debug et non print... Modifié 14 septembre 2017 par jjacques68 1 Partager ce message Lien à poster Partager sur d’autres sites
flechg 41 Signaler ce message Posté(e) 14 septembre 2017 (modifié) alors j ai bien la remontée de la variable mais pas de la sonde le problème ne viendrait il pas du fait que c est un esp8266 qui remonte la t° dans un VD message d erreur ligne 8 attempt to compare number with nil désolé du dérangement Modifié 14 septembre 2017 par flechg Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 600 Signaler ce message Posté(e) 14 septembre 2017 Ok alors il faut remplacer la ligne avec le fibaro:get(IdSonde, ...) par une une commande qui va lire la valeur dans le VD. Il faut donc déjà mettre l'id du VD dans la variable IdSonde. Ensuite il me semble que pour récupérer la valeur, c'est un truc comme : fibaro:get(IdSonde, "ui.le_nom_du_label.value") a tester.. attention tu vas récupérer une valeur de type string, et non un chiffre. En plus certainement avec des caractères comme °C derrière... il faudra sans doute traiter ce retour pour en faire une valeur exploitable pour la comparaison avec la VG. 1 Partager ce message Lien à poster Partager sur d’autres sites
flechg 41 Signaler ce message Posté(e) 14 septembre 2017 effectivement j ai maintenant les deux remontées mais après j ai erreur string j ai essayer string.format("%0.1",TempHaute); mais rien a faire merci encore en tout cas et bonne nuit Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 600 Signaler ce message Posté(e) 15 septembre 2017 Quel est le contenu de cette chaîne de caractère ? Partager ce message Lien à poster Partager sur d’autres sites
flechg 41 Signaler ce message Posté(e) 15 septembre 2017 Bonjour, la chaîne de caractère remontée est une simple température style 22,00 °C cdt Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 15 septembre 2017 Bonjour, et ceci string.format("%d+",TempHaute); ou string.format("%d+,%d+",TempHaute) 1 Partager ce message Lien à poster Partager sur d’autres sites
flechg 41 Signaler ce message Posté(e) 15 septembre 2017 bon je reprends parce que la j y comprends plus rien local IdSonde = 747 --tu renseignes l'ID de ta sonde local VgName = "TempHaute" --tu renseignes le nom de ta variable globale avec les "" local ValeurVariable = tonumber(fibaro:getGlobalValue(VgName)) local ValeurSonde = tonumber(fibaro:get(selfId, "setProperty", "ui.lbl1.value", value.. " °C")) fibaro:debug(ValeurVariable) fibaro:debug(ValeurSonde) if ValeurSonde > ValeurVariable then ValeurSonde = string.format("%d+",VgName); fibaro:setGlobal(VgName, ValeurSonde) fibaro:debug("température supérieure = Mise à jour de la VG") else fibaro:debug("température inférieure = rien") end j ai dans le debug la remontée 20,19 erreur ligne 9: attempt to compare number with nil beuhbeuh merci encore Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 15 septembre 2017 Quelle est ta ligne 9 ? ceci non ? if ValeurSonde > ValeurVariable 20.19 c'est ta valeur sonde ? si oui, tu ne dois pas avoir besoin du string.format et dans le debug quelle est ValeurVariable ? elle ne serait pas vide par hasard ? Essaie ceci if ValeurVariable == nil then print("Valeur Variable : nil") elseif ValeurSonde > ValeurVariable then ValeurSonde = string.format("%d+",VgName); fibaro:setGlobal(VgName, ValeurSonde) fibaro:debug("température supérieure = Mise à jour de la VG") else fibaro:debug("température inférieure = rien") end 1 Partager ce message Lien à poster Partager sur d’autres sites
flechg 41 Signaler ce message Posté(e) 15 septembre 2017 Bon je reprends sur un autre module qui fonctionne bien pour gérer la t° de ma hc2 voila le code la remontée se fait bien dans la variable mais elle ne garde pas la valeur la plus haute mais la valeur actuelle dans le debug j ai la remontée suivante 33,09 (chiffre avec 2 chiffres après la virgule) selfId = fibaro:getSelfId() --sleeptimer = 5 -- minutes between pollning 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 if (tonumber(status) == 200 and tonumber(err)==0) then local jsonTable = json.decode(response) name = jsonTable.TEMP value = jsonTable.Temperature --fibaro:debug(value) fibaro:log(value) fibaro:call(selfId, "setProperty", "ui.lbl1.value", value.. " °C") fibaro:setGlobal("TempHc2", value) fibaro:debug(TempHc2) fibaro:debug(value) if TempHc2 == nil then print("TempHc2 : nil") elseif value > TempHc2 then value = string.format("%d+",TempHc2); fibaro:setGlobal(TempHc2, value) fibaro:debug("température supérieure = Mise à jour de la VG") else fibaro:debug("température inférieure = rien") end end merci Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 15 septembre 2017 Heu..pour bien comprendre, tu recuperes la temperature de ta HC2 que tu mets dans une variable "TempHC2" si la teperaure actuelle > tampHC2 tu veux mettre à jour la variable TempHC2 sinon pas de mise à jour. C'est bien cela ? 1 Partager ce message Lien à poster Partager sur d’autres sites
flechg 41 Signaler ce message Posté(e) 15 septembre 2017 Exactement çà Envoyé de mon MHA-L09 en utilisant Tapatalk Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 600 Signaler ce message Posté(e) 15 septembre 2017 C'est normal tu fais un premier setGlobal juste après l'avoir insérer dans le label, ça fais double appel ! Moi j'enleverainle premier...Envoyé de mon iPhone en utilisant Tapatalk Pro Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 15 septembre 2017 Ok. Donc il ya plus simple comme code ;-) dans un navigateur tape ca : http://IPHC2/docs Cherche ou se trouve la température de la HC2, de memoire je ne sais plus. Dans settings/diagnostics peut-etre ou inof... et copie le json ici . ensuite le code va ressembler a ca: ce n'est qu'un exemple faut les infos du json local Tempglobale = tonumber(fibaro:getGlobalValue("TempHC2")) local jsonTable = api.get("/settings/info") local Tempactuellehc2 = tonumber(jsonTable.Temp) if Tempactuellehc2 > Tempglobale then fibaro:debug("Temp HC2 actuelle : " ..Tempactuellehc2 .. " - Temp de la globale : " ..Tempglobale) fibaro:setGlobal("TempHC2", Tempactuellehc2) else fibaro:debug("Pas de MAJ de la temp : Tempactuellehc2 < Tempglobale") end 1 Partager ce message Lien à poster Partager sur d’autres sites
jjacques68 600 Signaler ce message Posté(e) 15 septembre 2017 Ah oui j'y pense pas naturellement à ça, c'est 10 fois plus simple Citation api.get("/settings/info") Partager ce message Lien à poster Partager sur d’autres sites
flechg 41 Signaler ce message Posté(e) 15 septembre 2017 Non mais ce n est pas pour ce module là c est un esp que je vais installer et je voudrais récupérer la valeur haute dans la variable@jjacques68 j ai essayé sans le premier setGlobal et la je ne ai pas de remontée dans la variableMerci encore à vous tous Envoyé de mon MHA-L09 en utilisant Tapatalk Partager ce message Lien à poster Partager sur d’autres sites
flechg 41 Signaler ce message Posté(e) 15 septembre 2017 je me perds dans les code j y comprends plus rien Partager ce message Lien à poster Partager sur d’autres sites