[RESOLU] Positionner une consigne thermostat

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
fking
Messages : 166
Inscription : 03 nov. 2017, 10:19
Localisation : Liverdun (54)
Contact :

[RESOLU] Positionner une consigne thermostat

Message par fking »

Bonjour,
Je cherche à faire une minuterie décompteur.
Vu que DZ ne propose pas de dispositif genre spinner en Visual Studio (un champ dont la valeur peut être réglée via des flèches hautes et basses), j'ai pensé à détourner un thermostat.

J'ai un dummy On/Off qui valide le déclenchement, et mon device thermostat dont la valeur en ° représente des minutes. En clair, je positionne mon thermostat à 20°, ce qui va représenter 20 minutes, si l'inter On/Off est à On, je décrémente la valeur du thermostat toutes les minutes via un script_time en lua.

Sauf que ça marche pas...

Voilà le script

Code : Tout sélectionner

commandArray = {}
	
if otherdevices["DEPART MINUTEUR"]=='On' then
	print ("Script minuteur");
	secondes_systeme=string.sub(os.date("%X"), 7, 8);
	--print (secondes_systeme);
	if tonumber(secondes_systeme)==0 then
		valeur=otherdevices_svalues['MINUTES'];
		print (valeur);
		valeur=valeur-1;
		print(valeur);
		commandArray['MINUTES']=tostring(valeur);
		print (otherdevices_svalues['MINUTES']);
	end
	print("-------------------------------------------");
end
return commandArray
J'ai vraiment du mal avec le LUA, je n'arrive pas à comprendre la logique de fonctionnement. Pour moi, le script :
Lit le temps système
Si les secondes sont à 0 (donc toutes les minute)
On récupère la valeur du thermostat
On la décrémente
On positionne le thermostat à la nouvelle valeur

Dans le log, je récupère (par ex.)
60
59
60

Le positionnement de la nouvelle valeur ne se fait pas.
Merci de votre aide !
Dernière modification par fking le 31 mai 2020, 18:14, modifié 1 fois.
Fais le ou ne le fais pas , essayer ne veut rien dire.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Positionner une consigne thermostat

Message par Keros »

Regarde ceci : https://easydomoticz.com/point-scripts-lua

Tu verras que tu n'as pas besoin de vérifier Si les secondes sont à 0 (donc toutes les minute) ;)

Tu verras que tu n'as pas besoin de ; sur chaque ligne.

Dans les log que tu nous mets, copies toutes les lignes de ton script soit de Script minuteur à -------------------------------------------.

Tu ne peux pas demander ceci en print :

Code : Tout sélectionner

commandArray['MINUTES']=tostring(valeur);
print (otherdevices_svalues['MINUTES']);
La valeur de MINUTES ne sera mise à jour qu'à la fin du script au moment du return commandArray. Tu ne peux pas faire un print de sa valeur modifiée en cours du programme.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
fking
Messages : 166
Inscription : 03 nov. 2017, 10:19
Localisation : Liverdun (54)
Contact :

Re: Positionner une consigne thermostat

Message par fking »

Merci de ta réponse...

Je venais juste de trouver :

Code : Tout sélectionner

commandArray = {}
	
if otherdevices["DEPART MINUTEUR"]=='On' then
	--print ("Script minuteur");
	--secondes_systeme=string.sub(os.date("%X"), 7, 8);
	--print (secondes_systeme);
	if tonumber(secondes_systeme)==0 then
		valeur=otherdevices_svalues['MINUTES'];
		--print ('valeur device 1 ='..valeur);
		valeur=valeur-1;
		--print('valeur -1 ='..valeur);
		commandArray['SetSetPoint:'..otherdevices_idx['MINUTES']] = tostring(valeur);
		--print ('valeur device 2 ='..valeur);
	end
	--print ('valeur device sortie if ='..valeur);
	
	
	if (valeur==0) then
		--print ('arret inter');
		commandArray["DEPART MINUTEUR"]='Off';
		commandArray["RM rouge"]='On';
	end
	
	--print("-------------------------------------------");
end
return commandArray
C'est vrai que mon test sur les secondes ne sert à rien, puisque le script est exécuté toutes les minutes... Je vire !!!
Et les ";", c'est le C mon bon Monsieur !!!
Fais le ou ne le fais pas , essayer ne veut rien dire.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Positionner une consigne thermostat

Message par Keros »

fking a écrit : 31 mai 2020, 18:14 Je venais juste de trouver :
Tant mieux :D
fking a écrit : 31 mai 2020, 18:14 Et les ";", c'est le C mon bon Monsieur !!!
En LUA, pas besoin ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre