В первых трех частях я рассказал как у меня возникла идея (необходимость) построения “умного дома” и как я ее воплотил в жизнь.
В этой части я расскажу какие недостатки были выявлены за четыре года эксплуатации системы и какие еще полезные штуки удалось внедрить.
Ну и небольшой спойлер: под катом будет краткое описание “очередной поделки на esp8266 с преферансом и куртизанками”.
Итак, прошло четыре года (с начала эксплуатации первых модулей так вообще шесть) В целом система показала себя хорошо, но всплыли два недостатка, впрочем, вполне ожидаемых.
Первый — централизованность. Да, это плохо, да, об этом я знал, но опыта производства конечных автономных устройств не было, да и выбранный в качестве основного протокол 1-Wire такой возможности не предоставлял.
Соответственно, центральный сервер стал узким местом. Пять раз по вине выхода из строя “железа” вся система не работала больше суток (а то и двух-трех) и приходилось пользоваться резервной (включать освещение рубильниками в щитке, обходиться без теплого пола, вентиляции, производить повторную калибровку водяных счетчиков и т. д.).
Плюс к этому, в доме участились случаи отключения электропитания более чем на час. Заряд ИБП кончался и сервер производил аварийное отключение, а, точнее говоря, весьма грубо вырубался. После чего его подъем не всегда проходил гладко, главным образом потому, что MySQL не очень любит столь хамское к себе отношение. Восстановление таблиц (а там вся история по всем датчикам за многие годы) иногда занимало часы и не всегда ему удавалось сделать это без постороннего вмешательства. Да, эту проблему, теоретически, можно решить купив более умный ИБП, подключив его к серверу и научив сервер штатно выключаться при потере питания. Но мой текущий ИБП вполне еще бодрый старичок, да и материнка сервера, почему-то не захотела нормально работать в режиме, автоматического включения после подачи питания, если до этого была штатно выключена.
Второй — ограничение на топологию шины 1-Wire + моя неопытность.
Да, я читал что должен быть центральный ствол и лишь небольшие ответвления, об этом много где написано. Но проект расширялся весьма непредсказуемо и при этом все вроде как работало. А потом, в один “прекрасный” момент, работать перестало. Т. е. отключаешь часть устройств, все нормально, включаешь опять и сигнал начинает “плавать”. Заменил часть основных линий на экранированные, минимизировал ответвления, но сделать полноценную единую шину без перфоратора и существенной порчи отделки уже нет возможности. В итоге разбил сеть на два сегмента, вывел на два отдельных контроллера, но, тем не менее, раз в пару месяцев опять возникала проблема когда устройства начинали выпадать из сети. Помогало только полное выключение всей системы с последующим включением, а эта процедура весьма не тривиальная и без меня мои домашние провести ее не в состоянии.
Тем временем, около двух лет назад, я натолкнулся на статью и у меня возникла идея сделать своеобразный подарок на день рождения своему отцу. Он увлекается разведением на приусадебном участке различных экзотических растений и ему нужен постоянный контроль температуры в разных климатических зонах его сада. Собственно, до внедрения системы, это осуществлялось обходом вполне (теплых ламповых :) ) аналоговых спиртовых термометров дважды в сутки. Вынашивал я эту идею несколько месяцев, потом заказал в одном известном (тогда еще только в узких кругах) китайском интернет-магазине необходимые компоненты, сделал плату, написал прошивку. В общем, получилось как-то так:
Вся система размещается в стандартной телефонной розетке.
Разводка четырехжильным телефонным проводом.
Питание пассивное. Для бассейна заказал водонепроницаемую версию датчика.
Теперь папа смотрит температуру на компьютере.
Вот так:
Ну и с графиками:
В процессе разработки мне этот модуль очень понравился и я начал думать как применить его в своей системе, а тут как раз навалились проблемы описанные в начале статьи. После еще пары экспериментов с данными чипами я приступил к разработке той платы, которая сейчас уже благополучно заменила старую систему в трех зонах моего скромного жилища.
Итак, вашему вниманию представляется “esp07_4PIO_6S v2”.
Вид сверху:
Вид снизу:
В прошлый раз большой проблемой было подбор корпуса, так что в этот раз я плясал именно от корпуса. Поскольку в наличии были корпуса от старых моделей медиаплеера Dune, выбор пал на них. После доработки напильником (отверстия под входы и выходы у медиаплеера немного другие, завести 220v на разъем HDMI не удалось :) ) подошло идеально. Только датчик температуры пришлось снаружи делать, так как внутри начинка нагревает воздух.
Входы и выходы на 220v
Входы и выходы на 5v и 12v
Что может данный модуль и почему он лучше чем старая система?
- Для монтажа не требуется никаких дополнительных проводов. Питается он от той же сети, что и управляет.
- При отключении или недоступности центрального сервера или Wi-Fi он переходит в offline режим и осуществляет управление по автономному сценарию (сценарий под каждую зону может быть свой)
- Снимает данные о температуре/влажности/освещенности в комнате.
- Управляет 4-мя устройствами 220, считывает данные с 6 датчиков типа “сухой контакт”.
- Способен самостоятельно отправлять данные на thingspeak.com и аналогичные системы.
- Реагирует быстрее чем старая система (не то чтобы это было проблемой, но раньше каждый датчик опрашивался два раза в секунду, что могло дать суммарный лаг более чем в секунду). Эта система работает по прерыванию.
- Умеет обновлять прошивку “по воздуху”.
Такую плату развести в один слой не удалось, так что пришлось осваивать двусторонний ЛУТ:
Опыт эксплуатации уже более полугода, в планах заменить на данный модуль все управляющие части системы, на 1-Wire оставить только мониторинг.
Учитывая пожелания к прошлым статьям, схемы и код доступны на github. Старые тоже там есть, вдруг кому пригодятся.
Как-то так. Ставьте лайки и подписывайтесь на новые видео :) Шутка, все равно новая статья если будет, то через пару лет, чукча не писатель :P
Хотя, если появятся вопросы по прошивке и архитектуре esp07_4PIO_6S, напишу детальную статью об этой поделке, есть там, на мой взгляд, несколько интересных решений.
Автор: sashacmc