Obsah:

Ramadánové svetlá - Domáca automatizácia IOT: 6 krokov
Ramadánové svetlá - Domáca automatizácia IOT: 6 krokov

Video: Ramadánové svetlá - Domáca automatizácia IOT: 6 krokov

Video: Ramadánové svetlá - Domáca automatizácia IOT: 6 krokov
Video: MOES WIFI TOUCH SMART SWITCH INSTALLATION 2024, Júl
Anonim
Ramadánové svetlá | Domáca automatizácia IOT
Ramadánové svetlá | Domáca automatizácia IOT

Ako ramadán klope na dvere, mestá na celom svete sa rozžiaria a pripravia sa na mesiac pôstu. Svetlá sú zavesené na verejných námestiach a v uliciach miest, ako aj na vonkajších stenách domov osvetlených v noci, kým ráno nevyjde slnko.

V tomto projekte by som sa chcel podeliť o svoj príspevok, v ktorom automatizujem rozsvietenie týchto dekorácií na základe Adhanových časov a pridávam ich do svojho systému inteligentnej domácnosti.

Krok 1: Teória

V zásade je jednoduchšie a použiteľnejšie automatizovať osvetlenie napríklad na základe intenzity slnečného svetla. Chcel by som však, aby to malo ducha svätého mesiaca, to znamená, že svetlá sa budú rozsvietiť, pokiaľ budú ľudia počas pôstneho mesiaca môcť jesť. Najmä svetlá sa začínajú každý deň od Maghriba Adhana po Fajra Adhana bez akejkoľvek ľudskej interakcie.

Krok 2: Dizajn

Nasleduje zoznam požiadaviek/schopností tohto projektu:

  • Systém by mal byť schopný automaticky spracovávať pri štarte.
  • Systém by mal byť schopný periodicky vykonávať rozhodovací (ON/OFF) algoritmus.
  • Systém by mal byť schopný denne volať API.
  • Systém by mal byť schopný zotaviť sa z neplánovaného reštartu.
  • Systém by mal ihneď po prijatí údajov vykonať rozhodovací (ON/OFF) algoritmus.
  • Systém by mal poskytnúť spínač na zapnutie režimu autopilota (automatický režim).
  • Systém by mal poskytnúť prepínač na manuálne zapínanie a vypínanie svetiel.
  • Spúšťaním manuálneho prepínača by ste mali manuálny režim prepnúť do polohy OFF.
  • Keď je automatický režim ZAPNUTÝ, výsledok rozhodovacieho algoritmu by sa mal odraziť na ručnom prepínači ZAP/VYP.

Krok 3: Technické detaily: API

Technické detaily: API
Technické detaily: API

Aby bola teória použiteľná, je potrebné poznať čas Adhan na denných základoch od jeho premenných a podľa neho zapnúť/vypnúť svetlá/dekorácie.

Na tento účel som sa rozhodol použiť na poskytovanie údajov API založené na umiestnení (čas pre Adhana)

muslimsalat.com/api/#location

  • Toto API poskytuje množstvo možností a konfiguračných parametrov popísaných v odkaze na dokumentáciu vyššie.
  • Odporúčame vám použiť vlastný kľúč API_, ktorý je pri registrácii bezplatný.
  • Vo svojom návrhu ma zaujíma denná časová os.
  • Vrátený čas je vo formáte 12 hodín (AM/PM).
  • Pokiaľ ide o polohu, prial by som si, aby toto API poskytovalo presnejšie možnosti pre polohy, ako je súradnicový systém geografických súradníc (zemepisná šírka a dĺžka). Na tento účel môže byť tomuto API napríklad poskytnutý názov mesta a vo väčšine prípadov to úplne stačí. Výsledky môjho konkrétneho mesta boli bohužiaľ vo viacerých testoch dosť skreslené a pri porovnávaní času Adhan medzi výsledkami API a skutočným časom Adhan v mojom meste bol niekoľko minútový rozdiel. Na druhej strane sa výsledky dokonale zhodovali, keď som poskytol blízke mesto na severe a toho som sa držal!
  • URL, ktorú používam, je: https://muslimsalat.com/.json? Key =

Krok 4: Technické detaily: Hardvér

Technické detaily: Hardvér
Technické detaily: Hardvér

Pre jednoduchosť hardvér vynechávam z procesu synchronizácie s API a výpočtu času delegovaním týchto operácií na môj domáci automatizačný systém. To mi poskytne väčšiu kontrolu, ak chcem vyladiť zdroj API a algoritmus výpočtu.

Keď som to povedal, použil som ESP8266 (NodeMCU) na pripojenie k miestnej sieti prostredníctvom WIFI a reléový modul ako pohon. NodeMCU bude používať protokol MQTT a počúvať konkrétnu tému, aby získal príkazy na zapnutie/vypnutie relé. Také jednoduché!

Krok 5: Technické detaily: Pripojenie bodiek | Domáca automatizácia

Technické detaily: Pripojenie bodiek | Domáca automatizácia
Technické detaily: Pripojenie bodiek | Domáca automatizácia
Technické detaily: Pripojenie bodiek | Domáca automatizácia
Technické detaily: Pripojenie bodiek | Domáca automatizácia
Technické detaily: Pripojenie bodiek | Domáca automatizácia
Technické detaily: Pripojenie bodiek | Domáca automatizácia

Môj RaspberryPi má uzlovanú inštanciu, ktorá je schopná zvládnuť všetko, čo pre tento projekt potrebujem. Má tiež nainštalovaný server MQTT na publikovanie našich správ.

Najprv som si myslel, že môžem načítať údaje API na denných základniach o 9:00 a extrahovať časy Fajra a Mahgriba Adhana a pokračovať v porovnávaní aktuálneho času s týmito premennými, tj.

každých 30 sekúnd:

ak: Mahgrib <TERAZ <Fajr pravda | zapnite svetlá | publikovať ON správu na zadanú tému MQTT inak: vypnúť

Na porovnanie času prevádzam hodiny poskytnuté rozhraním API z hh: mm (AM/PM) na úplný formát dátumu nastavením časti dátumu na zanedbateľný dátum v histórii, napr. (1/1/1970), pretože porovnávame čas iba na aktuálny čas (prepočíta sa aj časť dátumu).

Bohužiaľ to bude fungovať iba v jednoduchých prípadoch. Predpokladajme, že dôjde k výpadku elektrickej energie alebo sa systém z neplánovaného dôvodu reštartuje. Ak k tomuto prípadu dôjde pred 12:00, sme stále na bezpečnej strane, ale po 12:00 to náš jednoduchý algoritmus zlyhá.

Ako príklad uvedieme Magrib Adhan o 19:30 a Fajr o 4:10. Keď sa systém spustí, odošle novú požiadavku na načítanie vyššie uvedených údajov. Ak je teraz čas 1:45 AM, očakávame, že sa náš algoritmus vráti na pravdivý, ale v skutočnosti to nebude, pretože 1:45 AM je menší ako Fajr (4:10 AM), ale nie je väčší ako Magrib (19:30). Dôvodom je, že spájame dátum medzi všetkými premennými. Nasleduje konečná verzia algoritmu (zatiaľ):

každých 30 sekúnd:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // zvládnuť celé dni endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // handle spanning days currentTime}} // nižšie je predchádzajúci blok kódu, ak: Mahgrib <TERAZ <Fajr true | zapnite svetlá | publikovať ON správu na zadanú tému MQTT else: false | vypnúť

Kompletný priebeh postupu je anotovaný na obrázku vyššie.

Pokiaľ ide o používateľské rozhranie, do používateľského rozhrania/rozhrania som pridal 2 prepínače:

  1. Prepínač, ktorým sa tento proces zmení na automatický alebo manuálny.
  2. Prepínač na manuálne zapnutie/vypnutie svetiel.

Krok 6: Balenie.

Čas letí, aby sa naň nikto nespomenul. Realizácia takýchto jednoduchých 1-dňových projektov vám umožní nadýchnuť sa v tomto rýchlom pruhu a pomôže vám časom oživiť vaše mäkké schopnosti.

V tomto projekte som sa snažil tak veľa, aby bol jednoduchý a opakovane použiteľný na celom svete.

Láskavo Hlasujte za tento pokyn, ak si myslíte, že si tento projekt zaslúži.

Šťastný ramadán!

Odporúča: