Switch on off sous condition - 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 <\>.
Répondre
vb35
Messages : 2
Enregistré le : 12 mai 2022, 16:32

Switch on off sous condition - LUA

Message par vb35 »

Bonjour,

Je rencontre un problème que je n'arrive pas à résoudre étant totalement novice en programmation.

Je cherche à faire un petit script qui allume ou éteint une prise connectée, en fonction d'une température.

Contexte :

Domoticz : 192.168.1.11:8080
SondeTemperatureChauffage : 192.168.1.24
Prise chauffage : 192.168.1.25

Action rechercher :

Si "SondeTemperatureChauffage" >=25
Alors "Prise chauffage" = ON durant 20 secondes puis OFF
Récurrence de la commande : toutes les 15minutes

Je ne sais pas si vous allez pouvoir m'aider à intégrer ça en LUA ( si j'ai bien compris ) pour domoticz mais j'avoue que pour le moment je n'y comprend pas grand chose.. Et le Blockly proposé sur domoticz ne me permets pas de faire tout ça.

Par avance merci !

VB

Keros
Messages : 3114
Enregistré le : 23 juil. 2019, 20:57

Re: Switch on off sous condition - LUA

Message par Keros »

Bonjour vb35 et bienvenu sur le forum :)

Je ne comprends pas pourquoi tu nous donnes les différentes IP. Normalement tu dois avoir tes différentes prise et capteur dans DomoticZ? C'est bien le cas ? Tu vois la valeur du capteur de température et tu peux actionner ta prise depuis Domoticz ?

Concernant la programmation, j'ai écrit des petits guides dans ma présentation (voir lien dans ma signature) dont un concernant les début en programmation.

Dans le principe, un script de type Time s’exécute toutes les minutes. Si tu souhaites faire une récurrence toutes les 15 minutes, il va falloir vérifier l'heure et n'exécuter ton script que quand les minutes sont égales à 00, 15, 30 ou 45.
Ou sinon, tu peux regarder le langage DzVents dans lequel on peut utiliser une fonction every 15 minutes.
Mais cela est pour un second temps, essaye déjà de faire des action sur ta prise en fonction de la température. tu pourras complexifier le programme dans un deuxième temps.

Jeff
Messages : 887
Enregistré le : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Switch on off sous condition - LUA

Message par Jeff »

En récupérant un script avec un relevé de température, je suis tombé la dessus, merci Pipiche :D , il y a plein d'exemple

A adapter mais comme tu as la fonction time, tu peux comme le dis Keros, faire minutesnow = 0 ou min = 15 ...

Code : Tout sélectionner

commandArray = {}

tempChbr = otherdevices_svalues['Temperature Chambre Parents']

-- get current time
        timenow = os.date("*t")
        minutesnow = timenow.min + timenow.hour * 60
        minutes = timenow.min
        hoursnow = timenow.hour

	-- at 21:00 let's switch on Ac if not yet done.
	if ( otherdevices_svalues['Temperature Chambre Parents'] >= 25 ) and (minutesnow == 0 or minutesnow == 15 ) then 
		
                commandArray[#commandArray +1]={['Clim Chambre Power']='On'}
	 end
	 
return commandArray
	
Version: 2022.1, Zwave (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Scren

vb35
Messages : 2
Enregistré le : 12 mai 2022, 16:32

Re: Switch on off sous condition - LUA

Message par vb35 »

Bonjour tous les deux :)

Merci pour vos réponses !

Pour répondre à Keros, j'avais mis les IP car.. je pensais que dans le code lua il fallait renseigner l'emplacement de chaque périphérique ciblé par le script.

J'ai en effet déjà mes prises et mon capteur. Et j'ai donc bien renseigné une action en fonction de la température et la durée de l'action.
En revanche ce que je n'arrive pas à mettre en place aujourd'hui c'est mêler la récurrence avec la variable température.
J'aimerais que si la température est supérieur à tel degré, la prise se déclenche et qu' elle s'arrête au bout de 20s ( ça c'est ok ) en revanche j'aimerais que la prise ne puisse pas s'allumer de nouveau durant les 15 minutes après que celle ci ce soit arrêtée. Et c'est là que ça coince, je n'arrive pas à mettre ça en place avec le blockly.


Merci pour Jeff je vais étudier tout ça demain :) voir si comprend et si je pourrais adapter à ma situation :)

A bientôt

Keros
Messages : 3114
Enregistré le : 23 juil. 2019, 20:57

Re: Switch on off sous condition - LUA

Message par Keros »

Ce n'est pas évident de faire une tempo, surtout en Blocky. Une solution consisterait à déclencher un widget virtuel qui aurait un auto Off à 15 minutes. A la fin de ton script, tu déclenches la tempo. Au début du script, tu vérifies l'état de la tempo : si elle est allumée, c'est que ton script l'a allumée il y a moins de 15 minutes. Si elle est éteinte, tu peux faire tes actions et réactiver la tempo.
Sinon, en code (LUA ou DzVents), il est possible de récupérer le lastupdate d'un widget. En comparant avec l'heure actuelle, tu peux savoir depuis combien de temps le widget n'a pas été mis à jour.

Répondre