Sisällysluettelo:

Ramadan -valot - Koti -automaatio IOT: 6 vaihetta
Ramadan -valot - Koti -automaatio IOT: 6 vaihetta

Video: Ramadan -valot - Koti -automaatio IOT: 6 vaihetta

Video: Ramadan -valot - Koti -automaatio IOT: 6 vaihetta
Video: KUITU - LOTETTU ₽200 000 / ROSKAKASSA: Hiljaisuus 2024, Heinäkuu
Anonim
Ramadan -valot | Kotiautomaatio IOT
Ramadan -valot | Kotiautomaatio IOT

Ramadanin koputtaessa ovelle kaupungit ympäri maailmaa syttyvät ja valmistautuvat paastokuukauteen. Valot ripustetaan julkisille aukioille ja kaupungin kaduille sekä talojen ulkoseinille, jotka on valaistu yöllä, kunnes aurinko nousee aamulla.

Tässä projektissa haluaisin jakaa panokseni, jossa automatisoin näiden koristeiden sytyttämisen Adhan -aikojen perusteella ja lisään tämän älykkään kodin järjestelmään.

Vaihe 1: Teoria

Periaatteessa on helpompaa ja soveltuvampaa automatisoida valaistus esimerkiksi auringonvalon voimakkuuden perusteella. Haluaisin kuitenkin, että siinä olisi pyhän kuukauden henki eli valot syttyvät niin kauan kuin ihmiset saavat syödä paastokuukauden aikana. Erityisesti valot syttyvät Maghrib Adhanista Fajr Adhaniin joka päivä ilman ihmisten vuorovaikutusta.

Vaihe 2: Suunnittelu

Alla luettelen tämän projektin vaatimukset/ominaisuudet:

  • Järjestelmän pitäisi pystyä käsittelemään automaattisesti käynnistyksen yhteydessä.
  • Järjestelmän pitäisi pystyä suorittamaan päätösalgoritmi säännöllisesti (ON/OFF).
  • Järjestelmän pitäisi pystyä kutsumaan sovellusliittymää päivittäin.
  • Järjestelmän pitäisi pystyä toipumaan suunnittelemattomasta uudelleenkäynnistyksestä.
  • Järjestelmän tulisi suorittaa päätös (ON/OFF) -algoritmi vastaanotettuaan tiedot välittömästi.
  • Järjestelmässä on oltava kytkin automaattisen ohjaustilan (automaattinen tila) kytkemiseksi päälle.
  • Järjestelmän pitäisi tarjota kytkin valojen manuaaliseen kytkemiseen päälle/pois.
  • Käsikytkimen laukaisun pitäisi asettaa manuaalinen tila OFF -asentoon.
  • Kun automaattinen tila on PÄÄLLÄ, päätösalgoritmin tuloksen tulee näkyä käsikytkimessä ON/OFF.

Vaihe 3: Tekniset tiedot: API

Tekniset tiedot: API
Tekniset tiedot: API

Jotta teoriaa voidaan soveltaa, sen on tiedettävä Adhanin aika päivittäin sen muuttujan jälkeen ja toimittava sen mukaan sytyttämään/sammuttamaan valot/koristeet.

Tätä tarkoitusta varten päätin käyttää sijaintiin perustuvaa sovellusliittymää tietojen palvelemiseen (Adhanin aika)

muslimsalat.com/api/#location

  • Tämä sovellusliittymä tarjoaa useita vaihtoehtoja ja kokoonpanoparametreja, jotka on kuvattu yllä olevassa dokumentaatiolinkissä.
  • On suositeltavaa käyttää omaa API_avainta, joka on ilmainen rekisteröinnin yhteydessä.
  • Suunnittelussani olen kiinnostunut päivittäisestä aikataulusta.
  • Palautettu aika on 12 tunnin muodossa (AM/PM).
  • Sijainnin suhteen toivoisin, voisiko tämä sovellusliittymä tarjota tarkempia vaihtoehtoja sijainneille, kuten koordinaattien maantieteellisille koordinaatistoille (leveys- ja pituusaste). Tätä varten tällä sovellusliittymällä voi olla esimerkiksi kaupungin nimi, ja tämä riittää useimmissa tapauksissa. Valitettavasti tietyn kaupunkini tulokset olivat melko puolueellisia useissa testeissä, ja Adhanin aikaa verrattaessa API -tulosten ja Adhanin todellisen ajan välillä oli parin minuutin ero. Toisaalta tulokset vastasivat täydellisesti, kun annoin läheisen kaupungin pohjoiseen ja pidin siitä kiinni!
  • Käyttämäni sovellusliittymän URL -osoite on: https://muslimsalat.com/.json? Key =

Vaihe 4: Tekniset tiedot: Laitteisto

Tekniset tiedot: Laitteisto
Tekniset tiedot: Laitteisto

Yksinkertaisuuden vuoksi jätän laitteiston pois synkronoinnista sovellusliittymän kanssa ja ajan laskemisesta delegoimalla nämä toiminnot omalle kotiautomaatiojärjestelmälle. Tämä antaa minulle enemmän valvontaa, jos haluan säätää sovellusliittymän lähdettä ja laskentaalgoritmia.

Sanoin tämän, käytin ESP8266: ta (NodeMCU) yhteyden muodostamiseen paikalliseen verkkoon WIFI: n ja välitysmoduulin kautta toimilaitteena. NodeMCU käyttää MQTT -protokollaa ja kuuntelee tiettyä aihetta saadakseen komentoja releen kytkemiseksi päälle/pois. Niin yksinkertaista!

Vaihe 5: Tekniset tiedot: Pisteiden yhdistäminen | Kodin automatisointi

Tekniset tiedot: Pisteiden yhdistäminen | Kodin automatisointi
Tekniset tiedot: Pisteiden yhdistäminen | Kodin automatisointi
Tekniset tiedot: Pisteiden yhdistäminen | Kodin automatisointi
Tekniset tiedot: Pisteiden yhdistäminen | Kodin automatisointi
Tekniset tiedot: Pisteiden yhdistäminen | Kodin automatisointi
Tekniset tiedot: Pisteiden yhdistäminen | Kodin automatisointi

RaspberryPi -laitteessani on noded -instanssi, joka pystyy käsittelemään kaiken, mitä tarvitsen tähän projektiin. Siihen on myös asennettu MQTT -palvelin viestiemme julkaisemiseksi.

Aluksi ajattelin, että voin hakea API -tiedot päivittäin klo 9.00 ja poimia sekä Fajr- että Mahgrib Adhan -ajat ja vertailla nykyistä aikaa näiden muuttujien kanssa:

30 sekunnin välein:

jos: Mahgrib <NYT <Fajr totta | sytytä valot | julkaise ON -viesti määritettyyn MQTT -aiheeseen muu: sammuta

Ajan vertaamiseksi muutan sovellusliittymän tarjoamat tunnit hh: mm (AM/PM) koko päivämäärän muotoon asettamalla päivämääräosalle vähäpätöisen päivämäärän historiassa, esim. (1/1/1970), koska vertaamme aikaa vain nykyiseen aikaan (myös päivämääräosa muunnetaan).

Valitettavasti tämä toimii vain suoraviivaisissa tapauksissa. Oletetaan tapaus, kun sähkövirta katkeaa tai järjestelmä käynnistyy uudelleen suunnittelemattomasta syystä. Jos tämä tapaus ilmenee ennen klo 12.00, olemme edelleen turvallisella puolella, mutta klo 12.00 jälkeen tämä epäonnistuu yksinkertaisessa algoritmissamme.

Otetaan esimerkiksi Magrib Adhan klo 19.30 ja Fajr klo 4.10. Kun järjestelmä käynnistyy, se lähettää uuden pyynnön noutaa aiemmin mainitut tiedot. Jos kello on nyt 1:45, odotamme algoritmimme palauttavan tosi, mutta itse asiassa se ei tule, koska 1:45 on pienempi kuin Fajr (4:10 AM), mutta ei suurempi kuin Magrib (19:30). Tämä johtuu siitä, että yhdistämme päivämäärän kaikkien muuttujien kesken. Alla on algoritmin lopullinen versio (toistaiseksi):

30 sekunnin välein:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // käsittele kattavia päiviä endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // käsittele nykyisiä päiviä nykyinen aika}}} // alla on edellinen koodilohko, jos: Mahgrib <NYT <Fajr true | sytytä valot | julkaise ON -viesti määritettyyn MQTT -aiheeseen else: false | sammuttaa

Prosessin täydellinen kulku on merkitty yllä olevaan kuvaan.

Käyttöliittymän osalta lisäsin käyttöliittymään/käyttöliittymään 2 kytkintä:

  1. Kytkin tämän prosessin kääntämiseksi automaattiseksi tai manuaaliseksi.
  2. Kytkin sytyttää/sammuttaa valot manuaalisesti.

Vaihe 6: Kääriminen

Aika rientää, eikä sitä koskaan muistella. Tällaisten yksinkertaisten yhden päivän projektien tekeminen antaa sinulle mahdollisuuden hengittää tällä nopealla kaistalla ja auttaa elvyttämään pehmeät taitosi ajan myötä.

Yritin tässä projektissa yhtä paljon pitää sen yksinkertaisena ja uudelleenkäytettävänä ympäri maailmaa.

Äänestä ystävällisesti tätä opettavaista, jos luulet tämän projektin ansaitsevan.

Hyvää ramadania!

Suositeltava: