Умная хрущёвка на максималках

Моя статья про проводной умный дом была популярной на Хабре (159 тысяч просмотров) — в ней я описал положительный опыт от идеи до реализации умного дома в новостройке.

Вместе с тем, у меня есть опыт интеграции и со старыми домами — квартира в типовом советском пятиэтажном кирпичном доме семидесятых годов постройки уже 5 лет автоматизирована. Она имеет единую панель управления для разных подсистем и не зависит от облачных сервисов. В отличии от новостройки, эта квартира в пятиэтажке была автоматизирована не сразу, а поэтапно за несколько лет, по мере возникновения интереса к разным элементам управления и контроля, таким как:

  1. мониторинг приборов учета;
  2. датчики контроля: домофона, температуры, шума, открытия дверей, …;
  3. единая панель управления умным домом;
  4. подъездное видеонаблюдение;
  5. настенный дисплей для текущего времени и температуры за окном;
  6. освещение в квартире, включая кнопку «выключить всё»;
  7. удаленное обесточивание квартиры;
  8. удаленное перекрытие воды.


1190764ec677be37929f3a263b1fbc55.gif
3D модель этой двухкомнатной квартиры 47 кв.м, которая была автоматизирована, нарисованная в Sweet Home 3D
Начну рассказ с самого начала — в 2016 году мне потребовался удаленный сбор показаний квартирных счетчиков.
Для этого, чтобы не устанавливать «считывающие накладки», в любом случае, была необходима замена обычных счётчиков воды и электроэнергии на счетчики с соответствующим интерфейсом. И вариантов этого интерфейса было доступно всего два:

  1. Цифровой RS485.
  2. Импульсным выход.


Если говорить о счётчиках на воду, то разница в цене по этим двум вариантам составляла примерно 10 раз. Обычный счетчик на воду с импульсным выходом стоил рублей на 200 больше обычного, то есть где-то 400…600 рублей, а счетчик воды с RS485 стоил порядка 3…5 тысяч рублей.

Из-за большой ценовой разницы я выбрал модель с импульсным выходом Valtec VLF-R-IL (сейчас эта модель уже не производится).

Была еще одна особенность, из-за того что я живу в Перми — возникла проблема просто найти и купить эти счётчики с импульсным выходом — их не было в наличии и фактически я потратил целый месяц на ожидание доставки по России — ведь нельзя просто купить в Китае счётчик и установить — это оборудование, которое должно «поверяться» и обладать соответствующим сертификатом, иначе на учёт его не поставить. В Москве, насколько я знаю, подобных проблем нет и наоборот управляющие компании заставляют устанавливать счётчики на воду с импульсных выходом.

00454ff5e9afdf7f4bc4612783c97dae.jpg
Счётчики на воду с импульсным выходом сразу после установки и опломбирования

Следующим моим шагом стал выбор счетчика электрической энергии — и здесь тоже надо иметь ввиду, что он тоже должен обладать всеми необходимыми бумагами и сертификатами для постановки на учёт — ведь я слышал, что иногда ставят даже два счётчика:

  1. Первый — «отчётный» — для учёта, перед поставщиком электроэнергии.
  2. Второй — без российских документов с популярного китайского сайта, который устанавливают сразу после первого для использования в целях домашней автоматизации — чтобы можно было удаленно считывать показания. Обычно через цифровой интерфейс RS485.


c245112be9bfe55a225b1818473e70ce.jpg
Однофазный однотарифный счетчик Меркурий 201.5 сразу после установки и опечатывания

В 2016 году я выбрал однотарифный счётчик с импульсным выходом, потому что я не понимал, как можно из командной строки сервера считывать показания счетчика электроэнергии по RS485 и пушить их в единую панель управления умным домом, которую я собирался собрать.

Как оказалось позже — однофазные электросчетчики Меркурий достаточно популярны для домашней автоматизации и при цене счетчика, сопоставимой с аналогичными счетчиками других производителей можно получить устройство, которое полностью совместимо с современными системами домашней автоматизации. Для этого надо лишь иметь адаптер USB → RS485, стоимость которого составляет менее 100 рублей (в Китае). Этот адаптер может работать с любым микрокомпьютером у которого есть USB-порт, например, из линейки Raspberry Pi, которые часто используются в качестве сервера для домашней автоматизации, для запуска Home Assistant или любого другого программного хаба.

Сам скрипт опроса электросчетчика Меркурий написан энтузиастами и выполняется из командной строки, а также может быть интегрирован в любую систему домашней автоматизации. Мой конкретный пример интеграции для RS485 в другой квартире, где установлен Меркурий 200, который я сделал уже позже, можно посмотреть, например, на форуме или просто поискать варианты в поиске.

f94c649d19899438a58644fa4927ef5f.png
Элемент скрипта для получения данных с электросчетчика Меркурий 200

Однако в 2016 году после установки счетчиков без цифрового RS485 мне понадобилось устройство считывания этих импульсов.


Поскольку я выбрал и установил три счетчика с импульсными выходами, мне надо было иметь какое-то устройство, которое было бы всегда на связи с ними и круглосуточно считывало бы эти импульсы, конвертируя их в «человеческий формат». Я стал искать подобный контроллер и нашёл несколько вариантов:

  1. Контроллер с программируемой логикой ОВЕН.
  2. Модули счётчика импульсов от разных производителей, например вот.
  3. Универсальный проводной контроллер Мега с возможностью интеграции в систему умного дома.


Расскажу обо всем подробнее. Перед тем как покупать что либо, я решил обратиться с запросом к первому найденному варианту — к ОВЕН и в его техподдержке мне буквально написали, что моя идея влетит в копеечку. Ответ техподдержки:

"В целом система получается достаточно дорогостоящей + реализация ПО под Вашу задачу – сложное.
...
Можно и более дешевый, но WEB-визуализации у них нет. Тут потребуется Scada система уже для ПК. WEB-визуализацией обладает только ПЛК323 и СПК207. У них в маркировке указано WEB при заказе.
Но, к любому ПЛК, по любому интерфейсу связи можно сделать визуализацию (это не WEB-визализация). Также, у наших коллег есть опыт применения iRidium Mobile для реализации приложений для смартфонов/планшетов, для управления контроллерами. Еще, как вариант, применение ПЛК110 [М02]. По Ethernet к роутеру.
Также рекомендую посмотреть каталог проектов http://www.owen.ru/projects с фильтрацией по «Решения для автоматизации инженерных систем зданий».


Получается, что проект может обойтись очень дорого, а тратить несколько десятков тысяч рублей на это мне совершенно не хотелось, но удаленный учёт все же хотелось иметь, поэтому я перешёл к следующему варианту.

Вторым вариантом была программно-аппаратное решение по учету импульсов от одного из российских производителей, но эта система была закрыта и позволяла только учитывать импульсы, а мне хотелось иметь и другие функции умного дома — такие как детекция уровня шума в децибелах и учёт температуры стояков. Цена вопроса данного варианта составляла около 5 тысяч рублей, насколько я помню.

Поэтому я продолжил гуглить дальше и в поисках третьего варианта и в итоге наткнулся на Мегу — проект Андрея Буртового из города Тольятти, который вырос из простого хобби в коммерческий проект. В нём подкупало соотношение цены и заявленных возможностей — по цене комплект (контроллер и модуль только с аппаратно-конфигурируемыми входами) выходил примерно на уровне второго варианта — простого счетчика импульсов с веб-интерфейсом. Но при этом появлялась возможность интеграции с существующими программными хабами.

bc0c2ec1ba14bbae9284b3692ca18a01.jpg
После выбора и монтажа оборудование в 2016 году «сердце» начинающей умнеть квартиры выглядело так. От обилия блоков питания я потом избавился (фото ниже)


Поскольку все три найденных решения были проводными, мне пришлось тянуть витую пару UTP cat.5E до каждого из счетчиков. Ещё я захотел добавить несколько недорогих датчиков и поскольку выбранный контроллер Мега был проводной мне пришлось разработать схему что и куда надо протянуть, чтобы удовлетворить все потребности в проводах. Ещё решил поставить следующие датчики:

  • Улавливания наличия газа на кухне (т.к. в доме есть газ).
  • Температурный датчик, который отображает температуру, влажность и атмосферное давление и текущий уровень освещенности на улице.
  • Датчик на батарею, чтобы знать её температуру.
  • Датчик открытия двери — простой геркон.
  • Температурные датчики на холодную и горячую воду.
  • Датчик шума в гостиной.


Схема протяжки витой пары выглядела так:

f5b8cda670c47af032f440102c7abff4.png

Схема прокладки витой пары в двухкомнатной квартире 47 кв. м. и на лестничной площадке

Штроб в квартире не было сделано — всю витую пару удалось протянуть в пластиковых коробах (размером 15×10 мм), расположенных чуть выше уровня плинтуса.

В этом месте необходимость сказать, что в хороший существующий ремонт вписать всё это будет весьма проблематично, но в этой квартире его не было и терять было нечего.

Также мне пришлось разработать схему подключения датчиков непосредственно к контроллеру. Схема подключения датчиков к Меге в варианте 2016 году ниже:

4b0a4586bf01c0fe33309d1dec424247.png
Схема подключений датчиков на Мега-328

Через пару лет в 2018 году я заменил Мегу-328 на более новую 2561 и избавился от аналоговых датчиков, которые иногда работали некорректно и зависали, а для исправления требовалась полная перезагрузка контроллера. После замены я поставил больше точных цифровых датчиков c I2C интерфейсом, объединив их на нескольких портах:

b6782fed1e248f604e22f9ca6bef70b3.png
Схема подключений на Мега-2561


Для измерения температуры часто используются датчик DS18B20, который представляет из себя цифровой термометр с интерфейсом 1-Wire, который может снимать показания в диапазоне -55…125°C. Для конкретно моего контроллера DS18B20 датчики можно подключать шиной — это значит по нескольку датчиков на один порт, что очень экономит порты, и из-за этого автоматизация выходит ещё дешевле.
e8708296bcfe8fefdd49863d84b7c265.jpg
Внешний вид датчика DS18B20 для закрепления установки на батарее отопления

В Home Assistant эти данные с одного порта разбираются очень просто — у каждого из этих температурных датчиков есть свой уникальный адрес, по которому они и распознаются контроллером.

Главный недостаток DS18B20 — они реально очень мелкие и поэтому электрику с ними работать сложно и непривычно.

9fb7550fea126c4853379cbb471d04ba.jpg
Датчик DS18B20 в термоусадке, закрепленный на батарее отопления


Квартирный домофон тоже подключен к общей системе, но только в информационном режиме — вызов виден, но открыть дверь нельзя. Подключение осуществляется через датчик U-Sensor (5В), который подключен параллельно домофонной трубке (координатный домофон).

Для справки — я недавно нашел решение, которое позволит не только видеть вызов, но и открыть дверь, но пока прочитал про это только в чужой статье.


Поскольку я уже не раз сталкивался с тем, что горячая вода была не всегда так уж и горяча, я решил добавить датчики температуры на воду, которые бы непрерывно фиксировали температуру для того чтобы контактировать с управляющей компанией, если будут проблемы с температурой воды. В качестве датчиков температуры воды я решил использовать цифровой термометр DS18B20, который выпускается в разных исполнениях, в том числе и в водозащищенном.

7d9488851562d2cddf11dd271899ffa7.jpg
Цифровые термометр DS18B20 с интерфейсом 1-wire, закрепленные на стяжках.


Вообще, я нашел идеальный формат панели управления у двери в своей статье на Хабре, но это случилось только в начале 2020 года. А этот дисплейчик для отображения времени и погоды за окном у входной двери был установлен гораздо раньше, за пару лет до этого момента, и работает до сих пор.

7931214d0ae1d48d774c50757bbf7b7a.jpg
Внешний вид — 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 децибел в ночное. Нарушением считается любой звук, который превышает норму и мешает жильцам в любое время, кроме новогодней ночи.

Сначала я пытался использовать дешевые модули, которые заявлены как модули детекции шума, подключая их к АЦП контроллера Мега чтобы определить уровень шума, но это было безрезультатно. Одна из попыток на фото ниже:

b83a181139ef246c7176a19121777e50.jpg
Один из датчиков, подключенных к аналого-цифровому преобразователю (АЦП) Меги

9e2c9013479ea0aa34b5066c1dab1bfa.jpg
Так выглядел датчик, приведенный выше в веб-интерфейсе Меги

Контроллер видел эти дешевые датчики, получал с них какие-то цифры, но эти значения с реальным уровнем шума никак не коррелировались.

Первые пару лет уровень шума хоть и очень опосредованно удавалось получать с 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.

747933f360c7a087a433a2e9a6824293.png
Попытка вывести формулу, основанную на показаниях шумомера в Nexus 5 и значениях, полученных с USB микрофона

Недостатками решения с USB микрофоном были:

  1. Возможное нарушение конфиденциальности — хотя звук в привычном понимании и не записывался и анализировался только wav файл, но это все же был USB микрофон.
  2. Невозможность выноса — удлинить USB кабель больше чем метра на три не представляется возможным.
  3. Неточность — уровень измерений плавал — и в какой-то момент из графика было понятно что шум усилился, но на сколько сильно это произошло в реальности было непонятно.


Эпопея с поиском доступного решения завершилась только в 2019 году, когда мне подсказали решение — плату Gravity: Analog Sound Level Meter от DFRobot, которая хоть и вышла по цене около 3,5 тысячи рублей, но закрыла все проблемы и с расстоянием и с конфиденциальностью и конечно же с точностью.

f4d17455eeebd07a69c4d100c83554a3.jpg
Плата измерения уровня шума от американского производителя 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 г.

© Habrahabr.ru