Page 2 sur 5

Re: Arduino & Domoticz

Publié : 26 févr. 2024, 23:34
par petrapi
Oui les pins TX et RX,(UART) comme le port USB(SERIAL) de l'arduino permettent une communication série.
Donc en principe tout ce que tu as pu lire ci-dessus est applicable aux 2 branchements.

Avec un rappel sur l'UART, il te faudra probablement adapter les niveaux de tensions 3v3/5v.

Re: Arduino & Domoticz

Publié : 27 févr. 2024, 20:48
par Bobardui
Ah ok !
Je n'ai plus qu'à me mettre les mains dans le cambouis
Merci pour ces éclaircissements

Re: Arduino & Domoticz

Publié : 27 févr. 2024, 22:53
par Bobardui
Après quelques essais, j'ai enfin obtenu le message et j'ai compris une partie du fonctionnement de l'interfaçage de l'Arduino avec Domoticz
Maintenant j'ai besoin de votre aide pour comprendre comment fonctionne l'incrémentation du N° de la zone de ma boucle "FOR" présente dans Arduino

Je vous joint la partie du code Arduino qui affecte le N° de la Zone qui est en " Fuite ", cela sera plus facile pour vous d'identifier ma problématique car dans Domoticz, je n'arrive pas à afficher " fuite Zone 4 " quand celle ci est présente sur mon lcd Arduino

Code : Tout sélectionner

  for (auto &zone : zones)  // effectue le traitement pour toutes les zones
  {

    if (digitalRead(zone.broche) == HIGH) {  //Lecture de l'information de l'arrosage de la Zone

      switch (zone.etat) {
        case REPOS:
          digitalWrite(brocheElectrovanne, HIGH);
          if (debitInstantane > zone.seuilDebitCoupe) {
            zone.tempsDebutDebit = tempsActuel;
            zone.etat = ACTIF;
          }
          break;

        case ACTIF:
          if (debitInstantane > zone.seuilDebitCoupe) {
            if (tempsActuel - zone.tempsDebutDebit >= delaiFermetureElectrovanne) {
              digitalWrite(brocheElectrovanne, LOW);
              zone.etat = STOP;
              zone.tempsDebutEtat = tempsActuel;
            }
          } else {
            zone.etat = REPOS;
          }
          break;

        case STOP:
          //lcd.clear();  // Effacer l'écran après le message de démarrage
          lcd.setCursor(0, 2);
          lcd.print("Fuite Zone");       // Affiche un avertissement de fuite
          lcd.print(&zone - zones + 1);  // affiche numéro de zone
          //A placer a l'endroit de ton code ou tu veux remonter la fuite dans domoticz:
          //send(msgFuiteZone1.set(1));
          send(msgFuiteTexte.set("Fuite zone 1"));
          

Re: Arduino & Domoticz

Publié : 28 févr. 2024, 00:39
par Flying Domotic
La description "officielle" se trouve à https://en.cppreference.com/w/cpp/language/range-for

En gros, zone est un pointeur sur chaque élément de la table zones, du premier au dernier. Ce n'est pas une façon très courante de créer une boucle, et ça n'est pas supporté par les versions de C++ avant 2011, mais ça doit marcher ;-)

Re: Arduino & Domoticz

Publié : 28 févr. 2024, 09:38
par Bobardui
Merci Flying
Très intéressant ces explications
Mais mon problème est que tout fonctionne correctement sur Arduino
j'ai bien le bon affichage sur le lcd Arduino
par contre j'aimerais pouvoir transférer les mêmes messages sur Domoticz avec le même principe de la boucle FOR, si cela est possible

Re: Arduino & Domoticz

Publié : 28 févr. 2024, 10:24
par boum
Le calcul de la zone se fait ici (arithmétique de pointeurs un peu obscure) :

Code : Tout sélectionner

     lcd.print(&zone - zones + 1);  // affiche numéro de zone
Pour avoir la même chose avec l'envoi du message :

Code : Tout sélectionner

         case STOP:
         const int zoneIndex = &zone - zones + 1;
          //lcd.clear();  // Effacer l'écran après le message de démarrage
          lcd.setCursor(0, 2);
          lcd.print("Fuite Zone");       // Affiche un avertissement de fuite
          lcd.print(zoneIndex);  // affiche numéro de zone
          //A placer a l'endroit de ton code ou tu veux remonter la fuite dans domoticz:
          //send(msgFuiteZone1.set(zoneIndex));
          char messageFuite[] = "Fuite zone 0";
          messageFuite[11] += zoneIndex; 
          send(msgFuiteTexte.set(messageFuite));

Re: Arduino & Domoticz

Publié : 28 févr. 2024, 21:21
par Bobardui
Merci Boum

Cela fonctionne
Petite question : le chiffre [11] correspond à quoi ?

Code : Tout sélectionner

messageFuite[11] += zoneIndex;

Re: Arduino & Domoticz

Publié : 28 févr. 2024, 21:52
par Bobardui
Comment faire une notification à partir d'une mesure ?
j'ai la possibilité à partir d'un interrupteur ou d'une température mais pas avec une mesure ?
Merci par avance

Re: Arduino & Domoticz

Publié : 28 févr. 2024, 21:59
par Keros
Normalement, tu as des notifications possibles sur tous les widgets, même mesures ou températures.

Sinon, il faut faire un script.

Re: Arduino & Domoticz

Publié : 28 févr. 2024, 22:58
par Bobardui
Merci Keros,
Mais qu'est-ce qui fait que le Widget n'a pas de Notification ?

PS : je n'arrive pas à insérer une image ?