Aller au contenu
flechg

variable haute

Recommended Posts

et oui 

json 

{"System":{
"Build": 20000,
"Unit": 0,
"Uptime": 91,
"Free RAM": 22192
},
"Sensors":[
{
"TaskName": "TEMP",
"Temperature": nan
}
]}

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Étrange ce truc !!

 

bon alors du coup étrange pour étrange : 

enleves ce qu'on ajouté et rajoute Avant la conversion : 

 

if value == "nan" then value = "0" end

Partager ce message


Lien à poster
Partager sur d’autres sites

retour NAN NAN nan nan nan

popopopo

j en peux plus du  nan 

la franchement je vois pas du tout

en tout cas merci pour ta patience 

;)

Partager ce message


Lien à poster
Partager sur d’autres sites

par contre juste un truc que je comprends pas dans le code c est 

VgTemp cela correspond a quoi

juste pour pas être moins bête 

Partager ce message


Lien à poster
Partager sur d’autres sites
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")

if (tonumber(status) == 200 and tonumber(err)==0) then

	--récupère la valeur de la sonde
	local jsonTable = json.decode(response)
	value = jsonTable.Temperature
  	  		
  	--debug + log
	fibaro:log(value)
	fibaro:debug("Valeur mesurée = "..value)
	fibaro:debug("Valeur mémorisée = "..VgHc2)  
        
	--update label VD
	fibaro:call(selfId, "setProperty", "ui.lbl1.value", value.. " °C")
  		
	--conversion des string -----> A VERIFIER		
	value = string.format("%.1f",value);
	VgTemp = string.format("",VgTemp);
	--Pour voir la modif	
	fibaro:debug("Valeur mesurée modifiée = "..value)
	fibaro:debug("Valeur mémorisée modifée = "..VgHc2)
	
  	if value == "nan" then value = "0" end

	--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 
 end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

VgTemp était un nom pour ta variable VG (Variable Globale).

Mais bien vu, Mais c'est pas ça qui est à l'origine du problème.

l'impact était qu'il n'y avait pas de convention de la variable Hc2Temp du coup... et visiblement y en a pas besoin...

Supprimes cette ligne, pas besoin.

 

Par contre la ligne if value =="nan"... places là avant la conversion (value = string.format.....)

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ça donne ça : avec d'autres petites modif...

 


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:getGlobalValue("TempHc2")

if (tonumber(status) == 200 and tonumber(err)==0) then

	--récupère la valeur de la sonde
	local jsonTable = json.decode(response)
	value = jsonTable.Temperature

  	--debug + log
	fibaro:log(value)
	fibaro:debug("Valeur mesurée = "..value)
	fibaro:debug("Valeur mémorisée = "..VgHc2)  
        
	--update label VD
	fibaro:call(selfId, "setProperty", "ui.lbl1.value", value.. " °C")

	--Pour traiter le "nan"
	if value == "nan" then value = "0" end

	--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 
 end

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

top :13:

ca fonctionne 

merci encore 

je peux te demander un truc en mp

Partager ce message


Lien à poster
Partager sur d’autres sites

Mais le "nan" affiché dans le debug d'avant sort de ou ?


Envoyé de mon iPhone en utilisant Tapatalk Pro

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 9 heures, flechg a dit :

je peux te demander un truc en mp

des secrets des secrets ;-)

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

@jjacques68 SALUT

je te sollicite encore un peu

car je m arrache les cheveux là

comment peut on faire pour ne pas faire remonté le nan dans le label

et si nan alors = zero par exemple

merci encore et bonne soirée

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors dans le paragraphe « Update Label VD » du remplace la ligne par ça :

if value == "nan" then
	fibaro:call(selfId, "setProperty", "ui.lbl1.value","0 °C") --remplace le nan par "0 °C"
else
	fibaro:call(selfId, "setProperty", "ui.lbl1.value", value.. " °C") --sinon insere la température
end

 

C’est pas très pro (car on teste 2 fois de suite la valeur « value »... mais c’est facile à comprendre.

Et par contre, la valeur « nan » renvoyée par la sonde, en réalité ne signifie pas « 0 °C » mais plutôt que la sonde ne renvoie rien comme valeur.

Pour être plus pro, il faudrait inscrire non pas « 0 °C » mais plutôt « null ».

C’est toi qui voit, ou tu mets 0 °C ou tu mets null dans la première commande d’affichage du label.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

pouf sympa

moi je cherchais a traité le nan mais pas dans le label quel c....

tu m as bien aidé et j ai appris plein de chose

merci encore:13::60:;)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Re
Bon j ai essayé de mettre 1 degré parce que 0 çà marche pas il prend en compte que nan et nan Popopopo
J ai essayé de créer une local x avec 1 et si nan attribué lea local x mais rien à faire
Je baisse les bras

Envoyé de mon MHA-L09 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites
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")


if (tonumber(status) == 200 and tonumber(err)==0) then

--récupère la valeur de la sonde
	local jsonTable = json.decode(response)
	value = jsonTable.Temperature
	
  	--debug + log
	fibaro:log(value)
	fibaro:debug("Valeur mesurée = "..value)
	fibaro:debug("Valeur mémorisée = "..VgHc2)  
        
	--update label VD
 	if value == "nan" then
	fibaro:call(selfId, "setProperty", "ui.lbl1.value", "1 °C") --remplace le nan par "0 °C"
else
	fibaro:call(selfId, "setProperty", "ui.lbl1.value", value.. " °C") --sinon insere la température
end

	--Pour traiter le "nan"
	 if value == "nan" then value = "1" end

	--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 
 end
	

;)

Partager ce message


Lien à poster
Partager sur d’autres sites
local x = 1

if value == "nan" then
	fibaro:call(selfId, "setProperty", "ui.lbl1.value", x.." °C") --remplace le nan par "0 °C"
else
	fibaro:call(selfId, "setProperty", "ui.lbl1.value", value.. " °C") --sinon insere la température
end

j ai essayé ca aussi

Partager ce message


Lien à poster
Partager sur d’autres sites
Ceci doit marcher.	

si c’est pas le cas, il donne quoi comme message d’erreur ?

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")


if (tonumber(status) == 200 and tonumber(err)==0) then

--récupère la valeur de la sonde
	local jsonTable = json.decode(response)
	value = jsonTable.Temperature
	
  	--debug + log
	fibaro:log(value)
	fibaro:debug("Valeur mesurée = "..value)
	fibaro:debug("Valeur mémorisée = "..VgHc2)  
        
	--update label VD
 	if value == "nan" then
	fibaro:call(selfId, "setProperty", "ui.lbl1.value", "null") --remplace le nan par "null"
else
	fibaro:call(selfId, "setProperty", "ui.lbl1.value", value.. " °C") --sinon insere la température
end

	--Pour traiter le "nan"
	 if value == "nan" then value = "0" end

	--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 mémorisé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 
 end
	

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut
Non le code fonctionne sauf que des fois le nan remonte dans le label
Merci et bonne journée

Envoyé de mon MHA-L09 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 18 heures, flechg a dit :

--Pour traiter le "nan"

Pour moi le -- traiter le nan doit se trouver avant l -- update du label. 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pepite je vais tester


Envoyé de mon MHA-L09 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

×