Forum eedomus http://forum.eedomus.fr/ |
|
Récupérer une température sur un arduino http://forum.eedomus.fr/viewtopic.php?f=15&t=557 |
Page 1 sur 1 |
Auteur: | Pat11 [ 30 Oct 2012 23:18 ] |
Sujet du message: | Récupérer une température sur un arduino |
Bonsoir je cherche à récupérer la température sur un arduino à l'aire d'une requête HTTP, voici mon programme sur l'arduino client.println("HTTP/1.0 200 OK\r\nContent-type : text/html\r\n\r\n"); client.println("<?xlm version=\"1.0\" encoding=\"ISO-8859-1\"?>"); client.println("<ARDUINO>"; client.print("<TEMP>"; client.print(tm,DEC); client.print("</TEMP>"; client.println("</ARDUINO>"); j'essaye avec xpath et j' ai erreur merci d'avance pour votre aide |
Auteur: | DjMomo [ 31 Oct 2012 12:59 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
Quelle est la valeur de ton xpath ? Quelle est l'erreur affichée ? |
Auteur: | Pat11 [ 31 Oct 2012 19:15 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
bonsoir je mets comme valeur URL http://192.168.1.65 XPATH //ARDUINO/TEMP le message erreur est simplement erreur |
Auteur: | DjMomo [ 31 Oct 2012 19:49 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
Un seul slash avant ARDUINO il me semble -> /ARDUINO/TEMP |
Auteur: | Pat11 [ 02 Nov 2012 08:53 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
bonjour merci de la réponse mais j ai déjà essayé, quand j affiche le resultat dans une page internet en code source jai le résultat suivant: <?xml version="1.0" encoding="ISO-8859-1"?> <ARDUINO> <TEMP>4</TEMP></ARDUINO> donc je pense que je fais une erreur dans la connections avec xPath ou url quelqu'un aurais une idée merci |
Auteur: | DjMomo [ 02 Nov 2012 09:48 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
Encodage UTF-8 et non ISO-8859-1. Il te manque aussi un espace entre le guillemet fermant de ISO et le point d'interrogation, première ligne. Enfin, il ne faut pas de retour à la ligne. Tout tient normalement sur une seule ligne. |
Auteur: | Pat11 [ 07 Nov 2012 19:22 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
Bonsoir j arrive toujours pas à récupérer mes données d'un arduino, j ai un message d'erreur avec aperçu du contenu et quand je clic dessus il apparait une petite fenêtre avec le contenu xml et le résultat encadré par les balises. je ne sais pas comment on peut insérer une image dans la discussion. merci de votre aide |
Auteur: | rc eedomus [ 20 Nov 2013 17:38 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
Bonsoir Pat11, Je rencontre le même problème que vous en essayant d'implémenter une réponse au niveau de mon programme ARDUINO malgré des tests positifs du XPATH. Avez-vous résolu ce problème ? quelle est la syntaxe adéquat si c'était le cas ? Merci d'avance RC |
Auteur: | Pat11 [ 21 Nov 2013 05:45 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
Bonjour j'ai réussi a récupérer des données en xpl mais par contre j'ai pas réussi à commander l'arduino en xpl si vous voulez je peux vous donner le programme. Patrick |
Auteur: | rc eedomus [ 25 Nov 2013 05:55 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
Bonjour, Merci pat11, je cherche à connaitre la bonne syntaxe "HTTP" à renvoyer depuis l'ARDUINO (mode serveur web) à la box pour récupérer des données du capteur dans eedomus. PI, j'ai également essayé d'implémenter le protocole XPL au niveau de l'ARDUINO mais sans succès (pb gestion mémoire apparemment). Merci d'avance RC |
Auteur: | Pat11 [ 25 Nov 2013 18:26 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
Bonsoir je te mets se que j'avais fais avec un arduino en xpl , j’espère que sa sera claire car je suis pas un spécialiste, mais sa fonctionnais bien je l’utilise pour les températures de la piscine et son niveau /* Inclus la librairie SPI pour le module Ethernet Shield */ #include <SPI.h> #include <tools.h> /* Inclus la librairie Ethernet */ #include <Client.h> #include <Ethernet.h> #include <EthernetUdp.h> #include <Server.h> #include <OneWire.h> #include <DallasTemperature.h> #include "xPL.h" xPL xpl; // Définition de la pin arduino utilisée pour le bus OneWire #define ONE_WIRE_BUS 2 // Setup a oneWire instance to communicate with any OneWire devices OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); //Surface DeviceAddress TempSurface = { 0x28, 0x72, 0xFF, 0x5C, 0x04, 0x00, 0x00, 0x75 }; //Fond DeviceAddress TempFond = { 0x28, 0x5F, 0x9E, 0x5D, 0x04, 0x00, 0x00, 0xDA }; char xPLSchema[20]; char Tp_str[5]; int Adr; char Adr_str[13]; float temperature; char TempChar[10]; char* ValeurPlein ; char* ValeurCom; char* Total; /* Variables de configuration ethernet */ byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x9B, 0x73 }; IPAddress ip(192,168,1,72); /* Variables xPL */ char* xPLType = "xpl-trig"; char* xPLSource = "arduino-lan.piscine"; char* xPLTarget = "*"; char packetBuffer[500]; /* Adresse de Broadcast */ byte BroadcastIP[] = {192, 168, 1, 70}; /* Port xPL */ unsigned int xplPort = 3865; EthernetUDP Udp; unsigned int TargetPort = 3639; /* Fonction d'initialisation */ void setup() { xpl.Process(); Serial.begin(115200); sensors.begin(); sensors.setResolution(TempSurface,10); sensors.setResolution(TempFond,10); // Initialise la connexion ethernet Ethernet.begin(mac,ip); Udp.begin(6600); pinMode(4,INPUT); pinMode(5,INPUT); pinMode(6,INPUT); pinMode(7,INPUT); Serial.println("Initialisation terminee."); xpl.SendExternal = &SendUdPMessage; // pointer to the send callback xpl.AfterParseAction = &AfterParseAction; // pointer to a post parsing action callback xpl.SetSource_P(PSTR("xpl"), PSTR("arduino"), PSTR("test")); // parameters for hearbeat message } void loop() { //commande de récupération des températures sensors.requestTemperatures(); //récup de la valeur temperature surface et mise en centi-degrés int Etat1 = sensors.getTempC(TempSurface); if (Etat1 != temperature) { temperature = Etat1; Adr = 1; delay (1000); sprintf( Adr_str, "%s 0x100%d", "th3", Adr); ftoa(TempChar,temperature,1); sprintf(xPLSchema, "%s", "sensor.basic"); xPLSendSensor(xPLSchema,Adr_str,"temp",TempChar); } //récup de la valeur fond et mise en centi-degrés int Etat2 = sensors.getTempC(TempFond); if (Etat2 != temperature){ temperature = Etat2; Adr = 2; delay(1000); sprintf( Adr_str, "%s 0x100%d", "th3", Adr); ftoa(TempChar,temperature,1); sprintf(xPLSchema, "%s", "sensor.basic"); xPLSendSensor(xPLSchema, Adr_str,"temp",TempChar); } //calcul temperature moyenne int Etat3 = (sensors.getTempC(TempSurface) + sensors.getTempC(TempFond))/2; if (Etat3 != temperature){ temperature = Etat3; Adr = 3; delay (1000); sprintf( Adr_str, "%s 0x100%d", "th3", Adr); ftoa(TempChar,temperature,1); sprintf(xPLSchema, "%s", "sensor.basic"); xPLSendSensor(xPLSchema, Adr_str,"temp",TempChar); } //Calcul niveau int Etat4 = digitalRead (4); int Etat5 = digitalRead (5); int Etat6 = digitalRead (6); int Etat7 = digitalRead (7); //if (Etat != Total) { // Total = Etat; if (Etat4 == 1) { ValeurPlein = "0"; } if (Etat5 ==1) { ValeurPlein = "25"; } if (Etat6 == 1) { ValeurPlein = "50"; } if (Etat7 == 1) { ValeurPlein = "100"; } if (ValeurPlein != Total) { Total = ValeurPlein; Adr = 4; ValeurCom = "dim"; //delay (1000); sprintf( Adr_str, "%s%d" , "N", Adr); sprintf(xPLSchema, "%s", "x10.basic"); xPLSendCommandDim(xPLSchema, Adr_str,ValeurCom,ValeurPlein); } int packetSize = Udp.parsePacket(); if(packetSize) { char xPLMessageBuff[XPL_MESSAGE_BUFFER_MAX]; // read the packet into packetBufffer Udp.read(xPLMessageBuff, XPL_MESSAGE_BUFFER_MAX); // parse message xpl.ParseInputMessage(xPLMessageBuff); } } //Message pour les capteurs xpl void xPLSendSensor(char* xPLSchema, char* Capteur, char* Type, char* Valeur) { sprintf( packetBuffer, ""); strcat( packetBuffer, xPLType); strcat( packetBuffer, "\n{\nhop=1\nsource="); strcat( packetBuffer, xPLSource ); strcat( packetBuffer, "\ntarget=" ); strcat( packetBuffer, xPLTarget ); strcat( packetBuffer, "\n}\n" ); strcat( packetBuffer, xPLSchema ); strcat( packetBuffer, "\n{\n" ); sprintf( packetBuffer, "%sdevice=%s\n", packetBuffer, Capteur ); sprintf( packetBuffer, "%stype=%s\n", packetBuffer, Type ); sprintf( packetBuffer, "%scurrent=\%s\n", packetBuffer, Valeur ); sprintf( packetBuffer, "%s}\n", packetBuffer ); Serial.println(packetBuffer); Udp.beginPacket(BroadcastIP, xplPort); Udp.write(packetBuffer); Udp.endPacket(); delay(10000); } //Message pour les actionneurs xpl void xPLSendCommand(char* xPLSchema, char* Capteur, char* Valeur) { sprintf( packetBuffer, ""); strcat( packetBuffer, xPLType); strcat( packetBuffer, "\n{\nhop=1\nsource="); strcat( packetBuffer, xPLSource ); strcat( packetBuffer, "\ntarget=" ); strcat( packetBuffer, xPLTarget ); strcat( packetBuffer, "\n}\n" ); strcat( packetBuffer, xPLSchema ); strcat( packetBuffer, "\n{\n" ); sprintf( packetBuffer, "%sdevice=%s\n", packetBuffer, Capteur ); sprintf( packetBuffer, "%scommand=\%s\n", packetBuffer, Valeur ); sprintf( packetBuffer, "%s}\n", packetBuffer ); Serial.println(packetBuffer); Udp.beginPacket(BroadcastIP, xplPort); Udp.write(packetBuffer); Udp.endPacket(); delay(10000); } void xPLSendCommandDim(char* xPLSchema, char* Capteur, char* Com, char* Valeur) { sprintf( packetBuffer, ""); strcat( packetBuffer, xPLType); strcat( packetBuffer, "\n{\nhop=1\nsource="); strcat( packetBuffer, xPLSource ); strcat( packetBuffer, "\ntarget=" ); strcat( packetBuffer, xPLTarget ); strcat( packetBuffer, "\n}\n" ); strcat( packetBuffer, xPLSchema ); strcat( packetBuffer, "\n{\n" ); sprintf( packetBuffer, "%sdevice=%s\n", packetBuffer, Capteur ); sprintf( packetBuffer, "%scommand=\%s\n", packetBuffer, Com ); sprintf( packetBuffer, "%slevel=\%s\n", packetBuffer, Valeur ); sprintf( packetBuffer, "%s}\n", packetBuffer ); Serial.println(packetBuffer); Udp.beginPacket(BroadcastIP, xplPort); Udp.write(packetBuffer); Udp.endPacket(); delay(10000); } void SendUdPMessage(char *buffer) { Udp.beginPacket(BroadcastIP, xplPort); Udp.write(buffer); Udp.endPacket(); } void AfterParseAction(xPL_Message * message) { if (xpl.TargetIsMe(message)) { if (message->IsSchema_P(PSTR("lighting"), PSTR("basic"))) { Serial.println(PSTR("is lighting.basic")); } } // show message Serial.println(message->toString()); } bon courage si tu as des questions hésite pas mais je suis pas un expert |
Auteur: | DjMomo [ 25 Nov 2013 18:45 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
Utilisez les balises [code] et [/code] pour une meilleure visibilité... |
Auteur: | rc eedomus [ 25 Nov 2013 18:45 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
Merci pour cet exemple, je vais l'étudier avec attention. Ton premier message en 2012 faisait référence à une requete HTTP : Bonsoir je cherche à récupérer la température sur un arduino à l'aire d'une requête HTTP, voici mon programme sur l'arduino client.println("HTTP/1.0 200 OK\r\nContent-type : text/html\r\n\r\n"); client.println("<?xlm version=\"1.0\" encoding=\"ISO-8859-1\"?>"); client.println("<ARDUINO>"; client.print("<TEMP>"; client.print(tm,DEC); client.print("</TEMP>"; client.println("</ARDUINO>"); j'essaye avec xpath et j' ai erreur merci d'avance pour votre aide Aurais-tu trouvé depuis la bonne syntaxe qui permet de récupérer le(s) paramètre(s) dans la box ? Cordialement |
Auteur: | Pat11 [ 25 Nov 2013 19:11 ] |
Sujet du message: | Re: Récupérer une température sur un arduino |
Non j'ai abandonnée c'etait en XML |
Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/ |