Problema con Ethernet shield e il MAC su Vodafone station

Ho provato... Se apro l'IP di arduino la eth shield si mette a lampeggiare come le luci di natale ma non fà nulla,se apro il mio sito remoto non vedo nulla..

ma hai provato a stamparti temperatura e umidità sulla seriale prima di inviarli?

apparte che hai un altro thread dove si stanno trattando quasi le stesse cose, io a questo punto li unificherei...

Cmq, penso di capire donde stia l'inghippo (da parte tua):

se apro il mio sito remoto non vedo nulla

tu ti aspetti di vedere sul sito i dati che passi con Arduino?

pitusso: apparte che hai un altro thread dove si stanno trattando quasi le stesse cose, io a questo punto li unificherei...

Cmq, penso di capire donde stia l'inghippo (da parte tua):

se apro il mio sito remoto non vedo nulla

tu ti aspetti di vedere sul sito i dati che passi con Arduino?

Si ! :P

Ho aperto l'altro tread per non incasinare questo :)

tu ti aspetti di vedere sul sito i dati che passi con Arduino?

Si !

:cold_sweat:

attenzione perchè con quel che stai facendo tu, ovvero far "sparare" ad arduino una stringa del tipo: http://ratto93.altervista.org/index.php?temperatura=22&&umidit%E0=20 tu vai a generare dinamicamente la pagina php.

Per lo stesso motivo, se tu digiti a mano quella url, vedi la pagina compilata. Se invece digiti la url senza parametri, la vedrai senza valori. Questo perchè lo script php compila la pagina on demand (detto semplicisticamente).

Se vuoi che ti faccia vedere i dati inviati da Arduino, necessiti appunto di salvarli su file o db, e di modificare lo script php affinchè, in caso di mancanza di GET, ti torni gli ultimi valori passati da Arduino.

Sempre che io abbia capito quale è il tuo obiettivo...

EDIT

Devo leggere dei dati ed inviarli ciclicamente ad una pagina php su server remoto che li salverà in un database, come potrei fare ?

ho capito bene

Quel si !

Non era in tono cattivo anzi tutt'altro ;)

comunque indagando anche grazie ad un consiglio di Brainbooster ho scoperto una cosa... Non posso mandare i dati così alla mia pagina su altervista poichè è tutto su virtuale, dovrò cambiare qualche impostazione. Ho provato con WebClient e mettendo l'IP del mio sito ricavato dal ping non si connette cosa che non avviane se mi collego ad esempio a google.. Infatti se prendo l'IP del mio sito e lo inservisco nella barra del browser mi apre la pagina principale di altervista non la mia...

Non posso mandare i dati così alla mia pagina su altervista poichè è tutto su virtuale, dovrò cambiare qualche impostazione.
Ho provato con WebClient e mettendo l’IP del mio sito ricavato dal ping non si connette cosa che non avviane se mi collego ad esempio a google…
Infatti se prendo l’IP del mio sito e lo inservisco nella barra del browser mi apre la pagina principale di altervista non la mia…

sì, il dubbio era venuto anche a me cercando di capire il perchè del tuo codice (supportato presumo da Brain).
Purtroppo il virtual server, per funzionare correttamente, ha bisogno del fqdn sulla barra degli indirizzi - perchè sostanzialmente a singolo ip sono associarti più server virtuali.

Cmq Brain poteva postare la sua riflessione anche sul forum ]:slight_smile:

Dove potrei hostare possibilmente senza spendere danari ed ottenendo un risultato "Potabile" ? :stuck_out_tongue_closed_eyes:

Ciao,

Dove potrei hostare possibilmente senza spendere danari ed ottenendo un risultato "Potabile" ?

io penseri piuttosto a risolvere il problema, a futuro beneficio di tutti :D

In ogni caso, tophost è uno dei più economici in assoluto, con 12 eur/anno porti a casa anche spazio web con supporto php e altro ancora. Non è pro come servizio, ma fa il suo dovere...

@pitusso , non ho scritto roba segreta nel MP, lo ho solo invitato sulla chat di un'altro sito (indovinate quale), per dargli una mano più rapidamente e poter fare prove realtime, fino a che non ho capito che altervista funziona con i virtualserver e dns interno, tutto qui :) io per fare una cosa simile ho usato un host gratuito che dà sia il db mysql che il supporto per php e qualche riga di json. per adesso sono fermo (anche con questo progetto per mancanza di tempo), ma ero arrivato a buon punto: http://brainbooster.byethost7.com/ non guardate le date e l'ora, le ho mandate io Hpocchia :P così come l'ultimo parametro che è null perchè devo proseguire con gli esperimenti. sulla pagina si possono passare quanti parametri si vogliono e verranno visualizzati così come si vede, i valori sulla pagia vengono aggiornati in quasirealtime (1 volta al secondo) così come anche i grafici che vengono generati automaticamente e aggiornati con lo stesso refresh. idea strippata e adattata da open energy monitor ;) . Ma ero solo all'inizio delle prove...

pitusso: Ciao,

Dove potrei hostare possibilmente senza spendere danari ed ottenendo un risultato "Potabile" ?

io penseri piuttosto a risolvere il problema, a futuro beneficio di tutti :D

In ogni caso, tophost è uno dei più economici in assoluto, con 12 eur/anno porti a casa anche spazio web con supporto php e altro ancora. Non è pro come servizio, ma fa il suo dovere...

Appena potrò farò delle prove :D

ehmm che brocco che sono, anche su tophost son virtual server :blush:

io per fare una cosa simile ho usato un host gratuito che dà sia il db mysql che il supporto per php e qualche riga di json

ok, ma pure il servizio che stai utilizzando tu, viene erogato allo stesso modo. Come passi i dati? Oppure li recuperi con script php che fan una chiamata ad Arduino (in modalità server)?

@ratto, @brain ho sviscerato la questione, la soluzione era tutto sommato semplice.

Qui il post con la descrizione lunga: http://arduino.cc/forum/index.php/topic,90575.msg680326.html#msg680326

Rieccomi qui piantato -

Ora uso il codice fornito da Pitusso:

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {0x90,0xA2,0xDA,0x00,0x74,0x99};
byte ip[] = {192,168,1,2};
byte gateway[] = {192, 168, 1, 1};
byte subnet[] = {255, 255, 255, 0};
byte server[] = { 176, 9, 63, 22}; //altervista ip, risultato del ping ratto93.altervista.org

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
Client client(server, 80);

void setup() {
  // start the Ethernet connection:
  Ethernet.begin(mac,ip,gateway,subnet);
  // start the serial library:
  Serial.begin(115200);
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect()) {
    Serial.println("connected");
    // Make a HTTP request:

    client.println("GET /index.php?temperatura=22&umidita=22 HTTP/1.0");    //GET da effettuare
    client.println("Host: ratto93.altervista.org");                                           //parametro Host per gestione virtual server
    client.println();                                                                                  //riga vuota

  } 
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available 
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    for(;;)
      ;
  }
}

Ma invece di visualizzare la pagina nel browser me la fa vedere nel serial monitor !?!
come mai ?

connecting...
connected
HTTP/1.1 200 OK
Content-Length: 211      
Date: Mon, 06 Feb 2012 14:23:43 GMT
Server: Apache
Vary: Accept-Encoding
Content-Type: text/html
Connection: close

<HTML>
<HEAD>
<TITLE>Accesso al servizio</TITLE>
</HEAD>
<BODY>
<H2>Gestione accessi</H2>
<HR>
La temperatura attuale è di 22 °.
L'umidità è pari al  % 
alle ore15:23:43del giorno06-02-2012</BODY>
</HTML>

disconnecting.

ratto93, sul sito remoto non vedrai MAI niente, perchè il risultato della stringa che passa Arduino, lo vede solo Arduino stesso (e stampato in seriale, pure tu)!!! Questo concetto ti sfugge ma è fondamentale per proseguire il tuo progettino!

Devi prepararti uno script in PHP che salvi i dati che passa Arduino con la sua GET, e te li faccia poi vedere!

Es, per l'inserimento (con un database MySQL dietro, altervista te lo fornisce): http://www.w3schools.com/php/php_mysql_insert.asp qui nella tabella inserirai i valori che ti arrivano con la GET

Qui un esempio di visualizzazione dei dati presenti su db: http://www.w3schools.com/php/php_mysql_select.asp

In questo caso, ti basterà fare un controllo sulla URL: se non son presenti valori da inserire, mostra la tabella, altrimenti fai un inserimento.

Ok, ora è più chiaro, mi guarderò il materiale che mi hai passato, grazie

Stupendo, ce l'ho fatta :) Mi son fatto gli interpreti php che leggono e scrivono il database, arduino tramite get mi spedisce correttamente i dati e gli script ovviamente me li salvano nel db Grazie a tutti XD

ottimo, bravo!

Mi trovo di fronte ad un problema che è di unà mostruosa, solo che non ne vengo a banalità assura, solo che non ne vengo a capo...

inviando i dati al mio script, devo far si che la stringa che viene inviata cambi, usando la seguente sintassi: client.println("GET /script/Scrittore.php?id='12&ora=2222&tensione=77777&corrente=222&temperatura=33 HTTP/1.0"); funziona e si connette al server, se uso questa :

int id = x;
client.println("GET /script/Scrittore.php?id='id'&ora=2222&tensione=77777&corrente=222&temperatura=33 HTTP/1.0");

Mi da errore di connessione. ho provato anche in questo modo : (con lo stesso risultato)

    client.println("GET /script/Scrittore.php?id=");
    client.println(id);
    client.println("&ora=2222&tensione=77777&corrente=222&temperatura=33 HTTP/1.0");

come posso risolvere?

Ciao, prova ad usare print invece di println per le prime due righe; il problema dovrebbe essere tutto lì:

client.print("GET /script/Scrittore.php?id=");
client.print(id);
client.println("&ora=2222&tensione=77777&corrente=222&temperatura=33 HTTP/1.0");