#include <Arduino.h>
#include <ESPSupabase.h>
#if defined(ESP8266)
#include <ESP8266WiFi.h>
#else
#include <WiFi.h>
#endif
Supabase db;
// Tu configuración de Supabase
String table = "ping";
// Tus credenciales de WiFi
const char *ssid = "VALENCIA";
const char *password = "07561163";
// Lista de colores primarios
String colors[] = {"rojo", "naranja", "amarillo", "verde", "azul", "indigo", "violeta"};
const int numColors = 7;
// Configuración de IP estática
IPAddress staticIP(192, 168, 1, 100);
IPAddress gateway(192, 168, 1, 1); // Generalmente la dirección del router
IPAddress subnet(255, 255, 255, 0); // Máscara de subred común
IPAddress dns(192, 168, 1, 1);
void setup() {
Serial.begin(115200);
// Conectando a Wi-Fi
Serial.print("Conectando a WiFi");
WiFi.config(staticIP, gateway, subnet, dns);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("Connected!");
Serial.print("Dirección IP asignada: ");
Serial.println(WiFi.localIP());
// Inicializando la conexión a Supabase
db.begin(supabase_url, anon_key);
readLastColor(); // Leer el último color al inicio
delay(500);
writeRandomColor(); // Escribir un color aleatorio al inicio
// No es necesario resetear la query aquí, se hace dentro de las funciones
}
void loop() {
delay(3 * 24 * 60 * 60 * 1000); // Esperar 3 días (en milisegundos)
readLastColor();
writeRandomColor();
}
void readLastColor() {
Serial.println("Leyendo el último color...");
String response = db.from(table)
.select("*")
.doSelect();
Serial.println("Respuesta de lectura: " + response);
// Aquí podrías necesitar analizar la respuesta JSON para extraer el valor del color
// La estructura de la respuesta dependerá de la librería ESPSupabase.
// Generalmente, será un array JSON con un objeto dentro.
// Ejemplo de cómo podrías intentar extraer el color (dependerá de la librería):
int startIndex = response.indexOf(""color":"");
if (startIndex != -1) {
startIndex += 9; // Saltar la cadena ""color":""
int endIndex = response.indexOf(""", startIndex);
if (endIndex != -1) {
String lastColor = response.substring(startIndex, endIndex);
Serial.println("Último color en la tabla: " + lastColor);
} else {
Serial.println("Error al parsear el valor del color.");
}
} else {
Serial.println("No se encontró el campo 'color' en la respuesta.");
}
db.urlQuery_reset(); // Resetear la query para la siguiente operación
}
void writeRandomColor() {
int randomIndex = random(numColors);
String randomColor = colors[randomIndex];
Serial.printf("Escribiendo color: %s...\n", randomColor.c_str());
String jsonPayload = "{"color": "" + randomColor + ""}";
int responseCode = db.insert(table, jsonPayload, false); // upsert = false para una inserción simple
Serial.printf("Código de respuesta de escritura: %d\n", responseCode);
db.urlQuery_reset(); // Resetear la query
}
no funciona borre los url y el anon para pegarlo aqui, el codigo se para en "leyendo el ultimo color"
#include <Arduino.h>
#include <ESPSupabase.h>
#if defined(ESP8266)
#include <ESP8266WiFi.h>
#else
#include <WiFi.h>
#endif
Supabase db;
// Tu configuración de Supabase
String table = "ping";
// Tus credenciales de WiFi
const char *ssid = "VALENCIA";
const char *password = "07561163";
// Lista de colores primarios
String colors[] = {"rojo", "naranja", "amarillo", "verde", "azul", "indigo", "violeta"};
const int numColors = 7;
// Configuración de IP estática
IPAddress staticIP(192, 168, 1, 100);
IPAddress gateway(192, 168, 1, 1); // Generalmente la dirección del router
IPAddress subnet(255, 255, 255, 0); // Máscara de subred común
IPAddress dns(192, 168, 1, 1);
void setup() {
Serial.begin(115200);
// Conectando a Wi-Fi
Serial.print("Conectando a WiFi");
WiFi.config(staticIP, gateway, subnet, dns);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("Connected!");
Serial.print("Dirección IP asignada: ");
Serial.println(WiFi.localIP());
// Inicializando la conexión a Supabase
db.begin(supabase_url, anon_key);
readLastColor(); // Leer el último color al inicio
delay(500);
writeRandomColor(); // Escribir un color aleatorio al inicio
// No es necesario resetear la query aquí, se hace dentro de las funciones
}
void loop() {
delay(3 * 24 * 60 * 60 * 1000); // Esperar 3 días (en milisegundos)
readLastColor();
writeRandomColor();
}
void readLastColor() {
Serial.println("Leyendo el último color...");
String response = db.from(table)
.select("*")
.doSelect();
Serial.println("Respuesta de lectura: " + response);
// Aquí podrías necesitar analizar la respuesta JSON para extraer el valor del color
// La estructura de la respuesta dependerá de la librería ESPSupabase.
// Generalmente, será un array JSON con un objeto dentro.
// Ejemplo de cómo podrías intentar extraer el color (dependerá de la librería):
int startIndex = response.indexOf(""color":"");
if (startIndex != -1) {
startIndex += 9; // Saltar la cadena ""color":""
int endIndex = response.indexOf(""", startIndex);
if (endIndex != -1) {
String lastColor = response.substring(startIndex, endIndex);
Serial.println("Último color en la tabla: " + lastColor);
} else {
Serial.println("Error al parsear el valor del color.");
}
} else {
Serial.println("No se encontró el campo 'color' en la respuesta.");
}
db.urlQuery_reset(); // Resetear la query para la siguiente operación
}
void writeRandomColor() {
int randomIndex = random(numColors);
String randomColor = colors[randomIndex];
Serial.printf("Escribiendo color: %s...\n", randomColor.c_str());
String jsonPayload = "{"color": "" + randomColor + ""}";
int responseCode = db.insert(table, jsonPayload, false); // upsert = false para una inserción simple
Serial.printf("Código de respuesta de escritura: %d\n", responseCode);
db.urlQuery_reset(); // Resetear la query
}
no funciona borre los url y el anon para pegarlo aqui, el codigo se para en "leyendo el ultimo color"