Добрый день. Прошу помощи, не могу передать данные в mysql
Имеется:
- Wemos D1 mini r2
- Датчик CO2 T6703
- Условно база данных mysql
Цель всего этого безумства - это конечно анализ. Да на экранчик вывел информацию, вижу показатели (в данном коде убрал чтоб не засорять), но анализа нет. В будущем + температура, влажность и т.п. И сайт с графиками.
С платой и Wifi, никаких проблем, есть подключение. Точно так же и работает подключение к mysql и даже запись в базу данных идет, только то что написано в VALUES.
Но как в данной строке передать текущее значение с датчика, никак не пойму char INSERT_SQL[] = "INSERT INTO arduino.ard (ppm) VALUES ('CO2ppmValue')";
***********
Да, да, я знаю, можно передавать GET запросом через PHP в базу, но прямое подключение к базе лучше.
Через монитор порта показатели вижу.
Прикрепил на всякий случай код
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#define ADDR_6713 0x15
byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte data[6];
int CO2ppmValue;
IPAddress server_addr(192, 168, 1, 205); // IP of the MySQL *server* here
char user[] = "test"; // MySQL user login username
char password[] = ".........."; // MySQL user login password
char ssid[] = "ASUS"; // your SSID
char pass[] = "........."; // your SSID Password
WiFiClient client; // Use this for WiFi instead of EthernetClient
MySQL_Connection conn((Client *)&client);
char query[128];
void setup() {
Wire.begin();
Serial.begin(115200);
WiFi.begin(ssid, pass);
Serial.println("Connected to network");// Подключение к WiFi Сети
while (WiFi.status() != WL_CONNECTED) { // Проверка подключения к WiFi сети
delay(500);
}
IPAddress ip = WiFi.localIP();
Serial.print("My IP address is: ");
Serial.println(ip);
Serial.println("Connecting...");
if (conn.connect(server_addr, 3306, user, password)) {
delay(1000);
}
else
Serial.println("Connection failed.");
}
void loop() {
GetCO2PPM();
Serial.print("T6703 CO2 Value : ");
Serial.print(CO2ppmValue);
Serial.println(" ppm");
Serial.println("Recording data.");
char INSERT_SQL[] = "INSERT INTO arduino.ard (ppm) VALUES ('$CO2ppmValue')";
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
cur_mem->execute(INSERT_SQL);
delete cur_mem;
delay(10000);
}
void GetCO2PPM() {
// start I2C
Wire.beginTransmission(ADDR_6713);
Wire.write(0x04);
Wire.write(0x13);
Wire.write(0x8B);
Wire.write(0x00);
Wire.write(0x01);
Wire.endTransmission();
delay(10);
Wire.requestFrom(ADDR_6713, 4); // request 4 bytes from slave device
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
CO2ppmValue = ((data[2] & 0x3F ) << 8) | data[3];
}
Имеется:
- Wemos D1 mini r2
- Датчик CO2 T6703
- Условно база данных mysql
Цель всего этого безумства - это конечно анализ. Да на экранчик вывел информацию, вижу показатели (в данном коде убрал чтоб не засорять), но анализа нет. В будущем + температура, влажность и т.п. И сайт с графиками.
С платой и Wifi, никаких проблем, есть подключение. Точно так же и работает подключение к mysql и даже запись в базу данных идет, только то что написано в VALUES.
Но как в данной строке передать текущее значение с датчика, никак не пойму char INSERT_SQL[] = "INSERT INTO arduino.ard (ppm) VALUES ('CO2ppmValue')";
***********
Да, да, я знаю, можно передавать GET запросом через PHP в базу, но прямое подключение к базе лучше.
Через монитор порта показатели вижу.
Прикрепил на всякий случай код
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#define ADDR_6713 0x15
byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte data[6];
int CO2ppmValue;
IPAddress server_addr(192, 168, 1, 205); // IP of the MySQL *server* here
char user[] = "test"; // MySQL user login username
char password[] = ".........."; // MySQL user login password
char ssid[] = "ASUS"; // your SSID
char pass[] = "........."; // your SSID Password
WiFiClient client; // Use this for WiFi instead of EthernetClient
MySQL_Connection conn((Client *)&client);
char query[128];
void setup() {
Wire.begin();
Serial.begin(115200);
WiFi.begin(ssid, pass);
Serial.println("Connected to network");// Подключение к WiFi Сети
while (WiFi.status() != WL_CONNECTED) { // Проверка подключения к WiFi сети
delay(500);
}
IPAddress ip = WiFi.localIP();
Serial.print("My IP address is: ");
Serial.println(ip);
Serial.println("Connecting...");
if (conn.connect(server_addr, 3306, user, password)) {
delay(1000);
}
else
Serial.println("Connection failed.");
}
void loop() {
GetCO2PPM();
Serial.print("T6703 CO2 Value : ");
Serial.print(CO2ppmValue);
Serial.println(" ppm");
Serial.println("Recording data.");
char INSERT_SQL[] = "INSERT INTO arduino.ard (ppm) VALUES ('$CO2ppmValue')";
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
cur_mem->execute(INSERT_SQL);
delete cur_mem;
delay(10000);
}
void GetCO2PPM() {
// start I2C
Wire.beginTransmission(ADDR_6713);
Wire.write(0x04);
Wire.write(0x13);
Wire.write(0x8B);
Wire.write(0x00);
Wire.write(0x01);
Wire.endTransmission();
delay(10);
Wire.requestFrom(ADDR_6713, 4); // request 4 bytes from slave device
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
CO2ppmValue = ((data[2] & 0x3F ) << 8) | data[3];
}