Effectuer une action pendant une certaine durée

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 <\>.
getget
Messages : 98
Inscription : 05 janv. 2018, 03:21

Effectuer une action pendant une certaine durée

Message par getget »

Bonjour, je voudrai faire la chose suivante :

Si on appuie sur le bouton "Commande poele"
- Eteindre la VMC
- Allumer le circulateur d'air
- Mettre le stripled sur rouge
- Mettre le chauffage sur HG

Jusque là tout va bien avec un scenario.

Ensuite, ça se corse.
Je voudrai que quoi qu'il arrive la première heure il ne se passe rien.
Ensuite, si la température est descendue au dessous de 21°
- Rallumer le chauffage
- Rallumer la VMC
- Mettre le stripled sur bleu
- Eteindre le circulateur d'air

Comment faire "attendre une heure" (le reste je saurai faire) ?

Merci :)
cyberbob
Messages : 511
Inscription : 28 nov. 2016, 19:43
Localisation : Belgique

Re: Effectuer une action pendant une certaine durée

Message par cyberbob »

Je crois que le seul moyen est de le faire en script LUA (ou autres language)

Code : Tout sélectionner

--Cette fonction calcule la différence de temps (en secondes) entre maintenant
--et la date passée en paramètre.
function timedifference (s)
  year = string.sub(s, 1, 4)
  month = string.sub(s, 6, 7)
  day = string.sub(s, 9, 10)
  hour = string.sub(s, 12, 13)
  minutes = string.sub(s, 15, 16)
  seconds = string.sub(s, 18, 19)
  t1 = os.time()
  t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
  difference = os.difftime (t1, t2)
  return difference
end
Avec cette fonction, qui renvoie la différence de temps entre maintenant et une date passée en paramétre :

Code : Tout sélectionner

if timedifference(otherdevices_lastupdate['mon_inter'] > 600
 then
 ...
 ...
 end
Ce if va appeler la fonction dans le script, et si le dernier changement de l'inter 'mon_inter' est supérieur a 600 seconde (10 min) il fait le "then"

Ce n'est qu'un exemple, mais quand on a compris on lui fait faire n'importe quel application ;)
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky
getget
Messages : 98
Inscription : 05 janv. 2018, 03:21

Re: Effectuer une action pendant une certaine durée

Message par getget »

Merci :)
J'ai fait autrement, j'ai mit un Switch avec un délai OFF d'une heure qui s'active en même temps que j'active mon script. Puis j'ai un blockly quand il repasse a 0 :)
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: Effectuer une action pendant une certaine durée

Message par lost »

getget a écrit : 08 nov. 2018, 19:17 Je voudrai que quoi qu'il arrive la première heure il ne se passe rien.
Ensuite, si la température est descendue au dessous de 21°
- Rallumer le chauffage
- Rallumer la VMC
- Mettre le stripled sur bleu
- Eteindre le circulateur d'air
1h00 après que le poêle ait été allumé, je vois mal la température descendre... pour devoir rallumer le chauffage (en doublon?), la VMC (poêle en fonctionnement, risque d'inverser le tirage et d'aspirer fumée/CO: Danger!) en eteignant le circulateur (et ne pas profiter à plein de la chaleur accumulée par le poêle)!

Ou alors il manque un truc!
getget
Messages : 98
Inscription : 05 janv. 2018, 03:21

Re: Effectuer une action pendant une certaine durée

Message par getget »

Justement, je ne fais ces actions que quand la temperature est redescendue à moins de 21°. Sauf qu'à l'allumage elle l'est déjà donc j'ai un blockly qui vérifie seulement quand la tempo est écoulée.
Répondre