Garder connection internet ?

Bonjour,
J'ai crée un programmateur avec un module Ethernet. en Journée, ce programmateur envois en permanence des données sur google sheet toutes les 2 minutes (pour analyse plus tard).
Le soucis c'est qu'ensuite la nuit la communication s’interrompt, et souvent le lendemain, il n'y a pas d'envois.
Donc question : comment garder une communication toujours active ? (faut-il interroger un site, continuer les transmissions ?)

merci

Avez vous pensé à utiliser [url=https://www.arduino.cc/en/Reference/EthernetMaintain]Ethernet.maintain()[/url] ou utilisez vous la classe String qui générerait un problème mémoire au bout d’un certain temps, ou autre bug de dépassement de tableau/mémoire....

Pleins de raisons, la première potentiellement due à un bug ou oubli dans votre code... comme on ne le voit pas, on ne peut pas vous aider

Bonjour,

je ne connait pas Ethernet.maintain(), je vais regarder cela de près alors.

Voici le code :

void SetupEthernet()
{
     defaut_init_ethernet = false;    
 
*/// start Ethernet
     #if SERIAL  
          Serial.println("INIT Ethernet");  
     #endif
     Ethernet.begin(ArduinoMAC, ArduinoIPAddress);
     
     // Check for Ethernet hardware present
     if (Ethernet.hardwareStatus() == EthernetNoHardware) 
     {
          #if SERIAL  
               Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
          #endif
          defaut_init_ethernet = true;
       }
     if (Ethernet.linkStatus() == LinkOFF) 
     {
          defaut_init_ethernet = true;
          #if SERIAL  
               Serial.println("Ethernet cable is not connected.");
          #endif
     }
     #if SERIAL     
          Serial.print(F(" > IP Serveur : "));  
          Serial.println (Ethernet.localIP ());
          Serial.print(F(" > subnetMask : ")); 
          Serial.println (Ethernet.subnetMask ());
          Serial.print(F(" > gatewayIP : ")); 
          Serial.println (Ethernet.gatewayIP ());
          Serial.print(F(" > dnsServerIP : ")); 
          Serial.println (Ethernet.dnsServerIP ());
          Serial.println("=== Fin Initialisation ETHERNET===="); 
          Serial.println("");
     #endif    
}

void GoogleSheet()
{
     float loc_temperature_piscine =  temperature_piscine;
     float loc_Ph = valeurPH;
     float loc_pression =  pression_piscine;
     float loc_temperature_solaire = temperature_solaire;
     
//API service Client through PushingBox then relayed to Google  
     if (client.connect("api.pushingbox.com", 80))// conection a pushingbox
     {
            Serial.println("Envois donnees sur GOOGLE sheet");
            client.print("GET /pushingbox?devid=");
            client.print(DEVID_GOOGLE_SHEET);
            client.print("&TemperatureData=" + (String) (loc_temperature_piscine/10)
                         + "&PhData="      + (String) (loc_Ph/100)
                         + "&BromeData="     + (String) valeur_brome_piscine
                         + "&PressionData="      + (String) (loc_pression/100)
                         + "&SolaireData="      + (String) (loc_temperature_solaire/10));
            client.println(" HTTP/1.1");
            client.print("Host: ");
            client.println("api.pushingbox.com");
            client.println("User-Agent: Arduino piscine");
            client.println("");

     }
}

Toujours bon de s’assurer que tout va bien côté DHCP si vous n’êtes pas en IP fixe

Vous avez plein de String, ça peut aussi être le soucis… Comme c’est chiant à debugger je commencerais par les virer et utiliser des cstrings et les fonctions de stdlib.h et string.h ou simplement faire des print séparés