Scrittura Mysql

Buongiorno ragazzi, io e il mio collega stiamo impazzendo, per far scrivere nel database i dati della temperatura rilevati da arduino, con sopra la ethernet shield e la thinkerkit con il sensore temperatura attaccato, senza utilizzare php, dato che vogliamo scrivere sul database.

Cercando su google abbiamo trovato un esempio fatto da Charles Andrew Bell ma c'è una stringa di codice che sembra bloccare tutto (if (my_conn.mysql_connect(server_addr, 3306, user, password))), il codice è questo:

#include <SPI.h>
#include <Ethernet.h>
#include <sha1.h>
#include <avr/pgmspace.h>
#include <mysql.h>
#include <TinkerKit.h>

TKThermistor therm(I5); // creating the object 'therm' that belongs to the 'TKThermistor' class

TKLed led(9) ; // and giving the value to the desired output pin

float C, F; // temperature readings are returned in float format

byte mac_addr[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x1F, 0x41 };
IPAddress ip_addr(192, 168, 0, 44);
IPAddress server_addr(192, 168, 0, 171);
char user[] = "root";
char password[] = "";

char buf[128];

Connector my_conn;

void setup()
{
// initialize serial communications at 9600 bps

Ethernet.begin(mac_addr);
Serial.begin(9600);
delay(1000);
Serial.println("Connecting...");
if (my_conn.mysql_connect(server_addr, 3306, user, password))
{delay(500);
}
else
{Serial.println("Connection failed.");}

}

void loop()
{

C = therm.getCelsius(); // Reading the temperature in Celsius degrees and store in the C variable
F = therm.getFahrenheit(); // Reading the temperature in Fahrenheit degrees and store in the F variable

// Print the collected data in a row on the Serial Monitor
Serial.print("Analog reading: \t"); // Reading the analog value from the thermistor
Serial.print(therm.getCelsius());
Serial.print("\tC: \t");
Serial.print(C);

sprintf(buf, "INSERT INTO test.temp VALUES (NULL, %hi.%01hi, %i.%01i)",
C,
C,
C,
C);

my_conn.cmd_query(buf);
Serial.print("Data read and recorded.");

}

Se avete delle idee per aiutarmi ne sarei molto felice :smiley:

Ciao

my_conn.mysql_connect(server_addr, 3306, user, password)

la funzione che utilizzi qui, dove l'hai dichiarata?
Non è che stai cercando di utilizzare una funzione php (cosa che ovviamente non può funzionare)?
~~http://php.net/manual/en/function.mysql-connect.php~~

scusa ho riletto gli header (forse c'è una libreria mysql che non conosco ...).
Puoi postare un link della risorsa a cui fai riferimento?
Che errore hai?

non stiamo usando, stiamo cercando di scrivere solo su mysql senza php...non riusciamo a capire il problema...o se ci sono alternative...

Ciao,
per quello che so non è possibile inserire dati direttamente in mysql da arduino, il server mysql usa un protocollo criptato con ssl e non penso ci siano librerie client per arduino.
La cosa più semplice penso sia fare una paginetta in php(perl, java o altri linguaggi) su un webserver connesso al database, nella quale puoi fare una get con i valori da inserire, tipo
http://www.gdgfgfg.com/mysqlinsert?valore1=12&valore2=14
e vai avanti così.
Nella paginetta php ci metti il codice per inserire i valori nel database.
In arduino ci metti il codice per chiamare la paginetta con i parametri, che è una cosa veramente banale.

Edit:
Un alternativa può anche essere un frontend json per mysql, pare che ce ne siano ma non ne so molto.

Alberto

Vi rimando qui: tale Charles Bell sembra esserci riuscito tramite altre librerie

http://www.google.it/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCQQFjAA&url=http%3A%2F%2Fassets.en.oreilly.com%2F1%2Fevent%2F80%2FSensor%2520Network%2520Data%2520Collection%2520and%2520Storage%2520Presentation.ppt&ei=YCWmUM_wA-nd4QTn9YHICQ&usg=AFQjCNEUOshBJofE5FM_hjy9y6qPaLjSpQ&sig2=wfO1muRrcJzDnzevncts0Q

Ciao

per quello che so non è possibile inserire dati direttamente in mysql da arduino, il server mysql usa un protocollo criptato con ssl e non penso ci siano librerie client per arduino.

ok, avevo capito bene :stuck_out_tongue:

La cosa più semplice penso sia fare una paginetta in php(perl, java o altri linguaggi) su un webserver connesso aldatabase, nella quale puoi fare una get con i valori da inserire, tipo
http://www.gdgfgfg.com/mysqlinsert?valore1=12&valore2=14

aggiungo che se cerchi, nel forum trovi più di un esempio sul tema (ricordo per esempio una discussione molto strutturata aperta da ratto93)

se ti serve in perl te la scrivo io, il perl è il mio pane quotidiano :stuck_out_tongue_closed_eyes:

se ti serve in perl te la scrivo io, il perl è il mio pane quotidiano

+1 per il perl, ma come soluzione è più "portabile" php: devo ancora trovare un hosting che supporti perl a un prezzo umano! :stuck_out_tongue:

Cmq dal link postato da juan_1987, si arriva qui:
https://launchpad.net/mysql-arduino

Ho un poco di tempo in treno e me lo guardo

vabbè te lo hosti in locale, con 50 euro ti fai un server-ino tanto è facilissimo da installare :smiley:

Ho provato a compilare l'esempio della libreria, rimuovendo tutto il codice del sensore, e mi da questo errore:

In file included from dht22_sensor_node.ino:63:
/Users/utente/Documents/Arduino/libraries/Sha/sha1.h:26: error: conflicting return type specified for 'virtual void Sha1Class::write(uint8_t)'
/Users/utente/Applicazioni/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)'

Penso sia un problema della libreria sha.

Edit: ci sono un paio di patch per la libreria insieme al codice.

Grande, grande Bell!
Ce l'ha fatta veramente. Cercavo questa libreria da tempo.
Proverò a usarla con un serverino raspi.

Grazie juan per averlo segnalato!

Sensor Network Data Collection and Storage Presentation (1).ppt (1.56 MB)

Ed un sano scriptino in php su un server da poco (anche free) o utilizzar githube?

nahhhh... vuoi mettere scrittura diretta su db,?
E' come vendere casa senza passare per tecnocasa :slight_smile:
Mi sembra molto più semplice e robusto.
Nel powerpoint di Bell sono anche elencati gli altri metodi ed il codice per pachube.

p.s. githube==pachube?

Guglio:
Ed un sano scriptino in php su un server da poco (anche free) o utilizzar githube?

Githube non lo mai sentito e non l'ho trovato. Conosco GitHub.
Pachube adesso è diventato Cosm. https://cosm.com/

[OT]
Ciao,
questo fine settimana abbiamo giocato con OpenEnergyMonitor:
http://openenergymonitor.org/emon/

E' davvero interessante, ha le stesse funzionalità di Cosm, ma permette molte più personalizzazioni e ne esiste una versione che puoi installare localmente (o su hosting) - rendendo di fatto la piattaforma "privata".
[OT]

Riapro questo thread.
Al link MySQL Connector/Arduino in Launchpad non c'e' più nulla, o per lo meno non riesco a trovare un download. Potete aiutarmi?

nid69ita:
Riapro questo thread.
Al link MySQL Connector/Arduino in Launchpad non c'e' più nulla, o per lo meno non riesco a trovare un download. Potete aiutarmi?

Sembrerebbe ... in sviluppo ... comunque qui trovi qualche cosa : ~chuck-bell/mysql-arduino/trunk : files for revision 2 ...
... tutto da verificare naturalmente !

Guglielmo

Grazie! :grin:

Dai un occhiata anche a questo vecchio thread : http://arduino.cc/forum/index.php/topic,154187.0.html ... ci trovi alcune modifiche ... :wink:

Guglielmo

Se vi interessa in allegato la ultima versione della libreria, l'ho chiesta a Chuck Bell.
Mi dice che l'ha usata due settimane fa su un Leonardo ma non ancora su un DUE.
Non l'ho ancora provata.

ciao

mysql_connector.zip (17.3 KB)