Blocky, en script LUA

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 <\>.
djrams10
Messages : 34
Inscription : 04 mai 2017, 20:14

Blocky, en script LUA

Message par djrams10 »

Bonjour, je sais utilisé Blocky par contre j'ai beaucoup de mal a faire des scripts LUA dans domoticz. Pourriez-vous m'aider a en mettre un en place? Merci d'avance. Voici le Blocky que j'aimerais remplacer en LUA pour intégrer une plage horaire. Dans mon cas je souhaite qu'entre 7h et 21h que le thermostat soit régler a 20.5, et le reste du temps à 19.5.

N'hésitez pas à me contacter si je n'ai pas été clair. Merci
Pièces jointes
Capture d’écran 2019-02-05 à 09.46.38.png
Capture d’écran 2019-02-05 à 09.46.38.png (109.05 Kio) Consulté 6486 fois
patoche
Messages : 192
Inscription : 25 oct. 2015, 15:51

Re: Blocky, en script LUA

Message par patoche »

Bonjour,

Tu n'as pas accès au planning sur ton thermstat Nest ? Moi j'utilise cette fontion sur Thermosat virtuel, très partique.
RPI2 OSMC + domoticz + Rfx 433e + chacon dio, teleinfo 433 via arduino nano, sonde T° innovaley et TFA 303139, sonde T° piscine DIY 433 oregon, OWL 180, RPI zero W + camera
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Blocky, en script LUA

Message par denis_brasseur »

Si tu veux t'initier au LUA, voici ce que peux donner ton script actuel (je n'ai pas gérer les setpoint, jusque les conditions) :

Code : Tout sélectionner

  -- retourne l'heure actuelle ex: "12:45"
heure = string.sub(os.date("%X"), 1, 5)

commandArray = {}
 
if (otherdevices['Capteur ouverture Cuisine']=='Closed' and otherdevices['Capteur ouverture Salon']=='Closed' and otherdevices["Capteur d'ouverture Yanis"]=='Closed' and otherdevices["Capteur d'ouverture Chambre des Parents"]=='Closed') then
	if otherdevices_svalues['Temperature Yanis'] < '18.5' then
		--mise à jour du setpoint à 24 °
	elseif otherdevices_svalues['Temperature Yanis'] >= '18.5' then
		if heure < '07:00' then
		--mise à jour du setpoint à 19.5 °
		elseif heure >= '07:00' then
		--mise à jour du setpoint à 20.5 °
		end
	end
end
 
return commandArray
Les 4 premieres conditions sur l'état des capteurs étant redondantes, écrit qu'une seul fois.
Idem pour Temperature Yanis >= 18.5, simplifié

Plusieurs remarques :
les apostrophes et caractères accentués dans les nom de capteurs comme "Capteur d'ouverture Chambre des Parents", pas très propre.
Pour les plages de température, tu écris < à 18.5, puis > 18.5. Qu'advient il de la valeur 18.0 dans ton test.
Idem pour < '07:00' et > '07:00', qu'advient il de = '07:00' ?

Ca peux être une bonne bases de démarrage en LUA, ce n'est que mon avis.

Une fois que tu aura repris à l'identique ton blocky existant, tu pourra le faire évoluer avec tes nouvelles conditions afin de te faire la main.
Dans mon cas je souhaite qu'entre 7h et 21h que le thermostat soit régler a 20.5, et le reste du temps à 19.5.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
djrams10
Messages : 34
Inscription : 04 mai 2017, 20:14

Re: Blocky, en script LUA

Message par djrams10 »

Tu parle de la fonction planning dans domoticz? parce que j'ai une particularité, si tu regarde bien dans le blocky, dès que le thermostat de la chambre décent en dessous de 18.5, il monte le thermostat a 24, et des que la température revient au dessus de 18.5, le thermostat redescend a la température normale, soit 19.5, ou 20.5 en fonction de l'horaire. Le problème du planning, c'est qu'il va mettre une température à une heure indiquée et si le température augmente a 24, elle ne redescendra pas, il faut que je trouve le moyen comme actuellement avec blocky de maintenir les températures demandé en fonction de l'horaire, mais qu'elle monte seulement lorsque la température baisse. assez compliquée.
Pièces jointes
Capture d’écran 2019-02-05 à 13.33.40.png
Capture d’écran 2019-02-05 à 13.33.40.png (132.61 Kio) Consulté 6463 fois
djrams10
Messages : 34
Inscription : 04 mai 2017, 20:14

Re: Blocky, en script LUA

Message par djrams10 »

denis_brasseur a écrit : 05 févr. 2019, 13:37 Si tu veux t'initier au LUA, voici ce que peux donner ton script actuel (je n'ai pas gérer les setpoint, jusque les conditions) :

Code : Tout sélectionner

  -- retourne l'heure actuelle ex: "12:45"
heure = string.sub(os.date("%X"), 1, 5)

commandArray = {}
 
if (otherdevices['Capteur ouverture Cuisine']=='Closed' and otherdevices['Capteur ouverture Salon']=='Closed' and otherdevices["Capteur d'ouverture Yanis"]=='Closed' and otherdevices["Capteur d'ouverture Chambre des Parents"]=='Closed') then
	if otherdevices_svalues['Temperature Yanis'] < '18.5' then
		--mise à jour du setpoint à 24 °
	elseif otherdevices_svalues['Temperature Yanis'] >= '18.5' then
		if heure < '07:00' then
		--mise à jour du setpoint à 19.5 °
		elseif heure >= '07:00' then
		--mise à jour du setpoint à 20.5 °
		end
	end
end
 
return commandArray
Les 4 premieres conditions sur l'état des capteurs étant redondantes, écrit qu'une seul fois.
Idem pour Temperature Yanis >= 18.5, simplifié

Plusieurs remarques :
les apostrophes et caractères accentués dans les nom de capteurs comme "Capteur d'ouverture Chambre des Parents", pas très propre.
Pour les plages de température, tu écris < à 18.5, puis > 18.5. Qu'advient il de la valeur 18.0 dans ton test.
Idem pour < '07:00' et > '07:00', qu'advient il de = '07:00' ?

Ca peux être une bonne bases de démarrage en LUA, ce n'est que mon avis.

Une fois que tu aura repris à l'identique ton blocky existant, tu pourra le faire évoluer avec tes nouvelles conditions afin de te faire la main.
Dans mon cas je souhaite qu'entre 7h et 21h que le thermostat soit régler a 20.5, et le reste du temps à 19.5.
Merci beaucoup pour tes précieux conseils et ton aide.
J'ai modifié tous mes caractères spéciaux, bonne remarque.
Je comprend pas ce que tu veux savoir pour la valeur 18.0.
pourquoi dis tu que tu n'as pas gérer le setpoint? Le script n'est pas complet a ce stade?
J'ai rentrer ton script dans domotics et dans les log j'ai cette erreur: Error: EventSystem: in LUA: [string " -- retourne l'heure actuelle ex: "12:45"..."]:9: attempt to compare string with nil

merci et désolé je n'ai aucune notions.


Je comprend que tout ce qui commence par == n'est pas exécuter dans Domoticz. c'est a moi de trouver pour exécuter les setpoints. merci
Dernière modification par djrams10 le 05 févr. 2019, 14:47, modifié 1 fois.
patoche
Messages : 192
Inscription : 25 oct. 2015, 15:51

Re: Blocky, en script LUA

Message par patoche »

Oui je parlais bien du planning dans domoticz du thermostat.
Quel est le but de fixer le thermosat à 24 pour une temperature < 18.5, pour la baisser après ?
Dans le script lua il n'y a pas la commande pour mettre à jour la consigne du thermostat, c'est juste un commentaire.
Si tu mets une condition <18 et > 18 , lorsque la temperature est à 18, domoticz ne sait pas quoi faire !
Comment as tu nommer ton script lua ?
RPI2 OSMC + domoticz + Rfx 433e + chacon dio, teleinfo 433 via arduino nano, sonde T° innovaley et TFA 303139, sonde T° piscine DIY 433 oregon, OWL 180, RPI zero W + camera
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Blocky, en script LUA

Message par denis_brasseur »

Effectivement, le script n'est pas complet a ce stade, je n'ai géré que les conditions, pas la mise à jour.
patoche a écrit : 05 févr. 2019, 14:32 Dans le script lua il n'y a pas la commande pour mettre à jour la consigne du thermostat, c'est juste un commentaire.
Si tu mets une condition <18 et > 18 , lorsque la temperature est à 18, domoticz ne sait pas quoi faire !
Comment as tu nommer ton script lua ?

djrams10, règle d’abord ton problème de condition, tu passera à l'étape suivante ensuite.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
djrams10
Messages : 34
Inscription : 04 mai 2017, 20:14

Re: Blocky, en script LUA

Message par djrams10 »

patoche a écrit : 05 févr. 2019, 14:32 Oui je parlais bien du planning dans domoticz du thermostat.
Quel est le but de fixer le thermosat à 24 pour une temperature < 18.5, pour la baisser après ?
Dans le script lua il n'y a pas la commande pour mettre à jour la consigne du thermostat, c'est juste un commentaire.
Si tu mets une condition <18 et > 18 , lorsque la temperature est à 18, domoticz ne sait pas quoi faire !
Comment as tu nommer ton script lua ?
le thermostat principal qui commande la chaudière est dans la salon, je le monte a 24 pour être certain que le thermostat allume bien la chaudière, car si dans le salon il y'a par exemple 20 et que je monte la température du thermostat a 19, alors que dans la chambre il y'a 18.5, le thermostat ne donnera pas l'odre de démarrer la chaudière car il y'a plus de 19 dans le salon. Alors que si je met 24, je suis certain que la chaudière s'allumera pour s'arrêter des que la température de la chambre dépassera 18.5. Compliqué mais vu que cette chambre est au nord, il fait souvent très froid alors que les autres chambres et salon sont plus chaud.
Je ne vois aucun problème, si la température descend en dessous de 18.5 il monte a 24, et si il est égale a 18.5 et plus, il se remettra a 19.5 ou 20.5 en fonction de l'heure. je ne vois pas de problème sur les conditions.
djrams10
Messages : 34
Inscription : 04 mai 2017, 20:14

Re: Blocky, en script LUA

Message par djrams10 »

Code : Tout sélectionner

  -- retourne l'heure actuelle ex: "12:45"
heure = string.sub(os.date("%X"), 1, 5)

commandArray = {}
 
if (otherdevices['ouverture cuisine']=='Closed' and otherdevices['ouverture salon']=='Closed' and otherdevices["ouverture yanis"]=='Closed' and otherdevices["ouverture parents"]=='Closed') then
	if otherdevices_svalues['temperature yanis'] < '18.5' then
		commandArray['Nest']='24'
	elseif otherdevices_svalues['temperature yanis'] >= '18.5' then
		if heure < '07:00' and heure > '21:00' then
		  commandArray['Nest']='19.5'
		elseif heure >= '07:00' and heure <= '21:00' then
		  commandArray['Nest']='20.5'
		end
	end
end
 
return commandArray
voilà ce que j'ai fait.
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Blocky, en script LUA

Message par denis_brasseur »

Ton heure ne peut pas etre inférieure à 07:00 et supérieure à 21:00 !

Code : Tout sélectionner

if heure < '07:00' and heure > '21:00' then
Mais elle peut etre inférieure à 07:00 ou supérieur à 21:00.

Code : Tout sélectionner

if heure < '07:00' or heure > '21:00' then
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Répondre