Notificación de Fuga de Gas en Aplicaciones Flutter con ESP32, MQ2 y Firebase Messaging
Notificación de Fuga de Gas en Aplicaciones Flutter con ESP32, MQ2 y Firebase Messaging
En este tutorial, aprenderemos a construir un sistema de alerta de fuga de gas que no solo detecta la presencia de gases peligrosos utilizando el sensor MQ-2 y un ESP32, sino que también envía notificaciones en tiempo real a una aplicación Flutter a través de Firebase Cloud Messaging. Este sistema es ideal para aplicaciones de seguridad en el hogar, permitiendo a los usuarios ser alertados inmediatamente en sus dispositivos móviles ante cualquier peligro.
Materiales Necesarios
- ESP32
- Sensor de gas MQ-2
- Cables de conexión
- Protoboard
Herramientas y Tecnologías de Software
- Arduino IDE
- Flutter
- Firebase Console
- Librerías para ESP32 y MQ-2
Configuración del Proyecto
Configuración de Firebase
- Crea un nuevo proyecto en Firebase Console.
- Añade tu aplicación Flutter a tu proyecto de Firebase siguiendo las instrucciones proporcionadas por la consola (Android/iOS).
- Configura Firebase Cloud Messaging en tu proyecto de Firebase para obtener la clave del servidor y el ID del remitente, que necesitarás más adelante.
Desarrollo de la Aplicación Flutter
- Crea un nuevo proyecto Flutter.
- Añade las dependencias necesarias para Firebase Messaging en tu archivo
pubspec.yaml. - Configura la escucha de mensajes en segundo plano y el manejo de notificaciones.
Programación del ESP32
- Conecta el sensor MQ-2 al ESP32.
- Utiliza el Arduino IDE para programar el ESP32. El código debe leer los valores del sensor MQ-2 y, si detecta gas, enviar una notificación a través de Firebase Cloud Messaging usando la API REST de Firebase y la clave del servidor obtenida anteriormente.
Ejemplo de Código
ESP32 con MQ-2
Aquí hay un ejemplo simplificado de cómo el ESP32 podría enviar una notificación a través de Firebase Cloud Messaging cuando detecta gas:
#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "TU_SSID";
const char* password = "TU_CONTRASEÑA";
const char* serverKey = "TU_CLAVE_DEL_SERVIDOR_FCM";
const char* deviceToken = "EL_TOKEN_DEL_DISPOSITIVO_DESTINO";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando a WiFi...");
}
}
void loop() {
// Suponiendo que `leerSensorGas()` es una función que lee los valores del MQ-2
if (leerSensorGas() > UMBRAL_DE_GAS) {
enviarNotificacionFCM();
}
delay(10000); // Espera 10 segundos antes de la próxima lectura
}
void enviarNotificacionFCM() {
if(WiFi.status() == WL_CONNECTED){
HTTPClient http;
http.begin("https://fcm.googleapis.com/fcm/send");
http.addHeader("Content-Type", "application/json");
http.addHeader("Authorization", "key=" + String(serverKey));
String httpRequestData = "{\"to\":\"" + String(deviceToken) + "\",\"notification\":{\"title\":\"Alerta de Gas\",\"body\":\"Se ha detectado una fuga de gas.\"}}";
int httpResponseCode = http.POST(httpRequestData);
if (httpResponseCode > 0) {
Serial.println("Notificación enviada.");
} else {
Serial.println("Error al enviar la notificación.");
}
http.end();
}
}
Flutter (Recepción de Notificaciones)
Para recibir y manejar notificaciones en Flutter, debes configurar adecuadamente el Firebase Messaging Listener en tu aplicación. Revisa la documentación oficial de Firebase Cloud Messaging para Flutter para implementar la recepción de mensajes tanto en primer plano como en segundo plano.
Conclusión
Este tutorial ha proporcionado una visión general de cómo construir un sistema de alerta de fuga de gas integrando el sensor MQ-2 con un ESP32, enviando notificaciones a una aplicación Flutter mediante Firebase Cloud Messaging. La integración de tecnologías de hardware y software abre un amplio abanico de posibilidades para desarrollar aplicaciones de seguridad en el hogar inteligentes y conectadas.
