Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Page not found
#1
Buongiorno. Sto provando ad usare il protocollo TCP per recuperare i valori di alcuni sensori presenti nella mia serra.

Queste alcune righe dello schetch:

nel Setup:

 Serial.begin(57600);           // Initialise serial
  delay(4000);                   // let miuPanel start
  Serial.println(F(""));            // Dismiss partial sent messages
  Serial.println(F("$PING 200"));   // Enable real-time communication
............................

 Serial.println(F("$TCP0:LAHQ::12203"));

............

nel loop:

int c;
  while ((c = Serial.read()) > '\n') Msg += (char) c;  // leggo i dati in input fino al carattere di NEW LINE (/n)
  if (c == '\n')                                       // is message complete?
  {
    if (Msg.substring(0, 34).equals("$TCP0:>H:GET /SituazioneAmbientale")) // Arriva una risposta TCP
  {
    Serial.println("ACK: " + Msg);       // stampo  i valori

    Serial.print(F("$TCP0:W:Temperatura=") );
      Serial.print(told);
      Serial.print(F("</br>umidita="));
      Serial.print(hold);
      Serial.print(F("</br>luminosita="));
      Serial.print(lux);
      Serial.print(F("</br>vento="));
      Serial.print(windspeed);
      Serial.print(F("</br>wasistas="));
      Serial.print(statoWasistas);
      Serial.print(F("</br>radiatore="));
      Serial.println(statoRadiatore);
  }



    Msg = "";
  }  // fine del ciclo di attesa



il browser chiama la seguente pagina:

http://www.schiamizzo.dtdns.net:12203/Si...Ambientale

Purtroppo la pagina non viene trovata. Dove sbaglio?
Reply
#2
Nessuno ha una soluzione al mio problema?
Reply
#3
ciao schiamizzo,
dovresti controllare nei log all'avvio del modulo se ti compare la scritta

$OK-TCP0-Listen

con il quale mostra che il modulo ha correttamente avviato il server TCP.

Ad esempio questo è un mio log in cui si vede arrivare la richiesta http://IP:porta/prova

$OK-PING
$OK-PANEL
$OK-TCP0-Listen
V:1
$OK-WIFI
$TCP0:CONNECTED
$TCP0:>H:GET /prova HTTP/1.1
$TCP0:SENT:1
$TCP0:DISCONNECTED

Verifica anche quando avvii il modulo che il modulo sia connesso ad internet ed abbia flaggato le voci "Enable Connection" e "Auto open ports".

Ovviamente prova prima in locale.
Reply
#4
Grazie Dok per la risposta.

Si tutto funziona correttamente.... dal monitor si vede il Listen e sono conneso al router

Il problema sembra legato alla risposta... mi spiego meglio ..

Se controllo il monitor Arduino intercetta correttamente la richiesta del browser e risponde correttamente con il comando

Serial.print(F("$TCP0:W:Temperatura=") );
Serial.print(told);
Serial.print(F("</br>umidita="));
Serial.print(hold);
Serial.print(F("</br>luminosita="));
Serial.print(lux);
Serial.print(F("</br>vento="));
Serial.print(windspeed);
Serial.print(F("</br>wasistas="));
Serial.print(statoWasistas);
Serial.print(F("</br>radiatore="));
Serial.println(statoRadiatore);

ma il browser non riesce ad interpretarlo e reagisce con un PAGE NOT FOUND
Reply
#5
non ho capito, ma tu vorresti che nel browser comparissero i valori temperatura umidità etc...?
Reply
#6
Si certo... ho necessità di visualizzarli correttamente
Reply
#7
ovvio che così non funziona, il serial.print stampa su seriale mica crea una pagina web.
Per far quello che tu dici, devi creare un file es: dati.txt sul disco del modulo in cui vengono salvati i vari valori di temperatura, umidità etc., per essere richiamato poi tramite una pagina web. http://ip:porta/dati.txt

Leggi qua http://www.miupanel.com/Wi-Fi-Module/FILE-SYSTEM-DISK
Reply
#8
Ci sono riuscito... non è necessario avere un file su disco. Bastano queste istruzioni:

Serial.println(F ( "$TCP1:LAHQ::2222")); /// da inserire nel SETUP

....................................

if (Msg.substring(0, 34).equals(F("$TCP1:>H:GET /SituazioneAmbientale"))) // Arriva una risposta TCP
{

Serial.print(F("$TCP1:W:HTTP/1.0 200 OK\\r\\n\\r\\nTemperatura=") );
Serial.print(t != 0 ? t : told);
Serial.print(F("</br>umidita="));
Serial.print(h != 0 ? h : hold);
Serial.print(F("</br>luminosita="));
Serial.print(lux);
Serial.print(F("</br>pioggia="));
Serial.print(pioggia);
Serial.print(F("</br>vento="));
Serial.print(windspeed);
Serial.print(F("</br>wasistas="));
Serial.print(statoWasistas);
Serial.print(F("</br>radiatore="));
Serial.print(statoRadiatore);
Serial.print(F("</br>pluviometro="));
Serial.print(statoPluviometro);
Serial.print(F("</br>automatico="));
Serial.print(automatico);
Serial.print(F("</br>sonar="));
Serial.print(statoSonar);
Serial.print(F("</br>anenometro="));
Serial.print(statoAnenometro);
Serial.print(F("</br>calendario="));
Serial.println(statoCalendario);

}

e questa nel loop...

Adesso digitando nel browser: http://www.miosito.net:2222/SituazioneAmbientale

ottengo:

Temperatura=7
umidita=36
luminosita=65
pioggia=-1
vento=0.00
wasistas=0
radiatore=0
pluviometro=0
automatico=1
sonar=0
anenometro=0
calendario=1



come desiderato
Reply
#9
Buono a sapersi
Reply
#10
puoi postare lo sketch completo?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)