
Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:03

Gdy Ramadan puka do drzwi, miasta na całym świecie rozświetlają się i przygotowują na miesiąc postu. Światła wiszą na placach i ulicach miast, a także na zewnętrznych ścianach domów oświetlonych nocą do wschodu słońca.
W tym projekcie chciałbym podzielić się moim wkładem, w którym automatyzuję rozświetlanie tych dekoracji na podstawie czasów Adhana i dodaję to do mojego systemu inteligentnego domu.
Krok 1: Teoria
Zasadniczo łatwiej i lepiej można zautomatyzować oświetlenie na podstawie np. natężenia światła słonecznego. Jednak chciałbym, żeby to było w duchu świętego miesiąca, to znaczy, że światła będą się włączać tak długo, jak długo ludzie będą mogli jeść podczas miesiąca postu. W szczególności światła zapalają się od Maghrib Adhan do Fajr Adhan każdego dnia bez interakcji z ludźmi.
Krok 2: Projekt
Poniżej wymienię wymagania/możliwości tego projektu:
- System powinien być w stanie automatycznie przetwarzać podczas uruchamiania.
- System powinien mieć możliwość okresowego wykonywania algorytmu decyzyjnego (ON/OFF).
- System powinien mieć możliwość codziennego wywoływania API.
- System powinien być w stanie odzyskać sprawność po nieplanowanym ponownym uruchomieniu.
- System powinien wykonać algorytm decyzyjny (ON/OFF) po otrzymaniu danych natychmiast.
- System powinien zapewnić przełącznik do włączania trybu autopilota (tryb automatyczny).
- System powinien zapewniać przełącznik do ręcznego włączania/wyłączania świateł.
- Wyzwolenie przełącznika ręcznego powinno wyłączyć tryb ręczny.
- Gdy tryb automatyczny jest włączony, wynik algorytmu decyzyjnego powinien być odzwierciedlony na ręcznym przełączniku ON/OFF.
Krok 3: Szczegóły techniczne: API

Aby ta teoria miała zastosowanie, wymagana jest znajomość czasu Adhan na co dzień, ponieważ jest on zmienny i działa zgodnie z nim, aby włączyć/wyłączyć światła/dekoracje.
W tym celu zdecydowałem się na wykorzystanie API opartego na lokalizacji do obsługi danych (czas na Adhan)
muslimsalat.com/api/#lokalizacja
- Ten interfejs API udostępnia różne opcje i parametry konfiguracyjne opisane w powyższym łączu do dokumentacji.
- Zaleca się korzystanie z własnego API_key, który jest bezpłatny przy rejestracji.
- W moim projekcie interesuje mnie codzienna oś czasu.
- Zwracany czas jest w formacie 12 godzin (AM/PM).
- Jeśli chodzi o lokalizację, żałowałem, że ten interfejs API może zapewnić dokładniejsze opcje dla lokalizacji, takich jak współrzędne układu współrzędnych geograficznych (szerokość i długość geograficzna). W tym celu ten interfejs API może być wyposażony na przykład w nazwę miasta, co w większości przypadków jest wystarczające. Niestety wyniki w moim konkretnym mieście były dość stronnicze w wielu testach i było kilka minut różnicy przy porównywaniu czasu Adhan między wynikami API a rzeczywistym czasem Adhan w moim mieście. Z drugiej strony wyniki były idealnie dopasowane, gdy podałem miasto blisko północy i trzymałem się go!
- Adres URL interfejsu API, którego używam, to:
Krok 4: Szczegóły techniczne: sprzęt

Dla uproszczenia wyłączam sprzęt z procesu synchronizacji z API i obliczania czasu, delegując te operacje do mojego systemu automatyki domowej. Daje mi to większą kontrolę, jeśli chcę poprawić źródło API i algorytm obliczeń.
Mając to na uwadze, użyłem ESP8266 (NodeMCU) do połączenia z siecią lokalną przez WIFI i moduł przekaźnika jako siłownik. NodeMCU użyje protokołu MQTT i nasłuchuje określonego tematu, aby uzyskać polecenia włączenia/wyłączenia przekaźnika. Tak proste jak to!
Krok 5: Szczegóły techniczne: Łączenie kropek | Automatyka domowa



Moje RaspberryPi posiada instancję z węzłami, która jest w stanie obsłużyć wszystko, czego potrzebuję do tego projektu. Posiada również zainstalowany serwer MQTT do publikowania naszych wiadomości.
Na początku myślałem, że mogę pobierać dane API codziennie o 9 rano i wyodrębniać czasy Fajr i Mahgrib Adhan oraz porównywać aktualny czas z tymi zmiennymi, czyli:
co 30 sekund:
jeśli: Mahgrib < TERAZ < Fajr prawda | włącz światła | opublikuj komunikat ON do określonego tematu MQTT w przeciwnym razie: wyłącz
Aby porównać czas, konwertuję godziny dostarczone przez API z hh:mm(AM/PM) na pełny format daty, ustawiając część daty na nieistotną datę w historii, np. (1.01.2070), ponieważ porównujemy czas tylko do aktualnego czasu (część daty jest również przeliczana).
Niestety zadziała to tylko w prostych przypadkach. Załóżmy przypadek, w którym energia elektryczna spada lub system uruchamia się ponownie z nieplanowanego powodu. Jeśli taki przypadek zdarzy się przed północą, nadal jesteśmy po bezpiecznej stronie, ale po północy nasz prosty algorytm zawiedzie.
Aby dać przykład, weźmy Magrib Adhan o 19:30 i Fajr o 4:10. Po uruchomieniu systemu wyśle nowe żądanie pobrania danych wspomnianych wcześniej. Jeśli teraz jest godzina 1:45, oczekujemy, że nasz algorytm zwróci prawdę, ale w rzeczywistości tak się nie stanie, ponieważ 1:45 to mniej niż Fajr (4:10), ale nie jest większe niż Magrib (7:30). Dzieje się tak, ponieważ łączymy datę między wszystkimi zmiennymi. Poniżej ostateczna wersja algorytmu (jak dotąd):
co 30 sekund:
if ((magrib.getHours() >=12 && fajr.getHours() <=12) || fajr < maghrib) { fajr.setDate(fajr.getDate()+1); // obsługuj obejmujące dni endTime if (now.getHours() <=12) { now.setDate(now.getDate()+1); // obsługuj spanning days currentTime } } // poniżej znajduje się poprzedni blok kodu, jeśli: Mahgrib < NOW < Fajr true | włącz światła | opublikuj komunikat ON do określonego tematu MQTT else: false | wyłączyć coś
Pełny przebieg procesu jest opisany na powyższym obrazku.
Jeśli chodzi o interfejs użytkownika, dodałem 2 przełączniki do interfejsu/interfejsu:
- Przełącznik, aby włączyć ten proces automatycznie lub ręcznie.
- Przełącznik do ręcznego włączania/wyłączania świateł.
Krok 6: Podsumowanie…

Czas leci, by nigdy go nie wspominać. Wykonywanie tak prostych jednodniowych projektów pozwala złapać oddech na tym szybkim pasie i pomóc z czasem ożywić swoje miękkie umiejętności.
W tym projekcie starałem się, aby był prosty i wielokrotnego użytku na całym świecie.
Uprzejmie zagłosuj na tę instrukcję, jeśli uważasz, że ten projekt zasługuje.
Szczęśliwego ramadanu!
Zalecana:
Domowa lampa nastrojowa: 6 kroków

Home Made Mood Lamp: Una Mood Lamp to jedna z lamp, która pozwala na personalizację kolorów i kolorów. A continuación se muestra como puedes hacer una con un Kit de principiantes de Arduino y materiales caseros
Domowa chłodziarka / lodówka Peltiera z regulatorem temperatury DIY: 6 kroków (ze zdjęciami)

Domowa lodówka Peltiera / lodówka z regulatorem temperatury Zrób to sam: Jak zrobić domową termoelektryczną chłodnicę Peltiera / minilodówkę DIY z regulatorem temperatury W1209. Ten moduł TEC1-12706 i efekt Peltiera tworzą idealną lodówkę dla majsterkowiczów! Ta instrukcja jest samouczkiem krok po kroku pokazującym, jak zrobić
IoT: Wizualizacja danych czujnika światła za pomocą Node-RED: 7 kroków

IoT: Wizualizacja danych czujnika światła za pomocą Node-RED: W tej instrukcji dowiesz się, jak stworzyć czujnik podłączony do Internetu! W tym demo użyję czujnika światła otoczenia (TI OPT3001), ale każdy wybrany czujnik (temperatura, wilgotność, potencjometr itp.) będzie działał. Czujnik wartości
Zdalnie sterowany włącznik światła Bluetooth - modernizacja. Włącznik światła nadal działa, bez dodatkowego pisania.: 9 kroków (ze zdjęciami)

Zdalnie sterowany włącznik światła Bluetooth - modernizacja. Przełącznik światła nadal działa, bez dodatkowego pisania.: aktualizacja z 25 listopada 2017 r. - W przypadku wersji tego projektu o dużej mocy, która może kontrolować kilowaty obciążenia, zobacz Doposażenie sterowania BLE w obciążenia o dużej mocy - nie jest wymagane dodatkowe okablowanie Aktualizacja z 15 listopada 2017 r. - Niektóre płyty BLE / stosy oprogramowania dostarczają
Włącznik światła aktywowany ruchem z czujnikiem światła: 5 kroków

Włącznik światła aktywowany ruchem z czujnikiem światła: Włącznik światła aktywowany ruchem ma wiele zastosowań zarówno w domu, jak iw biurze. Ma to jednak dodatkową zaletę polegającą na włączeniu czujnika światła, dzięki czemu światło to może być wyzwalane tylko w nocy