В системах умного дома часто возникает потребность в информации о восходе и закате солнца. Эта информация может потребоваться во многих сценариях, например автоматического управления освещением, шторами, кормлении животных и т.д.
Рассчитать время восхода и заката солнца, а тек же продолжительность светлого и тёмного времени суток не так уж и сложно. В расчёте требуется лишь знать широту и долготу того места, относительно которого производиться расчёт. Эти данные легко найти на картах, например в google
Координаты у нас есть, заходим в админку Majordomo и создаём сценарий, называем его например SunRiseSetTime. Вписываем ниже приведённый код:
Показать
Скрыть
$sun_info = date_sun_info(time(), 49.955440, 82.609296); //географические координаты места foreach ($sun_info as $key => $val) { switch ($key): case 'sunrise': $sunrise = $val; //echo 'Восход: '.date("H:i:s", $sunrise).'<br>'; sg('ThisComputer.SunRiseTime',date("H:i", $sunrise)); break; case 'sunset': $sunset = $val; $day_length = $sunset - $sunrise; //echo 'Заход: '.date("H:i:s", $sunset).'<br>'; //echo 'Долгота дня: '.gmdate("H:i", $day_length).'<br>'; sg('ThisComputer.SunSetTime',date("H:i", $sunset)); sg('ThisComputer.LongTagTime',gmdate("H:i", $day_length)); break; case 'transit': echo 'В зените: '.date("H:i:s", $val).'<br>'; sg('ThisComputer.TransitTime',date("H:i", $val)); break; case 'civil_twilight_begin': //echo 'Начало утренних сумерек: '.date("H:i:s", $val).'<br>'; sg('ThisComputer.civil_beginTime',date("H:i", $val)); break; case 'civil_twilight_end': //echo 'Конец вечерних сумерек: '.date("H:i:s", $val).'<br>'; sg('ThisComputer.civil_endTime',date("H:i", $val)); break; default: //ни чего! endswitch; }
Не забываем в первой строчке вписать свои координаты!
Этот код после запуска в объекте "ThisComputer" создаёт новые свойства:
- SunRiseTime - Восход;
- SunSetTime - Заход;
- LongTagTime - Долгота дня;
- TransitTime - В зените.
Для того, что бы сценарий обновлял данные раз в сутки, ставим птичку "Выполнять периодически", в появившемся поле времени выставляем время запуска, например 00:30, проставляем дни запуска, и сохраняем.
Результат расчётов можно посмотреть в свойствах объекта ThisComputer, либо раскоментировав строки в коде запустить его с установленной птичкой "выполнить после сохранения "
Теперь в системе у нас есть время восхода и захода солнца. Опираясь на время захода солнца, в доме можно включать вечернюю подсветку, либо разрешать включение света при срабатывании датчиков движения. Применение этих данных зависит лишь от вашей фантазии.