Pages: [1] 2   Go Down
Author Topic: Scrittura Mysql  (Read 3825 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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-grin
Logged

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2316
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao

Quote
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?
« Last Edit: November 16, 2012, 06:32:49 am by pitusso » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Milan, Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 349
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: November 16, 2012, 07:39:24 am by bigjohnson » Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2316
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao

Quote
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  smiley-razz

Quote
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)
Logged

Offline Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

se ti serve in perl te la scrivo io, il perl è il mio pane quotidiano  smiley-yell
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2316
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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!  smiley-razz

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
Logged

Offline Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Milan, Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 349
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho provato a compilare l'esempio della libreria, rimuovendo tutto il codice del sensore, e mi da questo errore:
Quote
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.
« Last Edit: February 22, 2013, 10:08:26 am by bigjohnson » Logged


rome
Offline Offline
Sr. Member
****
Karma: 17
Posts: 487
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!

« Last Edit: November 16, 2012, 12:14:11 pm by brunialti » Logged

Fidenza, Parma
Offline Offline
God Member
*****
Karma: 9
Posts: 783
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

ArduMAP: Mappa degli utenti che utilizzano Arduino.
http://www.guglio.net/ArduMAP

rome
Offline Offline
Sr. Member
****
Karma: 17
Posts: 487
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

nahhhh... vuoi mettere scrittura diretta su db,?
E' come vendere casa senza passare per tecnocasa :-)
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?
« Last Edit: November 17, 2012, 02:11:47 am by brunialti » Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7213
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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/
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2316
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

[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]
Logged

Pages: [1] 2   Go Up
Jump to: