Connaitre l'état d'un relai

Depuis plusieurs années, je gère la domotique de mon habitation avec une appli maison en utilisant un raspberry. Mes chauffages (électriques) sont gérés par fils pilotes connectés sur une carte relais pilotée par le rpi, et ça fonctionne trés bien. Je souhaite maintenant pouvoir piloter chaque chauffage indépendamment en installant un relai double (commandé par un esp01s) derrière chaque radiateur. J'ai réussi ce matin à flasher l'esp01s pour qu'il commande les 2 relais grâce à une requête HTTP. Ma question est la suivante : pouvez vous me dire (et m'expliquer) s'il existe une méthode pour connaitre l'état de chacun de ces 2 relais de la carte ?
Je vous remercie beaucoup pour votre aide.
(ci-dessous, les photos de ce relai double voie.


Bonsoir,

Il y a plusieurs façon de connaître l'état d'un relais.

Ce qu'il faudrait que tu précise, c'est:
Toi, sous quelle forme aimerais tu cette info?

1 led qui s'éclaire ou non?
1 niveau logique HAUT ou BAS à connecter quelque part ?
1 message renvoyé je ne sais où par je ne sais quoi?

Bonsoir et merci de vous être penché sur ma question.

L'idéal pour moi serait d'avoir l'info par une réponse à une requête HTTP.

Je suis très terre à terre : il faut commencer dans l'ordre, avant d'envoyer une information, il faut l'acquérir.

Il faut déterminer le moyen qui permettra de détecter la position du relai.
As-tu déjà une idée sur la façon de s'y prendre ?

Moyens logiciels :
Détection de l'état de la commande ?
Mémoire qui indique l'état du relai

Moyens matériels :
Un signal qui commande la bobine ne signifie pas que le relai est fermé, il peut être accidentellement bloqué mécaniquement.
J'espère que ce n'est pas essentiel pour toi parce qu'on se dirigerait tout droit sur une usine à gaz.

Et même fermé, la suite de la commande pourrait ne pas se passer correctement : le disjoncteur du chauffage peut être ouvert.

Il faut bien évidement réfléchir à la tolérance de panne que l'on accepte.

La question reste:

Le "meilleur" état des relais, c'est celui des contacts, sont-ils OUVERT ou FERMÉ?

Correction de ma part:
Effectivement, on ne peut pas prévoir tous les cas et différencier un défaut dû au relais ou à son environnement...

Je souhaite pouvoir connaitre l'état du relai (ouvert ou fermé) pour reproduire ce qui existe déjà dans mon installation : pour l'instant mes fils pilotes sont gérés par des relais commandés par les gpio de mon rpi. J'interroge l'état des gpio et j'en déduis l'état de mes relais. Je voudrai pouvoir interroger ma carte relais pour connaitre l'état de ces relais, ce qui me permettrai de savoir si mon ordre a bien été pris en compte.

Est ce que votre module relais est un module communiquant programmable ou est ce qu'il se contente de recevoir des ordres et piloter les relais?

S'il est programmable, a t'il des entrées disponibles sur lesquelles il serait possible d'envoyer une image de l'état du relais?

Il s'agit du module relai en photo au dessus. Je n'ai aucune info dessus, acheté sur Aliexpress pour moins de 5€. J'ai pu programmer l'ESP01 qui est connecté dessus, ce qui me permets d'envoyer les ordres d'ouverture et de fermeture de chacun des 2 relais.
Je voudrais la même chose mais en lecture.
Pour écrire j'utilise un "Serial.write(rel1ON, sizeof(rel1ON));"; existe-t-il un "Serial.read" ?

As tu réfléchis a ces propos ?

La pluspart du temps quand ce que tu recherches existe dans les bibliothèques, elles ne font que rappeler le dernier ordre envoyé.
La bibliothèque ne fait aucun controle physique.
Elle se contente de placer le dernier ordre dans une mémoire et de lire le contenu de cette mémoire.

Cela suffit généralement.
Cela te convient-il ?

Bonjour

En automatisme, quand il en manque sur le relais on ajoute un bloc de contacts auxilliaires qui nous permet de confirmer que le relais a bien été mécaniquement actionné,
mais ça n'indique pas non plus que ce qui doit être alimenté par ce relais est effectivement alimenté puisque les contacts concernés pourraient être défectueux ou détruits ou bien l'alimentation en amont du relais pourrait être coupée, ou autre défaut dans le circuit,
alors on utilise d'autres méthodes ou/et capteurs suplémentaires en fonction du contexte.

Dans ton cas, tu pourrais mesurer le courant consommé pour vérifier que ton relais alimente bien ce qui doit l'être et que ce qui est alimenté consomme ce qui a été demandé.

J'ai l'impression que l'on ne s'est pas compris (ou que je n'ai pas été clair)... :frowning:

Ce que j'avais en tête : @rexbul200664 veut connaître l'état du relais. On peut :

  1. interroger le µC pour connaitre le dernier ordre passé
  2. faire une mesure physique en aval du relais pour savoir si tout s'est passé correctement.
  3. autres ?

Maintenant « ça se passe mal » Il faut imaginer les pannes possibles : coupure de courant sur le circuit des radiateurs, relais qui colle ou bloque... et sûrement d'autres.

Qu'est ce que @rexbul200664 accepte comme dégradation du fonctionnement dans ces cas là ? Cela va conditionner les solutions.

  1. Il accepte d'avoir froid en rentrant de vacances, la solution 1. suffit.
  2. Le chauffage est celui de ses terrariums d'iguanes tropicaux, mesurer le courant dans le circuit chauffage est une possibilité pour la solution 2.

J'ai pensé à ça parce que j'ai commencé à réfléchir à moderniser ma « domotique » (bien grand mot) volets : pour le moment un programmateur fait basculer un module Yokis qui envoie l'ordre (impulsions par fil pilote) d'ouverture et de fermeture de tous les volets. À heure fixe donc. L'ouverture je ne la change pas tellement mais l'heure de fermeture dépend de la saison et je rerègle le programmateur une quinzaine de fois par an.

Un µC pourrait calculer l'heure de coucher du soleil ou mesurer la luminosité (ou les deux). Et puis la température pour fermer en période de canicule. etc.
Et puis une interface web accessible de l'extérieur pour contrôler tout ça.

Sauf que parfois, en cas de grand vent, les volets se bloquent à la descente. Pas de risque de casse, les modules yokis le détectent et arrêtent la descente. Il suffit en général de remonter et descendre le volet pour que tout soit OK.

Cette information, le µC ne peut pas l'avoir simplement : les yokis ne renvoient pas d'infos.

Est-ce que j’accepte de temps à autre un volet ouvert pendant un cycle d'ouverture/fermeture ou est-ce que j'essaye de détecter le problème (mesure de courant et/ou de durée de ce courant) pour faire jouer une manœuvre de débloquage (ouverture puis fermeture immédiate) et lancer si besoin une alerte (SMS ?) pour demander au cousin qui a les clés de venir tirer sur le volet ?

Bref, quel est l'importance de l'enjeu et quelle est l'ampleur de l'usine à gaz à mettre en place. C'est ça que j'ai, peut-être à tort, appelé tolérance de panne.

Je suppose que tu es parti de ce genre de code :

Le composant à 20 pattes que tu vois sur ta carte est un STC15F104W. L'ESP01 communique par voie série avec lui pour activer / désactiver le relais, ce qui explique le Serial.write().
Pour consulter l'état du relais il faudrait que le code du STC15F104W implémente cette fonctionnalité.
Or je n'ai pas l'impression que ce soit le cas :

Bonjour,

Est-ce que des leds s'allument quand le relais est basculé ?

A+

Bonjour à tous,

Concernant ma tolérance à la panne, elle est "large". Les relais ne commanderont que mon chauffage et effectivement, je peux accepter d'avoir froid en rentrant ou une légère augmentation de la conso si les chauffages ne sont pas en éco. Pour tout vous dire, depuis une dizaine d'année que ma configuration avec les relais en direct sur les gpio, je n'ai jamais eu de problème. Mais, dans cette nouvelle solution, le fait d'intégrer la communication par wifi rajoute une incertitude sur la bonne prise en compte des ordres.
Pour la récupération de l'état du relais, ça ne m'étonne qu'à moitié que l'info ne soit pas accessible en lecture.
Pour répondre aux autres questions ou proposition :
-oui les led des relais s'allument ou s'éteignent, indiquant bien l'état de ceux-ci.
-le fait de contrôler la conso pour identifier la position des relais n'est pas satisfaisant (plusieurs radiateurs : lequel est coupé ou alimenté ? // les relais positionnent un mode de chauffage, le radiateur ne se mettra pas obligatoirement en route immédiatement)

@ProfesseurMephisto : je me contenterai de l'interrogation du µC (j'aurai la certitude que la demande d'action est bien arrivée jusqu'à la carte relais (application,wifi,module ESP01,alimentation relais OK), la seule incertitude resterait dans le bon fonctionnement du relais par lui-même.

@hbachetti : j'ai utilisé arduino ide pour injecter un sketch sur l'ESP01 beaucoup plus succinct que celui que tu as proposé (la page HTML ne propose pas d'interface graphique, juste un retour texte : 'OK'). Est ce que ce que tu as proposé permet de lire la dernière commande ?

Bonjour,

Si cela vous convient, vous avez une piste de ce coté. Lorsqu'une commande de changement d'état est envoyé en WIFI, elle doit donc se métérialiser par un changement d'état visuel des leds. A l'aide du schéma électronique de la carte, il y a probablement une solution pour lire ces états ? On peut noter que l'ESP-01 qui doit être connecté sur cette carte fourni 2 sorties GPIO (GPIO0 et GPIO2). Il faudrait le schéma de la carte pour voir si il peut y avoir une connexion entre ses 2 ports GPIO et les leds. Avez-vous le schéma electronique de la carte ?

Autre piste: installer un autre ESP-01, qui aurait le rôle de controleur d'état
dont les ports GPIO seraient connectés aux leds d'état, et renverrait en WIFI à chaque changement d'état un message du style "relay1=on|off, relay2=on|off".

A+

Non, mais rien ne t'empêche de mémoriser la commande dans une variable lorsque tu reçois une URL ON ou OFF, et de renvoyer la variable lorsque tu reçois une URL à définir, STATE par exemple.

Exemple deux variables booléennes relais1 et relais2
relais non activé -> relaisX = false,
relais activé -> relaisX = true.

Oui, mais je n'aurai pas la certitude que l'ordre a bien été reçu, bien été interprété et la commande bien passée. C'est justement en comparant cette valeur mémorisée et la valeur lue que je détecte d'éventuelles erreurs qui peuvent remonter par message sur l'interface graphique ou par sms.

@ jelopo
Je n'ai aucun schéma électronique de la carte, et pas les compétences pour l'interpréter. De ce que j'ai lu, pour actionner les relais, l'ESP01 envoie les commandes reçues à une autre puce grâce à la commande "Serial.write..." . Votre proposition de lire l'état des leds est intéressante, mais je ne voie pas comment le faire. Je continue mes recherches. Si vous avez des pistes, je suis preneur.