Не удается вставить в БД - Arduino SQL - PullRequest
0 голосов
/ 26 сентября 2019

Хорошо, поэтому этот код по какой-то причине не вставляет данные в мою таблицу.Код работает, я не получаю никаких ошибок, но он просто не работает.Я впервые работаю с Arduino и SQL вместе

У меня подключен датчик температуры и влажности DH11, который действительно дает хорошие результаты

#include "dht.h"
#define dht_apin 2 // Analog Pin sensor is connected to
#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress server_addr(127,0,0,1);  
char user[] = "root";              
char password[] = "";        

char INSERT_DATA[] = "INSERT INTO arduino_test.temperature (temperature, humidity, time) VALUES (%f, %f, NOW())";
char query[128];
char temperature[10];

EthernetClient client;
MySQL_Connection conn((Client *)&client);

dht DHT;

void setup(){

  Serial.begin(9600);
  while (!Serial); // wait for serial port to connect
  Ethernet.begin(mac_addr);

  Serial.println("Connecting...");

  if (conn.connect(server_addr, 3306, user, password)) {
    delay(1000);
  }

  delay(500);
  Serial.println("DHT11 Humidity & temperature Sensor\n\n");
  delay(1000);

}//end "setup()"

void loop(){
    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn); 

    DHT.read11(dht_apin);

    Serial.print("Current humidity = ");
    Serial.print(DHT.humidity);
    Serial.print("%  ");
    Serial.print("temperature = ");
    Serial.print(DHT.temperature); 
    Serial.println("C  ");

    sprintf(query, INSERT_DATA, 1, DHT.humidity, DHT.temperature);
    cur_mem->execute(query);
    delete cur_mem;

    delay(2000);
}

У меня есть база данных с именем "arduino_test""и таблица температур внутри него

CREATE TABLE `temperature` (
  `ID` int(11) NOT NULL,
  `temperature` float NOT NULL,
  `humidity` float NOT NULL,
  `time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `temperature`
  ADD PRIMARY KEY (`ID`);

ALTER TABLE `temperature`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

Мой MySQL установлен на 127.0.0.1 (он же localhost) и работает на порте 12088

Просто, чтобы сложить, мой цикл заканчивается после первоговремя по какой-то причине

...