Electrovanne bi-stable et contrôle du bon fonctionnement

Un forum dédie à vos questions concernant l'intégration à Domoticz des capteurs et gateway mysensors.org
Répondre
Gilles BILLARD
Messages : 58
Enregistré le : 09 oct. 2017, 09:34
Localisation : 45km sud Paris

Electrovanne bi-stable et contrôle du bon fonctionnement

Message par Gilles BILLARD »

Bonjour,
Je vais encore avoir besoin de vos lumières;
J'ai quelques questions, mais avant tout je vous situe le sujet:
Je souhaite piloter une (pour commencer) électrovanne bistable et contrôler son bon fonctionnement.
J'utilise MySensors + Arduino pro-mini; J'y ajoute un Hbridge commandé par 2 sortie binaires (D4 et D5) et un débimètre low-cost connecté a la 2emme interruption (D3);
Dans l'attente du Hbridge, je connecte des leds sur D4 D5 et j'envoie des niveaux plutôt que des impulsions pour monitorer les états.
J'ai ecrit un petit bout de code pour vérifier le bon fonctionnement du débimètre (mesure débit et totalisateur de volume)
Et comme ca marche bien je l'intègre dans mon node.
Le node est commandé depuis Domoticz par un petit script en Blocky qui commande ouverture/fermeture en fonction de température (a terme, ce sera plutot en fonction de l'heure et/ou de l'humidité de la terre)
Le retour vers la GateWay se fait sous forme d'info binaire de bon ou de mauvais fonctionnement selon la logique suivante: si la vanne doit etre ouverte alors le débimètre doit tourner et dans ce cas, pas d'erreur (un zéro est renvoyé a la centrale) et inversement (après trois tentatives infructueuses).
Vu que je teste sur table, si je commande la vanne a la fermeture, il n'y a pas de débit et donc tout est OK
Mais si je demande une ouverture, alors un erreur doit etre renvoyée puisque le débimètre ne tourne pas....
Premier problème: En cas d'erreur, l'alarme n'est pas activée dans Domoticz
J'instancie les classes Mymessage de la façon suivante

Code : Tout sélectionner

MyMessage flowMsg(CHILD_ID_FLOW, V_FLOW);
MyMessage volMsg(CHILD_ID_VOLUME, V_VOLUME);
MyMessage errorEVMsg(CHILD_ID_EV_Status, V_STATUS);
Je présente mon node ainsi

Code : Tout sélectionner

void presentation()
{
    sendSketchInfo("Arrosage", "1.0");// Send the sketch version information to the gateway and Controller
    present(CHILD_ID_EV_Status, S_BINARY);  
    present (CHILD_ID_FLOW, S_WATER);
    present(CHILD_ID_VOLUME,S_WATER);
    present (CHILD_ID_STATUS,S_BINARY);
}
Et la partie du code qui ne déclenche rien est le suivant:

Code : Tout sélectionner

void receive(const MyMessage &message)
{
    if (message.getType()==V_STATUS) {                // vérification de l'ordre
        if (message.getBool()== true) {               // Ordre d'ouverture
          for (int i=1; i <= nbTentatives; i++) {     // tentatives
            myElectrovanne.off();                       // TODO LIGNE TEST  A SUPPRIMER
            myElectrovanne.open();                      // envoi d'un pulse de 50ms
            Serial.println ("ouverture EV "); 
  //          wait (dureePulseEV);                                // TODO OTER LE REM DE CES 2 LIGNES
  //          myElectrovanne.off();
            wait (delayFlowMetre);                                // attente pleine ouverture
            if (myDebimetre.actif == false){              // si pas bien ouverte
              send(errorEVMsg.set(1));                  // Panne electrovanne
              Serial.println ("La vanne ne s'est pas ouverte ");
            }  
            else{  .....
La ligne send(errorEVMsg.set(1)); // Panne electrovanne est supposée déclancher le baculement du switch associé dans Domoticz mais ca ne marche pas alors que le moniteur série affiche:
ouverture EV
La vanne ne s'est pas ouverte
ouverture EV
La vanne ne s'est pas ouverte
ouverture EV
La vanne ne s'est pas ouverte
et le log du GW dit:

Code : Tout sélectionner

2021-05-02 12:27:58.047 GiBi-Home: Temp (Temp N°2 (Serre tunnel))
2021-05-02 12:27:58.051 EventSystem: Event triggered: Script #1_2
2021-05-02 12:27:59.061 GiBi-Home: Light/Switch (Electrovanne (Serre tunnel))
2021-05-02 12:28:00.037 GiBi-Home: Light/Switch (Electrovanne (Serre tunnel))
Qu'est ce que je n'ai pas compris ?

(d'autres questions a venir car ceci est déjà bien assez long a lire)

Gilles BILLARD
Messages : 58
Enregistré le : 09 oct. 2017, 09:34
Localisation : 45km sud Paris

Re: Electrovanne bi-stable et contrôle du bon fonctionnement

Message par Gilles BILLARD »

ca y est, j'ai trouvé;
hormis le doublon dans la présentation, vous ne pouviez pas m'aider avec ce que j'ai écrit; J'ai juste oublié de mettre les déclarations et c'est là que se situait le pb ;
J'avais:

Code : Tout sélectionner

#define CHILD_ID_EV_Statut 0        // statut de l'Electro-Vanne
#define CHILD_ID_FLOW 2             // débit
#define CHILD_ID_VOLUME 3           // volume
J'ai mis:

Code : Tout sélectionner

#define CHILD_ID_EV_Statut 1        // statut de l'Electro-Vanne
#define CHILD_ID_FLOW 2             // débit
#define CHILD_ID_VOLUME 3           // volume
Le 0 étant pris, je suppose par le canal de réception... (a confirmer)

Gilles BILLARD
Messages : 58
Enregistré le : 09 oct. 2017, 09:34
Localisation : 45km sud Paris

Re: Electrovanne bi-stable et contrôle du bon fonctionnement

Message par Gilles BILLARD »

Deuxième problème:
Comme je veux que les dispositifs soient auto alimentés (panneau solaire+ accu), il me faut mettre en sommeil l'électronique;
Mais, dès lors, le node n'est plus accessible depuis la centrale car, si j'ai bien lu(est-ce bien le cas?), il n'est pas possible de réveiller un node qui "dors";
Alors j'ai pensé envoyer un hardbeat au controleur a chaque réveil et si un ordre d'ouverture est pendant alors l'ordre est envoyé durant la période d'activité du node que je peux faire durer le temps d'etre certain de pouvoir recevoir un ordre potentiel...
Est-ce jouable ainsi ?
PS:J'ai recu mes H-bridges; Je vais pouvoir faire des essais sur table...

boum
Messages : 135
Enregistré le : 18 janv. 2019, 11:34
Localisation : France

Re: Electrovanne bi-stable et contrôle du bon fonctionnement

Message par boum »

Pour le bug, c'est pour ça qu'il est conseillé de fournir le schéma en entier (pareil pour les scripts domoticz). Le child ID 0 n'est pas réservé, le 255 oui. Il y a peut-être une variable non initialisée qq part.

Pour le sommeil des dispositifs, la philosophie de mySensors est d'avoir tous les actionneurs réveillés en permanence pour pourvoir recevoir les messages de la passerelle. Les capteurs peuvent dormir.

Un moyen de contourner cela est bien de réveiller périodiquement le nœud. Mais plutôt que d'attendre un certain temps un hypothétique message, il est possible de demander une donnée à un autre nœud (dont la passerelle).

https://www.mysensors.org/download/sens ... sting-data
Quand la vanne se réveille (périodiquement ou changement d'état), elle envoie un request(), attend 1s (ou moins) le temps de recevoir la donnée dans le receive().

Il faut que la passerelle ou un autre nœud alimenté en permanence puisse gérer cette demande, par exemple en stockant le dernier ordre envoyé par le controleur à la passerelle.
Domoticz v4.10717 sur Pi³ / Z-Wave / RFXCom

Répondre