Предисловие
2019 год. Почти в любом магазине электроники можно купить один из сотен возможных наборов умного дома. Взять и настроить в «2 клика», подключиться к облакам, получать push event-ы в приложение/смс-ки, да и вообще получать всю необходимую информацию в любой точке мира.
Идеально, но в моём случае не сработало. Несколько попавших ко мне в руки решений на деле оказались ограниченным набором определенных функций, покрывающих лишь часть моих запросов, а к тому же — накладывающих почти непреодолимые ограничения. И, как это обычно бывает, чем меньше ограничений, тем больше нужно погружаться в предметную область, самостоятельно продумывать решения, архитектуры. Поэтому — колхозим сами :)
Задачи
1. получать информацию о качестве электросети (скачки напряжения, полное отключение и т.п.).
2. иметь полный мониторинг UPS. А на самом деле иметь этот самый UPS исходя из последствий п2.
3. получать информацию о температуре:
- на улице
- дома
- на чердаке (когда замёрзнет закинутый туда хлам и помидоры)
4. Следить за состоянием потребления воды, алертить если потребление выросло (вдруг протечка, всё датчиками влаги не обвешаешь).
5. Понимать когда дома кто-то есть, чтобы автоматизировать перекрытие/открытие воды.
6. Снятие показаний газового счетчика и alert когда кончается оплаченный запас.
+ прочие всевозможные датчики (влажности, открытия, давления воды, давления в контуре отопления и т.п.).
Глобальная цель — иметь общий интерфейс, где можно будет на всё это посмотреть. Получать нотайсы, если что-то пошло не так.
Состав комплекса на текущий момент
- UPS Энергия ПН-750 + батарея на 100 ач
- USB->RS232 converter на основе PL2303
- Router Tp-link tl-wr1043nd +
- 1wire мастер сети на основе купленного USB термометра DS18B20+ PL-2303TA
- 1wire 3 датчика DS18B20
- 1wire модуль «счетчик воды» от radioseti на основе DS2423
Виртуалка с Zabbix-сервером за пределами домашней сети.
Этап 1. Подготовка инфраструктуры
Первым делом встал вопрос физической реорганизации: роутер был перемещен в тумбочку около вент шахты, куда далее планировалась установка UPS. Антенна до интернет провайдера Ubiquiti Nanostation Loco M2 PoE была подключена в ту же розетку, что и роутер, дабы далее питаться от UPS.
У меня уже была выделенная инсталляция Zabbix на удалённом сервере и некоторый опыт работы с этим приложением, поэтому с теорией организации alert-тинга, да и самой дашбордой проблем не ожидалось.
Роутер прошит в OpenWRT Chaos Calmer, настроен VPN до сети, где был расположен Zabbix-сервер.
Я сразу же добавил метрики в zabbix, раздобыв шаблон item-ов для openwrt. Таким образом я получил возможность наблюдения как за системой, так и например за тем, сколько и каких MAC-адресов подключены к точке. Что в дальнейшем должно было послужить принятием решения о перекрытии воды в доме.
Этап 2. Выбор UPS
Критериями выбора было:
- возможность работы газового котла (buderus)
- от 5 часов автономии котла+интернет оборудования
- наличие интерфейса мониторинга
- низкий уровень шума (место размещения — тумбочка на кухне рядом с вент шахтой)
- в силу ограничений места размещения и цены — желательно однобатарейная конструкция
Разберёмся в возможности соблюдения критериев по-порядку.
Возможность работы газового котла обсуловлена тем, что котёл требует чистый синус, иначе будет гудеть и изнашиваться двигатель насоса. Про это можно нагуглить много статей.
Обычные (компьютерные UPS) такой синус не дают, выдавая апроксимированную синусойду.
Вторым важным фактором является наличие «сквозной нейтрали». Тут всё немного сложнее, но тоже легко гуглится, поэтому останавливаться не буду. Скажу лишь одно — без сквозной нейтрали buderus не заработал, а точнее выпадал в ошибку, т к не срабатывал датчик ионизации и котел по-просту не видел пламени.
В качестве подитога выбора UPS было смещение фокуса в сторону online и line-interactive UPS.
От 5 часов автономии котла+интернет оборудования дают в основном UPS с внешней батареей. В силу ограничений места размещения и цены — желательно однобатарейная конструкция. Батареи 100ач по расчетам должно было хватить на 8+ часов.
Наличие интерфейса мониторинга чтобы как минимум знать когда система перешла на батарею, чтобы зимой ехать домой и заводить генератор. Особенных требований тут (как и опыта реализации) у меня не было. Искал всё что идёт с rs232 или usb интерфейсом.
Требование низкого уровня шума на деле оказалось серьёзным ограничением и отбросило целый класс оборудования — online UPS, т к все они работают в режиме постоянного проветривания трансформатора (вентилятор не выключается).
Позвонив в магазин «Энергия», мне достался последний ПН-750 с rs232 с витрины. Достаточно дёшево, т к в комплете не было проводов.
Этап 3: настройка UPS
С подключением UPS возникли проблемы. Я купил несколько USB->RS232 конверторов, почитал на форумах, что энергия использует стандартный протокол Megatec и с ней можно как минимум поработать через П/О Upsilon2000. Но сколько я не бился — на serial интерфейсе была полная тишина. Через неделю мытарств решил разобрать UPS и посмотреть что там, наплевав на гарантию. Проблема оказалась банальной — плата RS232 не была подключена к основной плате UPS-а, да и коннектор был слегка сломан. Заменил коннектор, подключил и о чудо, всё взлетело, хотя прошивка и выдавала странное название UPS — SIN800 (кажется теперь понимаю, почему энергия в новых моделях выпилила rs232).
Под OpenWRT нашлось стандартное П/О для работы с UPS: network ups tools, в котором есть всё необходимое для вывода метрик в консоль.
root@OpenWrt:/# upsc myups@127.0.0.1
battery.charge: 100
battery.voltage: 13.32
battery.voltage.high: 13.00
battery.voltage.low: 10.40
battery.voltage.nominal: 12.0
device.mfr: GERMANY
device.model: SIN 800S
device.type: ups
driver.name: blazer_ser
driver.parameter.cablepower: both
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyUSB0
driver.parameter.protocol: megatec
driver.version: 2.6.5
driver.version.internal: 1.55
input.current.nominal: 2.7
input.frequency: 50.0
input.frequency.nominal: 50
input.voltage: 225.7
input.voltage.fault: 225.7
input.voltage.nominal: 220
output.voltage: 219.6
ups.beeper.status: enabled
ups.delay.shutdown: 30
ups.delay.start: 180
ups.firmware: Z1911F100
ups.load: 5
ups.mfr: GERMANY
ups.model: SIN 800S
ups.status: OL
ups.temperature: 48.0
ups.type: online
А самое интересное, что под Zabbix есть готовый template для nut. Вобщем — впиливаем в zabbix-agent шелл-скрипт из комплекта tempate-а и у нас есть красивая картинка в zabbix в динамике. Задача 1 и 2 на этом этапе была решена (а на будущее появилась идея мониторинга общего энергопотребления).
Этап 4: 1wire и температура
Некоторое время назад я купил на ebay usb-термометр (совмещенная плата преобразователя и датчик).
В OpenWRT также оказался подходящий софт, утилита digitemp_DS9097. Она отобразила температуру отдельно взятого напаянного датчика. Прочитав что есть 1wire я понял, что можно попробовать не ограничиваться одним датчиком и подцепить к купленному USB-преобразователю целую шину датчиков. Взяв в магазине несколько микросхем DS18B20 и «бочек» под витую пару, соорудил конструктив с выносом датчика за пределы бочки и внутренним соединением с 3-мя проводами.
Об этой конструкции мне было известно уже много лет, мы подобное применяли для снятия показаний в дата-центрах, но тогда я ещё не знал про 1wire. При соединении бочек между собой стандартными патчкордами и коммутированием этого хозяйства с «USB термометром» я получил значения со всех 3-ёх температурных датчиков.
Осталось раскинуть их по локациям. Общая длина шины составила около 30 метров. Сигнал не пропадает. Размещенная на улице «бочка» залита клеевым пистолетом. Зиму прожила.
Этап 5: вода
Пришлось поменять счетчик воды на входе ( стоял не импульсный, без геркона). Благодаря жизни в загородном доме, сантехника не вызывает вопросов. Купил в ближайшем сантехническом магазине и заменил. В новом счётчике один импульс возникает через каждые 10литров воды. Теперь эти импульсы нужно чем-то считать.
Почему-то сняли с производства интересную микросхему цифровой-счетчик — DS2423. Но оказалось, что у ребят из Волгограда (radioseti) есть готовое устройство, которое благодаря встроенной батарейке ещё и считает значение кол-ва импульсов при пропадании электричества. Однако само устройство было адаптировано под собственную архитектуру сети. От разъемов RJ-11 до отдельного блока питания на 12В. В моём же случае хотелось ограничиться питанием существующей шины (5В). Пришлось обойти «лишнюю» обвязку и припаяться непосредственно к выводам DS2423 напрямую. Тогда устройство заработало, значения регистров стали видны на шине. Их два, т к устройство подразумевает подключение к двум водосчетчикам одновременно — ХВС и ГВС. У меня только один вход воды, поэтому второй регистр использую только для тестов.
Конечный результат по топологии 1wire:
root@OpenWrt:/etc/zabbix# digitemp_DS9097 -c /etc/digitemp.conf -a
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Apr 04 16:16:35 Sensor 0 C: 29.81 F: 85.66
Apr 04 16:16:36 Sensor 1 C: 14.00 F: 57.20
Apr 04 16:16:37 Sensor 2 C: 6.56 F: 43.81
Apr 04 16:16:37 Sensor 3 #0 6609
Apr 04 16:16:37 Sensor 3 #1 9
Кстати, поскольку новый водосчетчик был установлен одновременно с цифровым счетчиком испульсов, можно делать выводы о расхождении показаний / дребезге контактов. Визуально этих расхождений почти нет (до нескольких сотен литров на текущее показание в 60000).
Этап 6: Alert
При помощи собранной информации удалось сделать полезные алерты:
- температура на улице в смс каждое утро (+участие датчика в проекте narodmon)
- сообщение о переходе на работу от батареи UPS
- низкий уровень заряда батареи UPS
- сообщение о низком/высоком напряжении в сети
- сообщение о высокой температуре в тумбочке с оборудованием
- сообщение о низкой температуре на чердаке (спасение помидоров)
- сообщение о «чужом/новом» mac адресе в сети
- сообщение о высоком расходе воды (в течение определённого времени)
Этап 7: будущее
На aliexpress был куплен «цифровой манометр» с rs232 выводом в форме USB. Но пока как с ним не бился, на пакеты он не отвечает. Будем думать дальше. Надеюсь дожать.
Планирую приобрести реле управления шаровым краном (сам кран уже есть) для удалённого управления краном и возможной реализации автоматического перекрытия воды при отсутствии дома хозяев.
Как-то встроить цифровой газовый счетчик gallus в схему для оповещения о заканчивающемся депозите.
Напоследок немного графиков:
Комментарии (12)
MPaul
05.04.2019 13:14Что есть «цифровой монометр»?
unlo Автор
05.04.2019 13:47на aliexpress девайс называется как «SPD G1/8 40mm 5V Battery-Powered Pressure Gauge Manometer 450psi RS232 USB».
Сутеево я искал конструктив с любым интерфейсом, который можно повесить на трубу с жидкостью и мерить её давление.
В России есть множество вариантов, но всё дорого, т к скорее «промышленное».
Sly_tom_cat
05.04.2019 13:30По поводу протечек, тут давеча столкнулся с незначительной протечкой (не больше стакана в час) и понял, что протестировать на даже мизерную протечку просто: Нужно выждать когда явно не будет потребления воды (ночные часы или проконтролировать на счетчике), далее закрываем вводной кран и следим за давлением в системе. Если давление быстро падает — значит есть протечка, если давление держится, то даже мизерных протечек нет.
Идея тривиальная поэтому — бесплатно :)
Контролировать мелкие протечки на счетчике — не получится. Это надо чтобы вода струей хлестала что бы счетчик крутился от нее.unlo Автор
05.04.2019 13:51Согласен. У меня про это схожая мысль на автоматизацию была, которую пока не успел реализовать, т к не разобрался с «монометром». Сутеево — действительно получать давление воды в цифровом виде, если же шаровой кран на входе перекрыт, то падение давления будет свидетельствовать о протечке. На это легко повесить отдельный alarm.
third112
06.04.2019 08:10В заголовке Вы четко определили тему (Энергия, тепло и вода), но позвольте спросить: замки, охрану, безопасность отложили? — Ведь как только сможете контролировать свой дом через инет могут вдруг появиться хакеры. И тут возникают принципиально сложные вопросы. Процитирую свой вопрос, на который мне не ответили в другой теме:
цитатане доверяйте чужим людям устройства, с помощью которых вы управляете «умным домом» — если потеряли смартфон или планшет, смените все логины-пароли-ID и прочие вещи, которые могут быть извлечены посредством утерянного гаджета;
Мастер из местного центра поддержки — это чужой человек? Есть оценка сколько в среднем (для среднего «умного» дома) логинов-паролей-ID и прочих вещей нужно сменить, «если потеряли смартфон или планшет»? Не очень большая семья для некоторых стран: он, она, четверо детей, дедушка и бабушка. Каждый может терять смартфон или планшет раз в месяц: забыл в гостях, в школе, на работе и т.д. Т.о. несколько раз в месяц глава семейства — админ дома бросает вечером все дела и меняет много паролей, а потом переписывает эти пароли всем членам семьи. М.б. есть специальные приложения от производителей оборудования умных домов, которые приложения позволяют сделать такую работу «в один клик»? ИМХО это самое главное, что нужно отметить в статье. Пока возникает опасение, что «умный» дом — постоянная большая головная боль за свои немалые деньги для всей семьи.unlo Автор
06.04.2019 09:58Да, вопрос охранки я не решал и пока не планирую. Для меня это отдельная тема. В системе нет множества точек входа для хакеров — только zabbix. Остальное внутри периметра. Zabbix не влияет на компоненты системы, а только отображает информацию. То, что будет влиять на компоненты, буду реализовывать по защищённым каналам, через тот же vpn.
"готовые" системы, работающих со своими внешними серверами, хранилками и т п — бай дизайн уже не так безопасны. И либо Вы доверяете конкретному решению, вендору, мастеру-настройщику, либо все равно не будете спать спокойно :)
peleron
> В новом счётчике один импульс — 10куб воды.
10 — это в метрах кубических? Очень грубое разрешение получается — ведь пол-дома может затопить, пока будет обнаружена утечка.
>«бочек» под витую пару
Что такое «бочка»?
Ещё большая просьба, если это вас не очень затруднит — начертите, пожалуйста, структурную схему вашей сети — чтобы одним взглядом можно было оценить весь масштаб вашей работы и было проще ориентироваться в соединениях.
unlo Автор
спасибо, поправил — один импульс равен одному полному обороту первого деления счетчика = 10литров воды.
«бочка» — проходной соединитель RJ45. Сфотографирую компоненты, дополню статью.
Про схему — ок, нарисую на выходных :)
maxzhurkin
«бочка» — это жаргонизм, больше бы подошло «муфта», но и это слово не избавило бы от вопросов (люди, привыкшие к «бочке» не понимают меня, когда я называю её муфтой)
unlo Автор
Даже не жаргонных названий у этой небольшой фиговины много — зовут и адаптером и соединителем и переходником. Надо было сразу картинку приложить.