Climate Logger
Мини проект Climate Logger.
Лог за день. Лог за 6 дней. Лог за пол месяца.
Давным давно, когда мы только переехали в одну из квартир, обнаружил я в ней, что регулировка отопления находилась в одном месте. И это натолкнуло меня на мысль сделать что-то на подобие регулятора климата, автоматического. Что бы не бегать постоянно к люку в стене, и не крутить вентили.
Так и начался этот проект. Сначала был построен сенсорный модуль и были раскиданы сенсоры по квартире. Модуль я собрал из списанной платки c ATMega128 на борту, и из также списанного модуля дисплея на базе контроллера HD4478. Сенсоры взял DS1820.
И вот, поставил это все дело, и стояло оно у меня около 3-х лет и просто температуру показывало. Все времени не было продолжить.
На днях пришла в голову идея вывести инфу с датчиков на графики. Так и продолжился мой долгострой.
Ниже блок схема всей системы:
В верхнем правом углу виднеются 10 сенсоров. Их на самом деле 10 штук у меня.
Они подключены к сенсорному блоку, который, в свою очередь подключен к серверу посредством RS232 соединения.
Сервер у меня итак постоянно включен, так как на нем крутится этот сайт и еще некоторые полезняшки. Так что я решил его нагрузить еще и этой системой.
Так как на сервере уже стоит MySQL для сайта, то его я использовал и для хранения данных о температуре.
Были написаны несколько утилиток, одна из которых опрашивает сенсорный модуль на предмет количества сенсоров, определения их имен и параметров, и сохранение этой всей информации в базе данных. Т.е. по идее, можно добавить сенсоров немного, запустить утилиту администрирования, и новые сенсоры так же добавятся в список. Если заменить кабель RS232 радиомодулем, то можно несколько сенсорных модулей опрашивать, так как протокол построен таким образом, что можно опросить до 65535 модулей. Но пока что я решил отложить радиомодуль в сторону, так времени много ушло бы на запуск всей системы. Я его сделаю, если будет в этом необходимость, т.е. добавится еще один сенсорный модуль. Такая вероятность есть — регулятор температуры моей «серверной».
Следующая утилитка запускается каждые 5 минут, и, прочитав конфигурацию системы из базы данных, опрашивает сенсорный модуль на предмет сбора температуры и сохраняет полученные данные в базу. Так же, она запускает на MySQL сервере хранимые процедуры по калькуляции средней температуры часа для каждого часа, и средней температуры дня для каждого дня. 5-ти минутные данные хранятся за последние 23 часа. Часовые данные хранятся за последний 31 день. У дневных данных пока нет ограничения. Видимо, позже придется добавить, пока нет необходимости.
Так же, каждые 5 минут запускается третья утилитка и генерит графики из данных, хранимых в базе. Сами графики можно посмотреть по ссылкам в начале статьи.
Вот примерно краткое описание всей системы на текущий момент.
.