Innholdsfortegnelse:
- Trinn 1: Teori
- Trinn 2: Design
- Trinn 3: Tekniske detaljer: API
- Trinn 4: Tekniske detaljer: Maskinvare
- Trinn 5: Tekniske detaljer: Koble til prikkene. Hjemmeautomatisering
- Trinn 6: Innpakning
Video: Ramadanlys - Hjemmeautomatisering IOT: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Når Ramadan banker på døren, lyser byer over hele verden opp og forbereder seg på fastemåneden. Lys henges på offentlige torg og på tvers av byens gater, så vel som på yttervegger i hus som er tent om natten til solen kommer opp om morgenen.
I dette prosjektet vil jeg dele mitt bidrag, der jeg automatiserer belysningen av disse dekorasjonene basert på Adhan -tider og legger dette til i mitt smarte hjemmesystem.
Trinn 1: Teori
I utgangspunktet er det lettere og mer aktuelt å automatisere belysningen basert på for eksempel sollysintensitet. Imidlertid vil jeg at dette skal ha ånden til den hellige måneden, det vil si at lysene tennes så lenge folk får spise i løpet av fastemåneden. Spesielt lyser det fra Maghrib Adhan til Fajr Adhan hver dag uten menneskelig interaksjon.
Trinn 2: Design
Nedenfor vil jeg liste opp kravene/evnene til dette prosjektet:
- Systemet skal kunne behandles automatisk ved oppstart.
- Systemet bør være i stand til periodisk å utføre beslutningsalgoritmen (ON/OFF).
- Systemet bør kunne kalle API på daglig basis.
- Systemet skal kunne gjenopprette seg etter uplanlagt omstart.
- Systemet bør utføre beslutningsalgoritmen (ON/OFF) når den mottar data umiddelbart.
- Systemet bør gi en bryter for å slå på autopilotmodus (automatisk modus).
- Systemet bør gi en bryter for å slå lysene PÅ/AV manuelt.
- Når den manuelle bryteren utløses, bør manuell modus settes til AV.
- Når Automatisk modus er PÅ, bør resultatet av beslutningsalgoritmen gjenspeiles på den manuelle bryteren PÅ/AV.
Trinn 3: Tekniske detaljer: API
For å gjøre teorien anvendelig, er det nødvendig å kjenne til Adhan -tiden på daglig basis siden den er variabel og handle på den for å slå på/av lysene/dekorasjonene.
For dette formålet bestemte jeg meg for å bruke et stedsbasert API for å vise dataene (tid for Adhan)
muslimsalat.com/api/#location
- Dette API -et gir en rekke alternativer og konfigurasjonsparametere beskrevet i dokumentasjonskoblingen ovenfor.
- Det anbefales å bruke din egen API_key som er gratis ved registrering.
- I mitt design er jeg interessert i en daglig tidslinje.
- Tiden som returneres er i 12 -timers format (AM/PM).
- Når det gjelder plasseringen, ønsket jeg om dette API kunne gi mer nøyaktige alternativer for steder som geografiske koordinatsystemer (breddegrad og lengdegrad). For denne måten kan dette API -et for eksempel få et bynavn, og dette er ganske nok i de fleste tilfeller. Dessverre var resultatene av min spesifikke by ganske forutinntatt i flere tester, og det var et par minutters forskjell når vi sammenlignet Adhan -tid mellom API -resultater og den faktiske tiden for Adhan i byen min. På den annen side var resultatene perfekt matchet da jeg ga en nær by i nord og jeg holdt meg til det!
- API -nettadressen jeg bruker er: https://muslimsalat.com/.json? Key =
Trinn 4: Tekniske detaljer: Maskinvare
For enkelhets skyld forlater jeg maskinvaren ut av prosessen med å synkronisere med API og tidsberegningen ved å delegere disse operasjonene til mitt hjemmeautomatiseringssystem. Dette vil gi meg mer kontroll hvis jeg vil justere API -kilden og beregningsalgoritmen.
Når det er sagt, brukte jeg en ESP8266 (NodeMCU) til å koble til det lokale nettverket via WIFI og en relemodul som en aktuator. NodeMCU vil bruke MQTT -protokollen og lytte etter et bestemt emne for å få kommandoer for å slå reléet på/av. Så enkelt som det!
Trinn 5: Tekniske detaljer: Koble til prikkene. Hjemmeautomatisering
Min RaspberryPi har en noderert forekomst som er i stand til å håndtere alt jeg trenger for dette prosjektet. Den har også en MQTT -server installert for å publisere meldingene våre.
Først trodde jeg at jeg kunne hente API -dataene på daglig basis klokken 09.00 og pakke ut både Fajr og Mahgrib Adhan -tider og fortsette å sammenligne nåværende tid med disse variablene:
hvert 30 sekund:
hvis: Mahgrib <NÅ <Fajr true | slå på lysene | publiser en PÅ -melding til det angitte MQTT -emnet ellers: slå av
For å sammenligne tid konverterer jeg timer levert av API fra hh: mm (AM/PM) til full datoformat ved å sette datodelen til en ubetydelig dato i historien f.eks. (1/1/1970) siden vi sammenligner tiden bare til gjeldende tid (datodelen blir også konvertert).
Dessverre vil dette bare fungere i enkle saker. Anta at når strømmen går av eller systemet starter på nytt av en ikke -planlagt grunn. Hvis dette tilfellet oppstår før kl. 12.00, er vi fremdeles på den sikre siden, men etter kl. 12.00 svikter dette vår enkle algoritme.
For å gi et eksempel, la oss ha Magrib Adhan kl. 19:30 og Fajr kl. 16:10. Når systemet starter opp vil det sende en ny forespørsel om å hente dataene nevnt tidligere. Hvis klokken nå er 01:45 forventer vi at algoritmen vår kommer tilbake til sannheten, men faktisk vil den ikke gjøre det fordi 01:45 er mindre enn Fajr (4:10 AM), men ikke større enn Magrib (19:30). Dette er fordi vi forener datoen mellom alle variablene. Nedenfor er den endelige versjonen av algoritmen (så langt):
hvert 30 sekund:
hvis ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // håndtere spennende dager endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // håndter som strekker seg over dager currentTime}} // nedenfor er den forrige kodeblokken hvis: Mahgrib <NÅ <Fajr true | slå på lysene | publiser en PÅ -melding til det angitte MQTT -emnet else: false | skru av
Den komplette flyt av prosessen er merket i bildet ovenfor.
Når det gjelder UI, la jeg til 2 brytere til UI/grensesnittet:
- En bryter for å slå denne prosessen automatisk eller manuelt.
- En bryter for å slå lysene PÅ/AV manuelt.
Trinn 6: Innpakning
Tiden flyr for aldri å bli husket. Gjør du slike enkle 1-dagers prosjekter kan du få pusten i denne raske banen og hjelpe deg med å gjenopplive dine myke ferdigheter over tid.
Jeg prøvde så mye i dette prosjektet å holde det enkelt og gjenbrukbart over hele verden.
Vennligst stem på dette instruerbare hvis du synes dette prosjektet fortjener.
Gledelig Ramadan!
Anbefalt:
Enkel IOT - Appstyrt RF -sensorhub for mellomstore IOT -enheter: 4 trinn
Easy IOT - Appstyrt RF Sensor Hub for mellomstore IOT -enheter: I denne opplæringsserien vil vi bygge et nettverk av enheter som kan styres via en radiokobling fra en sentral hub -enhet. Fordelen med å bruke en 433MHz seriell radioforbindelse i stedet for WIFI eller Bluetooth er den mye større rekkevidden (med god
IoT APIS V2 - Autonomt IoT -aktivert automatisert plantevanningssystem: 17 trinn (med bilder)
IoT APIS V2 - Autonom IoT -enabled Automated Plant Irrigation System: Dette prosjektet er en utvikling av min tidligere instruerbare: APIS - Automated Plant Irrigation System Jeg har brukt APIS i nesten et år nå, og ønsket å forbedre den forrige designen: Evne til å overvåke anlegget eksternt. Dette er hvordan
IoT Power Module: Legge til en IoT Power Measurement Feature til My Solar Charge Controller: 19 trinn (med bilder)
IoT Power Module: Legger til en IoT Power Measurement Feature til My Solar Charge Controller: Hei alle sammen, jeg håper dere alle har det bra! I denne instruksen skal jeg vise deg hvordan jeg laget en IoT Power Measurement -modul som beregner mengden strøm som genereres av solcellepanelene mine, som blir brukt av min solcellelader til
IoT Grunnleggende: Koble IoT til skyen ved hjelp av Mongoose OS: 5 trinn
IoT Grunnleggende: Koble din IoT til skyen ved hjelp av Mongoose OS: Hvis du er en person som liker å tinke og elektronikk, vil du oftere enn ikke komme over begrepet Internet of Things, vanligvis forkortet som IoT, og at det refererer til et sett med enheter som kan koble til internett! Å være en slik person
ESP8266 NODEMCU BLYNK IOT Opplæring - Esp8266 IOT Bruke Blunk og Arduino IDE - Kontrollere lysdioder over internett: 6 trinn
ESP8266 NODEMCU BLYNK IOT Opplæring | Esp8266 IOT Bruke Blunk og Arduino IDE | Kontrollere lysdioder over internett: Hei Gutter i denne instruksjonene lærer vi hvordan du bruker IOT med ESP8266 eller Nodemcu. Vi vil bruke blynk -appen til det. Så vi vil bruke esp8266/nodemcu til å kontrollere lysdiodene over internett. Så Blynk -appen vil bli koblet til esp8266 eller Nodemcu