Умная хрущёвка на максималках
Моя статья про проводной умный дом была популярной на Хабре (159 тысяч просмотров) — в ней я описал положительный опыт от идеи до реализации умного дома в новостройке.
Вместе с тем, у меня есть опыт интеграции и со старыми домами — квартира в типовом советском пятиэтажном кирпичном доме семидесятых годов постройки уже 5 лет автоматизирована. Она имеет единую панель управления для разных подсистем и не зависит от облачных сервисов. В отличии от новостройки, эта квартира в пятиэтажке была автоматизирована не сразу, а поэтапно за несколько лет, по мере возникновения интереса к разным элементам управления и контроля, таким как:
- мониторинг приборов учета;
- датчики контроля: домофона, температуры, шума, открытия дверей, …;
- единая панель управления умным домом;
- подъездное видеонаблюдение;
- настенный дисплей для текущего времени и температуры за окном;
- освещение в квартире, включая кнопку «выключить всё»;
- удаленное обесточивание квартиры;
- удаленное перекрытие воды.
3D модель этой двухкомнатной квартиры 47 кв.м, которая была автоматизирована, нарисованная в Sweet Home 3D
Начну рассказ с самого начала — в 2016 году мне потребовался удаленный сбор показаний квартирных счетчиков.
Для этого, чтобы не устанавливать «считывающие накладки», в любом случае, была необходима замена обычных счётчиков воды и электроэнергии на счетчики с соответствующим интерфейсом. И вариантов этого интерфейса было доступно всего два:
- Цифровой RS485.
- Импульсным выход.
Если говорить о счётчиках на воду, то разница в цене по этим двум вариантам составляла примерно 10 раз. Обычный счетчик на воду с импульсным выходом стоил рублей на 200 больше обычного, то есть где-то 400…600 рублей, а счетчик воды с RS485 стоил порядка 3…5 тысяч рублей.
Из-за большой ценовой разницы я выбрал модель с импульсным выходом Valtec VLF-R-IL (сейчас эта модель уже не производится).
Была еще одна особенность, из-за того что я живу в Перми — возникла проблема просто найти и купить эти счётчики с импульсным выходом — их не было в наличии и фактически я потратил целый месяц на ожидание доставки по России — ведь нельзя просто купить в Китае счётчик и установить — это оборудование, которое должно «поверяться» и обладать соответствующим сертификатом, иначе на учёт его не поставить. В Москве, насколько я знаю, подобных проблем нет и наоборот управляющие компании заставляют устанавливать счётчики на воду с импульсных выходом.
Счётчики на воду с импульсным выходом сразу после установки и опломбирования
Следующим моим шагом стал выбор счетчика электрической энергии — и здесь тоже надо иметь ввиду, что он тоже должен обладать всеми необходимыми бумагами и сертификатами для постановки на учёт — ведь я слышал, что иногда ставят даже два счётчика:
- Первый — «отчётный» — для учёта, перед поставщиком электроэнергии.
- Второй — без российских документов с популярного китайского сайта, который устанавливают сразу после первого для использования в целях домашней автоматизации — чтобы можно было удаленно считывать показания. Обычно через цифровой интерфейс RS485.
Однофазный однотарифный счетчик Меркурий 201.5 сразу после установки и опечатывания
В 2016 году я выбрал однотарифный счётчик с импульсным выходом, потому что я не понимал, как можно из командной строки сервера считывать показания счетчика электроэнергии по RS485 и пушить их в единую панель управления умным домом, которую я собирался собрать.
Как оказалось позже — однофазные электросчетчики Меркурий достаточно популярны для домашней автоматизации и при цене счетчика, сопоставимой с аналогичными счетчиками других производителей можно получить устройство, которое полностью совместимо с современными системами домашней автоматизации. Для этого надо лишь иметь адаптер USB → RS485, стоимость которого составляет менее 100 рублей (в Китае). Этот адаптер может работать с любым микрокомпьютером у которого есть USB-порт, например, из линейки Raspberry Pi, которые часто используются в качестве сервера для домашней автоматизации, для запуска Home Assistant или любого другого программного хаба.
Сам скрипт опроса электросчетчика Меркурий написан энтузиастами и выполняется из командной строки, а также может быть интегрирован в любую систему домашней автоматизации. Мой конкретный пример интеграции для RS485 в другой квартире, где установлен Меркурий 200, который я сделал уже позже, можно посмотреть, например, на форуме или просто поискать варианты в поиске.
Элемент скрипта для получения данных с электросчетчика Меркурий 200
Однако в 2016 году после установки счетчиков без цифрового RS485 мне понадобилось устройство считывания этих импульсов.
Поскольку я выбрал и установил три счетчика с импульсными выходами, мне надо было иметь какое-то устройство, которое было бы всегда на связи с ними и круглосуточно считывало бы эти импульсы, конвертируя их в «человеческий формат». Я стал искать подобный контроллер и нашёл несколько вариантов:
- Контроллер с программируемой логикой ОВЕН.
- Модули счётчика импульсов от разных производителей, например вот.
- Универсальный проводной контроллер Мега с возможностью интеграции в систему умного дома.
Расскажу обо всем подробнее. Перед тем как покупать что либо, я решил обратиться с запросом к первому найденному варианту — к ОВЕН и в его техподдержке мне буквально написали, что моя идея влетит в копеечку. Ответ техподдержки:
"В целом система получается достаточно дорогостоящей + реализация ПО под Вашу задачу – сложное.
...
Можно и более дешевый, но WEB-визуализации у них нет. Тут потребуется Scada система уже для ПК. WEB-визуализацией обладает только ПЛК323 и СПК207. У них в маркировке указано WEB при заказе.
Но, к любому ПЛК, по любому интерфейсу связи можно сделать визуализацию (это не WEB-визализация). Также, у наших коллег есть опыт применения iRidium Mobile для реализации приложений для смартфонов/планшетов, для управления контроллерами. Еще, как вариант, применение ПЛК110 [М02]. По Ethernet к роутеру.
Также рекомендую посмотреть каталог проектов http://www.owen.ru/projects с фильтрацией по «Решения для автоматизации инженерных систем зданий».
Получается, что проект может обойтись очень дорого, а тратить несколько десятков тысяч рублей на это мне совершенно не хотелось, но удаленный учёт все же хотелось иметь, поэтому я перешёл к следующему варианту.
Вторым вариантом была программно-аппаратное решение по учету импульсов от одного из российских производителей, но эта система была закрыта и позволяла только учитывать импульсы, а мне хотелось иметь и другие функции умного дома — такие как детекция уровня шума в децибелах и учёт температуры стояков. Цена вопроса данного варианта составляла около 5 тысяч рублей, насколько я помню.
Поэтому я продолжил гуглить дальше и в поисках третьего варианта и в итоге наткнулся на Мегу — проект Андрея Буртового из города Тольятти, который вырос из простого хобби в коммерческий проект. В нём подкупало соотношение цены и заявленных возможностей — по цене комплект (контроллер и модуль только с аппаратно-конфигурируемыми входами) выходил примерно на уровне второго варианта — простого счетчика импульсов с веб-интерфейсом. Но при этом появлялась возможность интеграции с существующими программными хабами.
После выбора и монтажа оборудование в 2016 году «сердце» начинающей умнеть квартиры выглядело так. От обилия блоков питания я потом избавился (фото ниже)
Поскольку все три найденных решения были проводными, мне пришлось тянуть витую пару UTP cat.5E до каждого из счетчиков. Ещё я захотел добавить несколько недорогих датчиков и поскольку выбранный контроллер Мега был проводной мне пришлось разработать схему что и куда надо протянуть, чтобы удовлетворить все потребности в проводах. Ещё решил поставить следующие датчики:
- Улавливания наличия газа на кухне (т.к. в доме есть газ).
- Температурный датчик, который отображает температуру, влажность и атмосферное давление и текущий уровень освещенности на улице.
- Датчик на батарею, чтобы знать её температуру.
- Датчик открытия двери — простой геркон.
- Температурные датчики на холодную и горячую воду.
- Датчик шума в гостиной.
Схема протяжки витой пары выглядела так:
Схема прокладки витой пары в двухкомнатной квартире 47 кв. м. и на лестничной площадке
Штроб в квартире не было сделано — всю витую пару удалось протянуть в пластиковых коробах (размером 15×10 мм), расположенных чуть выше уровня плинтуса.
В этом месте необходимость сказать, что в хороший существующий ремонт вписать всё это будет весьма проблематично, но в этой квартире его не было и терять было нечего.
Также мне пришлось разработать схему подключения датчиков непосредственно к контроллеру. Схема подключения датчиков к Меге в варианте 2016 году ниже:
Схема подключений датчиков на Мега-328
Через пару лет в 2018 году я заменил Мегу-328 на более новую 2561 и избавился от аналоговых датчиков, которые иногда работали некорректно и зависали, а для исправления требовалась полная перезагрузка контроллера. После замены я поставил больше точных цифровых датчиков c I2C интерфейсом, объединив их на нескольких портах:
Схема подключений на Мега-2561
Для измерения температуры часто используются датчик DS18B20, который представляет из себя цифровой термометр с интерфейсом 1-Wire, который может снимать показания в диапазоне -55…125°C. Для конкретно моего контроллера DS18B20 датчики можно подключать шиной — это значит по нескольку датчиков на один порт, что очень экономит порты, и из-за этого автоматизация выходит ещё дешевле.
Внешний вид датчика DS18B20 для закрепления установки на батарее отопления
В Home Assistant эти данные с одного порта разбираются очень просто — у каждого из этих температурных датчиков есть свой уникальный адрес, по которому они и распознаются контроллером.
Главный недостаток DS18B20 — они реально очень мелкие и поэтому электрику с ними работать сложно и непривычно.
Датчик DS18B20 в термоусадке, закрепленный на батарее отопления
Квартирный домофон тоже подключен к общей системе, но только в информационном режиме — вызов виден, но открыть дверь нельзя. Подключение осуществляется через датчик U-Sensor (5В), который подключен параллельно домофонной трубке (координатный домофон).
Для справки — я недавно нашел решение, которое позволит не только видеть вызов, но и открыть дверь, но пока прочитал про это только в чужой статье.
Поскольку я уже не раз сталкивался с тем, что горячая вода была не всегда так уж и горяча, я решил добавить датчики температуры на воду, которые бы непрерывно фиксировали температуру для того чтобы контактировать с управляющей компанией, если будут проблемы с температурой воды. В качестве датчиков температуры воды я решил использовать цифровой термометр DS18B20, который выпускается в разных исполнениях, в том числе и в водозащищенном.
Цифровые термометр DS18B20 с интерфейсом 1-wire, закрепленные на стяжках.
Вообще, я нашел идеальный формат панели управления у двери в своей статье на Хабре, но это случилось только в начале 2020 года. А этот дисплейчик для отображения времени и погоды за окном у входной двери был установлен гораздо раньше, за пару лет до этого момента, и работает до сих пор.
Внешний вид — OLED дисплей 128×64 на SSD1306 с управлением по I2C в коробке заводского изготовления
Дисплеем надо управлять и в данном случае я делаю это через контроллер Мега, посылая управляющие сигналы с управляющего программного хаба. Вот мои варианты правил управления этим дисплеем для систем openHAB и Home Assistant.
Это отдельная и очень длинная история, которая растянулась на несколько лет поисков из-за того, что я хотел использовать дешевые датчики, но как оказалось, для корректного получения уровня шума в децибелах, это невозможно.
Почему я вообще заинтересовался шумом? Существует допустимый уровень шума, который установлен в законе о санитарно-эпидемиологическом благополучии населения, а также СанПиН 2.1.2.2645–10 и СН 2.1.8.562–96. По этим правилам дневное время — это время с 7:00 до 23:00, ночное — с 23:00 до 7:00. Нормальный уровень фонового шума для жилых комнат и квартир днем — 40 децибел, ночью — 30 децибел. Максимальный уровень непостоянного шума — 55 децибел в дневное время и 45 децибел в ночное. Нарушением считается любой звук, который превышает норму и мешает жильцам в любое время, кроме новогодней ночи.
Сначала я пытался использовать дешевые модули, которые заявлены как модули детекции шума, подключая их к АЦП контроллера Мега чтобы определить уровень шума, но это было безрезультатно. Одна из попыток на фото ниже:
Один из датчиков, подключенных к аналого-цифровому преобразователю (АЦП) Меги
Так выглядел датчик, приведенный выше в веб-интерфейсе Меги
Контроллер видел эти дешевые датчики, получал с них какие-то цифры, но эти значения с реальным уровнем шума никак не коррелировались.
Первые пару лет уровень шума хоть и очень опосредованно удавалось получать с USB микрофона, воткнутого в порт Raspberry Pi через bash-скрипт, выполнение которого вызывалось из openHAB: #!/bin/bash
/usr/bin/arecord -D plughw:1,0 -d 15 -f S16_LE /home/openhabian/USB_dB.wav 2>/dev/null;
sleep 15;
sox /home/openhabian/USB_dB.wav -n stat 2>&1 | sed -n 's#^Maximum amplitude:[^0-9]*\([0-9.]*\)$#\1#p';
Вот мой скрипт на GitHub. Полученное значение Volume adjustment пересчитывалось в децибелы уже внутри правил автоматизации OpenHAB. Конечно это был «костыль», но хотя бы, опосредовано, он работал.
В 2016 году я даже пытался найти формулу для расчета корректного значения уровня шума в децибелах, основанную на показаниях шумомера в Nexus 5 и значениях, получаемых с USB микрофона и вывел её (на скриншоте ниже y = -0,0000067x3+...
). Это несколько месяцев работало, но потом уровень получаемых с микрофона цифр неожиданно уплыл и больше не возвращался. После этого я нашел другую формулу: [dB = 20 x log10(A)]
, которая и показана в файле с правилами для openHAB.
Попытка вывести формулу, основанную на показаниях шумомера в Nexus 5 и значениях, полученных с USB микрофона
Недостатками решения с USB микрофоном были:
- Возможное нарушение конфиденциальности — хотя звук в привычном понимании и не записывался и анализировался только wav файл, но это все же был USB микрофон.
- Невозможность выноса — удлинить USB кабель больше чем метра на три не представляется возможным.
- Неточность — уровень измерений плавал — и в какой-то момент из графика было понятно что шум усилился, но на сколько сильно это произошло в реальности было непонятно.
Эпопея с поиском доступного решения завершилась только в 2019 году, когда мне подсказали решение — плату Gravity: Analog Sound Level Meter от DFRobot, которая хоть и вышла по цене около 3,5 тысячи рублей, но закрыла все проблемы и с расстоянием и с конфиденциальностью и конечно же с точностью.
Плата измерения уровня шума от американского производителя DFRobot
Для модуля измерения уровня шума даже не потребовалось сложное правило пересчета — внутри Home Assistant это происходит на уровне описания элемента:
- platform: mqtt
name: "Датчик шума"
device_class: signal_strength
state_topic: "megad/7/36"
value_template: "{{ (value_json.value|float/1023*3.3*50) | round(1) }}"
unit_of_measurement: "dBA"
Поскольку статья про автоматизацию квартиры получалась очень большая, я решил разбить её на две части, где в первой части, которая сейчас перед вами, я рассказываю только о том, как собирал информацию о состоянии квартиры с различных датчиков, а во второй части (дописываю, будет готова в течении двух недель) буду рассказывать о том, как уже принялся активно управлять всеми системами и выполнил:
- Полную беспроводную автоматизацию всего освещения.
- Кнопку «выключить всё».
- Полное удаленное обесточивание квартиры (включая и сам сервер управления вместе с контроллером) и обратное удаленное включение.
- Электронакладки (устройства поворота) для кранов на воду.
Также во второй части я рассказываю, что бы я сделал по другому, если бы делал это сейчас, спустя несколько лет.
Автор: Михаил Шардин.
1 июня 2020 г.