arduino yun bug au bout de 5 min

Bonjour,

j'ai besoin d'aide car j'ai fait un programme qui analyse un fichier xml d'un de mes systems domotique.

tout fonctionne bien mais au bout de 5 a 10 minutes l'arduino ne réagit plus. pourtant il est bien connecté au wifi et je peux bien téléverser le code.

merci pour votre aide

Fred

bonjour, sans plus de détails, difficile de répondre. cela peut venir de beaucoup de choses. boucle infinie, overflow, etc....

re-bonsoir,

voici mon code:

#include <Bridge.h>//On démarre la librarie Bridge pour communiquer entre Linino et atmega32u4
#include <YunServer.h>//On démarre la librarie YunServer qui démarre le serveur coté linino
#include <YunClient.h>//On démarre la librarie YunClient qui démarre le serveur web coté linino
#include <HttpClient.h>
#include <TextFinder.h>
#include<string.h>

YunServer server;
IPAddress server2(xx,xxx,xxx,xxx);
YunClient client;


const char* pass = "Authorization: Basic xxxxxxxxxxxxxx";
char etat[4];

TextFinder finder( client );
  
// Pin mapping
const int out1 = 12;  // relais

const int sw1 = 2;  // bouton
const int sw2 = 3;  // bouton
const int sw3 = 4;  // bouton
const int sw4 = 5;  // bouton
const int sw5 = 6;  // bouton
const int sw6 = 8;  // bouton

int etat_sw1;  // bouton
int etat_sw2;  // bouton
int etat_sw3;  // bouton
int etat_sw4;  // bouton
int etat_sw5;  // bouton
int etat_sw6;  // bouton



/*-------------------------------------------------------------------------------------
      SETUP
 -------------------------------------------------------------------------------------*/


void setup() {

  Bridge.begin();
  
  Serial.begin(115200);
  delay(10);


 
  pinMode(out1, OUTPUT);//on définit le port 13 en sortie

  pinMode(sw1, INPUT_PULLUP);//on définit le port 13 en sortie
  pinMode(sw2, INPUT_PULLUP);//on définit le port 13 en sortie
  pinMode(sw3, INPUT_PULLUP);//on définit le port 13 en sortie
  pinMode(sw4, INPUT_PULLUP);//on définit le port 13 en sortie
  pinMode(sw5, INPUT_PULLUP);//on définit le port 13 en sortie
  pinMode(sw6, INPUT_PULLUP);//on définit le port 13 en sortie

  server.listenOnLocalhost(); //On n'accepte que les connexions venant du meme réseau
  server.begin();//On lance le seveur

  Serial.println ("Hello");
  Console.println("Hello");
}
/*-------------------------------------------------------------------------------------
      LOOP
 -------------------------------------------------------------------------------------*/
void loop() {


xml();
action_xml();


delay(200);

}


/*-------------------------------------------------------------------------------------
      ETAT XML
 -------------------------------------------------------------------------------------*/

void xml() {
 
   if (client.connect(server2, 50)) {           // Connexion au serveur web
   
//fonction permettant d’effectuer une requete HTTP

    Serial.println(" connecting… ");
    Console.println("connecting...");
 //  if (client.connect(server2, 50)) {           // Connexion au serveur web
    client.println(F("GET /cgi-bin/status.xml HTTP/1.0")); // Demande de flux.xml en HTTP 1.0
    //client.println(F("Host: svweb.local"));    // Virtual Host 
    client.println(F("Accept: */*")); // */
    // A cause d'un bug de l'ide arduino tout /* d’où avoir son */ associé même dans une chaîne de char
    client.println();
    client.println();
     Serial.println("xml ok");
  //  Console.println("xml ok");
// On cherche l’attribut temp
if(finder.find("13") ){//vidage ecumeur
finder.getString("<state>","</state>",etat,(4));

//On affiche cette valeur à des fins de débuggage
Serial.print(" Etat  " );
Console.println("Etat    ");
Serial.println(etat);
}
else{
Serial.print(" Pas de donnees ");
Console.println("Pas de données");
}

     
}
else {
//si la connection échoue
Serial.println(" connection failed ");
Serial.println(" disconnecting. ");
Console.println(" connection failed ");
Console.println(" disconnecting. ");
client.stop();
}
 
}

/*-------------------------------------------------------------------------------------
      ACTION XML
 -------------------------------------------------------------------------------------*/

void action_xml() 
{
scanf("%s", etat);//pas de &
if((strcmp(etat,"AON")  == 0) || (strcmp(etat,"ON")  == 0))// Si le flux contient "1" on allume la LED
          {
           // Serial.println("ok");
            digitalWrite(out1, HIGH);   // Allume la LED
           // delay(1000);                  // Attend une seconde
          } 
          else if((strcmp(etat,"AOF")  == 0) || (strcmp(etat,"OFF")  == 0))// Si le flux contient "2" on éteint la LED
          {
          //  Serial.println("no");
            digitalWrite(out1, LOW);   // Éteint la LED
          //  delay(1000);                   // Attend une seconde
          }
  delay(100); // On fait cela toutes les 50 millisecondes


}

merci pour votre aide

Fred

mets une ligne de code pour afficher la mémoire dispo. mets ton fichier xml ici aussi pour voir.

Bonjour,

voici ce qu’il affiche en memory free1481

pour le xml le voici:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<status software="4.40_8F15" hardware="1.0">
<hostname>apex</hostname>
<serial>AC4:52515</serial>
<timezone>1.00</timezone>
<date>01/04/2016 08:04:46</date>
<power>
<failed>01/02/2016 12:10:09</failed>
<restored>01/02/2016 12:10:48</restored>
</power>
<probes>
<probe>
<name>Temp</name>
<value>25.1</value>
<type>Temp</type>
</probe>
<probe>
<name>PhBac</name>
<value>7.91</value>
<type>pH</type>
</probe>
<probe>
<name>PhRac</name>
<value>6.79</value>
<type>pH</type>
</probe>
<probe>
<name>Conso</name>
<value>1.5</value>
<type>Amps</type>
</probe>
</probes>
<outlets>
<outlet>
<name>Led_Blanc</name>
<outputID>0</outputID>
<state>AOF</state>
<deviceID>base_Var1</deviceID>
</outlet>
<outlet>
<name>Led_Mixte</name>
<outputID>1</outputID>
<state>AOF</state>
<deviceID>base_Var2</deviceID>
</outlet>
<outlet>
<name>Led_Bleu_Uv</name>
<outputID>2</outputID>
<state>AOF</state>
<deviceID>base_Var3</deviceID>
</outlet>
<outlet>
<name>Ventirad</name>
<outputID>3</outputID>
<state>TBL</state>
<deviceID>base_Var4</deviceID>
</outlet>
<outlet>
<name>Alarme_Son</name>
<outputID>4</outputID>
<state>AOF</state>
<deviceID>base_Alarm</deviceID>
</outlet>
<outlet>
<name>Warning_Son</name>
<outputID>5</outputID>
<state>AOF</state>
<deviceID>base_Warn</deviceID>
</outlet>
<outlet>
<name>Alarme_Mail</name>
<outputID>6</outputID>
<state>AOF</state>
<deviceID>base_email</deviceID>
</outlet>
<outlet>
<name>Remontee</name>
<outputID>7</outputID>
<state>AON</state>
<deviceID>4_1</deviceID>
</outlet>
<outlet>
<name>Ecumeur</name>
<outputID>8</outputID>
<state>AON</state>
<deviceID>4_2</deviceID>
</outlet>
<outlet>
<name>Chauffage</name>
<outputID>9</outputID>
<state>AON</state>
<deviceID>4_3</deviceID>
</outlet>
<outlet>
<name>Electro_Co2</name>
<outputID>10</outputID>
<state>AOF</state>
<deviceID>4_4</deviceID>
</outlet>
<outlet>
<name>Led_Refuge</name>
<outputID>11</outputID>
<state>AON</state>
<deviceID>4_5</deviceID>
</outlet>
<outlet>
<name>Osmolation</name>
<outputID>12</outputID>
<state>AOF</state>
<deviceID>4_6</deviceID>
</outlet>
<outlet>
<name>Vidage_Ecume</name>
<outputID>13</outputID>
<state>ON</state>
<deviceID>Cntl_A1</deviceID>
</outlet>
<outlet>
<name>Lune</name>
<outputID>14</outputID>
<state>OFF</state>
<deviceID>Cntl_A2</deviceID>
</outlet>
<outlet>
<name>Orages</name>
<outputID>15</outputID>
<state>AOF</state>
<deviceID>Cntl_A3</deviceID>
</outlet>
<outlet>
<name>Nuages</name>
<outputID>16</outputID>
<state>AOF</state>
<deviceID>Cntl_A4</deviceID>
</outlet>
<outlet>
<name>Heater_A5</name>
<outputID>17</outputID>
<state>AOF</state>
<deviceID>Cntl_A5</deviceID>
</outlet>
<outlet>
<name>Chiller_A6</name>
<outputID>18</outputID>
<state>AOF</state>
<deviceID>Cntl_A6</deviceID>
</outlet>
<outlet>
<name>CO2_A7</name>
<outputID>19</outputID>
<state>AON</state>
<deviceID>Cntl_A7</deviceID>
</outlet>
<outlet>
<name>Ozone_A8</name>
<outputID>20</outputID>
<state>AOF</state>
<deviceID>Cntl_A8</deviceID>
</outlet>
<outlet>
<name>Vortech_1</name>
<outputID>21</outputID>
<state>TBL</state>
<deviceID>3_1</deviceID>
<xstatus>OK</xstatus>
</outlet>
<outlet>
<name>Vortech_2</name>
<outputID>22</outputID>
<state>TBL</state>
<deviceID>3_2</deviceID>
<xstatus>OK</xstatus>
</outlet>
</outlets>
</status>

merci pour ton aide