Arduino & Domoticz

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 ...
petrapi
Messages : 19
Inscription : 10 mars 2018, 16:41

Re: Arduino & Domoticz

Message 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.
Bobardui
Messages : 28
Inscription : 23 févr. 2024, 21:18

Re: Arduino & Domoticz

Message par Bobardui »

Ah ok !
Je n'ai plus qu'à me mettre les mains dans le cambouis
Merci pour ces éclaircissements
Bobardui
Messages : 28
Inscription : 23 févr. 2024, 21:18

Re: Arduino & Domoticz

Message 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"));
          
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: Arduino & Domoticz

Message 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 ;-)
Dernière modification par Keros le 28 févr. 2024, 06:38, modifié 1 fois.
Raison : Citation supprimée. Merci de ne pas citer le message précédent lors d'une réponse directe.
Bobardui
Messages : 28
Inscription : 23 févr. 2024, 21:18

Re: Arduino & Domoticz

Message 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
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Arduino & Domoticz

Message 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));
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Bobardui
Messages : 28
Inscription : 23 févr. 2024, 21:18

Re: Arduino & Domoticz

Message par Bobardui »

Merci Boum

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

Code : Tout sélectionner

messageFuite[11] += zoneIndex;
Bobardui
Messages : 28
Inscription : 23 févr. 2024, 21:18

Re: Arduino & Domoticz

Message 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
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Arduino & Domoticz

Message par Keros »

Normalement, tu as des notifications possibles sur tous les widgets, même mesures ou températures.

Sinon, il faut faire un script.
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
Bobardui
Messages : 28
Inscription : 23 févr. 2024, 21:18

Re: Arduino & Domoticz

Message 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 ?
Répondre