Съдържание:
- Стъпка 1: Теория
- Стъпка 2: Дизайн
- Стъпка 3: Технически подробности: API
- Стъпка 4: Технически подробности: Хардуер
- Стъпка 5: Технически подробности: Свързване на точките Домашна автоматизация
- Стъпка 6: Приключване
Видео: Рамазански светлини - Домашна автоматизация IOT: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Докато Рамадан чука на вратата, градовете по света светват и се подготвят за месеца на гладуване. Светлините са окачени на обществени площади и по улиците на града, както и по външните стени на къщи, осветени през нощта, докато слънцето изгрее сутрин.
В този проект бих искал да споделя моя принос, в който автоматизирам осветяването на тези декорации въз основа на времената на Adhan и добавям това към моята система за интелигентен дом.
Стъпка 1: Теория
По принцип е по -лесно и по -приложимо да се автоматизира осветлението въз основа например на интензитета на слънчевата светлина. Бих искал обаче това да има духа на светия месец, тоест светлините ще се включват, докато на хората е позволено да се хранят по време на постния месец. По -специално, светлините са включени от Магриб Адхан до Фаджр Адхан всеки ден без човешко взаимодействие.
Стъпка 2: Дизайн
По -долу ще изброя изискванията/възможностите на този проект:
- Системата трябва да може да обработва автоматично при стартиране.
- Системата трябва да може да изпълнява периодично алгоритъма за вземане на решение (ON/OFF).
- Системата трябва да може да извиква API ежедневно.
- Системата трябва да може да се възстанови от непланирано рестартиране.
- Системата трябва да изпълни алгоритъма за решение (ВКЛ./ИЗКЛ.) При незабавно получаване на данни.
- Системата трябва да осигури превключвател за включване на режима на автопилот (автоматичен режим).
- Системата трябва да осигури превключвател за ръчно включване/изключване на светлините.
- Задействането на ръчния превключвател трябва да зададе ръчния режим на OFF.
- Когато автоматичният режим е ВКЛЮЧЕН, резултатът от алгоритъма за вземане на решение трябва да се отрази на ръчното превключване ON/OFF.
Стъпка 3: Технически подробности: API
За да стане теорията приложима, е необходимо да се знае езанското време на дневна база от неговата променлива и да се въздейства върху него, за да се включат/изключат светлините/декорациите.
За тази цел реших да използвам базиран на местоположението API за обслужване на данните (време за Adhan)
muslimsalat.com/api/#location
- Този API предоставя разнообразие от опции и конфигурационни параметри, описани в документационната връзка по -горе.
- Препоръчва се да използвате свой собствен API_key, който е безплатен при регистрация.
- В моя дизайн се интересувам от дневна хронология.
- Върнатото време е във формат 12 часа (AM/PM).
- По отношение на местоположението, пожелавах, ако този API може да предостави по -точни опции за местоположения като координатна система с географски координати (географска ширина и дължина). За този начин този API може да бъде снабден с име на град например и това е напълно достатъчно в повечето случаи. За съжаление, резултатите от моя конкретен град бяха доста предубедени в множество тестове и имаше няколко минути разлика при сравняване на времето на Adhan между резултатите от API и действителното време на Adhan в моя град. От друга страна, резултатите бяха перфектно съвпаднали, когато осигурих близък град на север и се придържах към него!
- URL адресът на API, който използвам, е: https://muslimsalat.com/.json? Key =
Стъпка 4: Технически подробности: Хардуер
За по -просто, оставям хардуера извън процеса на синхронизиране с API и изчисляването на времето, като делегирам тези операции на моята система за домашна автоматизация. Това ще ми даде повече контрол, ако искам да оправя източника на API и алгоритъма за изчисление.
Като казах това, използвах ESP8266 (NodeMCU) за свързване към локалната мрежа чрез WIFI и релеен модул като задвижващ механизъм. NodeMCU ще използва протокол MQTT и ще слуша за конкретна тема, за да получи команди за включване/изключване на релето. Толкова просто!
Стъпка 5: Технически подробности: Свързване на точките Домашна автоматизация
Моят RaspberryPi притежава нодиран екземпляр, който е в състояние да обработва всичко, от което се нуждая за този проект. Той също така има инсталиран MQTT сървър за публикуване на нашите съобщения.
Отначало си помислих, че мога да извличам API данните на дневна база в 9 часа сутринта и да извличам както Fajr, така и Mahgrib Adhan времената и да продължа да сравнявам текущото време с тези променливи, а именно:
на всеки 30 секунди:
ако: Mahgrib <СЕГА <Fajr true | включете светлините | публикувайте съобщение ON в посочената тема за MQTT иначе: изключете
За да сравня времето, преобразувам часовете, предоставени от API, от hh: mm (AM/PM) във формат за пълна дата, като задавам датната част на незначителна дата в историята, например (1/1/1970), тъй като сравняваме времето само към текущия час (частта от датата също се преобразува).
За съжаление, това ще работи само в ясни случаи. Да предположим случая, когато електрическото захранване спадне или системата се рестартира по непланирана причина. Ако този случай се случи преди 12 часа сутринта, ние все още сме на сигурно място, но след 12 часа това ще се провали с нашия прост алгоритъм.
За да дадем пример, нека имаме Magrib Adhan в 19:30 и Fajr в 4:10 сутринта. Когато системата се зареди, тя ще изпрати нова заявка за извличане на данните, споменати по -рано. Ако в момента е 1:45 сутринта, очакваме нашият алгоритъм да се върне истина, но всъщност няма да стане, защото 1:45 сутринта е по -малко от Fajr (4:10 AM), но не е по -голямо от Magrib (19:30 PM). Това е така, защото обединяваме датата между всички променливи. По -долу е финалната версия на алгоритъма (досега):
на всеки 30 секунди:
if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // обработка на обхващащи дни endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // дръжка, обхващаща дни currentTime}} // по -долу е предишният код код, ако: Mahgrib <СЕГА <Fajr true | включете светлините | публикува съобщение ON към посочената тема на MQTT else: false | изключи
Пълният поток на процеса е отбелязан в горното изображение.
По отношение на потребителския интерфейс, добавих 2 превключвателя към потребителския интерфейс/интерфейс:
- Превключвател за превключване на този процес в автоматичен или ръчен.
- Превключвател за ръчно включване/изключване на осветлението.
Стъпка 6: Приключване
Времето лети никога, за да не бъде припомнено. Правенето на такива прости еднодневни проекти ви позволява да си поемете дъх в тази бърза лента и да ви помогне да съживите меките си умения с течение на времето.
Опитах се толкова много в този проект да го поддържам прост и за многократна употреба по целия свят.
Моля, гласувайте за тази инструкция, ако смятате, че този проект заслужава.
Честит Рамадан!
Препоръчано:
Диско светлини от RGB с помощта на Arduino на TinkerCad: 3 стъпки
Диско светлини от RGB с помощта на Arduino на TinkerCad: След като свържете RGB, е лесно да контролирате цвета на RGB, като използвате PWM изход или аналогов изход, за Arduino можете да използвате analogWrite () на пинове 3, 5, 6 , 9, 10, 11, A0, A1, A2, A3, A4, A5 (за класически Arduinos, използващи Atmega328 или 1
Първи стъпки с домашната автоматизация: Инсталиране на Home Assistant: 3 стъпки
Първи стъпки с автоматизацията на дома: Инсталиране на Home Assistant: Сега ще стартираме поредицата за домашна автоматизация, където създаваме интелигентен дом, който ще ни позволи да контролираме неща като светлини, високоговорители, сензори и така нататък, използвайки централен хъб заедно с гласов асистент. В тази публикация ще научим как да инс
Интерактивни светлини за двора, светлини за пътеки: 3 стъпки
Интерактивни светлини за двора, светлини за пътеки: Исках да построя някакъв вид интерактивни дворни светлини за задния си двор. Идеята беше, че когато някой вървеше в една посока, това щеше да предизвика анимация в посоката, в която вървите. Започнах със Dollar General $ 1.00 слънчеви светлини
LED светлини за тъмни светлини: 7 стъпки
LED светлини за тъмни светлини: Светодиодът светва не само при подаване на захранване, но и генерира малко напрежение, когато се прилага светлина. Микроконтролер PICAXE може да се използва за наблюдение на това напрежение. Ще ви покажа как да направите електронна свещ, която да трепти светодиод, когато
Направи си сам коледни светлини - Хореографирани къщи светлини: 15 стъпки (със снимки)
Коледни лампички „Направи си сам“- Хореографирани светлини за къща: Коледа „Направи си сам“- Коледа, осветени за къща. Това НЕ е начинаещ „Направи си сам“. Ще ви трябва твърдо разбиране по електроника, верига, ОСНОВНО програмиране и общи познания за електрическата безопасност. Това DIY е за опитен човек, така че