Blocco anomalo curl --data arduino Yun

Ciao a tutti,
abbiamo da pochi giorni comprato un arduino YUN ed abbiamo realizzato un mini progetto in cui alcuni dati vengono periodicamente (anche più di una volta al minuto) inviati ad un server tramite il comando:

curl --data "key=chiave&value=dato" http://mioserver.it/dest.php

fatto girare con la formula:

Process p;
p.begin(..);
p.addParameter(..);
p.run();

Abbiamo messo in funzione Arduino che ha funzionato per una decina d'ore per poi bloccarsi nella fase di invio dati (dopo il comando run). Riavviandolo più volte il blocco è avvenuto sempre più velocemente.

Dopo qualche giorno di riposo il gioco si è ripetuto, un funionamento più lungo seguito da altri più brevi.

In questa fase abbiam notato che possiamo raggiungere linux in ssh ed eseguire normalmente i comandi da shell.
Cosa ne pensate? quale può essere il problema?

Grazie
Carlo e Benny

Ho una forte nostalgia della mia sfera di cristalo.
Ciao Uwe

Ciao Uwe, ci spiace per la tua sfera di cristallo e grazie per aver condiviso con noi la tua nostalgia.

Siamo alle prime armi con arduino ed abbiam pensato che scrivendo sul forum qualcuno con più esperienza avrebbe potuto indicarci una strada per individuare il problema.

Non abbiamo postato il codice perchè sono 10 righe e ci sembrava superfluo: lettura del valore, acquisizione data, invio dati. Ma se serve lo postiamo volentieri.

Grazie a chi ha la pazienza di aiutarci
Carlo e Benny

uwefed:
Ho una forte nostalgia della mia sfera di cristalo.
Ciao Uwe

Te lo avevo detto di non mandarla dal mago Otelma per la ricarica di energia mistica :grin:

benman:
Ciao Uwe, ci spiace per la tua sfera di cristallo e grazie per aver condiviso con noi la tua nostalgia.

Siamo alle prime armi con arduino ed abbiam pensato che scrivendo sul forum qualcuno con più esperienza avrebbe potuto indicarci una strada per individuare il problema.

Non abbiamo postato il codice perchè sono 10 righe e ci sembrava superfluo: lettura del valore, acquisizione data, invio dati. Ma se serve lo postiamo volentieri.

Grazie a chi ha la pazienza di aiutarci
Carlo e Benny

La mia risposta voleva dire che mancano informazioni per poter capire e consigliarvi qualcosa.

@astrobeed
Sai anche Tu che dopo lo sai meglio .... La prossima volta Ti ascolto. promesso. :wink:

Ciao Uwe

ok scusate, allora questo è il codice, e quando si blocca l'ultimo stamp sul monitor seriale è "avvio il processo". Se possiamo estrapolare altro per poter aggiungere informazioni importanti fateci sapere come, grazie per la pazienza.

    #include <Process.h>
    #define fotoresistenza A0
    Process date;
    String timeString;
     
     
    void setup() {
      pinMode(A0,INPUT);
     
      Bridge.begin();
     
     
      Serial.begin(9600);
    }
     
    void loop() {
      delay(50);
     
      int val = analogRead(fotoresistenza);
     
      Serial.println(val);
     
        // chiedo la data
        date.begin("date");
        date.addParameter("+%D %T");
        date.run();
       
        while (date.running());
     
        while (date.available()>0) {
          timeString = date.readString();
      }
     
      timeString.trim();
     
      // Invio i dati al server
      runCurlCons(timeString, val);
     
    }
     
     
    // Funzione che invia i dati al server
    void runCurlCons(String dataOra, float value) {
     
      Process p;      
      Serial.println("inizia il processo per l'invio dei dati");
      p.begin("curl");
      Serial.println("aggiungo --data");
      p.addParameter("--data");
      Serial.println("aggiungo i valori");
      p.addParameter("key=key&data="+dataOra+"&val="+value);
      Serial.println("aggiungo il sito");
      p.addParameter("http://miosito.it/yun.php");
      Serial.println("avvio il il processo");
      p.run();
      Serial.println("aspetto");
      while (p.running());
      Serial.println("finito");
    }