Самодельная система домашнего мониторинга из Кафтанчиково

Самодельная система домашнего мониторинга из Кафтанчиково

Что это и зачем это

Моя система позволяет мониторить различные датчики и управлять  исполнительными устройствами. Изначально же, создавалась для удаленного мониторинга критически важных систем дома. Меня интересовала температура в определенных помещениях и состояние источника бесперебойного питания котла отопления (работает-ли от аккумулятора и на сколько этого аккумулятора еще хватит). Ну а так как вычислительная мощность применяемых контроллеров избыточна, то можно нагрузить их помимо датчиков температуры, еще и анализатором качества воздуха, или например, метеодатчиками чтобы наблюдать за погодой.

Из чего состоит и выбор компонентов

Система состоит из нескольких датчиков которые отправляют информацию о себе по WiFi

центральному контроллеру. Датчики собраны на контроллере esp8266. Центральный контроллер — любой компьютер, под управлением операционной системы из семейства линуксообразных, на котором поднята система Domoticz. В моем случае используется микро компьютер «BananaPi m2 Berry» с установленной Ubuntu. Если не требуется большого количества датчиков и не планируется передавать исполнительным устройствам команды, то центральный контроллер особо не нужен. Можно зарегистрировать свои датчики на сервисе «Народный мониторинг» https://narodmon.ru и наблюдать за ними из любой части света. Правда есть ограничения. Бесплатно можно зарегистрировать на сервисе всего два датчика и хранится история только за последний год.

Так как главной задачей было быстро создать некий прототип то и компоненты выбирались максимально простые но с максимальной обвязкой. Так, чтобы сильно паяльником не размахивать и не лезть в дебри программирования. Соответственно, все они избыточны для моего применения.

Профессионалы собрали бы тоже самое — дешевле.

Выбор Domoticz в качестве контроллера системы “умного дома” — импульсивный шаг. Взял что первое попалось под руку, и оно заработало “из коробки”. Есть нюансы, но данное приложение работает. Все что нужно, есть в стандартной поставке. Функционал легко (по крайней мере так пишут на форумах) можно допилить для своих нужд. Отельными нахлобучками, например, можно научить работать с некоторыми датчиками беспроводных метеостанций (которые работают на частоте 433.92Мгц), а также научить реагировать на сигналы беспроводных радио-звонков, радиопультов и т.п, работающих на этой частоте.

Есть пинг-чекер, т.е. Domoticz может ”пинговать” смартфоны жильцов и определять что владелец (вместе со смартфоном) пришел или покинул дом. Для моих хотелок — там есть штатный модуль мониторинга UPS. Вобщем, вещь мощная, но т.к. разрабатывается и дорабатывается энтузиастами — есть некие неудобства. Зато бесплатно, работает автономно на домашнем компьютере, и не требует никаких “китайских облаков”.

Короче, хватит словоблудства, теперь будут картинки.

Изготавливаем WiFi датчики.

“Сердцем” датчика служит плата NodeMCU на контроллере ESP8266.

Стоит она около 3$. Покупается в любом удобном магазине (авито, ебэй, алиекспресс).

Эта плата уже содержит все необходимое для работы. Требуется только микро-USB шнурок, для подключения к компьютеру и заливки прошивки. Для питания подойдет любой блок питания на 5В. Я использую зарядки с USB выходом от древних телефонов (их продают за копейки в любом ларьке).

В качестве датчиков, используются датчики bosch  BMP280 (давление/температура) и BME280 (давление/температура/влажность). Датчики миниатюрные, поэтому покупать лучше сразу распаянные на плату (на картинках — размер платы  примерно с 10 копеечную монету). Стоят тоже около 3$. Покупаются там же где и nodemcu. Визуально, чтобы не обманули китайцы — габариты датчика bmE280 больше примерно в полтора раза, чем bmP280 и стоит он дороже

Следующий датчик — датчик CO2 MH-Z19. Самый дорогой и капризный. Стоит  21$. Говорят, что очень чувствителен к статическому электричеству и перегреву во время пайки. Т.е. брать в руки только при наличии антистатического браслета и паять на минимальной температуре.  Умеет мерить CO2 в диапазоне от 0 до 5000 (в некоторых случаях 10000) ppm, и автоматически калибруется. Из минусов, для того, чтобы начал показывать более-менее правдивые показания — должен простоять включенным сутки. Ну и после выключения питания — слетают калибровки, но, опять-же, через сутки снова будет показывать что-то похожее на правду.

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

Вообще, ESP8266 имеет широкий набор интерфейсов  и позволяет подключить практически любые датчики. Т.е.выбор датчиков ограничен только вашей фантазией (датчик освещенности, датчик движения, датчик излучения, и т.п)  и количеством свободных “ног” у контроллера.

А теперь, при помощи паяльника, это все собирается в одну кучу.

К сожалению, во время изготовления не делал фотографий, но поверьте, там ничего сложного. Всего 8 проводов. Единственное, TX и RX на датчике CO2 мог перепутать. Если сразу не взлетит — надо будет поменять местами.

Вот схема.

Подключение датчика CO2

Vin — любой ближайший пин 3V

GND — любой ближайший пин G

TX — подключаем к D8

RX — подключаем к D7

Подключение датчика bme280

Vcc — любой ближайший пин 3V

GND — любой ближайший пин G

SDA — D2

SCL — D1

Небольшое дополнение. Так как модуль wi-fi сильно греется при работе, то датчики желательно размещать подальше от контроллера. Датчик CO2 обязательно должен стоять снаружи. Датчику температуры-влажности тоже нужен доступ к свежему воздуху. Но, не забывайте, есть ограничение на длину сигнальных проводников. Не рекомендуют их делать длиннее 50см. Так же рекомендуют датчики экранировать от контроллера фольгой. Но, есть нюансы. Надо WiFi антену (расположена в верхней части модуля node mcu), случайно, не перекрыть.

Короче, покупаем в ближайшем хозмаге пластиковую распаечную коробку за 30 руб, берем наши провода, датчики, контроллер, паяльник, “шнурок” micro-USB. Складываем все в мешок, трясем-трясем-трясем и вытряхиваем на стол.

Должно получится что-то вроде такого

Теперь надо залить прошивку  в получившееся устройство. Настроить его, и настроить передачу данных на “народный мониторинг”.

Для начала, подключаем получившийся датчик к компьютеру.

Смотрим список устройств, должен найтись COM порт на базе CH340.

У меня Windows10  и драйвера она нашла самостоятельно. Если не найдет, наверное придется заморочиться и искать их по vid/pid, но, у меня все получилось.

Если все нормально, скачиваем прошивку ESPEasy_mega вот отсюда  https://github.com/letscontrolit/ESPEasy/releases

Качаем самую последнюю версию. Распаковываем в любую удобную папку и запускаем ESP.Easy.Flasher.exe

Открывается окно программы.

Тут необходимо выбрать COM-порт датчика (номер подглядели в диспетчере устройств) и выбрать прошивку. Для NodeMcu выбираем ESP_Easy_mega-20190121_normal_ESP8266_4096.bin. Для других версий плат надо выбирать то что им подходит. Если что-то пойдет не так, можно будет залить чистую прошивку blank_4MB.bin и он все затрет нулями и NodeMcu станет снова, как будто с завода.

Жмем кнопку “Flash ESP Easy FW” и ждем некоторое время. Обычно, около 90 секунд.

После прошивки, модуль перезагрузится (если не сможет сделать это самостоятельно, надо будет нажать кнопку ”reset” на NodeMcu или “передернуть” питание )

После перезагрузки появляется WiFi сеть с названием ESP_Easy_0

Подключаемся к этой сети, и нас должно перекинуть на страницу настройки модуля. Если автоматически не перекинуло, набираем в адресной строке браузера 192.168.4.1 и жмем Enter.

Должно открыться окно настройки WiFi сети

Выбираем нужную WiFi сеть, вводим пароль и жмем кнопку Connect.

После, датчик подключится к выбранной сети. И тут надо бы зайти в настройки WiFi-роутера, чтобы узнать адрес датчика и присвоить ему постоянный адрес. Это не сложно, но у каждого роутера это делается по-своему, поэтому в данной инструкции это описывать не буду, надеюсь, что разберетесь сами.

После перезагрузки — в адресной строке браузера вводим адрес датчика и открывается окно с настройками

Выбираем пункт Hardware и смотрим настройки i2c интерфейса. Если все делалось по инструкции, то должно быть как на картинке

Сохраняем, переходим на вкладку Devices и жмем кнопку Edit в любом свободном пункте

В появившемся меню выбираем тип датчика (в нашем случае “Environment — BMx280”)

И настраиваем. Настройка — проста, надо придумать название датчика (я написал “temp”, можно любое название, главное чтобы самому не запутаться) и поставить галочку “enabled”.

Сохраняем, ждем минуту и проверяем, что получилось. Для этого переходим на вкладку Devices. Датчик должен определиться и показать свои значения

Ждем несколько минут, и сверяем показания с эталонным термометром. В моем случае, датчик завышает на 4,5 градуса. Поэтому жмем кнопку “Edit”. Мотаем в самый низ  и в значении Formula в пункте Temperature вводим “%value%-4.5” (без кавычек)

Ждем некоторое время. Если значения термометра похожи на правду — переходим к настройкам датчика CO2

На вкладке “Devices” жмем кнопку “Edit” в любом свободном пункте и выбираем тип датчика “Gases — CO2 MH-Z19”

В настройках датчика вводим его название, и выбираем пины ESP к которым он подключен (если делали все по инструкции, то оставляем как на картинке) и задаем интервал опроса датчика. В той документации о датчике, что я читал, указывалось, что интервал опроса должен быть не чаще чем раз в минуту, поэтому указываем 60 секунд. Не забываем поставить “галочку” — “Enabled”

Сохраняем. Перезагружаем модуль. Переключаемся на вкладку Devices, ждем пару минут и проверяем получает-ли датчик значения.

Если датчики видны и реагируют на внешние воздействия, значит все в порядке. И пора научить наш датчик отправлять значения на Народный Мониторинг.

Внимание (!), я буду отправлять только данные с температурного датчика.

Отправка данных с датчика CO2 (или с любых других) — настраивается аналогично.

Т.к. штатных средств для отправки данных на народный мониторинг в данной прошивке нет, будет настраивать это через Rules (Правила).

Заходим на интерфес датчика. Переходим во вкладку “Tools” и жмем кнопку “Advanced”.

В открывшемся окне ставим галочку “Rules”

Сохраняем настройки. Перезагружаем..

После перезагрузки появляется новый пункт меню “Rules”

Заходим в него, и вводим следующее правило

On System#Boot do    //When the ESP boots, do

  timerSet,1,10     //Set Timer 1 for the next event in 10 seconds

endon

On Rules#Timer=1 do  //When Timer1 expires, do

  SendToHTTP narodmon.ru,80,/get?ID=XXXXXXXXXXXXXX&T1=[Outdoor#Temperature]&P1=[Outdoor#Pressure]&H1=[Outdoor#Humidity]

  timerSet,1,360      //Resets the Timer 1 for another 360 seconds

endon

Здесь ID — это уникальный идентификатор, по которому сервис народного мониторинга будет опознавать датчик. В идеале, это должен быть MAC-адрес вашего датчика, но можно придумать любое уникальное сочетание цифр и букв. Главное, чтобы этот идентификатор был действительно уникальным и больше ни у кого такого не было.

В предпоследней строке timerSet — указываем как часто должны отправляться данные на сервис в секундах. Вообще, рекомендуется отправлять данные не чаще, чем раз в пять минут. Иначе, IP-адрес могут заблокировать. Поэтому указываем 360 т.е. 6 минут.

В строке запроса    SendToHTTP narodmon.ru,80,/get?ID=XXXXXXXXXXXXXX&T1=[Outdoor#Temperature]&P1=[Outdoor#Pressure]&H1=[Outdoor#Humidity]

“Outdoor” — это название датчика (из вкладки “Devices”), а “Temperature” (“Pressure”, “Humidity”) — названия значений

Далее, регистрируемся на сайте https://narodmon.ru Делаем все по инструкции  с сайта.

Заходим в меню “Профиль” -> “Данные с моего IP”

И если все нормально, то наблюдаем следующую картину

ID — это придуманный идентификатор (MAC — адрес).

Значит пора добавить свой датчик на карту. На сайте жмем “Профиль” ->”Мои датчики”

Жмем “Добавить” и вводим идентификатор датчика

И наблюдаем информацию с датчика

Собственно, все.

Теперь на карте есть наш датчик. Через сутки можно его “расшарить” чтобы он был доступен всем желающим.

Установив приложение “народный Мониторинг” на телефон, можно наблюдать в виджете изменение параметров датчика, практически в режиме “реального времени”.

обновлено 21.05.2019:

Добавление датчиков в Domoticz 

Добавление датчиков происходит не совсем прозрачно и в два этапа. На первом этапе создаем датчик в Domoticz и смотрим ID датчика. На втором – прописываем в ESP-датчик контроллер (компьютер на котором «крутится» Domoticz) и IDX датчика. 

Теперь опишу это подробнее

Этап 1:

В панели управления Domoticz заходим в меню Setup->Hardware и видим такую картину

И делаем следующее: в поле «Name» вводим название датчика (можно любое, у меня для примера вписано «hall»). В поле «Type» выбираем тип «Dummy» и жмем кнопку «Add»

После этого датчик появляется в списке датчиков. Внимательно смотрbм на поле «IDX» и запоминаем его (в данном случае, у датчика «hall» «IDX» равен «4»)

После, жмем «Create Virtual Sensors» у выбранного датчика и появляется такое окно.

Тут опять все просто, в поле «Name» вводим название сенсора (как он будет отображаться в списке наших датчиков). И выбираем тип сенсора (т.к. используется датчик температура+влажность+давление то у нас это будет «Temp+Hum+Baro»). Жмем «ОК», переходим на вкладку «Temperature» в Domoticz и можем полюбоваться на красивую картинку с датчика. 

Вот только значений там пока не будет, т.е. все будет по нулям.

Так что переходим к следующему этапу — настройка ESP-датчика.

Этап 2:

Заходим на интерфейс датчика через веб-браузер, идем во вкладку Controllers и заполняем по аналогии, только своими данными. Если в Domoticz устанавливали пароль на вход, не забываем его указать. Так же, не забываем поставить галочку «Enabled» 

Сохраняем и переходим во вкладку «Devices» 

Смотрим столбец IDX и видим, что он не совпадает с тем, что запоминали у нашего датчика в Domoticz. Поэтому жмем кнопку Edit и переходим в настройки сенсора

Обязательно ставим галочку «Send to Controller». Вводим запомненный IDX датчика из Domiticz, сохраняем настройки. На всякий случай можно перезагрузить ESP. 

Собственно, на этом все, если сделали все правильно и не забыли проставить нужные галочки, то через несколько секунд (иногда придется подождать пару минут) в Domoticz, во вкладке Temperature увидим текущее значение датчика. P.S. Если нажать «звездочку» у датчика, то он будет отображаться на главной странице Domoticz.

23 комментария

  1. Imhodom

    Спасибо. Полезно. И вроде не так уж и сложно )

  2. scaner1981

    Это еще не все… Дальше будет уже установка домотикза.

  3. nblka

    О, круто. Теперь от системы мониторинга до системы управления (вентиляции по уровню CO2, увлажнения по уровню влажности) один шаг! Правда, большой ))

  4. AVANbI4

    Спасибо огромное за пополнение моей копилки знаний. Интересная реализация. Такие шурушки я еще не крутил.

  5. scaner1981

    С учетом того, что EasyEsp можно прошить в «умные розетки Sonoff» или же к NodeMCU подключить реле, то до «включить нагрузку при определенных значениях» — не так уж и далеко. Единственное, управление должно быть централизованным, а то десятком датчиков сложно управлять вручную.
    Так, что ждите продолжения. Скоро про Domoticz выложу. Только там тоже, инструкцию писать дольше, чем устанавливать и настраивать. Устанавливается он вообще одной командой..

  6. scaner1981

    А насчет сложности.. Я пытался писать прошивку для esp самостоятельно, на Си и в Arduino IDE (сейчас спецы закидают шапками). Научил получать данные с датчиков отправлять данные на сервер через GET. Но, заняло это у меня примерно пол года. Причем я даже близко не приблизился к EasyEsp. Хотя бы потому, что при потере WIFi cсоединения, модуль приходилось перезагружать вручную, а тут — оно само все делает. И даже есть встроенный WatchDog, который перезагружает модуль при зависаниях.
    Есть выражение «рвал на себе волосы» — вот это примерно описывает мое состояние, когда через пол-года ковыряния, я узнал что есть готовая прошивка, которая делает все что мне нужно «из коробки». И для прошивки надо лишь скачать ее на комп и нажать кнопку «прошить».
    Вобщем, впечатлился…

  7. psm

    круто. респект.
    я тоже вначале кидаюсь врукопашную что-нибудь написать…. трудоемко. чаще всего дописываю))))

  8. Agar

    Да. Класс!!! Вот уже и наглядная демонстрация реальности нового времени.
    Я ничего не понимаю в этих «Изи..» и прочих. Но неужели все так просто? Неужели все купить и собрать, следуя инструкции, и все заработает? Или есть еще какие-то сложности, которые опущены?

  9. Макс

    Спасибо за просветительство. Забрал статью в избранное )

  10. Pym

    Я купил умный дом Xiaomi мониторю пока температуру в отоплении, чтобы быть уведомленным когда котел встал, например. Есть еще датчик протечки воды. Есть розетка которую можно отключить или включить с тлф. Вообще много датчиков разных есть. Мне кажется это проще все намного чем у вас.

  11. scaner1981

    По поводу сяоми — может и проще. Но, нужно китайское «облако». А что там будет с инетом у китайцев- фиг знает. Моя — работает не зависимо от облаков. Все крутится на моем личном компьютере.
    P.S. умные утройства от сяоми тоже интегрируются в Domoticz Вот список поддерживаемых устройств https://www.domoticz.com/wiki/Hardware

  12. Pym

    Вам конечно респект за это, но обычный человек вряд ли это сделает.

  13. vinnipux1982

    У меня стоит умный дом от Livicom.ru.
    Два канала доставки уведомлений (по кабелю через Ethernet + можно вставить сим-карту, тогда ещё и смс-ки слать начинать и звонить и говорить голосом железного человека, что на объекте проблемы), система может работать без облака, облако Российское, отличное приложение для телефона, в системе пока 14 типов устройств, список устройств всегда растет, есть возможность сдавать объект в ЧОП, причем для этого достаточно выбрать в приложении ЧОП и нажать кнопку хочу охраняться. Все датчики по радио, срок службы от одной батарейки производитель заявляет 10 лет, у меня стоят почти год. Есть сценарии: по нажатию (брелок или с телефона), по расписанию, по событию. Всего можно подключить 256 датчиков, создать 64 сценария. Ставится и настраивается система в считанные минуты/часы.

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

  14. scaner1981

    Во-первых, по поводу «обычного человека» — я так и не смог понять, то-ли вы мне льстите, то-ли наоборот… Я считаю себя как раз тем самым, обычным человеком, который может спаять 8 проводков, и записать в модуль готовую прошивку. Скажем так, даже на этом форуме, есть более профессиональные коллеги, которые что мою конструкцию, что программу — разобьют в пух и прах.

    Во-вторых, по-поводу любых «облаков», я считаю, что любой посредник — есть зло. Чем большее количество устройств я могу контролировать самостоятельно — тем система более устойчива. «Облака», что китайское, что русское — это вообще весьма опасная вещь. Лучше, чтобы их вообще не было бы.

    В-третьих, по-поводу что WiFi менее надежен, чем аналоговый радиоканал — это вообще сомнительно.. Что то, что другое — глушится одинаково.

    P.S. не забывайте, что в споре — рождается истина. Я возможно, не вижу тех причин, по которым вам пришлось обратиться к другим устройствам. Если вы считаете, что ваши устройства лучше — опишите их подробнее. Если они действительно хорошие, я думаю, многие возьмут информацию на заметку.

  15. vinnipux1982

    Я писал что всё упирается в человеко часы.
    По поводу вайфая, ну вот смотрите у меня в квартире файфай не везде ловит хорошо, а датчики livicom.ru спокойно можно поставить на 70 метров от приемника и он будет устойчиво передавать данные.
    Припоять 8 проводков и залить прошивку, это не обычный обыватель, далеко не обычный.
    Облака, это будущее, вспомните как появлялись сотовые телефоны, сначала это было очень дорого и все считали их баловством, потом у всех появились кнопочные телефоны, и на рынке стали появляться первые смартфоны, то же многие говорили, что вещь бессмысленная, и нет нечего лучше кнопочной мобилки….а сейчас они у всех…. в общем я не понимаю чем страшны облака. Но они сильно удобны.
    У Livicom.ru облако нужно, что бы настроить и показать вам текущее состояние в доме. Все сценарии и другая логика, крутится у вас в устройстве и при отключении от облака будет работать автономно.

  16. Cardinal

    хм ) кто-то не зря в технаре учился ))

  17. psm

    поддержу scanner-а в плане облаков. Это как в старом анекдоте «вам шашечки или ехать?». Самый дорогой ресурс — время, и всякая система не должна его хавать. Поставил — и забыл. Если есть вероятность что когда-то прилетит отказ из облака (а напомню недавний кипишняк когда родной роскомнадзор уложил пол-интернета и «умные» бойлеры отказались работать) — облако долой. Для просмотра достаточно зайти на айпишник своего дома? вот туда и дорога. Выкладывать инфо о погоде в доме на всеобщее обозрение — вообще нарушение безопасности, кто-то например по углекислоте вычислит дома Вы или нет.
    ну и к слову — «умный дом» предполагает наличие у дома ума. То, что имеем — пока похоже на удаленный мониторинг. ну или удаленное управление. ума тут нет. Может его и не надо — боролся недавно с умом в смартфоне, матюкнулся и обрезал в настройках все по самое по оно. Ибо этот ум где его не ждешь задалбывает.

  18. PavelRacing

    Вопрос топикстартеру, я сам пока не смог найти ответ, даже в глобальном поиске.

    NodeMcu прошиваю, вайфай сеть ESP_Easy_0 появляется в окружении, но не могу к ней подключиться, запрашивает ключ безопасности от сети, без него не дает подключение, стандартные пароли пробывал, типа 12345678 и тд. не подходят.
    Думал в версии прошивки косяк, пробывал разные, всеравно запрашивает пароль, и с ноутбука и со смартфона.

  19. PavelRacing

    Все сделал, прикольная вещь получилась, только я один температурный пока подключил DS18B20.

    Пароль кстати для сети configesp случайно нашел.

  20. scaner1981

    PavelRacing, действительно, забыл про пароль от WiFi. Он у меня в браузере сохранен, поэтому как-то все мимо пролетало. P.S. На НародныйМониторинг пробовали датчик добавлять? Я там тоже по-памяти писал. Мог накосячить…

    P.P.S. Администрация, добавьте, пожалуйста, пароль для WiFi-сети Esp_Easy_0 в текст статьи. И, если не трудно, замаскируйте MAC-адреса и идентификаторы. А то админы «народного-мониторинга» ругаются на нарушения правил.

  21. PavelRacing

    scaner1981, На НародныйМониторинг добавился датчик отлично., все по инструкции.

  22. Аватар

    Скажите как его еще в Domoticz добавить? И как прикрутить вот такой дисплей https://ru.aliexpress.com/item/0-96-IIC-34-43-OLED/32902463963.html?spm=a2g0s.9042311.0.0.7f5e33edt6xdvb

  23. scaner1981

    Инстуркцию отправил в личку. Скоро сюда добавят. А по-поводу экрана -я не добавлял. Мне достаточно смотреть информацию на экране телефона или компьютера.

Оставить комментарий

Ваш email не будет публиковатьсяRequired fields are marked *

Вы можете использовать <abbr title="HyperText Markup Language">HTML</abbr> в таком виде: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>