Tartalomjegyzék:

Ramadán fények - Otthoni automatizálás IOT: 6 lépés
Ramadán fények - Otthoni automatizálás IOT: 6 lépés

Videó: Ramadán fények - Otthoni automatizálás IOT: 6 lépés

Videó: Ramadán fények - Otthoni automatizálás IOT: 6 lépés
Videó: USA VS HUNGARY 🇺🇸🇭🇺 WhisperTon VS Csenge Forstner 2024, November
Anonim
Ramadán fények | Otthonautomatizálás IOT
Ramadán fények | Otthonautomatizálás IOT

Ahogy a ramadán kopogtat az ajtón, világszerte világítanak a városok, és felkészülnek a böjt hónapjára. A lámpákat a köztereken és a városi utcákon, valamint a házak külső falán függesztik fel éjszaka, amíg reggel fel nem kel a nap.

Ebben a projektben szeretném megosztani a közreműködésemet, amelyben automatizálom ezeknek a dekorációknak a megvilágítását az Adhan idők alapján, és hozzáadom ezt az intelligens otthoni rendszerhez.

1. lépés: Elmélet

Alapvetően egyszerűbb és alkalmazhatóbb a világítás automatizálása például a napfény intenzitása alapján. Szeretném azonban, ha ez a szent hónap szelleme lenne, vagyis a lámpák addig kapcsolnak fel, amíg az emberek enni tudnak a böjt hónapjában. Különösen a fények világítanak Maghrib Adhan -tól Fajr Adhan -ig minden nap emberi beavatkozás nélkül.

2. lépés: Tervezés

Az alábbiakban felsorolom a projekt követelményeit/képességeit:

  • A rendszernek képesnek kell lennie automatikus feldolgozásra indításkor.
  • A rendszernek képesnek kell lennie a döntési (BE/KI) algoritmus időszakos végrehajtására.
  • A rendszernek képesnek kell lennie arra, hogy naponta hívja az API -t.
  • A rendszernek képesnek kell lennie arra, hogy helyreálljon a nem tervezett újraindítás után.
  • A rendszernek végre kell hajtania a döntési (BE/KI) algoritmust az adatok azonnali fogadása után.
  • A rendszernek biztosítania kell egy kapcsolót az autopilot üzemmód (automatikus üzemmód) bekapcsolásához.
  • A rendszernek kapcsolót kell biztosítania a lámpák manuális be- és kikapcsolására.
  • A kézi kapcsoló kioldásával a kézi üzemmódot OFF állásba kell állítani.
  • Ha az automatikus üzemmód be van kapcsolva, a döntési algoritmus eredményét tükrözni kell a kézi BE/KI kapcsolón.

3. lépés: Műszaki adatok: az API

Technikai részletek: az API
Technikai részletek: az API

Ahhoz, hogy az elmélet alkalmazható legyen, ismernie kell az Adhan -időt napi szinten annak változója óta, és be kell lépnie a fények/díszek be-/kikapcsolásához.

Ebből a célból úgy döntöttem, hogy helyalapú API-t használok az adatok kiszolgálására (Adhan ideje)

muslimsalat.com/api/#location

  • Ez az API számos lehetőséget és konfigurációs paramétert biztosít a fenti dokumentációs linkben.
  • Javasoljuk, hogy használja a saját API_kulcsát, amely regisztrációkor ingyenes.
  • Tervezésemben a napi ütemterv érdekel.
  • A visszaadott idő 12 óra formátumban van (AM/PM).
  • A helyszín tekintetében azt kívántam, ha ez az API pontosabb lehetőségeket tudna nyújtani olyan helyekre, mint a koordináta -földrajzi koordináta -rendszer (szélesség és hosszúság). Ily módon ezt az API -t el lehet látni például városnévvel, és ez a legtöbb esetben elég. Sajnos az adott városom eredményei meglehetősen elfogultak voltak több tesztben, és néhány perc különbség volt, amikor összehasonlítottuk az Adhan -időt az API -eredmények és a városomban lévő Adhan -idő között. Másrészt az eredmények tökéletesen megegyeztek, amikor közeli várost biztosítottam északra, és ragaszkodtam hozzá!
  • Az általam használt API URL -címe: https://muslimsalat.com/.json? Key =

4. lépés: Műszaki adatok: Hardver

Technikai részletek: Hardver
Technikai részletek: Hardver

Az egyszerűség kedvéért kihagyom a hardvert az API -val való szinkronizálásból és az időszámításból, mivel ezeket a műveleteket az otthoni automatizálási rendszerre delegálom. Ez nagyobb ellenőrzést biztosít számomra, ha módosítani akarom az API forrást és a számítási algoritmust.

Ennek ellenére egy ESP8266 -ot (NodeMCU) használtam a helyi hálózathoz való csatlakozáshoz WIFI -n és egy relé modulon keresztül, mint aktuátor. A NodeMCU az MQTT protokollt használja, és hallgat egy adott témát, hogy parancsokat kapjon a relé be- és kikapcsolására. Ilyen egyszerű az egész!

5. lépés: Műszaki adatok: A pontok összekapcsolása | Otthoni automatizálás

Műszaki adatok: A pontok összekapcsolása | Otthoni automatizálás
Műszaki adatok: A pontok összekapcsolása | Otthoni automatizálás
Műszaki adatok: A pontok összekapcsolása | Otthoni automatizálás
Műszaki adatok: A pontok összekapcsolása | Otthoni automatizálás
Műszaki adatok: A pontok összekapcsolása | Otthoni automatizálás
Műszaki adatok: A pontok összekapcsolása | Otthoni automatizálás

A RaspberryPi -nek van egy bólogatott példánya, amely képes kezelni mindent, amire szükségem van ehhez a projekthez. Van egy MQTT szervere is telepítve az üzeneteink közzétételére.

Először azt hittem, hogy lekérhetem az API adatokat napi 9 órakor, és kinyerhetem a Fajr és Mahgrib Adhan időket, és folyamatosan összehasonlíthatom az aktuális időt ezekkel a változókkal:

30 másodpercenként:

ha: Mahgrib <MOST <Fajr igaz | kapcsolja fel a villanyt | tegyen közzé egy ON üzenetet a megadott MQTT témához, különben: kapcsolja ki

Az idő összehasonlítása érdekében átalakítom az API által biztosított órákat óó: pp (AM/PM) teljes dátum formátumba úgy, hogy a dátumrészt elhanyagolható dátumra állítom be a történelemben, pl. (1970.01.1.), Mivel összehasonlítjuk az időt csak az aktuális időre (a dátumrész is konvertálásra kerül).

Sajnos ez csak egyszerű esetekben fog működni. Tegyük fel azt az esetet, amikor az áramellátás megszakad, vagy a rendszer nem tervezett okból újraindul. Ha ez az eset délelőtt 12 óra előtt következik be, akkor még mindig a biztonságos oldalon állunk, de 12 óra után ez meghiúsítja az egyszerű algoritmusunkat.

Példaként említsük meg Magrib Adhan -t 19: 30 -kor és Fajr -t 4: 10 -kor. Amikor a rendszer elindul, új kérést küld a korábban említett adatok lekérésére. Ha most 1:45 van, akkor azt várjuk, hogy algoritmusunk igaznak bizonyul, de valójában nem fog, mert az 1:45 kevesebb, mint Fajr (4:10), de nem nagyobb, mint a Magrib (19:30). Ez azért van, mert egyesítjük a dátumot az összes változó között. Az alábbiakban az algoritmus végső verziója látható (eddig):

30 másodpercenként:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // kezelje az átfedő napokat endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // kezelje az aktuális napok aktuális idejét}}} // az előző kódblokk, ha: Mahgrib <MOST <Fajr igaz | kapcsolja fel a villanyt | ON üzenet közzététele a megadott MQTT témában else: false | kikapcsolni

A folyamat teljes folyamatát a fenti kép megjegyzi.

Ami a felhasználói felületet illeti, 2 kapcsolót adtam hozzá a felhasználói felülethez/interfészhez:

  1. Egy kapcsoló a folyamat automatikus vagy kézi kapcsolásához.
  2. Egy kapcsoló a világítás manuális be-/kikapcsolásához.

6. lépés: Csomagolás

Rohan az idő, hogy soha ne idézzük fel. Az ilyen egyszerű, 1 napos projektek elvégzése lehetővé teszi, hogy levegőt vegyen ebben a gyors sávban, és idővel újjáéleszthesse lágy készségeit.

Ebben a projektben annyit próbáltam, hogy egyszerű és újrahasznosítható legyen az egész világon.

Kérjük, szavazzon erre a tanulságosra, ha úgy gondolja, hogy ez a projekt megérdemli.

Boldog Ramadánt!

Ajánlott: