enc28J60 and Arduino (14)

luca 22/04/2013 69

In this tutorial, I’m going to show how to develop a small website that gets data from Arduino (using your ethernet shield), stores it and displays it on a chart.

Logical schema

Your website will be made by two pages:

  • the first, saveTemp.php, gets data from Arduino and stores it in text file;
  • the second, displayTemp.php, reads the text file and displays the data.

In this example, Arduino gets room’s temperature using the SD18B20 sensor; I’ve already blogged about this sensor in this post.

For programming the web pages, I chose the PHP language, widely used on the web.

To keep the example simple, data is stored in a CSV (comma-separated values) file; in real applications it’s better to use a database, like MySQL

Sending data

I use the GET method of the HTTP protocol to send data to the webserver. That method sends the parameters in the clear within the URL, using the form parameter=value and dividing the different parameters with the & symbol:

To prevent other users from sending data, in addition to the temp parameter you must also send to the webpage a password using the pwd parameter.

My sketch reads the temperature from the sensor, converts it in a string value and “print” it in a Stash object:

float float_temp = sensors.getTempCByIndex(0);
char string_temp[7];
dtostrf(float_temp, 4, 2, string_temp);
Stash stash;
byte sd = stash.create();

char string_temp[7];
dtostrf(float_temp, 4, 2, string_temp);

Stash stash;
byte sd = stash.create();

Then it prepares the request in a different Stash object and sends it with the tcpSend() method:

Stash::prepare(PSTR("GET /demo/saveTemp.php?temp=$H&pwd=$F HTTP/1.0" "\r\n"
    "Host: $F" "\r\n" "\r\n"),
    sd, password, website);
session_id = ether.tcpSend();

Thanks to the session identifier (session_id) you can get the response from the server and check if it contains an error message (“KO”):

const char* reply = ether.tcpReply(session_id);
if(strstr(reply, "KO - ") != 0) Serial.println(strstr(reply, "KO - "));

In PHP you can get the data using the associative array $_GET:

$temp = $_GET["temp"];
$pwd = $_GET["pwd"];

After having verified the password, the temperature value is stored in the file together with a timestamp:

define("LOG_FILE", "./temperatures.csv");
$file_handler = fopen(LOG_FILE, "a+");
fwrite($file_handler, time() . "," . $temp . "\n");

In the next page, you’ll learn how to display the data on a chart…

Pages: 1 2


  1. tim mckenna 26/04/2013 at 17:47 - Reply

    I’ve just gone through your 14 tutorials and I’m happy to be using the $4.00 enc shields instead of the $20 wiznets. I think you can also get the enc in DIP too.

    You are a great teacher, nice pace and movement from principles to greater complexity.

    Next for me to figure out is a system using an apikey instead of putting the password in the URL

    I’d also like to figure out how to push a notice from the avr to a browser/smartphone.

  2. igor 03/05/2013 at 15:19 - Reply

    Con tcpReply() e tcpSend() sarebbe possibile dialogare con un server smtp per inviare email ?

    • luca 03/05/2013 at 20:46 - Reply

      ciao, teoricamente sì… sto preparando un piccolo tutorial perché è un poco più complesso rispetto ad una singola chiamata web

  3. Matteo 09/05/2013 at 15:11 - Reply

    Ciao Luca. Ho provato questo esempio ma trovo degli errori. Mi spiego meglio:
    1) ho caricato i file php e la cartella JpGraph nella root del mio sito;
    2) nello skecth ho inserito il mio sito web e la password ftp;
    il file csv lo crea da solo?
    Questo è quello che mi spunta nel serial monitor:
    WebTemperature demo

    Ethernet controller initialized
    DHCP configuration done
    Website IP resolved

    IP Address:
    Website IP: 217.—————

    Temperature -127.00U sent to website… OK
    Temperature -127.00U sent to website… OK
    Temperature -127.00U sent to website… OK
    Temperature -127.00U sent to website… OK
    Temperature -127.00U sent to website… OK
    Temperature -127.00U sent to website… OK

    dove sta l’errore?

    • luca 13/05/2013 at 09:37 - Reply

      ciao Matteo, il csv lo crea da solo… sembra che lo sketch non riesca a leggere la temperatura dal sensore: i collegamenti sono ok? Prova lo sketch demo della libreria e vedi se ti da qualche informazione in più.

  4. Petr 12/06/2013 at 21:37 - Reply

    great tutorial. I have question about sending variable directly from arduino to web.

    If i want use this:
    analog = analogRead(A0);


    i get:
    In function ‘void loop()':
    error: initializer fails to determine size of ‘__c’

    • luca 17/06/2013 at 21:20 - Reply

      Hi Petr,

      in the PSTR you have to enter a “placeholder” for the variables you add as parameters of emit_p, take a look at this example.

  5. Suresh 18/06/2013 at 14:17 - Reply

    who to use this for socket programming please advice !!

    • luca 21/06/2013 at 18:41 - Reply

      Suresh, could you please explain better your question?

  6. mande 06/07/2013 at 21:19 - Reply

    Ciao complimenti per i tutorial li ho seguiti tutti e sarei interessato a quello sulle e-mail. La serie di tutorial è finita o ne arriveranno altri? Grazie

    • luca 08/07/2013 at 08:37 - Reply

      ciao! sono stato un po’ impegnato sul lavoro ma sicuramente arriveranno altri tutorials ;)
      grazie per i complimenti!

  7. Peter Murray 08/07/2013 at 03:41 - Reply

    Do you know how I can send live data from the arduino/ENC28J60? I have a CANBus connection working alongside the ENC shield and I would like to forward CAN packets to a computer via the internet. I was thinking of using UDP but I can’t find any examples on UDP with the ENC shield. any tips?

    • luca 08/07/2013 at 08:38 - Reply

      Hi Peter,

      did you read my example about sending actual temperature to a C# application?

  8. David Vaughn 01/08/2013 at 15:46 - Reply


    Great tutorials, thank you. I’m curious, when I try to access the webpage “xxx.com/displayTemp.php”, all it gives me is the code. Am I doing something wrong? Do I need to set something up first?

    • luca 14/08/2013 at 13:59 - Reply

      Hi David

      your webserver must be able to “run” PHP code… so if you’re running your own server, install PHP following the guides on PHP website.

  9. jtreumer 03/08/2013 at 14:30 - Reply

    Hello Luca,

    your ENC28J60 tutorial was very helpful to me in understanding the chip and its usage in real hardware. Moreover, the example listings are well documentated and can be easily adapted onto different tasks. Thank you for providing such valuable infos!

    Best regards, Jürgen

    • luca 06/08/2013 at 14:47 - Reply

      Jürgen, thanks for your comment!

  10. armando 19/08/2013 at 00:30 - Reply

    Thank you very much for this tutorial, I am finally able to send some data to the web :D Just as a comment, I think there is an error in “session_id = ether.tcpSend();”.. don’t you need to add the data type as in “byte session_id = ether.tcpSend();” ? Thanks!

    • luca 22/08/2013 at 08:35 - Reply

      Hi Armando,

      if you analyze the full sketch on Github, you’ll notice that session_id is defined on the top:
      static byte session_id;
      because it must be visible also in the checkResponse() subrutine.

  11. David Vaughn 10/09/2013 at 15:58 - Reply


    Again great tutorials thank you. I’ve the PHP server running correctly (I forgot to install PHP) (DUH). I’m curious if you might be able to do a tutorial on how to bring a couple of your tutorials together like this one and the WebRelay? I was also wondering if PHP allows you to change set points or if I’d have to use HTML for that (still new to both of these languages).

    • luca 11/09/2013 at 13:22 - Reply

      Hi David

      thanks! about set points, the JPGraph library is in PHP so with that language you have full control of the chart’s properties.
      About your other request, are you thinking of a “dashboard” that displays data AND lets the user give commands (for example “close that relay”) to Arduino?

      • David Vaughn 16/09/2013 at 19:35 - Reply


        Yes that basically what I was thinking. The dsahboard could have the graph at the top and buttons at the bottom or somethin like that.

  12. Rob 02/10/2013 at 20:05 - Reply

    Ciao Luca, ho cominciato a seguire da poco i tuoi tutorials e li trovo fantastici.
    Mi chiedevo: in che modo si potrebbe ottenere lo stesso risultato con un POST Request? Il GET raggiunge il risultato, ma vorrei evitare di mostrare variabili e valori nell’url. Grazie.

    • luca 03/10/2013 at 19:08 - Reply

      Ciao Rob

      sto per pubblicare un articolo che usa proprio il metodo POST…

  13. igor 13/11/2013 at 17:14 - Reply

    ciao luca, naturalmente ottimo lavoro ;)
    avrei un problema, io devo inviare i dati ad un server locale, al posto del sito web ho inserito l’indirizzo ip del server, ma arduino non riesce a risolvere l’ip. sbaglio metodo o c’è qualcosa che ho saltato?
    Saluti, igor

    • luca 13/11/2013 at 20:07 - Reply

      Ciao Igor

      se hai già l’indirizzo IP, non devi usare il metodo dnsLookup. Semplicemente definisci l’IP del server (es static byte serverIp[] = {192,168,1,10};) e copia tale indirizzo nella variabile hisip: ether.copyIp(serverIp, hisip);

  14. Francisco 26/11/2013 at 04:07 - Reply

    Good Morning Friend
    I’m tetando example web_client
    but if I try to write my website in order to use a variable at run time I can not

    website char [] PROGMEM = “www.google.com”;

    works well, but
    website char [] = “www.google.com”;

    does not work, can you help me?

    this is my code


    // ethernet interface mac address, must be unique on the LAN
    static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

    byte Ethernet::buffer[700];
    static uint32_t timer;

    //char website[] PROGMEM = “www.vallesolucoes.com”;
    char website[] = “www.vallesolucoes.com”;
    // called when the client request is complete
    static void my_callback (byte status, word off, word len) {
    Ethernet::buffer[off+300] = 0;
    Serial.print((const char*) Ethernet::buffer + off);

    void setup () {

    if (ether.begin(sizeof Ethernet::buffer, mymac,14) == 0)
    Serial.println( “Failed to access Ethernet controller”);
    if (!ether.dhcpSetup())
    Serial.println(“DHCP failed”);

    ether.printIp(“IP: “, ether.myip);
    ether.printIp(“GW: “, ether.gwip);
    ether.printIp(“DNS: “, ether.dnsip);

    if (!ether.dnsLookup(website))
    Serial.println(“DNS failed”);

    ether.printIp(“SRV: “, ether.hisip);

    void loop () {

    if (millis() > timer) {
    timer = millis() + 5000;
    Serial.print(“<<< REQ ");
    ether.browseUrl(PSTR("/photos/envia/"), "envia.php", website, my_callback);

    • luca 27/11/2013 at 14:27 - Reply


      why do you need to store the URL in the RAM memory? The browseUrl function expects a website string stored in the PROGMEM… to change it you have to change the library.

  15. Michael 07/12/2013 at 14:18 - Reply

    Hello Luca. I have problem to connect with my WebSpace – Error Message: Unable to resolve Website IP
    char website[] PROGMEM = “http://www.solarstation.lima-city.de”;
    I try also with …
    char website[] PROGMEM = “solarstation.lima-city.de”;
    do you have any idea?
    Thanks a lot for all this tutorials. Michael

    • luca 07/12/2013 at 18:32 - Reply

      Hi Michael,

      try “www.solarstation.lima-city.de” it should work. Are you sure your Arduino gets the correct DNS server? Are you using a DHCP setup or a static one?

      • Michael 10/12/2013 at 22:06 - Reply

        Hello Luca. I’m using DHCP and i think the Server IP Address is resolved correctly. Maybe the reason is the free Webspace of lima-city. That’s what the terminal says…

        WebTemperature demo

        Ethernet controller initialized
        DHCP configuration done
        Website IP resolved

        IP Address:
        Gateway: 192.___._._
        Website IP:

        Temperature 23.00 sent to website… OK

        should i try it with a Static IP Address?

        • luca 16/12/2013 at 14:16 - Reply

          Hi Michael,

          from the output it seems everything’s working now… doesn’t it?

  16. Ozy 15/12/2013 at 14:39 - Reply

    Hello Luca. I have a project that looks similar with your tutorial here, but I’m using HC-SR04 distance sensor instead of the temperature sensor. I already programmed the sensor but I really have no idea how to send the data to the web just like your tutorial. Can you give me a more detailed step-by-step explanation? I will be very happy if you would like to see my sketch for the HC-SR04 and show me how to integrate it with the ethernet module so it can send the data to the web. Thank you very much

  17. Antonio 03/01/2014 at 08:41 - Reply

    Prima di tutto un sincero ringraziamento per gli ottimi tutorial pubblicati, mi sono stati molto d’aiuto nella realizzazione di un piccolo sito web.
    Stavolta ho difficoltà a gestire la variabile stash in particolare vorrei implementare 4 sonde termiche, ho modificato il programma ed ora ho tre variabili temp numerate da 1 a 4 che restituiscono il loro corretto valore, però non riesco a modificare l’oggetto stash in modo che la variabile “sd” contenga i valori di tutte e 4 le sonde, mi potresti aiutare?

    • luca 14/01/2014 at 19:42 - Reply

      ciao Antonio,

      nella prepare() devi inserire per ogni valore un “segnalibro” con $H (qualcosa tipo saveTemp.php?temp1=$H&temp2=$H&temp3=$H…); quindi chiusa la stringa puoi inserire separate da virgola le varie variabili. Per riceverle e gestirle poi hai modificato di conseguenza lo script php?

  18. Kim Jessen 30/01/2014 at 15:15 - Reply

    Hello Luca!
    I’m fiddling with something similar to your project.
    I just have big problems with the GET function.
    it is not quite the same as your but may be you can help me anyway.

    Base: so I also collects data packs them into a string and then I send it to a server.

    like this:

    client.println(“GET /test_fil_1.php?name=string”);

    in file test_fil_1.php is written

    but it does not work.

  19. Kim Jessen 30/01/2014 at 15:17 - Reply

    in file test_fil_1.php is written

  20. Kim Jessen 30/01/2014 at 15:18 - Reply

    $temp = $_GET[“name”];

    $filename = ‘temperatures.csv';

    define(“LOG_FILE”, “./temperatures.csv”);

    $file_handler = fopen(LOG_FILE, “a+”);

    fwrite($file_handler, time() . “,” . $temp . “\n”);

  21. kim jessen 02/02/2014 at 11:59 - Reply

    hey it does not matter. I’ve got it to work.
    I do like this
    ” Serial.println(“connected”); // report successful connection
    // Make a HTTP request:

    client.println(“GET /test_fil.php?key=125 HTTP/1.1″);
    client.println(“Host: http://www.moencamping.com“);
    client.println(“Connection: close”);

    it is made for W5100 shield.
    However, I would like to do something similar with ENC28J shield.
    But I can not really get started in it.

    I looked at several client examples to ENC28J, but it’s not really the same code.
    I know it is a different chip and the setup is different but a GET request is probably a GET request. Right!

    The only question is, where to put the GET rotine.
    hope that you will help me

  22. kim jessen 03/02/2014 at 16:25 - Reply

    ‘ve fixed it.
    I use UIPEthernet library.
    So it’s easy.

  23. Massimoi 27/02/2014 at 10:40 - Reply

    ottimo lavoro!!!
    Io sto provando a realizzare la stessa cosa (circa) però usando la libreria Ethernet.h (quella standard per capirci). Ora quello che non riesco a capire bene è la sintassi che devo usare nel comando con GET. Praticamente io eseguo una cosa del genere …

    sprintf(buffer, “%s%s%s/%s/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d/%d %s”, “GET http://xxxx.org:84“/saveTemp.php?temp=15.2&pwd=password”, “HTTP/1.1″);


    … ma senza risultato.
    Cosa faccio come errore?

    • luca 02/03/2014 at 13:39 - Reply

      Ciao Massimo,

      usi la sprintf() immagino per creare la URL da chiamare, con alcune parti “statiche” (http://xxx.org…) e alcune “dinamiche” (i valori dei sensori)… non capisco tutti quei %s%d…

  24. Massimo 03/03/2014 at 11:53 - Reply

    Luca grazie innanzitutto!
    E’ come avevo previsto a quanto scrivi. Ho provato a lanciare come dici tu ma senza risultato. Quei %s%d … sono riferiti alla formattazione della stringa. Ora ci lavoro e ti tengo aggiornato.

    Grazie ancora

  25. Kafes 28/05/2014 at 19:42 - Reply

    Extraordinary tutorials Luca! You are a great teacher and these are among the best tutorials I have ever read for microcontrollers! Thank you for sharing this…

    • luca 28/05/2014 at 20:27 - Reply

      Thanks Kafes ;)

  26. kim jessen 26/06/2014 at 19:17 - Reply

    hey if I need to send to a particular port, for example:
    xxxxxxxx.yy: 8004
    how do i do that

  27. marco 29/08/2014 at 06:35 - Reply

    ciao, grazie per il blog davvero molto utile.
    non riesco a far comunicare arduino (con ip fisso) con il server. Ambientmonitor, sempre con Arduino con ip fisso, funziona senza problem: saveTemp.php funziona se chiamato dal pc, mentre con Arduino continuo ad avere “No response”.
    C’è modo di leggere l’url trasmesso da arduino?

    • luca 01/09/2014 at 20:14 - Reply

      Ciao Marco,

      puoi installare Wireshark sul tuo PC, con quello riesci a “sniffare” la chiamata di Arduino…

      • marco 11/09/2014 at 06:37 - Reply

        Ciao, grazie.
        Praticamente Arduino non si collegava al router.
        Ho risolto ricaricando l’ide, aggiornando le librerie e cambiando i MAC di un paio di Arduino.
        Grazie ancora

  28. Pedro 18/09/2014 at 18:43 - Reply

    Hello Luca, I want to get data from the Arduino and send it to a computer. But I need to create a .exe than be able to get the data and make alarms, graphics, etc. Do you know about some compiler to do this? I don’t want to program in PHP because isn’t necesary then I need to get the data from the IP address but without make a website or something like that.

    Thanks for the tutorial.

    • luca 19/09/2014 at 08:55 - Reply

      Hi Pedro, I usually develop in C#, please see some examples on my blog.

  29. Vojo 21/12/2014 at 02:29 - Reply

    Hello Luca,

    great tutorials You have done here. I had a problem with DHCP, it was refusing to work. I have found solution that in the line:
    static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01}; i have changed with
    static byte mymac[] = {0xDD, 0xDD, 0xDD, 0x00, 0x00, 0x01};
    just by adding extra space after every comma sign.

    I am new to Arduino, and willing to learn. Can you please help me to implement reading from more than one sensor and drawing in that jpgraph.
    Thank you for sharing these great tutorial.

  30. Rodrigo Sena 24/05/2015 at 21:44 - Reply

    Ciao Luca, Im triyng implement my code to send the data (from 2 sensors) to send to web (localhost) via method GET, but im no lucking, so could you please help me to solve them?

    on this link below are my code:

  31. adeeb 23/12/2015 at 16:46 - Reply

    Is it possible to send readings from arduino to google spreadsheet using the enc28j60 ethernet shield ?

  32. paolo 07/02/2016 at 23:15 - Reply

    Ciao Luca, grazie per questi splendidi articoli mi sono stati molto utili per capire varie cose.
    Ora però mi sono arenato in questo esempio e non riesco a cavarne piede…
    Riesco a farmi passare i parametri dal dhcp. Pero al momento di risolvere l’indirizzo della pagina web mi da picche sempre il messaggio “unable to resolve website”.

    • luca 08/02/2016 at 08:37 - Reply

      Ciao Paolo… lo sketch sembra ok, sicuro che Arduino possa raggiungere il DNS server su Internet? Hai provato a cambiare sito web di destinazione? Non risolvi alcun indirizzo? E se provi direttamente mettendo l’IP?

      • paolo 08/02/2016 at 14:35 - Reply

        Ciao.. dalle prove che ho fatto non riesco a risolvere nessun indirizzo, nella mia rete ci sono diverse mecchine, nas, smartphone e non ho mai avuto di questi problemi.
        Ora che me lo dici provo a fare uno sketch per pingare da arduino verso interne e vediamo che succede…
        Grazie per la risposta celere ti tengo aggiornato sugli sviluppi

      • paolo 09/02/2016 at 01:17 - Reply

        rieccomi spulciando negli esempi a corredo della libreria c’e ne era uno per pingare un url sul web, ho compilato e il tutto ha funzionato… allora ho confrontato i due listati e l’unica differenza che ho trovato e questa
        nel tuo codice.
        if (!ether.dnsLookup(website)) {
        Serial.print(“Unable to resolve Website IP”);
        } else Serial.println(“Website IP resolved”);
        nell’ esempio:
        #if 1
        // use DNS to locate the IP address we want to ping
        if (!ether.dnsLookup(PSTR(“google.it”)))
        Serial.println(“DNS failed”);
        ether.parseIp(ether.hisip, “”);
        ether.printIp(“SRV: “, ether.hisip);

        ho inserito con le dovute modifiche nel mio listato e ora sembra che l’indirizzo del sito venga risolto correttamente.
        pero… il responso che ricevo e un bel Error 404.
        ho ancora da lavorare… devo capire meglio come funge stash credo che li ci sia qualche cosa che non vada.
        esiste il modo per inviarmi sulla seriale una copia della stringa che invia al server???
        scusa per lo stress.

  33. Gianluca 22/03/2016 at 10:08 - Reply

    Grazie Luca per l’ottimo tutorial ! Al posto di Arduino+Ethernet shield, vorrei utilizzare l’ESP8266 sia per leggere il sensore di temperatura che per inviare i dati al server web. Potresti aiutarmi a modificare il codice dello sketch per adattarlo all’ESP8266 ?
    Grazie !

    • luca 22/03/2016 at 13:45 - Reply

      ciao Gianluca, mi spiace ma non mi sono mai cimentato con l’ESP8266… penso ci siano ottimi tutorial in rete vista la sua diffusione!

  34. FireRaven 29/03/2016 at 06:52 - Reply

    Hey, excellent tutorial. I was wondering thoug if it is possible to remove the part with the password

    • luca 06/04/2016 at 12:36 - Reply

      Hi! Of course, if you don’t need a password, you can use one of my previous examples…

  35. Ivan 16/08/2016 at 14:06 - Reply

    Ciao Luca, complimenti per le ottime guide e i progetti sempre molto interessanti, non mi è chiara una cosa che forse non è stata trattata, se volessi cancellare il file csv a mezzanotte per resettare il grafico, sarebbe meglio abbinare all’arduino un’rtc e inviare un dato aggiuntivo, oppure tramite uno script php che legge la data? grazie!

    • luca 14/09/2016 at 08:26 - Reply

      ciao Ivan, secondo me è più facile farlo lato PHP

  36. Enrico Eustacchio 22/07/2018 at 02:35 - Reply

    Buongiorno Luca,
    Ho scoperto solo la scorsa settimana il tuo sito e devo dire che è veramente una miniera di idee…
    Sto cercando di modificare per le mie esigenze questo sketch ma non riesco a inviare più di una variabile sul sito, se invio gli stessi dati direttamente da browser il file generato da savetemp.php, nel mio caso log.csv si aggiorna correttamente.
    la parte modificata è questa:
    dtostrf(f_temp, 4, 2, data1);
    dtostrf(iBat, 4, 2, data2);
    dtostrf(iFp, 4, 2, data3);
    dtostrf(vBat, 4, 2, data4);
    dtostrf(vFp, 4, 2, data5);
    dtostrf(pingAns, 4, 2, data6);

    /* variabile “sd”
    nella prepare() devi inserire per ogni valore un “segnalibro” con
    $H (qualcosa tipo saveTemp.php?temp1=$H&temp2=$H&temp3=$H…);
    quindi chiusa la stringa puoi inserire separate da virgola le varie variabili.
    Per riceverle e gestirle poi hai modificato di conseguenza lo script php?
    Stash stash;
    byte sd = stash.create();
    // stash.print(data3);
    // stash.print(data4);
    // stash.print(data5);

    // Stash::prepare(PSTR(“GET /StationMonitor/saveTemp.php?data1=$H&pwd=$F HTTP/1.0″ “\r\n”
    Stash::prepare(PSTR(“GET /StationMonitor/saveTemp.php?data1=$H&data2=$H&pwd=$F HTTP/1.0″ “\r\n”
    “Host: $F” “\r\n” “\r\n”),
    sd, password, website);
    session_id = ether.tcpSend();

    Quello che vorrei riuscire a fare è inviare (adesso riesco a leggere i dati tramite la seriale di Arduino) sul sito un file txt con 6 valori (5 float e 1 byte) per monitorare in remoto batteria, tensione pannelli solari e con un ping il blocco delle webcam e raspberry connessi, una stazione meteo non presidiata e connessa in rete con una chiavetta.
    In tutto questo sono un autodidatta e cercando in rete di solito ci cavo il classico ragno dal buco ma in questo caso ho trovato pochissimo, e quel poco utilizza il comando POST invece che GET.
    Cosa sbaglio in quelle righe di codice? sono un paio di giorni che cerco la soluzione ma senza successo.

  37. ed 21/12/2019 at 21:53 - Reply

    Luca, I have the same problem as Igor in 2013, so i followed your advice and added in the declarations:
    byte hisip[] = { 192,168,1,1 };
    static byte website[] = {192,168,1,102};
    in setup i added
    ether.copyIp(website, hisip);
    But sadly, same problem “no response”
    Have I misunderstood your solution?
    If i have the audacity to briefly use your ip domain, everything works and if i just manually URL/GET my server i get connection.
    I know it is a very old totorial, but could you maybe give some more advice on how to resolve to a local IP?

  38. ed 21/12/2019 at 22:21 - Reply

    with regard to my earlier question abt local ip…never mind, i think i solved it

  39. ed 21/12/2019 at 23:43 - Reply

    sadly after my initial euforia thinking i solved my earlier problem I still have a problem with this project. I managed to connect to my local server and I get an OK response
    However, my csv file does not get updated. It works without problem if i do a manual update.
    I suspect that somehow i arrive at my local server, but at the wrong place: if i give a wrong pw, or even remove the entire saveTemp.php file, i still get an ‘OK’
    My php file is located in /var/www/html and as said, manual update works.

    I go to my local server with
    static byte website[] = {192,168,1,102};
    ether.copyIp(ether.hisip, website);
    and ether.printIp(“hisip: “, ether.hisip); shows it is the right address, but sadly no update so somehow i arrive at the wrong place.
    My stash is as follows:
    Stash::prepare(PSTR(“GET /saveTemp.php?temp=$H&pwd=$F HTTP/1.0″ “\r\n”
    “Host: $F” “\r\n” “\r\n”),
    sd, password, website);
    session_id = ether.tcpSend();
    Any idea what could be wrong

Leave A Response »

Click here to cancel reply.

This website uses cookies to ensure you get the best experience on our website maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.