Sommario:
- Fase 1: Teoria
- Passaggio 2: progettazione
- Passaggio 3: dettagli tecnici: l'API
- Passaggio 4: dettagli tecnici: hardware
- Passaggio 5: dettagli tecnici: collegamento dei punti | Domotica
- Passaggio 6: conclusione
Video: Luci del Ramadan - Domotica IOT: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Mentre il Ramadan bussa alla porta, le città di tutto il mondo si illuminano e si preparano per il mese di digiuno. Le luci sono appese nelle piazze pubbliche e nelle strade della città, nonché sui muri esterni delle case illuminate durante la notte fino al sorgere del sole al mattino.
In questo progetto, vorrei condividere il mio contributo, in cui sto automatizzando l'illuminazione di queste decorazioni in base ai tempi di Adhan e aggiungendolo al mio sistema di casa intelligente.
Fase 1: Teoria
Fondamentalmente, è più facile e più applicabile automatizzare l'illuminazione in base all'intensità della luce solare, ad esempio. Tuttavia, vorrei che questo avesse lo spirito del mese sacro, cioè le luci si accendono finché le persone possono mangiare durante il mese di digiuno. In particolare, le luci sono accese a partire da Maghrib Adhan fino a Fajr Adhan ogni giorno senza alcuna interazione umana.
Passaggio 2: progettazione
Di seguito elencherò i requisiti/capacità di questo progetto:
- Il sistema dovrebbe essere in grado di elaborare automaticamente all'avvio.
- Il sistema dovrebbe essere in grado di eseguire periodicamente l'algoritmo di decisione (ON/OFF).
- Il sistema dovrebbe essere in grado di chiamare API su base giornaliera.
- Il sistema dovrebbe essere in grado di eseguire il ripristino da un riavvio non pianificato.
- Il sistema dovrebbe eseguire l'algoritmo di decisione (ON/OFF) alla ricezione dei dati istantaneamente.
- Il sistema dovrebbe fornire un interruttore per l'attivazione della modalità autopilota (modalità automatica).
- Il sistema dovrebbe fornire un interruttore per accendere/spegnere manualmente le luci.
- L'attivazione dell'interruttore manuale dovrebbe impostare la modalità manuale su OFF.
- Quando la modalità automatica è ON, il risultato dell'algoritmo di decisione dovrebbe riflettersi sull'interruttore manuale ON/OFF.
Passaggio 3: dettagli tecnici: l'API
Per rendere applicabile la teoria è necessario conoscere il tempo Adhan su base giornaliera poiché la sua variabile e agire su di esso per accendere/spegnere le luci/decorazioni.
A questo scopo, ho deciso di utilizzare un'API basata sulla posizione per servire i dati (tempo per Adhan)
muslimsalat.com/api/#location
- Questa API fornisce una varietà di opzioni e parametri di configurazione descritti nel collegamento alla documentazione sopra.
- Si consiglia di utilizzare la propria API_key che è gratuita al momento della registrazione.
- Nel mio design, sono interessato a una linea temporale quotidiana.
- L'ora restituita è in formato 12 ore (AM/PM).
- In termini di posizione, desideravo che questa API potesse fornire opzioni più accurate per posizioni come le coordinate del sistema di coordinate geografiche (latitudine e longitudine). Per questo modo, questa API può essere fornita con un nome di città, ad esempio, e questo è abbastanza nella maggior parte dei casi. Sfortunatamente, i risultati della mia città specifica erano piuttosto distorti in più test e c'erano un paio di minuti di differenza quando si confrontava il tempo di Adhan tra i risultati dell'API e il tempo effettivo di Adhan nella mia città. D'altra parte, i risultati sono stati perfettamente abbinati quando ho fornito una città vicina al nord e mi sono attenuto ad essa!
- L'URL dell'API che sto utilizzando è:
Passaggio 4: dettagli tecnici: hardware
Per semplicità escludo l'hardware dal processo di sincronizzazione con l'API e dal calcolo dei tempi delegando queste operazioni al mio Sistema di Domotica. Questo mi darà un maggiore controllo se voglio modificare l'origine dell'API e l'algoritmo di calcolo.
Detto questo, ho utilizzato un ESP8266 (NodeMCU) per connettermi alla rete locale tramite WIFI e un modulo relè come attuatore. Il NodeMCU utilizzerà il protocollo MQTT e ascolterà un argomento specifico per ottenere i comandi per attivare/disattivare il relè. Così semplice!
Passaggio 5: dettagli tecnici: collegamento dei punti | Domotica
Il mio RaspberryPi contiene un'istanza nodered che è in grado di gestire tutto ciò di cui ho bisogno per questo progetto. Ha anche un server MQTT installato per pubblicare i nostri messaggi.
All'inizio, ho pensato di poter recuperare i dati API su base giornaliera alle 9:00 ed estrarre sia gli orari Fajr che Mahgrib Adhan e continuare a confrontare l'ora corrente con queste variabili, ovvero:
ogni 30 secondi:
if: Mahgrib < ORA < Fajr vero | accendi le luci | pubblica un messaggio ON sull'argomento MQTT specificato altrimenti: disattiva
Per confrontare l'ora, sto convertendo le ore fornite dall'API da hh: mm (AM/PM) al formato data completo impostando la parte della data su una data trascurabile nella cronologia, ad esempio (1/1/1970) poiché stiamo confrontando l'ora solo all'ora corrente (viene convertita anche la parte della data).
Sfortunatamente, questo funzionerà solo in casi semplici. Supponiamo il caso in cui l'alimentazione elettrica si interrompe o il sistema si riavvia per un motivo non pianificato. Se questo caso si verifica prima delle 12:00, siamo ancora al sicuro, ma dopo le 12:00 il nostro semplice algoritmo fallirà.
Per fare un esempio, abbiamo Magrib Adhan alle 19:30 e Fajr alle 4:10. Quando il sistema si avvia, invierà una nuova richiesta per recuperare i dati menzionati in precedenza. Se l'ora è 1:45 AM, ci aspettiamo che il nostro algoritmo restituisca true, ma in realtà non lo farà perché 1:45 AM è inferiore a Fajr (4:10) ma non è maggiore di Magrib (19:30). Questo perché uniamo la data tra tutte le variabili. Di seguito è riportata la versione finale dell'algoritmo (finora):
ogni 30 secondi:
if ((magrib.getHours() >=12 && fajr.getHours() <=12) || fajr < maghrib) { fajr.setDate(fajr.getDate()+1); // gestisce l'intervallo di giorni endTime if (now.getHours() <=12) { now.setDate(now.getDate()+1); // gestisce i giorni che coprono l'ora corrente } } // sotto c'è il blocco di codice precedente se: Mahgrib < NOW < Fajr true | accendi le luci | pubblica un messaggio ON sull'argomento MQTT specificato altrimenti: false | spegnere
Il flusso completo del processo è annotato nell'immagine sopra.
In termini di interfaccia utente, ho aggiunto 2 interruttori all'interfaccia utente/interfaccia:
- Un interruttore per trasformare questo processo in automatico o manuale.
- Un interruttore per accendere/spegnere manualmente le luci.
Passaggio 6: conclusione
Il tempo vola per non essere mai ricordato. Realizzare progetti di 1 giorno così semplici ti consente di riprendere fiato in questa corsia di sorpasso e aiutarti a far rivivere le tue abilità trasversali nel tempo.
Ho provato tanto in questo progetto per mantenerlo semplice e riutilizzabile in tutto il mondo.
Vota gentilmente per questo istruttore se pensi che questo progetto meriti.
Felice Ramadan!
Consigliato:
Luci del migliore amico a lunga distanza fai-da-te: 4 passaggi (con immagini)
Luci del migliore amico a lunga distanza fai-da-te: ho realizzato luci sincronizzate a lunga distanza conosciute come "Best Friend" lampade. Ciò significa solo che sono mantenuti sincronizzati con il colore corrente dell'altra lampada. Quindi, se dovessi cambiare una lampada in verde, poco dopo l'altra lampada diventerebbe verde
Luci del tabellone segnapunti Arduino: 3 passaggi
Luci del tabellone segnapunti Arduino: questo è un progetto che ho realizzato per una sezione di un tabellone segnapunti di scherma. Volevo qualcosa che suonasse e si illuminasse. Mi sono presto reso conto che tecnicamente potevi usarlo per molti sport diversi e non solo per la scherma. Cosa fa effettivamente il progetto, io
Luci LED multicolori reattive musicali - Sensore di rilevamento del suono Arduino - Striscia LED RGB: 4 passaggi
Luci LED multicolori reattive musicali | Sensore di rilevamento del suono Arduino | Striscia LED RGB: progetto di luci LED multicolori reattive alla musica. In questo progetto sono stati utilizzati una semplice striscia LED 5050 RGB (non il LED indirizzabile WS2812), un sensore di rilevamento del suono Arduino e un adattatore 12V
Luci da giardino interattive, luci per passerelle: 3 passaggi
Luci da cortile interattive, luci per passerelle: volevo costruire una sorta di luci da cortile interattive per il mio cortile. L'idea era che quando qualcuno camminava da una parte si attivava un'animazione nella direzione in cui stavi camminando. Ho iniziato con le luci solari Dollar General da $ 1,00
Luci natalizie fai-da-te con musica - Luci della casa coreografate: 15 passaggi (con immagini)
Luci di Natale fai da te messe in musica - Luci di casa coreografate: Luci di Natale fai da te messe in musica - Luci di casa coreografate Questo NON è un fai-da-te per principianti. Avrai bisogno di una solida conoscenza di elettronica, circuiti, programmazione BASIC e intelligenza generale sulla sicurezza elettrica. Questo fai-da-te è per una persona esperta, quindi