Sisukord:

Ramadaani tuled - Koduautomaatika IOT: 6 sammu
Ramadaani tuled - Koduautomaatika IOT: 6 sammu

Video: Ramadaani tuled - Koduautomaatika IOT: 6 sammu

Video: Ramadaani tuled - Koduautomaatika IOT: 6 sammu
Video: Lose Belly Fat But Don't Do These Common Exercises! (5 Minute 10 Day Challenge) 2024, November
Anonim
Ramadaani tuled | Koduautomaatika IOT
Ramadaani tuled | Koduautomaatika IOT

Ramadaani uksele koputades süttib kogu maailmas linnu ja valmistub paastukuuks. Tuled riputatakse avalikel väljakutel ja üle linnatänavate, samuti majade välisseintel, mis on valgustatud öösel, kuni päike tõuseb hommikul.

Selles projektis tahaksin jagada oma panust, milles automatiseerin nende kaunistuste valgustamise Adhani aegade põhjal ja lisan selle oma nutika kodu süsteemi.

1. samm: teooria

Põhimõtteliselt on valgustuse automatiseerimine näiteks päikesevalguse intensiivsuse alusel lihtsam ja rakendatavam. Kuid ma tahaksin, et sellel oleks püha kuu vaim, see tähendab, et tuled põlevad seni, kuni inimestel on lubatud paastukuul süüa. Eelkõige süttivad tuled alates Maghrib Adhanist kuni Fajr Adhanini iga päev ilma inimeste suhtluseta.

2. samm: disain

Allpool loetlen selle projekti nõuded/võimalused:

  • Süsteem peaks suutma käivitamisel automaatselt töödelda.
  • Süsteem peaks olema võimeline perioodiliselt täitma otsuse (ON/OFF) algoritmi.
  • Süsteem peaks saama helistada API -le iga päev.
  • Süsteem peaks saama taastuda planeerimata taaskäivitamisest.
  • Süsteem peaks andmete kohesel vastuvõtmisel täitma otsuse (ON/OFF) algoritmi.
  • Süsteem peaks pakkuma lülitit autopiloodi režiimi (automaatrežiim) sisselülitamiseks.
  • Süsteem peaks varustama lülitiga tulede käsitsi sisse/välja lülitamiseks.
  • Käsitsi lüliti käivitamine peaks lülitama käsitsi režiimi välja.
  • Kui automaatrežiim on sisse lülitatud, peaks otsustamisalgoritmi tulemus kajastuma käsitsi lülitil ON/OFF.

3. samm: tehnilised üksikasjad: API

Tehnilised üksikasjad: API
Tehnilised üksikasjad: API

Teooria rakendamiseks on vaja teada Adhani aega igapäevaselt alates selle muutujast ja tegutseda selle järgi tulede/kaunistuste sisse- ja väljalülitamiseks.

Sel eesmärgil otsustasin andmete esitamiseks kasutada asukohapõhist API-d (aeg Adhanile)

muslimsalat.com/api/#location

  • See API pakub erinevaid võimalusi ja konfiguratsiooniparameetreid, mida on kirjeldatud ülaltoodud dokumentatsiooni lingil.
  • Soovitatav on kasutada oma API -võtit, mis on registreerimisel tasuta.
  • Oma kujunduses huvitab mind igapäevane ajakava.
  • Tagastatud aeg on 12 -tunnises vormingus (AM/PM).
  • Asukoha osas soovisin, kas see API saaks pakkuda täpsemaid valikuid selliste asukohtade jaoks nagu koordinaatide geograafiline koordinaatide süsteem (laius- ja pikkuskraadid). Sel viisil saab sellele API -le anda näiteks linna nime ja see on enamikul juhtudel täiesti piisav. Kahjuks olid minu konkreetse linna tulemused mitmetes testides üsna erapoolikud ja Adhani aja võrdlemisel API tulemuste ja minu linna tegeliku Adhani aja vahel oli paar minutit vahet. Teisest küljest vastasid tulemused ideaalselt, kui pakkusin põhja lähedal asuva linna ja jäin selle juurde!
  • API -URL, mida ma kasutan, on: https://muslimsalat.com/.json? Key =

4. samm: tehnilised üksikasjad: riistvara

Tehnilised üksikasjad: riistvara
Tehnilised üksikasjad: riistvara

Lihtsuse huvides jätan riistvara API -ga sünkroonimisest ja ajaarvutusest välja, delegeerides need toimingud minu koduautomaatikasüsteemi. See annab mulle rohkem kontrolli, kui tahan API allikat ja arvutusalgoritmi muuta.

Seda öeldes kasutasin WIFI kaudu kohaliku võrguga ühenduse loomiseks ESP8266 (NodeMCU) ja ajamina releemoodulit. NodeMCU kasutab MQTT protokolli ja kuulab konkreetset teemat, et saada käske relee sisse/välja lülitamiseks. Nii lihtne see ongi!

5. samm: tehnilised üksikasjad: punktide ühendamine | Koduautomaatika

Tehnilised üksikasjad: punktide ühendamine | Koduautomaatika
Tehnilised üksikasjad: punktide ühendamine | Koduautomaatika
Tehnilised üksikasjad: punktide ühendamine | Koduautomaatika
Tehnilised üksikasjad: punktide ühendamine | Koduautomaatika
Tehnilised üksikasjad: punktide ühendamine | Koduautomaatika
Tehnilised üksikasjad: punktide ühendamine | Koduautomaatika

Minu RaspberryPi hoiab noogutatud eksemplari, mis on võimeline haldama kõike, mida ma selle projekti jaoks vajan. Samuti on meie sõnumite avaldamiseks installitud MQTT -server.

Algul arvasin, et saan API andmed iga päev kella 9 ajal tuua ja nii Fajri kui ka Mahgrib Adhani aegu välja võtta ning võrrelda praegust aega nende muutujatega, mis on järgmised:

iga 30 sekundi järel:

kui: Mahgrib <KOHE <Fajr tõsi | lülitage tuled sisse | avaldage määratud MQTT -teemal ON -teade muidu: lülitage välja

Aja võrdlemiseks muudan API poolt antud tunnid hh: mm (AM/PM) täiskuupäeva vorminguks, määrates kuupäevaosa ajaloos tühiseks kuupäevaks, nt (01.01.1970), kuna me võrdleme aega ainult praegusele kellaajale (teisendatakse ka kuupäevaosa).

Kahjuks töötab see ainult otsesel juhul. Oletame, et juhtum, kui elektritoide langeb või süsteem taaskäivitub planeerimata põhjusel. Kui see juhtum ilmneb enne kella 12.00, oleme endiselt ohutu poolel, kuid pärast kella 12.00 ebaõnnestub meie lihtne algoritm.

Näitena võib tuua Magrib Adhani kell 19.30 ja Fajri kell 4.10. Kui süsteem käivitub, saadab see uue taotluse varem mainitud andmete toomiseks. Kui praegu on kell 1:45, ootame, et meie algoritm vastab tõele, kuid tegelikult see ei õnnestu, sest 1:45 AM on väiksem kui Fajr (4:10 AM), kuid ei ole suurem kui Magrib (19:30). Seda seetõttu, et me ühendame kuupäeva kõigi muutujate vahel. Allpool on algoritmi lõplik versioon (siiani):

iga 30 sekundi järel:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // käsitseda pikenduspäevi endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // käidelda pikenduspäevi currentTime}} // allpool on eelmine koodiplokk, kui: Mahgrib <KOHE <Fajr true | lülitage tuled sisse | avaldage määratud MQTT -teemal ON -teade else: false | Lülita välja

Protsessi täielik voog on ülaltoodud pildil märkitud.

UI osas lisasin kasutajaliidesele/liidesele 2 lülitit:

  1. Lüliti selle protsessi automaatseks või käsitsi muutmiseks.
  2. Lüliti tulede käsitsi sisse/välja lülitamiseks.

6. samm: pakkimine

Aeg lendab, et mitte kunagi meelde tuletada. Selliste lihtsate ühepäevaste projektide tegemine võimaldab teil sellel kiirel rajal hinge tõmmata ja aitab teil aja jooksul oma pehmeid oskusi taaselustada.

Proovisin selles projektis sama palju, et see oleks kogu maailmas lihtne ja korduvkasutatav.

Palun hääletage selle õpetliku poolt, kui arvate, et see projekt väärib.

Head ramadaani!

Soovitan: