Taula de continguts:

Llums del Ramadà - Domòtica IOT: 6 passos
Llums del Ramadà - Domòtica IOT: 6 passos

Vídeo: Llums del Ramadà - Domòtica IOT: 6 passos

Vídeo: Llums del Ramadà - Domòtica IOT: 6 passos
Vídeo: Лайфхаки для ремонта квартиры. Полезные советы.#2 2024, Juliol
Anonim
Llums del Ramadà | Domòtica IOT
Llums del Ramadà | Domòtica IOT

Mentre el ramadà truca a la porta, les ciutats de tot el món s’il·luminen i es preparen per al mes de dejuni. Les llums es pengen a les places públiques i als carrers de la ciutat, així com a les parets exteriors de les cases il·luminades durant les nits fins que surt el sol al matí.

En aquest projecte, m'agradaria compartir la meva contribució, en què automatitzo la il·luminació d'aquestes decoracions en funció dels temps d'Adhan i l'afegeixo al meu sistema de casa intel·ligent.

Pas 1: teoria

Bàsicament, és més fàcil i aplicable automatitzar la il·luminació en funció de la intensitat del sol, per exemple. Tanmateix, m’agradaria que tingués l’esperit del mes sagrat, és a dir, que s’encenguin els llums sempre que es permeti menjar durant el mes de dejuni. En particular, les llums s’encenen des de Maghrib Adhan fins a Fajr Adhan cada dia sense cap interacció humana.

Pas 2: disseny

A continuació, enumeraré els requisits / capacitats d’aquest projecte:

  • El sistema hauria de poder processar automàticament en arrencar.
  • El sistema hauria de poder executar periòdicament l'algorisme de decisió (ON / OFF).
  • El sistema hauria de poder trucar a l'API diàriament.
  • El sistema hauria de poder recuperar-se d'un reinici no planificat.
  • El sistema hauria d'executar l'algorisme de decisió (ON / OFF) en rebre dades a l'instant.
  • El sistema hauria de proporcionar un commutador per activar el mode de pilot automàtic (mode automàtic).
  • El sistema hauria de proporcionar un commutador per encendre / apagar els llums manualment.
  • Si activeu l'interruptor manual, el mode manual s'hauria de desactivar.
  • Quan el mode automàtic està ACTIVAT, el resultat de l'algorisme de decisió s'hauria de reflectir a l'interruptor manual ON / OFF.

Pas 3: detalls tècnics: l'API

Detalls tècnics: l'API
Detalls tècnics: l'API

Per fer que la teoria sigui aplicable, és necessari conèixer el temps d’Adhan a la base diària des de la seva variable i actuar sobre ella per encendre / apagar els llums / decoracions.

Amb aquest propòsit, vaig decidir utilitzar una API basada en la ubicació per publicar les dades (temps per a Adhan)

muslimsalat.com/api/#location

  • Aquesta API proporciona una gran varietat d'opcions i paràmetres de configuració descrits a l'enllaç de documentació anterior.
  • Es recomana utilitzar la vostra pròpia API_key, que és gratuïta després del registre.
  • En el meu disseny, m’interessa una cronologia diària.
  • El temps retornat té un format de 12 hores (AM / PM).
  • Quant a la ubicació, desitjaria que aquesta API pogués proporcionar opcions més precises per a ubicacions com el sistema de coordenades geogràfiques de coordenades (latitud i longitud). D'aquesta manera, aquesta API es pot proporcionar amb un nom de ciutat, per exemple, i és suficient en la majoria dels casos. Malauradament, els resultats de la meva ciutat específica van ser força esbiaixats en diverses proves i hi va haver un parell de minuts de diferència en comparar el temps d'Adhan entre els resultats de l'API i el temps real d'Adhan a la meva ciutat. D’altra banda, els resultats van coincidir perfectament quan vaig proporcionar una ciutat propera al nord i em vaig quedar amb ella.
  • L'URL de l'API que estic utilitzant és: https://muslimsalat.com/.json? Key =

Pas 4: detalls tècnics: maquinari

Detalls tècnics: Hardware
Detalls tècnics: Hardware

Per simplicitat, deixo el maquinari fora del procés de sincronització amb l'API i el càlcul del temps delegant aquestes operacions al meu sistema domòtic. Això em donarà més control si vull ajustar la font de l'API i l'algoritme de càlcul.

Dit això, he utilitzat un ESP8266 (NodeMCU) per connectar-me a la xarxa local mitjançant WIFI i un mòdul de relé com a actuador. El NodeMCU utilitzarà el protocol MQTT i escoltarà un tema específic per obtenir ordres per activar / desactivar el relé. Tan simple com això!

Pas 5: detalls tècnics: connexió dels punts | Domòtica

Detalls tècnics: Connecting the Dots | Domòtica
Detalls tècnics: Connecting the Dots | Domòtica
Detalls tècnics: Connecting the Dots | Domòtica
Detalls tècnics: Connecting the Dots | Domòtica
Detalls tècnics: Connecting the Dots | Domòtica
Detalls tècnics: Connecting the Dots | Domòtica

El meu RaspberryPi té una instància amb cap que és capaç de gestionar tot el que necessito per a aquest projecte. També té instal·lat un servidor MQTT per publicar els nostres missatges.

Al principi, vaig pensar que podia obtenir les dades de l'API en base diària a les 9:00 i extreure els temps Fajr i Mahgrib Adhan i seguir comparant l'hora actual amb aquestes variables:

cada 30 segons:

si: Mahgrib <ARA <Fajr true | encendre els llums | publiqueu un missatge ACTIVAT al tema MQTT especificat més: apagueu

Per comparar l'hora, estic convertint les hores proporcionades per l'API de hh: mm (AM / PM) a format de data completa establint la porció de data a una data insignificant de la història, per exemple (1/1/1970), ja que comparem l'hora només a l'hora actual (la part de la data també es converteix).

Malauradament, això només funcionarà en casos directes. Suposem que es produeix un descens de l’energia elèctrica o el sistema es reinicia per un motiu no planificat. Si aquest cas es produeix abans de les 12:00, encara estem en el punt segur, però després de les 00:00 això fallarà en el nostre algorisme senzill.

Per posar un exemple, posem Magrib Adhan a les 19:30 i Fajr a les 4:10. Quan el sistema s'engegui, enviarà una nova sol·licitud per obtenir les dades esmentades anteriorment. Si el temps ara és a la 1:45 AM, esperem que el nostre algoritme sigui cert, però de fet no ho farà perquè la 1:45 AM és inferior a Fajr (4:10 AM) però no és superior a Magrib (19:30 PM). Això es deu al fet que unim la data entre totes les variables. A continuació es mostra la versió final de l'algorisme (fins ara):

cada 30 segons:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate () + 1); // gestionar els dies d’extensió endTime if (now.getHours () <= 12) {now.setDate (now.getDate () + 1); // gestiona els dies d’actualització}} // a continuació es mostra el bloc de codi anterior si: Mahgrib <ARA <Fajr true | encendre els llums | publiqueu un missatge ON al tema MQTT especificat else: false | tanca

El flux complet del procés s’anota a la imatge anterior.

Pel que fa a la interfície d’usuari, he afegit 2 commutadors a la interfície d’usuari / interfície:

  1. Un commutador per convertir aquest procés en automàtic o manual.
  2. Un interruptor per encendre / apagar els llums manualment.

Pas 6: finalitzar …

El temps vola per no recordar-se mai. Fer projectes tan senzills d’un dia us permetrà respirar en aquest carril ràpid i ajudar-vos a reviure les vostres habilitats suaus amb el pas del temps.

He intentat tant en aquest projecte per mantenir-lo senzill i reutilitzable a tot el món.

Voteu aquest amable si creieu que aquest projecte es mereix.

Feliç Ramadà!

Recomanat: