Récupérer la valeur d'une seule sonde température

Forums Serveur WES Installation & Configuration Récupérer la valeur d'une seule sonde température

  • Post
    kouros
    Participant

      Bonjour, je voudrais avoir la formulation d’une requête pour récupérer la valeur d’une seule sonde de température a utiliser pour un autre système de gestion  Arduino.

      Je vous explique, j’ai Arduino qui gère ma piscine avec deux sondes de températures air et eau.

      Je voudrais enlevé la sonde eau pour la mettre sur le Wes et que l’Arduino aille récupérer la valeur de la sonde température géré par le Wes.

      Explication: Sur l’Arduino situé dans le local piscine, j’ai un écran LCD qui affiche toutes les infos, donc j’aimerais garder en visu l’info température.

      Dans la doc je n’ai pas vraiment trouvé la formulation pour cela, si quelqu’un peut m’aider ?

      Merci

      Je vous remercie

      0
      0
    Vous lisez 4 fils de discussion
    • Replies
        nicolas_cartelec
        Maître des clés

          L’arduino à un shield ethernet ?

          0
          0
          kouros
          Participant

            Bonjour, oui il a un shield ethernet, pour le moment j’envoi les données sur un serveur pour faire un graphe de la temperature d’eau et air.

             

            0
            0
            nicolas_cartelec
            Maître des clés

              il faut utiliser les commande UDP ou TCP (voir la doc du WES) c’est le plus simple.

              0
              0
              cdlog2
              Modérateur

                Bonjour,

                La requête UDP ou TCP pour lire la valeur d’une sonde = gW0xx (xx = numéro de la sonde 00 <> 31

                Voici un  exemple éclaté pour lire toutes les sondes du WES par requête UDP à partir d’un Arduino.

                On suppose que l’Arduino est équipé d’un shield ethernet et est déjà connecté au même réseau local (WIFI ou RJ45) que le WES.

                Au préalable il faut préciser qu’elle est le numéro de Port UDP à utilisé par le WES depuis les menus M2M du WES.

                Include et Variables Globale  pour cet exemple:

                #include <WiFiUdp.h>

                bool RW = false;                                                                     // FlipFlop Envoie/Lecture requête UDP
                int numTemp = 0;                                                                 // Numéro de la sonde courante à lire (init à zero pour démarrer la Lect)
                IPAddress WesServer = IPAddress(192, 168, x, x);      // Adresse IP du WES
                uint16_t UDPPort = 1000;                                                // ex : numéro de Port UDP déclaré dans le M2M du WES
                const int PACKET_SIZE = 20;                                          // Taille buffer de réponse UDP
                char packetBuffer[ PACKET_SIZE];                                // buffer reception réquete UDP
                WiFiUDP Udp;                                                                     // Instance UDP

                ///////////

                setup() {

                ///////////////////////////////////////////////////////////////////////

                // On suppose le Arduino est déjà connecté au LAN via le shield ethernet à partir d’ici

                Serial.println(« \nStarting connection to UDP server… »);
                Udp.begin(UDPPort);                                                       // Init de la connection UDP
                delay(500);

                }

                //////////////
                void loop() {

                if (!RW) {                                                                        // RW FALSE =  envoie une requete UDP au WES
                numTemp += 1;                                                        // n° sonde incrémental à lire
                if (numTemp > 31) numTemp = 1;                   // On lit toutes les sondes entre 1 <> 31
                sendPacket(WesServer, UDPPort, numTemp);         // envoie une requete lect sonde (n) UDP au WES
                RW=true;
                delay(500);                                                                                // tempo envoie
                }
                else if (Udp.parsePacket()) {                                               // RW TRUE = Verif réeponse requete UDP WES
                Serial.println(« packet UDP reçu »);
                int len = Udp.read(packetBuffer, PACKET_SIZE);   // lecture de la réponse UDP
                if (len > 0) {
                packetBuffer[len] = 0;                                                        // Prepare et affiche la valeur Temp réceptionnée
                String sval = String(packetBuffer);
                Serial.print(« Valeur sonde Temp num « );
                Serial.print(numTemp);
                Serial.print( » = « );
                Serial.println(sval);
                }

                RW=false;                                          // On prépare une nouvelle requête d’envoie UDP
                delay(2000);                                    // Lecture des sondes WES toutes les 2 secondes
                }
                }

                /////////////////////////////////////
                // Demande par envoie d’une requete UDP la valeur d’une sonde (n) au WES
                // arguments : Adresse IP Wes, num UDP port, num Sonde Temp
                void sendPacket(IPAddress& address, uint16_t port, int ntemp) {

                // Creation de la requete UDP lecture Sonde Temp = gW0xx (xx = num de la sonde 01 < > 31
                String sTemp = (ntemp < 10) ? String(« gW00 »)+String(ntemp,10) : String(« gW0 »)+String(ntemp,10);

                Udp.beginPacket(address, port);                                // UDP WES requests IP + Port
                Udp.write(sTemp.c_str(), sTemp.length());         // Envoie la requete UDP ex : gW001 = dme val sonde Temp 1
                Udp.endPacket();
                }

                Cordialement
                Christan

                 

                 

                 

                0
                0
                kouros
                Participant

                  Bonjour,  merci a vous 2 pour les réponses qui vont bien me servir, je ne connais pas encore la methode UPD utilisé, l’exemple donné me servira bien.

                  Merci

                  • Cette réponse a été modifiée le il y a 6 années et 11 mois par kouros.
                  0
                  0
              Vous lisez 4 fils de discussion
              • Vous devez être connecté pour répondre à ce sujet.