Tabla de contenido:
- Paso 1: Teoría
- Paso 2: diseño
- Paso 3: Detalles técnicos: la API
- Paso 4: Detalles técnicos: hardware
- Paso 5: Detalles técnicos: Conexión de los puntos | Automatización del hogar
- Paso 6: Conclusión …
Video: Luces de Ramadán - IOT de automatización del hogar: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Mientras el Ramadán toca a la puerta, las ciudades de todo el mundo se iluminan y se preparan para el mes de ayuno. Las luces se cuelgan en las plazas públicas y en las calles de la ciudad, así como en las paredes exteriores de las casas iluminadas durante la noche hasta que sale el sol por la mañana.
En este proyecto, me gustaría compartir mi contribución, en la que estoy automatizando la iluminación de estas decoraciones en función de los tiempos de Adhan y agregando esto a mi sistema de hogar inteligente.
Paso 1: Teoría
Básicamente, es más fácil y más aplicable automatizar la iluminación en función de la intensidad de la luz solar, por ejemplo. Sin embargo, me gustaría que esto tuviera el espíritu del mes sagrado, es decir, las luces se encenderán siempre que las personas puedan comer durante el mes de ayuno. En particular, las luces están encendidas desde Maghrib Adhan hasta Fajr Adhan todos los días sin ninguna interacción humana.
Paso 2: diseño
A continuación, enumeraré los requisitos / capacidades de este proyecto:
- El sistema debería poder procesar automáticamente al arrancar.
- El sistema debe poder ejecutar periódicamente el algoritmo de decisión (ON / OFF).
- El sistema debería poder llamar a la API a diario.
- El sistema debería poder recuperarse de un reinicio no planificado.
- El sistema debe ejecutar el algoritmo de decisión (ENCENDIDO / APAGADO) al recibir datos al instante.
- El sistema debe proporcionar un interruptor para activar el modo de piloto automático (modo automático).
- El sistema debe proporcionar un interruptor para encender y apagar las luces manualmente.
- Activar el interruptor manual debería poner el modo manual en APAGADO.
- Cuando el modo automático está encendido, el resultado del algoritmo de decisión debe reflejarse en el interruptor manual encendido / apagado.
Paso 3: Detalles técnicos: la API
Para que la teoría sea aplicable, se requiere conocer el tiempo de Adhan en bases diarias ya que es variable y actuar sobre él para encender / apagar las luces / decoraciones.
Para este propósito, decidí usar una API basada en la ubicación para entregar los datos (tiempo para Adhan)
muslimsalat.com/api/#location
- Esta API proporciona una variedad de opciones y parámetros de configuración descritos en el enlace de documentación anterior.
- Se recomienda utilizar su propia API_key, que es gratuita al registrarse.
- En mi diseño, estoy interesado en una línea de tiempo diaria.
- La hora devuelta está en formato de 12 horas (AM / PM).
- En cuanto a la ubicación, deseaba que esta API pudiera proporcionar opciones más precisas para ubicaciones como el sistema de coordenadas geográficas (latitud y longitud). De esta manera, esta API se puede proporcionar con un nombre de ciudad, por ejemplo, y esto es suficiente en la mayoría de los casos. Desafortunadamente, los resultados de mi ciudad específica fueron bastante sesgados en múltiples pruebas y hubo un par de minutos de diferencia al comparar el tiempo de Adhan entre los resultados de API y el tiempo real de Adhan en mi ciudad. Por otro lado, los resultados coincidieron perfectamente cuando proporcioné una ciudad cercana al norte y me apegué a ella.
- La URL de la API que estoy usando es: https://muslimsalat.com/.json? Key =
Paso 4: Detalles técnicos: hardware
Para simplificar, dejo el hardware fuera del proceso de sincronización con la API y el cálculo del tiempo al delegar estas operaciones en mi sistema de automatización del hogar. Esto me dará más control si quiero modificar la fuente de la API y el algoritmo de cálculo.
Dicho esto, utilicé un ESP8266 (NodeMCU) para conectarme a la red local a través de WIFI y un módulo de relé como actuador. El NodeMCU usará el protocolo MQTT y escuchará un tema específico para obtener comandos para encender / apagar el relé. ¡Tan simple como eso!
Paso 5: Detalles técnicos: Conexión de los puntos | Automatización del hogar
Mi RaspberryPi tiene una instancia nodada que es capaz de manejar todo lo que necesito para este proyecto. También tiene instalado un servidor MQTT para publicar nuestros mensajes.
Al principio, pensé que podía obtener los datos de la API diariamente a las 9 a.m. y extraer los tiempos de Fajr y Mahgrib Adhan y seguir comparando el tiempo actual con estas variables que son:
cada 30 segundos:
si: Mahgrib <AHORA <Fajr verdadero | enciende las luces | publicar un mensaje ON en el tema de MQTT especificado; de lo contrario: desactivar
Para comparar el tiempo, estoy convirtiendo las horas proporcionadas por la API de hh: mm (AM / PM) a formato de fecha completo estableciendo la parte de la fecha en una fecha insignificante en el historial, por ejemplo (1/1/1970) ya que estamos comparando la hora solo a la hora actual (la parte de la fecha también se convierte).
Desafortunadamente, esto solo funcionará en casos sencillos. Suponga el caso en el que se corta la energía eléctrica o el sistema se reinicia por una razón no planificada. Si este caso ocurre antes de las 12 a. M., Entonces todavía estamos en el lado seguro, pero después de las 12 a. M., Esto fallará en nuestro algoritmo simple.
Para dar un ejemplo, tengamos Magrib Adhan a las 7:30 PM y Fajr a las 4:10 AM. Cuando el sistema se inicia, enviará una nueva solicitud para obtener los datos mencionados anteriormente. Si la hora actual es 1:45 a. M., Esperamos que nuestro algoritmo devuelva verdadero, pero de hecho no lo hará porque 1:45 a. M. Es menor que Fajr (4:10 a. M.) Pero no mayor que Magrib (7:30 p. M.). Esto se debe a que unimos la fecha entre todas las variables. A continuación se muestra la versión final del algoritmo (hasta ahora):
cada 30 segundos:
if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate () + 1); // manejar los días que abarcan endTime if (now.getHours () <= 12) {now.setDate (ahora.getDate () + 1); // manejar los días que abarcan currentTime}} // a continuación se muestra el bloque de código anterior si: Mahgrib <NOW <Fajr true | enciende las luces | publicar un mensaje ON en el tema MQTT especificado else: false | apagar
El flujo completo del proceso está anotado en la imagen de arriba.
En términos de interfaz de usuario, agregué 2 interruptores a la interfaz de usuario / interfaz:
- Un interruptor para convertir este proceso en Automático o Manual.
- Un interruptor para encender / apagar las luces manualmente.
Paso 6: Conclusión …
El tiempo vuela para nunca ser recordado. Hacer proyectos tan simples de 1 día le permite tomar un respiro en este carril rápido y ayudarlo a revivir sus habilidades blandas con el tiempo.
Intenté tanto en este proyecto para mantenerlo simple y reutilizable en todo el mundo.
Por favor vote por este instructivo si cree que este proyecto se lo merece.
¡Feliz Ramadán!
Recomendado:
Botón de automatización del hogar de $ 5: 4 pasos
Botón de automatización del hogar de $ 5: Un botón de automatización del hogar de $ 5 A veces, la solución más simple es un solo botón. Queríamos una manera fácil de activar una rutina de "hora de dormir" en nuestro centro de automatización del hogar (el Hubitat Elevation), que apaga la mayoría de las luces, establece otras en niveles específicos y
Sistema de automatización del hogar WiFi de potencia ultrabaja: 6 pasos (con imágenes)
Sistema de automatización del hogar WiFi de potencia ultrabaja: en este proyecto, mostramos cómo se puede construir un sistema de automatización del hogar local básico en unos pocos pasos. Vamos a utilizar una Raspberry Pi que actuará como dispositivo WiFi central. Mientras que para los nodos finales vamos a utilizar IOT Cricket para hacer una batería
Automatización del hogar: 5 pasos
Automatización del hogar: en este proyecto, usamos muchas cosas para construirlo desde cero para comprender el proceso de Internet de las cosas de IoT para todo el proyecto
Automatización del hogar con relé de control de temperatura LDR con sensor táctil NodeMCU: 16 pasos
Automatización del hogar con relé de control de temperatura LDR con sensor táctil NodeMCU: en mis proyectos anteriores de NodeMCU, he controlado dos electrodomésticos desde la aplicación Blynk. Recibí muchos comentarios y mensajes para actualizar el proyecto con Control Manual y agregar más funciones. Así que he diseñado esta Caja de Extensión de Hogar Inteligente. En este IoT
Automatización del hogar: suena una alarma y se muestra en la pantalla LCD cuando la temperatura está por encima del valor umbral: 5 pasos
Automatización del hogar: haga sonar una alarma y se mostrará en la pantalla LCD cuando la temperatura esté por encima del valor umbral: este blog demostrará cómo hacer un sistema de automatización del hogar que comenzará a hacer sonar una alarma cuando la temperatura alcance más del valor umbral programado. Seguirá mostrando la temperatura actual de la habitación en la pantalla LCD y se necesita acción