Aller au contenu
flechg

variable haute

Recommended Posts

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 :D

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

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é par jjacques68
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

@jjacques68 a été "trop" rapide pour répondre.

C'est la solution la plus facile à mettre en oeuvre

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

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

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

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

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é par jjacques68
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par flechg

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

 

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

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

Bonjour,

 

et ceci
 

string.format("%d+",TempHaute);

ou

 

string.format("%d+,%d+",TempHaute)

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

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

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

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 ?

 

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

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

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

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 variable

Merci encore à vous tous

Envoyé de mon MHA-L09 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

×