Table des matières:
- Étape 1: Théorie
- Étape 2: Concevoir
- Étape 3: Détails techniques: l'API
- Étape 4: Détails techniques: Matériel
- Étape 5: Détails techniques: Relier les points | Automatisation de la maison
- Étape 6: Conclusion
Vidéo: Lumières du Ramadan - Domotique IOT : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Alors que le Ramadan frappe à la porte, les villes du monde entier s'illuminent et se préparent pour le mois de jeûne. Des lumières sont accrochées sur les places publiques et dans les rues de la ville ainsi que sur les murs extérieurs des maisons éclairées pendant la nuit jusqu'à ce que le soleil se lève le matin.
Dans ce projet, je souhaite partager ma contribution, dans laquelle j'automatise l'éclairage de ces décorations en fonction des temps Adhan et l'ajoute à mon système de maison intelligente.
Étape 1: Théorie
Fondamentalement, il est plus facile et plus applicable d'automatiser l'éclairage en fonction de l'intensité de la lumière du soleil, par exemple. Cependant, j'aimerais que cela ait l'esprit du mois sacré, c'est-à-dire que les lumières s'allumeront tant que les gens seront autorisés à manger pendant le mois de jeûne. En particulier, les lumières sont allumées à partir de Maghrib Adhan jusqu'à Fajr Adhan chaque jour sans aucune interaction humaine.
Étape 2: Concevoir
Ci-dessous, je vais énumérer les exigences/capacités de ce projet:
- Le système devrait être capable de traiter automatiquement au démarrage.
- Le système doit être capable d'exécuter périodiquement l'algorithme de décision (ON/OFF).
- Le système devrait pouvoir appeler l'API quotidiennement.
- Le système doit pouvoir récupérer après un redémarrage imprévu.
- Le système doit exécuter l'algorithme de décision (ON/OFF) lors de la réception instantanée des données.
- Le système doit fournir un interrupteur pour activer le mode pilote automatique (mode automatique).
- Le système doit fournir un interrupteur pour allumer/éteindre manuellement les lumières.
- Le déclenchement de l'interrupteur manuel doit mettre le mode manuel sur OFF.
- Lorsque le mode automatique est activé, le résultat de l'algorithme de décision doit être reflété sur l'interrupteur manuel ON/OFF.
Étape 3: Détails techniques: l'API
Pour rendre la théorie applicable, il est nécessaire de connaître l'heure Adhan sur des bases quotidiennes depuis sa variable et d'agir dessus pour allumer/éteindre les lumières/décorations.
Pour cela, j'ai décidé d'utiliser une API géolocalisée pour servir les données (le temps d'Adhan)
muslimsalat.com/api/#location
- Cette API fournit une variété d'options et de paramètres de configuration décrits dans le lien de documentation ci-dessus.
- Il est recommandé d'utiliser votre propre API_key qui est gratuite lors de l'inscription.
- Dans ma conception, je m'intéresse à une chronologie quotidienne.
- L'heure renvoyée est au format 12 heures (AM/PM).
- En ce qui concerne l'emplacement, j'ai souhaité que cette API puisse fournir des options plus précises pour des emplacements tels que le système de coordonnées géographiques (latitude et longitude). Pour cette manière, cette API peut être fournie avec un nom de ville par exemple et cela suffit largement dans la plupart des cas. Malheureusement, les résultats de ma ville spécifique étaient assez biaisés dans plusieurs tests et il y avait quelques minutes de différence lors de la comparaison de l'heure d'Adhan entre les résultats de l'API et l'heure réelle d'Adhan dans ma ville. En revanche, les résultats étaient parfaitement assortis lorsque j'ai fourni une ville proche au nord et je m'y suis tenu !
- L'URL de l'API que j'utilise est:
Étape 4: Détails techniques: Matériel
Pour plus de simplicité, je laisse le matériel en dehors du processus de synchronisation avec l'API et du calcul du temps en déléguant ces opérations à mon système domotique. Cela me donnera plus de contrôle si je veux peaufiner la source de l'API et l'algorithme de calcul.
Cela dit, j'ai utilisé un ESP8266 (NodeMCU) pour me connecter au réseau local via WIFI et un module relais comme actionneur. Le NodeMCU utilisera le protocole MQTT et écoutera un sujet spécifique pour obtenir des commandes pour activer/désactiver le relais. Aussi simple que cela!
Étape 5: Détails techniques: Relier les points | Automatisation de la maison
Mon RaspberryPi contient une instance à nœuds capable de gérer tout ce dont j'ai besoin pour ce projet. Il dispose également d'un serveur MQTT installé pour publier nos messages.
Au début, je pensais pouvoir récupérer les données de l'API quotidiennement à 9h et extraire les heures de Fajr et de Mahgrib Adhan et continuer à comparer l'heure actuelle avec ces variables, à savoir:
toutes les 30 secondes:
si: Mahgrib < MAINTENANT < Fajr true | allumer les lumières | publier un message ON dans le sujet MQTT spécifié else: désactiver
Pour comparer l'heure, je convertis les heures fournies par l'API de hh:mm(AM/PM) au format de date complet en définissant la partie date sur une date négligeable dans l'histoire, par exemple (1/1/1970) puisque nous comparons l'heure uniquement à l'heure actuelle (la partie date est également convertie).
Malheureusement, cela ne fonctionnera que dans les cas simples. Supposons le cas où l'alimentation électrique tombe en panne ou le système redémarre pour une raison imprévue. Si ce cas se produit avant minuit, nous sommes toujours du bon côté, mais après minuit, notre algorithme simple échouera.
Pour donner un exemple, prenons Magrib Adhan à 19h30 et Fajr à 4h10. Lorsque le système démarre, il enverra une nouvelle demande pour récupérer les données mentionnées précédemment. Si l'heure est maintenant 1h45, nous nous attendons à ce que notre algorithme renvoie vrai, mais en fait il ne le sera pas car 1h45 est inférieur à Fajr (4h10) mais n'est pas supérieur à Magrib (19h30). C'est parce que nous unissons la date entre toutes les variables. Vous trouverez ci-dessous la version finale de l'algorithme (jusqu'à présent):
toutes les 30 secondes:
if ((magrib.getHours() >=12 && fajr.getHours() <=12) || fajr < maghrib) { fajr.setDate(fajr.getDate()+1); // gérer les jours endTime if (now.getHours() <=12) { now.setDate(now.getDate()+1); // gérer les jours courants currentTime } } // ci-dessous se trouve le bloc de code précédent si: Mahgrib < NOW < Fajr true | allumer les lumières | publier un message ON dans le sujet MQTT spécifié else: false | éteindre
Le déroulement complet du processus est annoté dans l'image ci-dessus.
Au niveau de l'UI, j'ai ajouté 2 switchs à l'UI/interface:
- Un interrupteur pour activer ce processus Automatique ou Manuel.
- Un interrupteur pour allumer/éteindre les lumières manuellement.
Étape 6: Conclusion
Le temps passe vite pour ne jamais être rappelé. Faire des projets aussi simples d'une journée vous permet de reprendre votre souffle dans cette voie rapide et vous aide à raviver vos soft skills au fil du temps.
J'ai autant essayé dans ce projet de le garder simple et réutilisable à travers le monde.
Veuillez voter pour cette instructable si vous pensez que ce projet mérite.
Joyeux Ramadan!
Conseillé:
Lumières disco de RVB à l'aide d'Arduino sur TinkerCad : 3 étapes
Disco Lights From RGB utilisant Arduino sur TinkerCad: Une fois que vous avez câblé le RGB, il est facile de contrôler la couleur du RGB en utilisant la sortie PWM ou la sortie analogique, pour Arduino, vous pouvez utiliser analogWrite() sur les broches 3, 5, 6 , 9, 10, 11, A0, A1, A2, A3, A4, A5 (pour les Arduinos classiques utilisant l'Atmega328 ou 1
Arbre de Noël rotatif et lumières programmables avec Arduino : 11 étapes
Sapin de Noël rotatif et lumières programmables avec Arduino : Sapin de Noël rotatif et lumières programmables avec Arduino
Diffuseurs NeoPixel Clip-On C9 pour lumières de Noël : 6 étapes (avec photos)
Diffuseurs NeoPixel Clip-On C9 pour les lumières de Noël : Parfois, les bonnes choses disparaissent, comme les ampoules C9 givrées. Vous savez, ceux où la peinture s'écaille. Oui, ces ampoules C9 givrées de la bonté de Charlie Brown. Voici un diffuseur LED C9 approprié pour les LED adressables 12 mm WS2811 NeoPixel. Par p
Lumières de cour interactives, lumières de passerelle : 3 étapes
Lumières de jardin interactives, lumières de passerelle : je voulais construire une sorte de lumières de jardin interactives pour ma cour arrière. L'idée était que lorsque quelqu'un marchait dans un sens, cela déclenchait une animation dans la direction dans laquelle vous marchiez. J'ai commencé avec les lampes solaires Dollar General à 1,00 $
Lumières de Noël bricolage mises en musique - Lumières de la maison chorégraphiées : 15 étapes (avec photos)
Lumières de Noël bricolage mises en musique - Lumières de la maison chorégraphiées: Lumières de Noël bricolage réglées en musique - Lumières de la maison chorégraphiées Ce n'est PAS un bricolage pour débutant. Vous aurez besoin d'une solide connaissance de l'électronique, des circuits, de la programmation BASIC et de l'intelligence générale de la sécurité électrique. Ce DIY s'adresse à une personne expérimentée donc