Turinys:
- 1 žingsnis: teorija
- 2 žingsnis: dizainas
- 3 žingsnis: Techninė informacija: API
- 4 žingsnis: Techninė informacija: Aparatūra
- 5 žingsnis: Techninė informacija: taškų sujungimas | Namų automatika
- 6 žingsnis: apvyniokite
Video: Ramadano žibintai - Namų automatizavimas IOT: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Ramadanui beldžiantis į duris, viso pasaulio miestai įsižiebia ir ruošiasi pasninko mėnesiui. Šviesos kabinamos viešosiose aikštėse ir miesto gatvėse, taip pat ant išorinių namų sienų, apšviestų naktį, kol saulė teka ryte.
Šiame projekte norėčiau pasidalinti savo indėliu, kuriame automatizuoju šių dekoracijų apšvietimą pagal Adhano laikus ir pridedu tai prie savo išmaniųjų namų sistemos.
1 žingsnis: teorija
Iš esmės lengviau ir labiau pritaikyti apšvietimą, pavyzdžiui, atsižvelgiant į saulės spindulių intensyvumą. Tačiau norėčiau, kad tai įgytų šventojo mėnesio dvasią, tai yra, šviesa degs tol, kol žmonėms bus leidžiama valgyti pasninko mėnesį. Visų pirma, žibintai dega nuo Maghrib Adhan iki Fajr Adhan kiekvieną dieną be jokio žmogaus bendravimo.
2 žingsnis: dizainas
Žemiau išvardinsiu šio projekto reikalavimus/galimybes:
- Sistema turėtų sugebėti automatiškai apdoroti įkrovos metu.
- Sistema turėtų turėti galimybę periodiškai vykdyti sprendimo (įjungimo/išjungimo) algoritmą.
- Sistema turėtų turėti galimybę kasdien iškviesti API.
- Sistema turėtų sugebėti atsigauti po neplanuoto paleidimo.
- Sistema turėtų vykdyti sprendimo (įjungimo/išjungimo) algoritmą iškart gavusi duomenis.
- Sistema turėtų numatyti jungiklį, skirtą įjungti autopiloto režimą (automatinis režimas).
- Sistemoje turėtų būti jungiklis, leidžiantis rankiniu būdu įjungti/išjungti šviesas.
- Įjungus rankinį jungiklį, rankinis režimas turi būti išjungtas.
- Kai automatinis režimas įjungtas, sprendimo algoritmo rezultatas turėtų atsispindėti rankiniame jungiklyje ON/OFF.
3 žingsnis: Techninė informacija: API
Kad teorija būtų pritaikyta, būtina žinoti Adhano laiką kasdien nuo jo kintamojo ir veikti, kad įjungtumėte/išjungtumėte šviesas/dekoracijas.
Šiuo tikslu nusprendžiau naudoti vietovėmis pagrįstą API duomenims teikti (laikas Adhanui)
muslimsalat.com/api/#location
- Šioje API pateikiamos įvairios parinktys ir konfigūracijos parametrai, aprašyti aukščiau esančioje dokumentacijos nuorodoje.
- Rekomenduojama naudoti savo API_raktą, kuris registracijos metu yra nemokamas.
- Kurdamas savo dizainą, mane domina dienos tvarkaraštis.
- Grįžtamas laikas pateikiamas 12 valandų formatu (AM/PM).
- Kalbant apie vietą, norėjau, kad ši API galėtų pateikti tikslesnes parinktis tokioms vietoms kaip koordinatės geografinių koordinačių sistema (platuma ir ilguma). Tokiu būdu šiai API gali būti suteiktas, pavyzdžiui, miesto pavadinimas, ir to daugeliu atvejų visiškai pakanka. Deja, mano konkretaus miesto rezultatai buvo gana šališki atliekant kelis testus ir lyginant Adhan laiką tarp API rezultatų ir tikrojo Adhano laiko mano mieste buvo poros minučių skirtumas. Kita vertus, rezultatai puikiai atitiko, kai pateikiau artimą miestą į šiaurę ir laikiausi jo!
- Naudoju API URL: https://muslimsalat.com/.json? Key =
4 žingsnis: Techninė informacija: Aparatūra
Paprastumo dėlei aš palieku aparatūrą be sinchronizavimo su API ir laiko skaičiavimo proceso, deleguodamas šias operacijas į mano namų automatikos sistemą. Tai suteiks man daugiau kontrolės, jei noriu patobulinti API šaltinį ir skaičiavimo algoritmą.
Tai pasakius, aš naudoju ESP8266 (NodeMCU), norėdamas prisijungti prie vietinio tinklo per WIFI ir relės modulį kaip pavarą. „NodeMCU“naudos MQTT protokolą ir klausys konkrečios temos, kad gautų komandas įjungti/išjungti relę. Taip paprasta!
5 žingsnis: Techninė informacija: taškų sujungimas | Namų automatika
Mano „RaspberryPi“saugo egzempliorių, galintį tvarkyti viską, ko man reikia šiam projektui. Jame taip pat yra įdiegtas MQTT serveris, skirtas skelbti mūsų pranešimus.
Iš pradžių maniau, kad galiu gauti API duomenis kasdien 9 val. Ryte ir išgauti Fajr ir Mahgrib Adhan laikus ir toliau lyginti dabartinį laiką su šiais kintamaisiais:
kas 30 sekundžių:
jei: Mahgrib <DABAR <Fajr tiesa | įjungti šviesą | paskelbti ON pranešimą nurodytoje MQTT temoje, kitaip: išjunkite
Norėdami palyginti laiką, konvertuoju API pateiktas valandas iš hh: mm (AM/PM) į visos datos formatą, nustatydamas datos dalį į nereikšmingą datą istorijoje, pvz., 1970 m. Sausio 1 d. tik į dabartinį laiką (datos dalis taip pat konvertuojama).
Deja, tai veiks tik tais atvejais. Tarkime, atvejis, kai elektros energija sumažėja arba sistema iš naujo paleidžiama dėl neplanuotų priežasčių. Jei šis atvejis įvyksta prieš 12 val., Mes vis dar esame saugioje pusėje, tačiau po 12 val. Mūsų paprastas algoritmas nepavyks.
Pavyzdžiui, turėkime Magribą Adhaną 19.30 val., O Fajrą - 4.10 val. Kai sistema įsijungs, ji atsiųs naują užklausą gauti anksčiau minėtus duomenis. Jei laikas dabar yra 1:45 AM, mes tikimės, kad mūsų algoritmas grįš teisingas, bet iš tikrųjų tai nebus, nes 1:45 AM yra mažesnė nei Fajr (4:10 AM), bet nėra didesnė už Magrib (19:30). Taip yra todėl, kad mes sujungiame datą tarp visų kintamųjų. Žemiau yra galutinė algoritmo versija (iki šiol):
kas 30 sekundžių:
if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // tvarkyti trukmės dienas endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // tvarkyti aprėpties dienas currentTime}}} // žemiau yra ankstesnis kodo blokas, jei: Mahgrib <DABAR <Fajr true | įjungti šviesą | paskelbti ON pranešimą nurodytai MQTT temai else: false | Išjunk
Visa proceso eiga pažymėta aukščiau esančiame paveikslėlyje.
Kalbant apie vartotojo sąsają, prie vartotojo sąsajos/sąsajos pridėjau 2 jungiklius:
- Jungiklis, skirtas šiam procesui įjungti automatiniu arba rankiniu būdu.
- Jungiklis, skirtas įjungti/išjungti žibintus rankiniu būdu.
6 žingsnis: apvyniokite
Laikas bėga niekada, kad jo neprisimintų. Atlikdami tokius paprastus 1 dienos projektus, galite atsikvėpti šioje greitoje juostoje ir ilgainiui atgaivinti minkštus įgūdžius.
Šiame projekte aš stengiausi, kad jis būtų paprastas ir pakartotinai naudojamas visame pasaulyje.
Prašome balsuoti už šią pamoką, jei manote, kad šis projektas nusipelno.
Laimingo Ramadano!
Rekomenduojamas:
„Pasidaryk pats“RGB vamzdžių žibintai: 9 žingsniai (su nuotraukomis)
„Pasidaryk pats“RGB vamzdžių žibintai: „Pasidaryk pats“RGB vamzdžių lemputė yra daugiafunkcinė vamzdinė lemputė, kuri gali būti naudojama fotografijoje, šviesos tapyboje, filmų kūrime, žaidimuose, kaip VU matuoklis ir kt. Vamzdžio šviesą galima valdyti naudojant „Prismatik“programinę įrangą arba paspaudžiant mygtuką. Ši vonia l
Automatiniai gatvės žibintai naudojant ultragarso jutiklį: 3 žingsniai
Automatiniai gatvės žibintai naudojant ultragarsinį jutiklį: Ar kada pagalvojote, kad gatvės žibintai automatiškai įsijungia naktį ir automatiškai išsijungia ryte? Ar yra žmogus, kuris įjungia/išjungia šias lemputes? Yra keli būdai, kaip įjungti gatvės žibintus, tačiau toliau
Anglų užeigos žibintai lankstant šviesolaidį, šviečia su šviesos diodu: 4 žingsniai
Anglų pubo žibintai, sulenkiant šviesolaidį, apšviesta su šviesos diodu: Taigi, tarkime, kad norite, kad pluoštas atitiktų namo formą, kad į jį įžiebtų kalėdinės lemputės. O gal norite išeiti į išorinę sieną ir sulenkti stačiu kampu į pluoštą. Na, jūs galite tai padaryti labai lengvai
MQTT nuotaikos žibintai su ESP32: 4 žingsniai (su nuotraukomis)
„MQTT Mood Lights“su ESP32: Jau kurį laiką buvau susigundęs užlipti ant LED juostos, todėl išbėgau ir pasiėmiau LED juostelę žaislui. Aš baigiau gaminti šias nuotaikos lemputes. Jie gali būti valdomi naudojant MQTT, todėl galima pridėti visų rūšių išmaniųjų. Tai yra
Interaktyvūs kiemo žibintai, takų žibintai: 3 žingsniai
Interaktyvūs kiemo žibintai, „Walkway Lights“: norėjau pastatyti kažkokius interaktyvius kiemo žibintus savo kieme. Idėja buvo ta, kad kai kas nors vaikščiojo vienu keliu, jis pradės animaciją ta kryptimi, kuria jūs einate. Pradėjau nuo „Dollar General“1,00 USD saulės lempučių