
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

Когда Рамадан стучится в дверь, города по всему миру загораются и готовятся к месяцу поста. Огни висят на площадях и городских улицах, а также на внешних стенах домов, освещенных по ночам до восхода солнца.
В этом проекте я хотел бы поделиться своим вкладом, в котором я автоматизирую зажигание этих украшений на основе времени азана и добавляю это в свою систему умного дома.
Шаг 1: теория
По сути, проще и удобнее автоматизировать освещение, например, в зависимости от интенсивности солнечного света. Однако я бы хотел, чтобы в этом был дух священного месяца, то есть свет будет включаться до тех пор, пока людям разрешается есть в течение месяца поста. В частности, огни горят от Магриб Азана до Фаджр Азана каждый день без какого-либо вмешательства человека.
Шаг 2: Дизайн
Ниже я перечислю требования / возможности этого проекта:
- Система должна иметь возможность автоматически обрабатывать данные при загрузке.
- Система должна иметь возможность периодически выполнять алгоритм принятия решения (ВКЛ / ВЫКЛ).
- Система должна иметь возможность ежедневно вызывать API.
- Система должна иметь возможность восстановиться после незапланированного перезапуска.
- Система должна выполнить алгоритм принятия решения (ВКЛ / ВЫКЛ) при получении данных немедленно.
- В системе должен быть переключатель для включения режима автопилота (автоматический режим).
- В системе должен быть предусмотрен переключатель для ручного включения / выключения света.
- При срабатывании ручного переключателя ручной режим должен быть выключен.
- Когда автоматический режим включен, результат алгоритма принятия решения должен отражаться на ручном переключателе ВКЛ / ВЫКЛ.
Шаг 3. Технические детали: API

Чтобы теория была применима, необходимо знать время азана на ежедневной основе, начиная с его переменной, и действовать в соответствии с ним, чтобы включать / выключать свет / украшения.
Для этого я решил использовать API на основе местоположения для обслуживания данных (время для Adhan).
muslimsalat.com/api/#location
- Этот API предоставляет множество опций и параметров конфигурации, описанных в ссылке на документацию выше.
- Рекомендуется использовать собственный API_key, который предоставляется бесплатно при регистрации.
- В моем дизайне меня интересует ежедневный график.
- Возвращаемое время отображается в 12-часовом формате (AM / PM).
- Что касается местоположения, мне хотелось бы, чтобы этот API мог предоставлять более точные параметры для местоположений, таких как координаты географической системы координат (широта и долгота). Таким образом, этот API может быть снабжен, например, названием города, и этого в большинстве случаев вполне достаточно. К сожалению, результаты для моего конкретного города были довольно предвзятыми в нескольких тестах, и разница в пару минут при сравнении времени Адхана между результатами API и фактическим временем Адхана в моем городе. С другой стороны, результаты были идеально согласованы, когда я указал близлежащий город на севере и придерживался его!
- Я использую URL-адрес API: https://muslimsalat.com/.json? Key =
Шаг 4: Технические детали: оборудование

Для простоты я оставляю оборудование вне процесса синхронизации с API и расчета времени, делегируя эти операции моей системе домашней автоматизации. Это даст мне больше контроля, если я захочу настроить источник API и алгоритм расчета.
При этом я использовал ESP8266 (NodeMCU) для подключения к локальной сети через WIFI и релейный модуль в качестве исполнительного механизма. NodeMCU будет использовать протокол MQTT и прослушивать определенную тему, чтобы получить команды для включения / выключения реле. Так просто!
Шаг 5: Технические детали: Соединение точек | Домашняя автоматизация



Мой RaspberryPi содержит нодированный экземпляр, способный обрабатывать все, что мне нужно для этого проекта. На нем также установлен сервер MQTT для публикации наших сообщений.
Сначала я подумал, что могу получать данные API ежедневно в 9 утра и извлекать время как Фаджр, так и Махгриб Адхан, и продолжать сравнивать текущее время с этими переменными, а именно:
каждые 30 секунд:
если: Махгриб <СЕЙЧАС <Фаджр правда | включи свет | опубликовать сообщение ON в указанной теме MQTT иначе: выключить
Для сравнения времени я конвертирую часы, предоставляемые API, из чч: мм (AM / PM) в формат полной даты, устанавливая часть даты на незначительную дату в истории, например (01.01.1970), поскольку мы сравниваем время только на текущее время (также преобразуется часть даты).
К сожалению, это сработает только в простых случаях. Предположим, случай, когда пропало электричество или система перезапустилась по незапланированной причине. Если этот случай произойдет до 12 часов утра, тогда мы все еще в безопасности, но после 12 часов утра наш простой алгоритм не сработает.
В качестве примера давайте устроим Магриб Азан в 19:30 и Фаджр в 4:10 утра. Когда система загружается, она отправляет новый запрос на выборку данных, упомянутых ранее. Если время сейчас 1:45, мы ожидаем, что наш алгоритм вернет истину, но на самом деле это не так, потому что 1:45 утра меньше, чем Фаджр (4:10 утра), но не больше, чем Магриб (7:30 вечера). Это потому, что мы объединяем дату между всеми переменными. Ниже представлена окончательная версия алгоритма (пока что):
каждые 30 секунд:
если ((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 <NOW <Fajr true | включи свет | опубликовать сообщение ON в указанной теме MQTT else: false | выключать
Полный поток процесса аннотирован на изображении выше.
Что касается UI, я добавил 2 переключателя в UI / interface:
- Переключатель, позволяющий включить автоматический или ручной режим.
- Переключатель для включения / выключения света вручную.
Шаг 6. Заключение

Время летит, чтобы его не вспомнить. Выполнение таких простых однодневных проектов позволяет вам перевести дух на этом быстром пути и помочь вам со временем возродить свои навыки межличностного общения.
Я старался изо всех сил в этом проекте, чтобы он был простым и пригодным для повторного использования по всему миру.
Пожалуйста, проголосуйте за эту инструкцию, если считаете, что этот проект заслуживает.
Счастливого Рамадана!
Рекомендуемые:
Вращающаяся рождественская елка и программируемые огни с помощью Arduino: 11 шагов

Вращающаяся рождественская елка и программируемые огни с помощью Arduino: вращающаяся рождественская елка и программируемые огни с помощью Arduino В проекте будет показано, как сделать вращающуюся рождественскую елку с помощью Arduino, кулера, перфорированной экспериментальной доски, светодиодных фонарей и некоторых других электронных элементов
Автоматические музыкальные рождественские огни своими руками (MSGEQ7 + Arduino): 6 шагов (с изображениями)

Автоматические музыкальные рождественские огни своими руками (MSGEQ7 + Arduino): поэтому каждый год я говорю, что собираюсь сделать это, и никогда не доберусь до этого, потому что я много откладываю. 2020 год - это год перемен, поэтому я говорю, что это год, чтобы сделать это. Надеюсь, вам понравится, и вы сделаете свои собственные музыкальные рождественские огни. Это будет
Светящиеся в темноте огни: 7 шагов

Светящиеся в темноте огни: Привет! Это забавный проект для детей. Они узнают немного о схемах и сделают светящиеся в темноте предметы! В этом проекте целью будет сделать фонарик со светодиодной подсветкой, чтобы свет был в темноте
Ультразвуковой датчик Автоматические светодиодные приветственные анимационные огни и информационный ЖК-экран: 6 шагов

Ультразвуковой датчик Автоматические светодиодные приветственные анимационные огни и информационный ЖК-экран: когда вы возвращаетесь домой уставшим и пытаетесь сесть и расслабиться, должно быть очень скучно видеть одно и то же вокруг вас снова и снова каждый день. Почему бы тебе не добавить что-нибудь веселое и интересное, что меняет настроение? Создайте сверхлегкий Arduin
Рождественские огни своими руками с музыкой - хореографические огни дома: 15 шагов (с изображениями)

Рождественские огни «сделай сам» под музыку - «Хореографические огни дома»: рождественские огни «сделай сам» под музыку - хореографические огни дома Это НЕ сделай сам для новичков. Вам потребуются твердые знания в области электроники, схемотехники, программирования BASIC и общие знания в области электробезопасности. Эта поделка для опытного человека, так что