##
## FIREBASE + THINGSPEAK
##
#librerias necesarias
#para comunicacion y manejo de pines
import time
import network
import urequests
from machine import ADC, Pin
import ujson
#Configuracion del wifi
SSID="Wokwi-GUEST"
PASSWORD=""
#configuracion thingspeak --> Channel 4
SERVER = "http://api.thingspeak.com/update"
APIKEY = "TU8SQTK7JFQGOVNG"
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
# --- Configuración de Firebase ---
# Reemplaza 'TU_API_KEY' con tu clave API de Firebase obtenida al registrar la app web.
#FIREBASE_API_KEY = "AIzaSyD62b4BxKPOY0kaArgU_pn1QXVfYK1ZXAQ"
# Reemplaza 'YOUR_PROJECT_ID' con el ID de tu proyecto Firebase.
# Asegúrate de que la URL termine en '.firebaseio.com' y el nodo al que deseas escribir (por ejemplo, 'lecturas_esp32')
#FIREBASE_DATABASE_URL = "https://sistemasiot2026veranoinacap-default-rtdb.firebaseio.com/lecturas_esp32.json" #
#Ejemplo: enviando a un nodo llamado 'lecturas_esp32'
#parametros de configuracion del sensor
s_adc = ADC(Pin(34)) # Pin analógico (ej: GPIO34)
# s_adc.atten(ADC.ATTN_11DB) # Rango completo 0–3.3V
# s_adc.width(ADC.WIDTH_12BIT) # 0–4095
#setup
# --- Función para enviar datos a Firebase ---
def enviar_datos_a_firebase(s_adc):
# Datos que deseas enviar (pueden ser lecturas de sensores, etc.)
datos = {
"timestamp": time.time(),
"lectura_adc":s_adc
}
# Construye la URL completa con la clave API para autenticación
url_con_auth = f"{FIREBASE_DATABASE_URL}?auth={FIREBASE_API_KEY}"
try:
# Realiza una solicitud POST para enviar los datos
# Firebase Realtime Database creará automáticamente un ID único para cada entrada POST
print(f"Enviando datos a Firebase: {ujson.dumps(datos)}")
response = urequests.post(url_con_auth, json=datos)
# Verifica el estado de la respuesta
if response.status_code == 200:
print("Datos enviados exitosamente a Firebase.")
else:
print(f"Error al enviar datos: {response.status_code} - {response.text}")
response.close() # Cierra la conexión
except Exception as e:
print(f"Ocurrió un error al conectar con Firebase: {e}")
def conectar_wifi():
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
if not wifi.isconnected():
print("Conectando a WiFi", end="")
wifi.connect(SSID, PASSWORD)
while not wifi.isconnected():
print(".", end="")
time.sleep(0.5)
print("\nWiFi conectado!")
print("IP:", wifi.ifconfig()[0])
return wifi
wifi=conectar_wifi()
#loop
while True:
valor=s_adc.read()
print("valor del sensor :",valor)
if wifi.isconnected():
try:
url = f"{SERVER}?api_key={APIKEY}&field1={valor}"
response = urequests.get(url,timeout=10)
print("Datos enviados a ThingSpeak")
response.close()
# enviar_datos_a_firebase(valor)
except Exception as e:
print("Error al enviar datos:", e)
else:
print("WiFi desconectado")
time.sleep(15)