Sadržaj:
- Korak 1: Teorija
- Korak 2: Dizajnirajte
- Korak 3: Tehnički detalji: API
- Korak 4: Tehnički detalji: Hardver
- Korak 5: Tehnički detalji: Povezivanje tačaka | Kućna automatizacija
- Korak 6: Zaključak
Video: Ramazanska svjetla - Kućna automatizacija IOT: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Dok Ramazan kuca na vrata, gradovi širom svijeta se pale i pripremaju za mjesec posta. Svjetla su okačena na javne trgove i preko gradskih ulica, kao i na vanjske zidove kuća osvijetljene tokom noći sve dok sunce ne izađe ujutro.
U ovom projektu želio bih podijeliti svoj doprinos, u kojem automatiziram osvjetljavanje ovih ukrasa na osnovu vremena Adhan i dodajem ovo u svoj sistem pametne kuće.
Korak 1: Teorija
U osnovi, lakše je i primjenjivije automatizirati osvjetljenje na osnovu intenziteta sunčeve svjetlosti, na primjer. Međutim, želio bih da ovo ima duh svetog mjeseca, to jest, svjetla će se paliti sve dok je ljudima dozvoljeno da jedu tokom mjeseca posta. Konkretno, svjetla su uključena od Maghrib Adhana do Fajr Adhana svaki dan bez ikakve ljudske interakcije.
Korak 2: Dizajnirajte
U nastavku ću navesti zahtjeve/mogućnosti ovog projekta:
- Sistem bi trebao imati mogućnost automatske obrade pri pokretanju.
- Sistem bi trebao biti u mogućnosti periodično izvršavati algoritam odlučivanja (ON/OFF).
- Sistem bi trebao biti u mogućnosti svakodnevno pozivati API.
- Sistem bi se trebao moći oporaviti od neplaniranog ponovnog pokretanja.
- Sistem bi trebao izvršiti algoritam odlučivanja (UKLJ./ISKLJ.) Nakon trenutnog primanja podataka.
- Sistem bi trebao omogućiti prekidač za uključivanje načina autopilota (Automatski način rada).
- Sistem bi trebao omogućiti prekidač za ručno uključivanje/isključivanje svjetla.
- Aktiviranje ručnog prekidača treba postaviti ručni način rada na OFF.
- Kada je Automatski način rada UKLJUČEN, rezultat algoritma odlučivanja trebao bi se odraziti na ručni prekidač za uključivanje/isključivanje.
Korak 3: Tehnički detalji: API
Da bi teorija bila primjenjiva, potrebno je svakodnevno poznavati ezansko vrijeme od njegove varijable i djelovati prema njemu za paljenje/gašenje svjetla/ukrasa.
U tu sam svrhu odlučio koristiti API zasnovan na lokaciji za posluživanje podataka (vrijeme za Adhana)
muslimsalat.com/api/#location
- Ovaj API pruža niz opcija i konfiguracijskih parametara opisanih u gornjoj dokumentacijskoj vezi.
- Preporučuje se korištenje vlastitog API_ključa koji je besplatan pri registraciji.
- U mom dizajnu zanima me dnevna vremenska linija.
- Vraćeno vrijeme je u 12 -časovnom formatu (AM/PM).
- Što se tiče lokacije, želio bih ako ovaj API može pružiti preciznije opcije za lokacije poput koordinatnog sistema geografskih koordinata (zemljopisna širina i dužina). Na ovaj način, ovom API -ju se može dati naziv grada, na primjer, što je u većini slučajeva sasvim dovoljno. Nažalost, rezultati mog konkretnog grada bili su prilično pristrani u više testova i bilo je par minuta razlike kada se uporedi vrijeme Adhana između rezultata API -ja i stvarnog vremena Adhana u mom gradu. S druge strane, rezultati su se savršeno poklopili kada sam osigurao bliski grad na sjeveru i držao sam ga se!
- Url API -ja koji koristim je: https://muslimsalat.com/.json? Key =
Korak 4: Tehnički detalji: Hardver
Radi jednostavnosti, izostavljam hardver iz procesa sinhronizacije s API -jem i izračunavanja vremena delegiranjem ovih operacija na moj sistem kućne automatizacije. Ovo će mi dati veću kontrolu ako želim prilagoditi API izvor i algoritam izračuna.
Uzimajući to u obzir, koristio sam ESP8266 (NodeMCU) za povezivanje na lokalnu mrežu putem WIFI -a i relejni modul kao pokretač. NodeMCU će koristiti MQTT protokol i osluškivati određenu temu kako bi dobio naredbe za uključivanje/isključivanje releja. Tako jednostavno!
Korak 5: Tehnički detalji: Povezivanje tačaka | Kućna automatizacija
Moj RaspberryPi sadrži instancu s čvorom koja može podnijeti sve što mi je potrebno za ovaj projekt. Takođe ima instaliran MQTT server za objavljivanje naših poruka.
U početku sam mislio da mogu dohvatiti API podatke na dnevnoj bazi u 9 sati ujutro i izdvojiti Fajr i Mahgrib Adhan vrijeme i nastaviti uspoređivati trenutno vrijeme sa ovim varijablama, a to je:
svakih 30 sekundi:
if: Mahgrib <SADA <Fajr true | upalite svjetla | objavite ON poruku na specificiranu temu MQTT -a; drugo: isključite
Za upoređivanje vremena, pretvaram sate koje pruža API iz hh: mm (AM/PM) u format punog datuma postavljajući dio datuma na zanemariv datum u istoriji, npr. (1/1/1970) budući da upoređujemo vrijeme samo u trenutno vrijeme (dio datuma se također pretvara).
Nažalost, ovo će funkcionirati samo u direktnim slučajevima. Pretpostavimo slučaj nestanka struje ili ponovnog pokretanja sistema iz neplaniranog razloga. Ako se ovaj slučaj dogodi prije 12 sati, i dalje smo na sigurnoj strani, ali nakon 12 sati ovo neće uspjeti u našem jednostavnom algoritmu.
Da navedemo primjer, uzmimo Magrib Adhan u 19:30 i Fajr u 04:10. Kada se sistem pokrene, poslat će novi zahtjev za dohvaćanje ranije spomenutih podataka. Ako je vrijeme sada 1:45 ujutro, očekujemo da će se naš algoritam vratiti kao tačno, ali u stvari neće jer je 1:45 ujutro manje od Fajra (4:10 ujutro), ali nije veće od Magriba (19:30). To je zato što objedinjujemo datum između svih varijabli. Ispod je konačna verzija algoritma (do sada):
svakih 30 sekundi:
if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // obrađuje rasponske dane endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // ručka koja se proteže kroz dane currentTime}} // ispod je prethodni kodni blok if: Mahgrib <SADA <Fajr true | upalite svjetla | objavite ON poruku navedenoj temi MQTT else: false | ugasiti
Kompletan tok procesa označen je na gornjoj slici.
Što se tiče korisničkog sučelja, dodao sam 2 prekidača na korisničko sučelje/sučelje:
- Prekidač za uključivanje ovog procesa u automatsko ili ručno.
- Prekidač za ručno uključivanje/isključivanje svjetla.
Korak 6: Zaključak
Vrijeme leti i nikada se ne može opozvati. Rad na tako jednostavnim jednodnevnim projektima omogućava vam da uhvatite dah u ovoj brzoj traci i pomaže vam da s vremenom oživite svoje meke vještine.
Potrudio sam se u ovom projektu da bude jednostavan i za višekratnu upotrebu širom svijeta.
Ljubazno glasajte za ovo uputstvo ako mislite da ovaj projekt zaslužuje.
Sretan Ramazan!
Preporučuje se:
Automatizacija doma: 5 koraka
Kućna automatizacija: U ovom projektu nema nas, iskoristite mnoge stvari kako biste je izgradili od nule kako biste razumjeli proces IoT interneta video zapisa za sve projekte
Arduin-home-automatizacija: 5 koraka
Arduin-home-automatizacija: U ovom Instructable-u ću vam reći o primjeru kućne automatizacije kojom upravljaju ZELIO SR3 PLC i Arduino ploče koje se koriste za mjerenje i kontrolu svjetlosti, topline i vlažnosti. Ovaj sistem koriste moji studenti da nauče osnove automatizacija
Interaktivna svjetla za dvorište, svjetla za hodnike: 3 koraka
Interaktivna svjetla za dvorište, svjetla za hodnike: Htjela sam izgraditi neku vrstu interaktivnih svjetla za dvorište. Ideja je bila da kada bi neko hodao u jednom smjeru pokrenula bi se animacija u smjeru u kojem ste hodali. Počeo sam sa solarnim svjetlima od 1,00 dolara za Dollar General
Prekidač svjetla aktiviran pokretom sa senzorom svjetla: 5 koraka
Prekidač za svjetlo aktiviran pokretom sa senzorom svjetla: Prekidač za svjetlo aktiviran pokretom ima mnogo primjena kako u kući tako i u uredu. Ovo je, međutim, imalo dodatnu prednost uključivanjem svjetlosnog senzora, tako da se ovo svjetlo može aktivirati samo noću
Božićna svjetla "uradi sam" postavljena na muziku - koreografska svjetla kuće: 15 koraka (sa slikama)
DIY Božićna svjetla postavljena na muziku - koreografska svjetla za kuću: DIY božićna svjetla na muziku - koreografska kućna svjetla Ovo nije DIY za početnike. Trebat će vam dobro razumijevanje elektronike, kruga, OSNOVNOG programiranja i općenitih znanja o električnoj sigurnosti. Ovaj DIY je za iskusnu osobu pa