› Forums › Serveur WES › Installation & Configuration › Récupérer la valeur d'une seule sonde température
- Ce sujet contient 5 réponses, 3 participants et a été mis à jour pour la dernière fois par
kouros, le il y a 6 années et 11 mois.
- Post
-
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
00
- Replies
-
-
L’arduino à un shield ethernet ?
00 -
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.
00 -
il faut utiliser les commande UDP ou TCP (voir la doc du WES) c’est le plus simple.
00 -
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
00
-
- Vous devez être connecté pour répondre à ce sujet.