Самсусамыч -в общем, согласен. Я обсудил вынашиваемый проект со своей лучшей половиной и она сразу всё разрешила. Оказывается, она планировала напрячь меня на перенос установки выращивания семян в подвал. Там естественного освещения мало, так что придётся просто включать искусственное на 12 часов по механическому таймеру, и проблема снята.
Однако, первоначальный проект
ARV мне также небезынтересен. Согласен, что в пасмурную погоду темнее становится ранее заката, а в ясную достаточно светло и некоторое время после заката. Работать только по уровню освещённости не хочется. Катаклизмы в дневное время случаются очень редко и на них закладываться не вижу смысла. Всё-таки желательно включать освещение ближе к времени заката. Ну или по кнопке принудительного включения на 15 минут по Таймеру в любое время.
Как вам такой алгоритм обработки событий:
1. Текущее время = времени заката - 1 час - начинаем проверять освещённость каждые 5 минут. При этом:
1а. При освещённости ниже порога включаем лампы (если они не включены кнопкой).
1б. При освещённости выше порога выключаем лампы если только они не были включены кнопкой (туча прошла и снова стало достаточно ясно до заката).
2. В 23:00 проверяем работает-ли таймер принудительного включения. Если нет - выключаем лампы. Если да - выключаем их по обнулению таймера.
3. По нажатии кнопки включаем лампы (если они не включены в пп.1) и запускаем таймер на 15 минут.
4. По обнулению таймера принудительного включения проверяем включены-ли лампы в соответствии с пп1. Если да - то не выключаем лампы (выключение будет в 23:00 по плану). Если нет - выключаем лампы.
5. По наступлении времени заката + 1 час прекращаем проверку освещённости (она возобновится за час до заката на следующий день).
В порог освещённости следует добавить некий гистерезис.
ПростоНуб - спасибо за ссылки. Я видел в сети много солнечных календарей, но не видел
вменяемого описания алгоритма где входные данные координаты места и день года, а выходные - время заката и восхода в часах и минутах в этом месте в этот день. На астрономических форумах (
пример) нашёл обсуждение в виде формул, как и в Вики, или обрывки кода, но с этим надо ещё разбираться. Неужели нигде нет нормального алгоритма, т.е. готового к программированию?