Aller au contenu

variable haute


Messages recommandés

Posté(e) (modifié)

salut depuis le temps

le nan ne t a pas manqué mdr

voila l erreur dans le debug quand le nan est la :angry::angry:

[DEBUG] 20:08:29: tempMax = 38
[DEBUG] 20:08:29: tempMin = 32
[DEBUG] 20:08:29: extinction ventilo
[DEBUG] 20:08:42: Valeur mesurée = 31.56
[DEBUG] 20:08:42: valeur converti :
[DEBUG] 20:08:42: value = 31.56
[DEBUG] 20:08:42: tempNan = 10
[DEBUG] 20:08:42: Comparaison pour stockage dans variable :
[DEBUG] 20:08:42: Valeur mémorisée actuelle = 40.4
[DEBUG] 20:08:42: température mesurée inférieure ou égal -> pas de mémorisation
[DEBUG] 20:08:42: Comparaison avec 85 °C :
[DEBUG] 20:08:42: <> 85 °C -> rien à faire
[DEBUG] 20:08:42: Comparaison pour allumage du ventilo :
[DEBUG] 20:08:42: tempMax = 38
[DEBUG] 20:08:42: tempMin = 32
[DEBUG] 20:08:42: extinction ventilo
[DEBUG] 20:08:55: Valeur mesurée = nan
[DEBUG] 20:08:55: valeur converti :
[ERROR] 20:08:55: line 34: attempt to concatenate a nil value

le problème ne vient il pas de la mauvaise lecture du json

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

merci

cdt

Modifié par flechg
Posté(e)

VOILOU 

{"System":{
"Build": 20000,
"Unit": 0,
"Uptime": 82,
"Free RAM": 21544
},
"Sensors":[
{
"TaskName": "TEMP",
"Temperature": 33.75
}
]}

:P

Posté(e)

laisse tomber le code que l on a fait en condensant le tout fonctionne même si il est pas trop beau 

ca suffit il fait ce qu on lui demande donc :74:

en tout cas merci pour ton soutien 

Posté(e)

On pourrait nettement le simplifier, car les températures renvoyées sont de type entier, il n’y a pas de «  °c » après...

Mais le nan me pose problème... Je sais pas ce que c’est...

Mais peut être que... avec ceci qui remplacecompletement la ligne pour forcer value ??

 

if string.match(value, "[0-9.]+") == nil then value = tempNan end

 

  • Upvote 1
Posté(e)

Ok alors maintenant sans perdre ton code actuel (au cas où :) ), essaye ce code complet là :

 

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 = tonumber(fibaro:getGlobalValue("TempHc2")) --valeur mémorisée de type number
local tempMax = 38 --de type number
local tempMin = 32 --de type number
local tempNan = 10 --de type number

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
	if string.match(value, "[0-9.]+") == nil 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.." °C")

	--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 value > VgHc2 then        
		fibaro:debug("température mesurée supérieure -> Mise à jour de la VG")
		fibaro:setGlobal("TempHc2", value)
	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(fibaro:getGlobalValue("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 = "..tempMax)
	fibaro:debug("tempMin = "..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
  	
  	fibaro:sleep(10*1000) -- en option : petite tempo pour calmer le code dans le VD
  	
end

 

Posté(e) (modifié)
[DEBUG] 22:41:22: Valeur mesurée = 10 °C
[DEBUG] 22:41:22: valeur converti :
[DEBUG] 22:41:22: value = 10
[DEBUG] 22:41:22: tempNan = 10
[DEBUG] 22:41:22: Comparaison pour stockage dans variable :
[DEBUG] 22:41:22: Valeur mémorisée actuelle = 38.9
[DEBUG] 22:41:22: température mesurée inférieure ou égal -> pas de mémorisation
[DEBUG] 22:41:22: Comparaison avec 85 °C :
[DEBUG] 22:41:22: <> 85 °C -> rien à faire
[DEBUG] 22:41:22: Comparaison pour allumage du ventilo :
[DEBUG] 22:41:22: tempMax = 38
[DEBUG] 22:41:22: tempMin = 32
[DEBUG] 22:41:22: extinction ventilo

j ai essayé celui la direct et ça marche ça remonte 10 si nan et donc plus d erreur ;)

cdt

Modifié par flechg
Posté(e)

Juste pour propre dans les commentaires, j’ai oublié de préciser dans le dernier code complet, dans la ligne :

 

--update label VD (le "°C" est dans value)

 

il faut maintenant mettre :

 

--update label VD (le "°C" N’EST PAS dans value !!)

 

tu as un lien sur cette sonde de température ?

 

Posté(e)

non c est moi qui l ai fait a base d esp et 2 ou 3 composant et une sonde et aussi un ventilo d ordi portable 

si tu veux je  t envoi les photos 

mais depuis elle fonctionne mieux ma hc2 avant elle était bouillante et dès fois elle buggait 

Posté(e)

non la sonde question t° est fiable mais quand il y a une erreur dès fois elle remonte 85° c est pour cela que je l efface 

car dans ce project cela ne me dérange pas mais je suis en train d en faire un pour calculer la t° de l eau chaude qui sort de mon ballon d eau chaude et si elle remonte 85° cela peut fausser les données 

la t° remonte toute les 60 s et il y a peut être le nan qui remonte une fois toutes les 10min

voila 

×
×
  • Créer...