// Learn about the ESP32 WiFi simulation in
// https://docs.wokwi.com/guides/esp32-wifi
#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
#define NTP_SERVER "pool.ntp.org"
#define UTC_OFFSET 0
#define UTC_OFFSET_DST 0
// DECLARAÇÃO DE VARIÁVEIS PARA WIFI
//char ssid[] = ""; // your network SSID (name)
//char pass[] = ""; // your network password
int status = WL_IDLE_STATUS; // status
// DECLARAÇÃO DE VARIÁVEIS PARA MySQL
IPAddress server_addr(205,196,211,71); // IP of the MySQL *server* here
char db_user[] = "erp_mmoperation"; // MySQL user login username
char db_password[] = "qwe!@#123"; // MySQL user login password
int id_machine = 0;
int status_machine = 0;
struct tm date_time ;
char INSERT_SQL[] = "INSERT INTO mmoperation.log (id_machine,status_machine,date_time) VALUES ('%d', '%d','%d')";
char query[128];
// INSTANCIANDO OBJETOS
WiFiClient client;
MySQL_Connection conn((Client *)&client);
void enviaDados();
void spinner() {
static int8_t counter = 0;
const char* glyphs = "\xa1\xa5\xdb";
LCD.setCursor(15, 1);
LCD.print(glyphs[counter++]);
if (counter == strlen(glyphs)) {
counter = 0;
}
}
void printLocalTime() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
LCD.setCursor(0, 1);
LCD.println("Connection Err");
return;
}
LCD.setCursor(8, 0);
LCD.println(&timeinfo, "%H:%M:%S");
LCD.setCursor(0, 1);
LCD.println(&timeinfo, "%d/%m/%Y %Z");
}
void setup() {
Serial.begin(115200);
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("Connecting to ");
LCD.setCursor(0, 1);
LCD.print("WiFi ");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(250);
spinner();
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
LCD.clear();
LCD.setCursor(0, 0);
LCD.println("Online");
LCD.setCursor(0, 1);
LCD.println("Updating time...");
configTime(UTC_OFFSET, UTC_OFFSET_DST, NTP_SERVER);
}
void loop() {
printLocalTime();
Serial.println("Informações Envia dados");
enviaDados();
delay(250);
}
void enviaDados(){
sprintf(query, INSERT_SQL,id_machine,status_machine,date_time);
MySQL_Cursor *cur = new MySQL_Cursor(&conn);
delay(100);
if (conn.connected()) {
// do something your work
cur->execute(query);
delete cur;
} else {
conn.close();
Serial.println("Connecting...");
delay(200); //
if (conn.connect(server_addr, 3306, db_user, db_password)) {
delay(500);
Serial.println("Successful reconnect!");
} else {
Serial.println("Cannot reconnect! Drat.");
}
}
}