Question sur les rules et les timer

Forum dédié aux bricolages d'objets connectés IOT et leurs communications avec DomoticZ :
- Remplacement de firmware des prises, modules relais ...
- Fabrication à base d'ESP8266, de NodeMCU, de Weemos et consorts ...
MintObi
Messages : 3
Inscription : 11 mars 2023, 11:38

Question sur les rules et les timer

Message par MintObi »

Bonjour,


Ayant été initié en début d'année à la domotique, je me suis pour le moment monté un serveur Domoticz (sous Yunohost), avec lequel communique plusieurs esp32 sous espeasy.

J'ai dernièrement essayé de me mettre aux rules sous espeasy, mais je galère un peu.

Voici ce que j'ai créée comme périphériques sur mon esp de test :
Sélection_001.jpg
Sélection_001.jpg (54.32 Kio) Consulté 893 fois
Un DHT22 au GPIO 33, un relais au GPIO 32, un fil volant faisant office de switch (avec résistance reliée au 3V) au GPIO 35

Ce que je souhaite (dans un premier temps) faire :

* Si le switch passe à l'état 0 :
- Le relais est commandé pendant 1 seconde (premier timer)
- Un deuxième timer de 5 secondes se déclenche
- Une fois le deuxième timer terminé, le système recommence à lire l'entrée du switch, et commande si besoin de nouveau le relais.

Voici la rule que j'ai tenté de créer :

Code : Tout sélectionner

On System#Boot do
monitor,GPIO,35
GPIO,32,1
endon

On GPIO#35=0 Do
  GPIO,32,0
  timerSet,1,1
endon
On Rules#Timer=1 Do
 GPIO,32,1
 timerSet,2,5
 endif
endon
Évidement cela ne fonctionne pas comme je le souhaiterai, le deuxième timer n'étant pas pris en compte.

Qqn aurait'il une idée sur la façon dont il doit être déclaré ?

Merci d'avance :-)
Dernière modification par MintObi le 30 mai 2023, 14:23, modifié 2 fois.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Modération

Message par Keros »

Bonjour MintObi et bienvenu sur le forum :)

Tu as mis un lien vers un image hébergée à l'extérieur du forum : il y a de fort risques qu'elles ne soient plus disponibles dans quelques temps comme ici, ou encore . Est-ce que tu peux éditer ton message et utiliser l'onglet Fichiers joints en dessous de la zone d'écriture des messages pour enregistrer les éléments sur le serveur du forum. On la verra directement dans ton message, ce sera plus pratique. Merci
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
MintObi
Messages : 3
Inscription : 11 mars 2023, 11:38

Re: Question sur les rules et les timer

Message par MintObi »

Image éditée
gaston
Messages : 155
Inscription : 16 avr. 2019, 20:30

Re: Question sur les rules et les timer

Message par gaston »

Elo,

Ça me semble normal que ça ne fonctionne pas, ton déclencheur n'est pas bon:

On GPIO#35=0 Do à la place, met On bouton#State=0 Do (attention à la majuscule de State, c'est sensible à la casse)

Ça devrait mieux passer ;)

Par contre, c'est pas très clair au niveau de ce que tu veux faire...
j'appuie sur le bouton, ça colle le relais pendant 1 seconde, il retombe, ça lance le timer 2 pendant 5s ... on fait quoi pendant et à la fin des 5s ?
Il manque un bout à ta Rule mais ça dépend de ce que tu souhaite faire.
De plus il me semble qu'il faille réinitialiser les timers avant de les relancer.

Gaston

PS: pour une fois que je comprend un de tes pseudos ;)
MintObi
Messages : 3
Inscription : 11 mars 2023, 11:38

Re: Question sur les rules et les timer

Message par MintObi »

Dammed, j'ai laissé trop d'indices, j'ai été découvert :-p

Après de multiples essais hier tard dans la soirée (=> en tentant plus de trucs il finira bien par se passer quelque chose), on est arrivé à un truc de fonctionnel.

Au niveau des devices :
Sélection_001.png
Sélection_001.png (54.06 Kio) Consulté 841 fois
J'ai ajouté la ligne 4 afin d'avoir un monitoring de l'état du GPIO 32, qui commande le relais.
Et la ligne 5, pour créer une variable (il y a probablement plus simple, si qqn a la solution).

State = 1 indique pour les lignes 3 à 5 que les entrées/sorties ne sont pas actives.

Voici le code :

Code : Tout sélectionner

On System#Boot do
  monitor,GPIO,32 // monitoring de la commande du relais
  monitor,GPIO,35 // monitoring de l'entrée du switch
  GPIO,32,1 // au cas ou, on eteint le relais
  GPIO,27,1 // au cas ou, on eteint l'entrée servant de variable
endon

On bouton#State=0 Do // si le GPIO 35, sois le switch, est activé
 if [tempo2#State]=1 // et que la tempo 2 de 5 secondes est terminée
    GPIO,27,0 // l'entrée servant de variable est allumée
    GPIO,32,0 // le relais est allumé
    TimerSet,1,1 // lancement de la tempo 1, qui sert à laisser allumer le relais
    TimerSet,2,5 // lancement de la tempo 2, qui empêche  toute prise en compte d'une nouvelle activation du switch
 Elseif [tempo2#State]=0 // si la tempo 2 de 5 secondes n'est pas terminée après activation du switch
    GPIO,32,1 // le relais est eteint et c'est tout
 endif
endon

On Rules#Timer=1 Do // lorsque la tempo 1 se termine
  timerSet,1,0 // elle est remise à 0
  GPIO,32,1 // on, eteint le relais
endon

On Rules#Timer=2 Do // lorsque la tempo 2 est terminée
  timerSet,2,0 // elle est remise à 0
  GPIO,27,1 // l'entrée servant de variable est eteinte (et autorise donc de nouveau la condition de la ligne  if [tempo2#State]=1)
  GPIO,35,1 // le switch est forcé à être teint
endon
Concernant l'avant dernière ligne, elle était nécessaire pour que le système fonctionne lorsque l'on laisse le switch enclenché.
Sans elle, il fallait relacher le switch et rappuyer de nouveau dessus.

Je souhaitais programmer ce truc afin de pouvoir par exemple connecter/déconnecter (à l'aide du relais) une sonde de température de type DHT22 dont l'ESP32 aurait perdu son signal.

Merci à Gaston pour le (gros) coup de main 8-)
Répondre