MySQL connector arduino

Hi trying to connect Arduino to my NAS using mysql connector for temprature logging.

Having problems sending live data from the sensor (DS1820) to the NAS/mysql.

Static info like TEXT is no problems (The text Hello, MySQL!)

#include “SPI.h”
#include “Ethernet.h”
#include “sha1.h”
#include “mysql.h”
#include “OneWire.h”

byte mac_addr = { 0x90, 0xA2, 0xDA, 0x0F, 0x69, 0xAC };
byte ip_addr = { 192, 168, 1 , 50 };
byte dns_addr = { 192, 168, 10, 1 };
byte gateway_addr = { 192, 168, 10, 1 };
byte netmask = { 255, 255, 255, 0 };
IPAddress server_addr(192, 168, 1, 3);

OneWire ds(10);
Connector my_conn; // The Connector/Arduino reference
char sqlbuf[128];
char celsiusStr[10];

char user = “…”;
char password = “…”; //the credentials are correct in my code
char INSERT_SQL = “INSERT INTO test_arduino.hello VALUES (‘Hello, MySQL!’, NULL)”;
char INSERT_SQL2 = “INSERT INTO test_arduino.hello VALUES (‘132’, NULL)”;
char INSERT_DATA = “INSERT INTO test_arduino.temp VALUES (%s, NULL)”;

void setup() {
Serial.begin(115200);
Ethernet.begin(mac_addr, ip_addr, dns_addr, gateway_addr, netmask); //Yes, I know this is way more than necessary, but just to play it safe
delay(1000);
Serial.print("IP: ");
Serial.println(Ethernet.localIP()); // debugging
Serial.println(“Connecting…”);
if (my_conn.mysql_connect(server_addr, 3306, user, password)) //connect to database
{
delay(500);
my_conn.cmd_query(INSERT_SQL);
Serial.println(“Query Success!”);
}
else
Serial.println(“Connection failed.”);
}

void loop(void) {
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit;

if ( !ds.search(addr)) {
Serial.println(“No more addresses.”);
Serial.println();
ds.reset_search();
delay(250);
return;
}

Serial.print(“ROM =”);
for( i = 0; i < 8; i++) {
Serial.write(’ ');
Serial.print(addr*, HEX);*

  • }*

  • if (OneWire::crc8(addr, 7) != addr[7]) {*

  • Serial.println(“CRC is not valid!”);*

  • return;*

  • }*

  • Serial.println();*

  • // the first ROM byte indicates which chip*

  • switch (addr[0]) {*

  • case 0x10:*

  • Serial.println(" Chip = DS18S20"); // or old DS1820*

  • type_s = 1;*

  • break;*

  • case 0x28:*

  • Serial.println(" Chip = DS18B20");*

  • type_s = 0;*

  • break;*

  • case 0x22:*

  • Serial.println(" Chip = DS1822");*

  • type_s = 0;*

  • break;*

  • default:*

  • Serial.println(“Device is not a DS18x20 family device.”);*

  • return;*

  • }*

  • ds.reset();*

  • ds.select(addr);*

  • ds.write(0x44, 1); // start conversion, with parasite power on at the end*

  • delay(1000); // maybe 750ms is enough, maybe not*

  • // we might do a ds.depower() here, but the reset will take care of it.*

  • present = ds.reset();*

  • ds.select(addr); *

  • ds.write(0xBE); // Read Scratchpad*

  • Serial.print(" Data = ");*

  • Serial.print(present, HEX);*

  • Serial.print(" ");*

  • for ( i = 0; i < 9; i++) { // we need 9 bytes*
    _ data = ds.read();_
    _ Serial.print(data*, HEX);
    Serial.print(" “);
    }
    Serial.print(” CRC=");
    Serial.print(OneWire::crc8(data, 8), HEX);
    Serial.println();
    // Convert the data to actual temperature*
    * // because the result is a 16 bit signed integer, it should*
    * // be stored to an “int16_t” type, which is always 16 bits*
    * // even when compiled on a 32 bit processor._
    int16_t raw = (data[1] << 8) | data[0];
    if (type_s) {
    _ raw = raw << 3; // 9 bit resolution default*
    * if (data[7] == 0x10) {
    // “count remain” gives full 12 bit resolution*
    * raw = (raw & 0xFFF0) + 12 - data[6];
    }
    } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let’s zero them*
    * if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms*
    * else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms*
    * else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms*
    * //// default is 12 bit resolution, 750 ms conversion time*
    * }
    celsius = (float)raw / 16.0;
    fahrenheit = celsius * 1.8 + 32.0;
    Serial.print(" Temperature = “);
    Serial.print(celsius);
    Serial.print(” Celsius, “);
    Serial.print(fahrenheit);
    Serial.println(” Fahrenheit");
    char query[64];_
    sprintf(query, INSERT_DATA, celsius);
    my_conn.cmd_query(query);
    _}[/td]
    [/tr]
    [/table]*_

Did you try a Serial.println(query); to verify your INSERT request ?
And directly test this same query on your MySQL server, to be sure the type and order of columns are those expected ?

Well the code send this line into the mysql

char INSERT_SQL = "INSERT INTO test_arduino.hello VALUES ('Hello, MySQL!', NULL)";

But the ds1820 Do not work...

But the ds1820 Do not work...

Then sending garbage data to the database hardly makes sense.

If you meant that sending data from the ds1820 doesn't work, you need to post your code correctly. I am CERTAIN that it does not contain italics.

  sprintf(query, INSERT_DATA, celsius);

The format statement looks like:

char INSERT_DATA[] = "INSERT INTO test_arduino.temp VALUES (%s, NULL)";

The only format specifier in that format statement is %s, which is for strings. celsius is what type?
float != string.

[table][tr][td]#include "SPI.h"
...snip...

Well, that's a new one. Please use the [code] tag that's intended for code. The original post can be edited instead of adding a new post. You are even allowed to change the code to your current version you have now, although a comment describing your edit is always appreciated.