Kazalo:
- 1. korak: Teorija
- 2. korak: Oblikovanje
- 3. korak: Tehnične podrobnosti: API
- 4. korak: Tehnične podrobnosti: Strojna oprema
- 5. korak: Tehnične podrobnosti: Povezovanje pik | Domača avtomatizacija
- 6. korak: Zaključek.
Video: Ramazanske luči - Domača avtomatizacija IOT: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Ko Ramadan potrka na vrata, se mesta po vsem svetu prižgejo in pripravijo na mesec posta. Luči visijo na javnih trgih in po mestnih ulicah ter na zunanjih stenah hiš, osvetljenih ponoči, dokler sonce ne zaide zjutraj.
V tem projektu bi rad delil svoj prispevek, v katerem avtomatiziram osvetlitev teh okraskov na podlagi časa Adhana in to dodam v svoj sistem pametnega doma.
1. korak: Teorija
V bistvu je lažje in bolj primerno avtomatizirati razsvetljavo na primer na podlagi intenzivnosti sončne svetlobe. Želim pa, da bi to imelo duh svetega meseca, to je, da se bodo luči prižgale, dokler bodo ljudje lahko jedli v mesecu posta. Zlasti luči svetijo od Maghrib Adhana do Fajr Adhana vsak dan brez človeške interakcije.
2. korak: Oblikovanje
Spodaj bom navedel zahteve/zmogljivosti tega projekta:
- Sistem bi moral imeti možnost samodejnega procesiranja ob zagonu.
- Sistem bi moral biti sposoben redno izvajati algoritem odločanja (VKLOP/IZKLOP).
- Sistem bi moral imeti možnost, da vsak dan kliče API.
- Sistem bi se moral opomoči od nenačrtovanega ponovnega zagona.
- Sistem mora izvesti algoritem odločitve (ON/OFF) takoj, ko prejme podatke.
- Sistem mora zagotoviti stikalo za vklop načina avtopilota (samodejni način).
- Sistem mora omogočiti stikalo za ročno vklop/izklop luči.
- S sprožitvijo ročnega stikala morate ročni način nastaviti na OFF.
- Ko je samodejni način vklopljen, mora biti rezultat algoritma odločitve prikazan na ročnem stikalu za vklop/izklop.
3. korak: Tehnične podrobnosti: API
Da bi teorija postala uporabna, je treba dnevno poznati adhanski čas od njegove spremenljivke in nanj ukrepati, da vklopi/izklopi luči/okraske.
V ta namen sem se odločil uporabiti lokacijski API za serviranje podatkov (čas za Adhana)
muslimsalat.com/api/#location
- Ta API ponuja različne možnosti in konfiguracijske parametre, opisane v zgornji povezavi do dokumentacije.
- Priporočamo uporabo lastnega ključa API_, ki je ob registraciji brezplačen.
- Pri mojem oblikovanju me zanima dnevna časovnica.
- Vrnjeni čas je v 12 -urnem formatu (AM/PM).
- Kar zadeva lokacijo, sem si želel, če bi ta API lahko zagotovil natančnejše možnosti za lokacije, kot so koordinatni geografski koordinatni sistem (zemljepisna širina in dolžina). Za ta način je temu API -ju na primer mogoče dati ime mesta, kar je v večini primerov povsem dovolj. Žal so bili rezultati mojega določenega mesta v več testih precej pristranski in pri primerjavi časa Adhan med rezultati API in dejanskim časom Adhan v mojem mestu je bilo nekaj minut razlike. Po drugi strani pa so se rezultati popolnoma ujemali, ko sem zagotovil bližnje mesto na severu in sem se ga držal!
- URL API -ja, ki ga uporabljam, je: https://muslimsalat.com/.json? Key =
4. korak: Tehnične podrobnosti: Strojna oprema
Zaradi poenostavitve strojne opreme ne puščam v procesu sinhronizacije z API -jem in izračunu časa, tako da te operacije prenesem na svoj sistem za domačo avtomatizacijo. Tako bom imel več nadzora, če želim prilagoditi vir API -ja in algoritem izračuna.
Ob tem sem uporabil ESP8266 (NodeMCU) za povezavo z lokalnim omrežjem prek WIFI in relejni modul kot aktuator. NodeMCU bo uporabljal protokol MQTT in poslušal določeno temo, da bi prejel ukaze za vklop/izklop releja. Tako preprosto!
5. korak: Tehnične podrobnosti: Povezovanje pik | Domača avtomatizacija
Moj RaspberryPi vsebuje primerek z vozliščem, ki je sposoben obdelati vse, kar potrebujem za ta projekt. Nameščen je tudi strežnik MQTT za objavo naših sporočil.
Sprva sem mislil, da lahko podatke API vzamem na dnevni bazi ob 9.00 in izluščim čas Fajr in Mahgrib Adhan ter primerjam trenutni čas s temi spremenljivkami, to je:
vsakih 30 sekund:
če: Mahgrib <ZDAJ <Fajr res | prižgi luči | objavite sporočilo o vklopu za določeno temo MQTT; drugače: izklopite
Za primerjavo časa pretvorim ure, ki jih zagotavlja API, iz hh: mm (AM/PM) v celoten datum, tako da del datuma nastavim na zanemarljiv datum v zgodovini, npr. (1/1/1970), saj primerjamo čas samo v trenutni čas (del datuma se tudi pretvori).
Na žalost bo to delovalo le v neposrednih primerih. Predpostavimo primer izpada električne energije ali ponovnega zagona sistema iz nenačrtovanega razloga. Če se ta primer zgodi pred 12. uro, smo še vedno na varni strani, po 12. uri pa to ne bo uspelo z našim preprostim algoritmom.
Za primer navedimo Magriba Adhana ob 19.30 in Fajra ob 4.10. Ko se sistem zažene, bo poslal novo zahtevo za pridobitev prej omenjenih podatkov. Če je ura zdaj 1:45, pričakujemo, da se bo naš algoritem vrnil v resnico, v resnici pa se ne bo zgodilo, ker je 1:45 zjutraj manj kot Fajr (4:10 AM), ni pa večji od Magriba (7:30 PM). To je zato, ker združimo datum med vsemi spremenljivkami. Spodaj je končna različica algoritma (doslej):
vsakih 30 sekund:
if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // ročaj, ki zajema dneve endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // ročaj, ki zajema dneve currentTime}} // spodaj je prejšnji kodni blok, če: Mahgrib <NOW <Fajr true | prižgi luči | objavite sporočilo ON za določeno temo MQTT else: false | ugasni
Celoten potek postopka je označen na zgornji sliki.
Kar zadeva uporabniški vmesnik, sem v uporabniški vmesnik/vmesnik dodal 2 stikala:
- Stikalo za vklop samodejnega ali ročnega postopka.
- Stikalo za ročni vklop/izklop luči.
6. korak: Zaključek.
Čas beži, da se nikoli ne spomni. Izvajanje takšnih preprostih enodnevnih projektov vam omogoča, da na tem hitrem pasu zadihate in vam sčasoma oživi mehke sposobnosti.
V tem projektu sem se trudil, da bi bil preprost in za večkratno uporabo po vsem svetu.
Vljudno glasujte za ta navodila, če menite, da si projekt zasluži.
Vesel ramazan!
Priporočena:
Zgovorna avtomatizacija -- Zvok iz Arduina -- Avtomatizacija z glasovnim nadzorom -- Modul Bluetooth HC - 05: 9 korakov (s slikami)
Zgovorna avtomatizacija || Zvok iz Arduina || Avtomatizacija z glasovnim nadzorom || Modul Bluetooth HC - 05: …………………………. PRIJAVITE SE na moj YouTube kanal za več videov …. …. V tem videoposnetku smo zgradili Talkative Automation .. Ko pošljete glasovni ukaz prek mobilnega telefona, se vklopi domača naprava in pošlje povratne informacije
Avtomatizacija rastlinjaka z LoRa! (2. del) -- Motorno odpiranje oken: 6 korakov (s slikami)
Avtomatizacija rastlinjaka z LoRa! (2. del) || Motorno odpiranje oken: V tem projektu vam bom pokazal, kako sem ustvaril motorizirano odpirač oken za svoj rastlinjak. To pomeni, da vam bom pokazal, kateri motor sem uporabil, kako sem oblikoval dejanski mehanski sistem, kako vozim motor in nazadnje, kako sem uporabil Arduino LoRa
Interaktivne luči za dvorišče, luči za sprehajalne poti: 3 koraki
Interaktivne luči za dvorišče, luči za sprehajalne poti: želel sem zgraditi nekakšne interaktivne luči za dvorišče. Ideja je bila, da bi nekdo, ko je hodil v eno smer, sprožil animacijo v smeri, v kateri ste hodili. Začel sem s solarnimi svetilkami Dollar General za 1,00 USD
LED luči temnih luči: 7 korakov
LED luči za temne luči: LED ne sveti le, ko je napajanje, ampak tudi ustvari majhno napetost, ko je svetloba. Za nadzor te napetosti lahko uporabite mikrokrmilnik PICAXE. Pokazal vam bom, kako narediti elektronsko svečo, ki bo utripala LED, ko
Božične luči DIY, uglašene - koreografirane hišne luči: 15 korakov (s slikami)
Božične luči DIY nastavljene na glasbo - Koreografske hišne luči: Božične luči DIY na glasbo - Koreografske hišne luči To NI začetnik sam. Potrebovali boste dobro razumevanje elektronike, vezja, BASIC programiranja in splošnega znanja o električni varnosti. Ta DIY je za izkušeno osebo, zato