Inhaltsverzeichnis:
- Schritt 1: Theorie
- Schritt 2: Design
- Schritt 3: Technische Details: die API
- Schritt 4: Technische Details: Hardware
- Schritt 5: Technische Details: Verbinden der Punkte | Heimautomatisierung
- Schritt 6: Einpacken
Video: Ramadan-Lichter - Hausautomation IOT - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Während der Ramadan an die Tür klopft, leuchten Städte weltweit und bereiten sich auf den Fastenmonat vor. Lichter hängen auf öffentlichen Plätzen und über Stadtstraßen sowie an Außenwänden von Häusern, die nachts beleuchtet werden, bis die Sonne am Morgen aufgeht.
In diesem Projekt möchte ich meinen Beitrag teilen, in dem ich das Aufleuchten dieser Dekorationen nach Adhan-Zeiten automatisiere und zu meinem Smart Home System hinzufüge.
Schritt 1: Theorie
Grundsätzlich ist es einfacher und anwendbarer, die Beleuchtung beispielsweise basierend auf der Sonneneinstrahlung zu automatisieren. Ich möchte jedoch, dass dies den Geist des Heiligen Monats hat, dh die Lichter werden angehen, solange die Menschen während des Fastenmonats essen dürfen. Insbesondere sind die Lichter von Maghrib Adhan bis Fajr Adhan jeden Tag ohne menschliche Interaktion an.
Schritt 2: Design
Im Folgenden werde ich die Anforderungen / Fähigkeiten dieses Projekts auflisten:
- Das System sollte in der Lage sein, beim Booten automatisch zu verarbeiten.
- Das System sollte in der Lage sein, den Entscheidungsalgorithmus (EIN/AUS) periodisch auszuführen.
- Das System sollte in der Lage sein, die API täglich aufzurufen.
- Das System sollte in der Lage sein, sich nach einem ungeplanten Neustart zu erholen.
- Das System sollte den Entscheidungsalgorithmus (EIN/AUS) beim Empfangen von Daten sofort ausführen.
- Das System sollte einen Schalter zum Einschalten des Autopilot-Modus (Automatikmodus) bereitstellen.
- Das System sollte einen Schalter zum manuellen Ein- und Ausschalten der Lichter bereitstellen.
- Durch Auslösen des Handschalters sollte der Handbetrieb auf AUS gesetzt werden.
- Wenn der Automatikmodus eingeschaltet ist, sollte das Ergebnis des Entscheidungsalgorithmus auf dem manuellen Schalter ON/OFF widergespiegelt werden.
Schritt 3: Technische Details: die API
Um die Theorie anwendbar zu machen, ist es erforderlich, die Adhan-Zeit auf Tagesbasis seit ihrer Variablen zu kennen und darauf zu reagieren, um die Lichter/Dekorationen ein- und auszuschalten.
Zu diesem Zweck habe ich mich entschieden, eine standortbasierte API zu verwenden, um die Daten bereitzustellen (Zeit für Adhan)
muslimsalat.com/api/#location
- Diese API bietet eine Vielzahl von Optionen und Konfigurationsparametern, die im obigen Dokumentationslink beschrieben sind.
- Es wird empfohlen, einen eigenen API_key zu verwenden, der bei der Registrierung kostenlos ist.
- In meinem Design interessiere ich mich für eine tägliche Zeitleiste.
- Die zurückgegebene Zeit ist im 12-Stunden-Format (AM/PM).
- In Bezug auf den Standort hätte ich mir gewünscht, dass diese API genauere Optionen für Standorte wie Koordinaten geographisches Koordinatensystem (Breitengrad und Längengrad) bereitstellen könnte. Auf diese Weise kann diese API beispielsweise mit einem Städtenamen versehen werden und das reicht in den meisten Fällen völlig aus. Leider waren die Ergebnisse meiner spezifischen Stadt in mehreren Tests ziemlich verzerrt und beim Vergleich der Adhan-Zeit zwischen den API-Ergebnissen und der tatsächlichen Zeit von Adhan in meiner Stadt gab es einige Minuten Unterschied. Auf der anderen Seite waren die Ergebnisse perfekt, als ich eine nahe gelegene Stadt im Norden zur Verfügung stellte und dabei blieb!
- Die von mir verwendete API-URL lautet:
Schritt 4: Technische Details: Hardware
Der Einfachheit halber lasse ich die Hardware bei der Synchronisierung mit der API und der Zeitberechnung aus, indem ich diese Vorgänge an mein Hausautomationssystem delegiere. Dies gibt mir mehr Kontrolle, wenn ich die API-Quelle und den Berechnungsalgorithmus optimieren möchte.
Trotzdem habe ich einen ESP8266 (NodeMCU) verwendet, um mich über WIFI mit dem lokalen Netzwerk und ein Relaismodul als Aktor zu verbinden. Die NodeMCU verwendet das MQTT-Protokoll und hört auf ein bestimmtes Thema, um Befehle zum Ein- und Ausschalten des Relais zu erhalten. So einfach ist das!
Schritt 5: Technische Details: Verbinden der Punkte | Heimautomatisierung
Mein RaspberryPi enthält eine mit Knoten versehene Instanz, die alles verarbeiten kann, was ich für dieses Projekt benötige. Es hat auch einen MQTT-Server installiert, um unsere Nachrichten zu veröffentlichen.
Zuerst dachte ich, dass ich die API-Daten täglich um 9 Uhr morgens abrufen und sowohl die Fajr- als auch die Mahgrib-Adhan-Zeit extrahieren und die aktuelle Zeit mit diesen Variablen vergleichen kann:
alle 30 Sek.:
if: Mahgrib < JETZT < Fajr true | mach das Licht an | eine ON-Nachricht zum angegebenen MQTT-Thema veröffentlichen sonst: ausschalten
Zum Vergleichen der Zeit konvertiere ich die von der API bereitgestellten Stunden von hh:mm(AM/PM) in das vollständige Datumsformat, indem ich den Datumsteil auf ein vernachlässigbares Datum in der Geschichte setze, z. B. (1.01.1970), da wir die Zeit vergleichen nur auf die aktuelle Uhrzeit (Datumsanteil wird ebenfalls umgerechnet).
Leider funktioniert dies nur in einfachen Fällen. Angenommen, die Stromversorgung fällt aus oder das System startet aus einem ungeplanten Grund neu. Wenn dieser Fall vor 12 Uhr auftritt, sind wir immer noch auf der sicheren Seite, aber nach 12 Uhr schlägt unser einfacher Algorithmus fehl.
Um ein Beispiel zu geben, nehmen wir Magrib Adhan um 19:30 Uhr und Fajr um 4:10 Uhr. Wenn das System hochfährt, sendet es eine neue Anforderung zum Abrufen der zuvor erwähnten Daten. Wenn die Zeit jetzt 1:45 Uhr ist, erwarten wir, dass unser Algorithmus wahr zurückgibt, aber tatsächlich wird dies nicht der Fall sein, da 1:45 Uhr weniger als Fajr (4:10 Uhr) ist, aber nicht größer als Magrib (19.30 Uhr). Dies liegt daran, dass wir das Datum zwischen allen Variablen vereinen. Unten ist die endgültige Version des Algorithmus (bisher):
alle 30 Sek.:
if ((magrib.getHours() >=12 && fajr.getHours() <=12) || fajr < maghrib) { fajr.setDate(fajr.getDate()+1); // Handle über Tage hinweg endTime if (now.getHours() <=12) { now.setDate(now.getDate()+1); // behandelt mehrere Tage currentTime } } // unten ist der vorherige Codeblock if: Mahgrib < NOW < Fajr true | mach das Licht an | eine ON-Nachricht zum angegebenen MQTT-Thema veröffentlichen else: false | schalte aus
Der vollständige Ablauf des Prozesses ist im obigen Bild annotiert.
In Bezug auf die Benutzeroberfläche habe ich der Benutzeroberfläche / Schnittstelle 2 Schalter hinzugefügt:
- Ein Schalter, um diesen Prozess automatisch oder manuell zu aktivieren.
- Ein Schalter zum manuellen Ein- und Ausschalten der Lichter.
Schritt 6: Einpacken
Die Zeit vergeht wie im Fluge, um nie wieder erinnert zu werden. Mit solchen einfachen 1-Tages-Projekten können Sie auf dieser Überholspur durchatmen und Ihre Soft Skills im Laufe der Zeit wiederbeleben.
Ich habe in diesem Projekt so viel versucht, um es einfach und weltweit wiederverwendbar zu halten.
Bitte stimmen Sie für dieses instructable ab, wenn Sie der Meinung sind, dass dieses Projekt es verdient.
Fröhlichen Ramadan!
Empfohlen:
So verbinden Sie einen ESP32 mit der IoT-Cloud: 8 Schritte
So verbinden Sie einen ESP32 mit der IoT-Cloud: Diese Anleitung enthält eine Reihe von Artikeln zum Anschließen von Hardware wie Arduino und ESP8266 an die Cloud. Ich werde Ihnen erklären, wie Sie Ihren ESP32-Chip mit dem AskSensors IoT-Dienst mit der Cloud verbinden. Warum ESP32?Nach dem großen Erfolg
So fügen Sie IOT-Funktionen zu Ihren Projekten hinzu – wikiHow
So fügen Sie Ihren Projekten IOT-Funktionen hinzu: Nichts ist besser, als ein DIY-Projekt zu erstellen, das ein kommerzielles Produkt ersetzt, das Sie für nützlich halten. Nun, eigentlich gibt es etwas Besseres. Hinzufügen von IOT-Fähigkeiten zu Ihrem Projekt. Wenn es um Automatisierung geht, flippen Anfänger in der Regel aus
LTE CAT-M1 GSM IoT Sensors Network T - 15 Minuten.: 5 Schritte
LTE CAT-M1 GSM IoT Sensors Network… T - 15 Minuten.: Am 08. April 2018 gab R&D Software Solutions srl [itbrainpower.net] der Öffentlichkeit die Ankündigung des xyz-mIoT von itbrainpower.net Shield bekannt - das erste und kompakteste IoT-Board, das die Vielseitigkeit der ARM0-Mikrosteuerung kombiniert
So veröffentlichen Sie ESP32-Daten mit NTP-Zeitstempel in der IoT-Cloud – wikiHow
So veröffentlichen Sie ESP32-Daten mit NTP-Zeitstempel in der IoT-Cloud: In vielen Anwendungen müssen Benutzer ihre Daten zusammen mit dem lokalen Zeitstempel der in der Nutzlast zu sendenden Werte an die AskSensors-IoT-Cloud senden. Das Zeitstempelformat ist die Zeit der UNIX-Epoche: die Anzahl der Millisekunden, die seit Januar
Steuern von Haushaltsgeräten mit Node-MCU und Google Assistant - IOT - Blynk - IFTTT: 8 Schritte
Steuern von Haushaltsgeräten mit Node-MCU und Google Assistant | IOT | Blynk | IFTTT: Ein einfaches Projekt zur Steuerung von Geräten mit Google Assistant: Warnung: Der Umgang mit Netzstrom kann gefährlich sein. Mit äußerster Sorgfalt behandeln. Stellen Sie einen professionellen Elektriker ein, während Sie mit offenen Stromkreisen arbeiten. Ich übernehme keine Verantwortung für die da