Inviare dati a server MySQL allo scatenarsi di un evento

Salve, ho un dubbio che spero possiate chiarirmi.

Io vorrei far inviare i dati dei pin in automatico dopo la lettura ad un server MySQL tramite un'istruzione GET, il problema è che riesco a farlo fare se punto all'indirizzo di Arduino con il webserver, ma a me serve invece che dopo l'evento x il valore del sensore y venga scritto automaticamente sul server MYSQL, cerco di riassumere:

LEGGO VALORE SENSORE 1
FACCIO DEI CALCOLI CON IL VALORE E VALUTO SE OK O KO
INVIO AUTOMATICO DEL VALORE ALLA TABELLA MYSQL (qualcosa del tipo http://www.miosito.it/add.php?valore1=VALORE SENSORE 1

LEGGO VALORE SENSORE 2
FACCIO DEI CALCOLI CON IL VALORE E VALUTO SE OK O KO
INVIO AUTOMATICO DEL VALORE ALLA TABELLA MYSQL

potreste aiutarmi? Esiste una funzione che faccia il push dei dati da Arduino al server MySql senza dover aprire una pagina web del webserver?

Grazie mille :slight_smile:

Non capisco quale sia il problema?
Tu dovrai avere una pagina dinamica che comunica con MySQL.
Su arduino dovrai creare un webclient "non un webserver", ti connetti alla pagina e invii i dati con metodo GET.

Qui un esempio di webclient con arduino.Arduino - EthernetClient

La comunicazione su arduino non si fa con un unica istruzione ma con poche righe...
Ad ogni trasmissione dati dovrai ripetere qualcosa simile a questo.

if (client.connect(server, 80)) {
    Serial.println("connected");
    client.println("GET /search?Variabile=valore HTTP/1.0");
    client.println();
    client.stop();
}

Grazie Torn24, ho sistemato con delle funzioni e adesso il discorso funziona..... o quasi.

Arduino non riesce ad "eseguire" la pagina PHP, funziona tutto mi da ok sulla connessione ma se vado a controllare sul db non c'è nessun dato scritto.

Ho provato a lanciare manualmente il file php dal browser e funziona.

Ho letto in giro vari post con lo stesso problema ma le soluzioni proposte non hanno comunque funzionato.

Sapete se ci sono comandi particolari da inviare nell'URL o bug conosciuti su questo argomento?

Gr :smiley: azie mille

Ciao! Non sono esperto di ethernet arduino, ma dall'esempio della libreria comunica con google col metodo GET, se funziona per google deve funzionare per qualunque altro IP internet :slight_smile:
In realtà arduino per comunicazione web, si limita a ricevere e trasmettere caratteri.
Nel tuo caso invii una sequenza di caratteri sulla porta 80 del tuo server.

Aspetta che mi faccio prestare la sfera di cristallo usb di fabpolli per controllare il tuo codice e poi ti dico ... :wink:
Sempre che nel frattempo non l'abbia già venduta...

Hai per caso verificato sul tuo server che tipo di richiesta arriva? e con che parametri?

Scusate, avete ragione non ho inserito il codice..... :smiley:

  if (client.connect(server, 80)) {
    Serial.println("connected");

    client.println("GET /add.php HTTP/1.1");
    client.println();
    client.stop();
  } else {
    Serial.println("connection failed");
  }
  }

:wink:

non vedo i parametri con i dati da inserire nel database.
la add.php è "vuota" e fa un inserimento di dati fissi senza necessitare di ulteriori dati?

Si per provare ho tolto i parametri dalla URL ed ho messo nel file php un insert con un dato costante, se lo eseguo da browser funge, da arduino, nada.

Ho letto da qualche parte che con Telnet dovrei vedere la risposta del sito, adesso provo.....

Ok, risolto, mancava un'istruzione da inviare al server, Host: www.miosito.it

Adesso funziona perfettamente, grazie mille a tutti per l'aiuto.

Serial.println("connected");
client.println("GET /add.php HTTP/1.0");
client.println("Host: www.xxxxxxxxxxxxxxxxxxxx.it");
client.println();
delay (20000);