Përmbajtje:

Dritat e Ramazanit - Automatizimi i shtëpisë IOT: 6 hapa
Dritat e Ramazanit - Automatizimi i shtëpisë IOT: 6 hapa

Video: Dritat e Ramazanit - Automatizimi i shtëpisë IOT: 6 hapa

Video: Dritat e Ramazanit - Automatizimi i shtëpisë IOT: 6 hapa
Video: Dritat e Ramazanit në Londër 2024, Korrik
Anonim
Dritat e Ramazanit | Automatizimi i shtëpisë IOT
Dritat e Ramazanit | Automatizimi i shtëpisë IOT

Ndërsa Ramazani troket në derë, qytetet në mbarë botën ndriçojnë dhe përgatiten për muajin e agjërimit. Dritat janë varur në sheshet publike dhe nëpër rrugët e qytetit, si dhe në muret e jashtme të shtëpive të ndriçuara gjatë netëve deri në lindjen e diellit në mëngjes.

Në këtë projekt, unë do të doja të ndaj kontributin tim, në të cilin po automatizoj ndriçimin e këtyre dekorimeve bazuar në kohën e Adhanit dhe duke e shtuar këtë në sistemin tim të zgjuar të shtëpisë.

Hapi 1: Teoria

Në thelb, është më e lehtë dhe më e zbatueshme të automatizosh ndriçimin bazuar në intensitetin e dritës së diellit, për shembull. Sidoqoftë, unë do të doja që kjo të kishte frymën e muajit të shenjtë, domethënë, dritat do të ndizen për aq kohë sa njerëzit lejohen të hanë gjatë muajit të agjërimit. Në veçanti, dritat ndizen duke filluar nga Ezani i Magjribit deri në Ezanin e Kadrit çdo ditë pa ndonjë ndërveprim njerëzor.

Hapi 2: Projektimi

Më poshtë do të listoj kërkesat/aftësitë e këtij projekti:

  • Sistemi duhet të jetë në gjendje të përpunojë automatikisht kur fillon.
  • Sistemi duhet të jetë në gjendje të ekzekutojë periodikisht algoritmin e vendimit (ON/OFF).
  • Sistemi duhet të jetë në gjendje të thërrasë API çdo ditë.
  • Sistemi duhet të jetë në gjendje të rikuperohet nga rinisja e paplanifikuar.
  • Sistemi duhet të ekzekutojë algoritmin e vendimit (ON/OFF) me marrjen e të dhënave në çast.
  • Sistemi duhet të sigurojë një çelës për ndezjen e modalitetit të autopilotit (modaliteti automatik).
  • Sistemi duhet të sigurojë një ndërprerës për ndezjen/fikjen e dritave me dorë.
  • Aktivizimi i ndërprerësit manual duhet të vendosë modalitetin manual në OFF.
  • Kur modaliteti automatik është ON, rezultati i algoritmit të vendimit duhet të reflektohet në çelësin manual ON/OFF.

Hapi 3: Të dhënat teknike: API

Detajet teknike: API
Detajet teknike: API

Për ta bërë teorinë të zbatueshme, kërkohet të dimë kohën e Ezanit në baza ditore që nga ndryshorja e saj dhe të veprojmë sipas saj për të ndezur/fikur dritat/dekorimet.

Për këtë qëllim, vendosa të përdor një API të bazuar në vendndodhje për t'i shërbyer të dhënave (koha për Ezan)

muslimsalat.com/api/#location

  • Ky API siguron një sërë opsionesh dhe parametrash konfigurimi të përshkruar në lidhjen e dokumentacionit më lart.
  • Rekomandohet të përdorni çelësin tuaj API i cili është falas pas regjistrimit.
  • Në modelin tim, unë jam i interesuar për një afat kohor ditor.
  • Koha e kthyer është në formatin 12 orë (AM/PM).
  • Për sa i përket vendndodhjes, do të doja që ky API të mund të siguronte mundësi më të sakta për lokacionet si sistemi i koordinatave gjeografike të koordinatave (gjerësia dhe gjatësia gjeografike). Për këtë mënyrë, ky API mund të pajiset me një emër qyteti për shembull dhe kjo është mjaft e mjaftueshme në shumicën e rasteve. Fatkeqësisht, rezultatet e qytetit tim specifik ishin mjaft të njëanshëm në teste të shumta dhe kishte disa minuta ndryshim kur krahasohej koha e Ezanit midis rezultateve të API dhe kohës aktuale të Ezanit në qytetin tim. Nga ana tjetër, rezultatet u përputhen në mënyrë perfekte kur sigurova një qytet të afërt në veri dhe i qëndrova atij!
  • URL -ja API që po përdor është: https://muslimsalat.com/.json? Key =

Hapi 4: Detajet teknike: Pajisje kompjuterike

Detajet teknike: Hardware
Detajet teknike: Hardware

Për thjeshtësi, po e lë harduerin jashtë procesit të sinkronizimit me API dhe llogaritjen e kohës duke i deleguar këto operacione në Sistemin tim të Automatizimit të Shtëpisë. Kjo do të më japë më shumë kontroll nëse dua të ndryshoj burimin API dhe algoritmin e llogaritjes.

Duke thënë këtë, unë përdor një ESP8266 (NodeMCU) për t'u lidhur me rrjetin lokal përmes WIFI dhe një modul stafetë si një aktivizues. NodeMCU do të përdorë protokollin MQTT dhe do të dëgjojë për një temë të veçantë për të marrë komanda për të ndezur/fikur stafetën. Aq e thjeshtë sa kaq!

Hapi 5: Detajet teknike: Lidhja e pikave | Automatizimi në shtëpi

Detajet teknike: Lidhja e pikave | Automatizimi në shtëpi
Detajet teknike: Lidhja e pikave | Automatizimi në shtëpi
Detajet teknike: Lidhja e pikave | Automatizimi në shtëpi
Detajet teknike: Lidhja e pikave | Automatizimi në shtëpi
Detajet teknike: Lidhja e pikave | Automatizimi në shtëpi
Detajet teknike: Lidhja e pikave | Automatizimi në shtëpi

My RaspberryPi mban një shembull me nyje i cili është i aftë të trajtojë gjithçka që më nevojitet për këtë projekt. Ai gjithashtu ka një server MQTT të instaluar për të publikuar mesazhet tona.

Në fillim, mendova se mund të marr të dhënat API në baza ditore në orën 9 të mëngjesit dhe të nxjerr kohën e sabahut dhe të Mahgrib Adhanit dhe të krahasoj kohën aktuale me këto variabla që janë:

secila 30 sekonda:

nëse: Mahgrib <TANI <Fajr e vërtetë | ndez dritat | publikoni një mesazh ON për temën tjetër të specifikuar MQTT: fikeni

Për të krahasuar kohën, unë po i konvertoj orët e siguruara nga API nga hh: mm (AM/PM) në formate të datës së plotë duke e vendosur pjesën e datës në një datë të papërfillshme në histori p.sh. (1/1/1970) pasi po krahasojmë kohën vetëm në kohën aktuale (pjesa e datës gjithashtu konvertohet).

Fatkeqësisht, kjo do të funksionojë vetëm në raste të drejtpërdrejta. Supozoni rastin kur energjia elektrike bie ose sistemi riniset për një arsye të paplanifikuar. Nëse ky rast ndodh para orës 12 të mëngjesit, atëherë ne jemi ende në anën e sigurt, por pas orës 12 të mëngjesit kjo do të dështojë në algoritmin tonë të thjeshtë.

Për të dhënë një shembull, le të bëjmë Magrib Ezan në 7:30 pasdite dhe Fajr në 4:10 paradite. Kur sistemi të fillojë, ai do të dërgojë një kërkesë të re për të marrë të dhënat e përmendura më herët. Nëse koha tani është 1:45 e mëngjesit, ne presim që algoritmi ynë të kthehet i vërtetë, por në fakt nuk do të ndodhë sepse 1:45 e mëngjesit është më pak se sabah (4:10 paradite), por nuk është më i madh se Magribi (7:30 pasdite). Kjo ndodh sepse ne bashkojmë datën midis të gjitha ndryshoreve. Më poshtë është versioni përfundimtar i algoritmit (deri më tani):

secila 30 sekonda:

nëse ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // trajtoni ditët e shtrirjes endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // trajtoni ditët që përfshijnë currentTime}} // më poshtë është blloku i kodit të mëparshëm nëse: Mahgrib <TANI <Fajr i vërtetë | ndez dritat | publikoni një mesazh ON për temën e specifikuar MQTT tjetër: false | fikur

Rrjedha e plotë e procesit shënohet në imazhin e mësipërm.

Për sa i përket UI, shtova 2 ndërprerës në ndërfaqen/ndërfaqen:

  1. Një çelës për ta kthyer këtë proces në Automatik ose Manual.
  2. Një çelës për të ndezur/fikur dritat me dorë.

Hapi 6: Përfundimi.

Koha fluturon për të mos u kujtuar kurrë. Bërja e projekteve të tilla të thjeshta 1-ditore ju lejon të merrni frymë në këtë korsi të shpejtë dhe t'ju ndihmojë të ringjallni aftësitë tuaja të buta me kalimin e kohës.

Unë u përpoqa aq shumë në këtë projekt për ta mbajtur atë të thjeshtë dhe të ripërdorshëm në të gjithë globin.

Votoni me mirësi për këtë udhëzues nëse mendoni se ky projekt e meriton.

Gëzuar Ramazanin!

Recommended: