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

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

Обзор девайса


Качество “свежести” воздуха я решил контролировать по концентрации углекислого газа. В планах на будущее – запуск датчиков на аммиак, пропан/бутан (утечки газа), концентрации пыли в воздухе и т.д.

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



Ни для кого не секрет, что концентрация углекислого газа в воздухе сильно влияет не только на продуктивность человеческого мозга, на работоспособность человека, а также на возможность качественно отдохнуть. Чем выше концентрация СО2, тем хуже.



В качестве прибора измерителя концентрации углекислого газа был использован Детектор углекислого газа компании Даджет.

Это устройство может получать энергию от USB-порта компьютера или ноутбука. На лицевой панели — ЖК индикатор, где отображается информация о концентрации углекислого газа и температуре окружающего воздуха. Также имеется 3 светодиода которые дают пользователю наглядное представление о содержании. Все достаточно просто – включаем девайс. И все работает.

Меня привлекло то, что есть софт, который работает с данным девайсом. Софт есть как под Windows, так и под Linux. Исходники программы под Linux есть на github и вроде как написаны нашим соотечественником. А если есть исходники можно что-то придумать, доработать, «заточить» программу под себя.

Обзор схемы работы


Как показала практика и гугление, устройство видется компьютером, как HID устройство. Поэтому в программе для Windows есть dll под названием HIDApi. Для работы с Linux нужна одноименная библиотека HIDApi. Мной была произведена доработка исходников linux софта и написан простенький скрипит.

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

Схема работы моего программно-аппаратного комплекса выглядит следующим образом:



Понятливый читатель и заядлый гик может подумать, что не очень спортивно использовать в этой схеме HUB. Всё верно, можно напрямую подключить СO2 монитор и радоваться жизни. Используя такую схему я решаю несколько задач сразу:
? чаще всего мозги умного дома находится не там где стоит датчик;
? использование raspberry pi даёт возможность подключать дополнительные датчики;
? размещая датчик отдельно, получаем два способа индикации, первый на экране датчика, второй на телефоне или через веб страницу, поскольку данные транслируются на контроллер.

В качестве контроллера умного дома используется девайс фирмы MicasaVerde, устройство может собирать данные с датчиков и принимать решения согласно заданной программе которые в её терминологии называются “сцены”.



В девайсе можно создать виртуальные датчики и обновлять их информацию с помощью http запросов, что я и делал с помощью raspberry pi.
Пример запроса:
ip_address:3480/data_request?id=variableset&DeviceNum=6&serviceId=urn:micasaverde-com:serviceId:DoorLock1&Variable=Status&Value=1
То есть, «малинка» считывает данные с детектора углекислого газа, а дальше передаёт данные http запросом на Vera. Схема простая, но рабочая.

Доработка софта



Итак есть «малинка», неважно какой версии, главное чтобы на ней был сетевой интерфейс.

Далее необходимо установить поддержку hid устройств. Данная библиотека берётся с git, поэтому должен быть установлен git на «малинке»:

apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev

Далее качаем и ставим саму библиотеку

mkdir hidapi
cd hidapi/
git init
git clone github.com/signal11/hidapi.git


Дополнительные библиотеки
sudo apt-get install libudev-dev libusb-1.0-0-dev libfox-1.6-dev autotools-dev autoconf automake libtool

Устанавливаем
cd hidapi/
./bootstrap
./configure
make
sudo make install


После этого качаем исходники программы CO2 monitor
mkdir co2monitor
cd co2monitor
git init
git clone github.com/dmage/co2mon.git


Далее я немного подправил код программы, в изначальном варианте она считывает два параметра (температуру и co2) и в бесконечном цикле отправляет в консоль. Мне такой вариант не подходил, цель была один раз запустить и один раз получить значение, поэтому поменял две строчки в файле main.c.

Ищем строчки

printf(«CntR\t%s\n», buf);
fflush(stdout);


И меняем на

printf(“%s\n", buf);
fflush(stdout);
exit(1);


Первая строчка отвечает за вывод значение, после изменения будет выводится только цифра, и после вывода программа будет закрываться, отвечает строка exit(1).

Компилируем
cmake…
make


Далее был написан простенький скрипт, который запускает программу, значения вывода программы скомпилированной выше присваивает переменной и далее это значение с помощью curl передаёт на MicasaVerde. После этого добавим правило udev, чтобы система имела доступ к датчику без root.

SUBSYSTEM==«usb», ATTR{idVendor}==«04d9», ATTR{idProduct}==«a052», MODE=«0666»

И добавим скрипт опроса и передачи в cron, на кажду минуту.

crontab -e
И добавляем строку
* * * * * /home/pi/co2sender.sh


Результат работы скрипта

Конечно придётся ещё настроить файлы MicasaVerde, чтобы везде были адекватные записи. Но оно работает, быстро и просто.

Вывод



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

Комментарии (37)


  1. Hellsy22
    26.02.2016 02:50
    +11

    Мне кажется, что это радикальный перебор. Датчик MH-Z19 и ESP8266 справятся с той же задачей, причем подключение даже проще — MH-Z19 можно напрямую воткнуть в Tx/Rx — он поддерживает цифру по UART. Стоимость, размеры и потребляемая энергия получатся почти в десять раз ниже. А если взять ESP в формате NodeMCU dev board, то даже паять ничего не надо.


    1. kalbasa
      26.02.2016 04:01

      каждый страдает по своему. недавно на гиктаймс видел статьи умного дома на промышленных контроллерах ОВЕН. что ещё переборестее чем малинка и датчик СО2.


    1. utya
      26.02.2016 10:30

      Да отчасти вы правы, но а если у меня эта модель устройтсва и я тоже как то хочу собирать инфу. В данной модели нет штырей с spi выходом, только cali и там туфта. Варинат с esp8266 был первым, но для этой модели не подошёл


    1. remard
      27.02.2016 01:09
      +1

      Напишите, пожалуйста, ваш вариант реализации в виде поста. Очень интересная тема, да еще и если в 10 раз дешевле.


  1. aivs
    26.02.2016 08:44
    +2

    Я все ждал когда же этот датчик co2 прикрутят к raspberry pi, дождался, спасибо!


  1. KiLLWarez
    26.02.2016 09:04
    +1

    Открывание форточки или включение вентилятора как-то реализовано или только в планах?


  1. temabadhi
    26.02.2016 10:23

    лого а-ля Биткоин.


  1. aivs
    26.02.2016 11:06
    +2

    Я сейчас тестирую z-wave датчик CO2 Siegenia-aubi SensoAIR, и с его помощью понял, что если жена не разрешает открывать окно на ночь, чтобы не простудить ребенка, то комнатную дверь можно оставить приоткрытой, в закупоренной комнате к утру 2100 ppm — бошка аж трещит, а комнате с открытой дверью — 350 ppm, как доктор прописал!
    Рекомендую всем датчик CO2, полезная штука.


    1. utya
      26.02.2016 11:07

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


    1. Aquahawk
      26.02.2016 12:16
      +1

      а комнате с открытой дверью — 350 ppm, как доктор прописал!

      Крайне странно. На улице не ниже 400. У меня дома с приточкой и открытой дверью удаётся удержать 650-700. Попробуйте воспользоваться другим датчиком.


    1. artyfarty
      26.02.2016 13:08

      Читая посты про эти несчастные датчики я все сгораю от любопытства, если человеку поставившему датчик тайком подкрутить значения вниз, станет ли он чувствовать себя лучше? А если наоборот заставить датчик завышать значения, найдет ли человек сразу оправдание своей сонливости и лени?


      1. pyhtin
        27.02.2016 01:03
        -1

        Через некоторое время так и получается. Особенно когда читаешь в инструкции информацию по калибровке и понимаешь что этот датчик безбожно врет (на улице начал показывать 250). Прям жить как-то тяжелее становится, все вокруг слишком много дышат…


    1. GrigoryPerepechko
      26.02.2016 14:03

      350 — ложь. Это в лесу в 10 км от города может быть.


  1. mrigi
    26.02.2016 14:12
    -1

    Проветривание мозга цифрами? Вроде как принудительная вентиляция реализуется сразу на весь дом/квартиру с расчетом необходимого общего воздухообмена. Что тут отключать и зачем? Заслонку воздуховода прикрыть на комнату? Но что это даст? Не с того конца подходите, как мне кажется.


    1. u010602
      26.02.2016 16:54

      Я вот тоже спорил с товарищем, который занимается разработкой систем приточных вентиляцией. И он считает мол надо систему один раз рассчитать, поставить и пускай работает. А я считаю что это не неэкономный и не разумный способ. Ну зачем мне гонять приточку на макс когда я один дома, или когда вообще все ушли. И совсем другое дело когда пришло 12 гостей. Проветривать нужно не ради соотв каким-то методичкам расчета, а ради свежего воздуха. А значит нужно как-то определять насколько он свежий, и датчик СО2 в данном случае хорошее начало. Но я бы еще добавил датчики СО, природного газа, дыма и пахучих веществ (например запах жареного лука). Превышение на любом — добавить скорости вентилятору.


      1. mrigi
        26.02.2016 17:32
        -1

        Понимаете, считать что-то в теории не вникая в процесс — это одно, а реализовывать в реальности — другое. Для нормальной системы нужен рекуператор, который будет возвращать тепло и влагу назад в помещение. А это достаточно громоздкий и дорогой аппарат. На два порядка дороже этих датчиков. Подавать зимой холодный или летом горячий воздух в помещение — вот где основные потери и растраты будут, а не на вентиляторах. Но это конечно понятнее владельцам частных домов, где они сами платят за отопление.

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

        Дальше — процесс смены воздуха не моментальный. Когда ваш CO2-метр покажет высокую концентрацию, вам уже будет кислорода не хватать и начнется небольшой дискомфорт. И этот дискомфорт, с учётом слабой комнатной системы вентиляции, моментально не уйдет. Зачем терпеть его, если можно менять воздух с небольшим упреждением?

        А когда все ушли из дома нет никаких проблем выключать лишние системы.


        1. u010602
          26.02.2016 17:54

          А я не говорил про установку систем малой мощности. По нормам на одного человека нужно от 15 до 40 м3\ч, соотв минимальный когда я один дома будет 50, а когда много гостей — 210. Можно больше. Ну и еще есть нормы по площади их тоже нужно учесть. Естественно весь воздух нужно привести к нормам температуры, влажности и чистоты. А значит снижение расхода воздуха приведет к увеличению срока службы узлов ПВУ и снижению расходов на кондиционирование в 4 раза. Смысла ставить игрушечные системы и ими управлять я тоже не вижу. В то же время 4ех-5ти кратное упреждение я не считаю небольшим.

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


          1. mrigi
            26.02.2016 18:48

            Как вы себе представляете точечное управление центральной вентиляцией? Перекрывать воздуховоды в помещения и снижать общую мощность? Других вариантов я не вижу. Не думаю что подбор общей мощности это тривиальная задача, но наверно решаемая. Но не забывайте, что часто вентиляция идёт с подогревом воздуха и чуть реже с охлаждением. И эти два разных параметра (температура и CO2) имеют крайне мало общего между собой, так что их корреляция много экономии не даст.

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


            1. u010602
              26.02.2016 19:29

              В моем случае точек подачи всего две, а точка забора вообще одна. Мне будет достаточно регулировать обороты вентилятора. Для большого дома нужно регулировать и скорость вентилятора и заслонки в комнатах по не тривиальным алгоритмам. Т.е. тут два вопроса, КАК алгоритмически и КАК технически.
              Технически — заслонки на воздуховодах, клапана подмешивания и скорость вентилятора.
              Алгоритмически — уйма вариантов от простых до сложных.
              Мощность кондиционирования тоже можно и нужно регулировать исходя из температуры на входе, выходе и расхода воздуха.
              Да я знаю что тут принято экономить каждый ватт, но не за счет комфорта. Т.е. если нужно будет зажечь на максимум котел на 30квт для нормального проветривания, когда в помещении 15 человек, то так тому и быть. Да я из тех «сумасшедших» у которых кондиционер летом работает с открытым окном.


              1. mrigi
                26.02.2016 19:33

                Я так понимаю вы экономите несчастные пару ватт энергии на вентиляторе, при этом выкидывая киловатты тепловой энергии в окружающую среду? Воистину экономная экономия.


                1. u010602
                  27.02.2016 22:38

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


              1. sim31r
                27.02.2016 23:44

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


        1. Hellsy22
          26.02.2016 19:21

          Когда ваш CO2-метр покажет высокую концентрацию, вам уже будет кислорода не хватать

          Так и рост CO2 не моментальный. В закрытой комнате объемом 80-100 кубов два человека увеличивают концентрацию CO2 на 100 пунктов где-то за полчаса. Можно включать принудительную вентиляцию после 500 единиц и плавно наращивать мощность с ростом концентрации.


          1. mrigi
            26.02.2016 19:25

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


            1. Hellsy22
              26.02.2016 20:03

              Я пока только присматриваюсь к системам приточной вентиляции. Сейчас проветривание организовано с помощью приоткрытого окна. Но у этого метода есть серьезные недостатки. Любая система, способная управлять потоком свежего воздуха с улицы в зависимости от концентрации CO2 в помещении будет эффективнее в рамках задачи по поддержке низкой концентрации СО2. Не спорю, можно закупорить дом и дышать воздухом с 2000ppm CO2, экономя на обогреве или охлаждении, но лично я предпочту хорошее самочувствие.


    1. Maishi
      27.02.2016 01:05

      Эта так называемая «принудительная вентиляция» нормально функционирует только в новостройках Москвы или Питера. В большинстве квартир она просто не работает, приходится ставить клапана или еще что.


      1. mrigi
        27.02.2016 01:14

        Там физически нечему не работать. В одном месте всасываете, в другом выбрасываете. Установить воздуховоды в домах советской постройки — это да, не сильно эстетично из-за кошмарно низких потолков. Но кое-кто умудряется такое делать даже в хрущёвках: youvent.ru/page-id-15.html


  1. u010602
    26.02.2016 15:52

    Ожидал прочитать как реализовано проветривание. Как считать данные из одного девайса и конвертировать в данные для другого девайса тоже интересно, но не очень.


  1. Anonym
    26.02.2016 18:14

    Тыщу статей на эту тему и ни в одной нет собственно устройства открытия обычного пластикового окна.
    Датчик такой тоже есть. Пока ограничиваюсь приточными клапанами Airbox Comfort.


    1. utya
      26.02.2016 18:42
      +1

      Это не врите) есть статья в которой автор показал такое устройство. На гике была статья. Я год назад нашел готовое устройство в основном для теплиц, в домах такое не ставят. Стоило тогда дорого 150 евро. Сейчас тем более)


      1. Anonym
        26.02.2016 18:43

        Тут видел недавно статью, но только автор колхозил на старое деревянное окно.


        1. utya
          26.02.2016 18:55

          У меня такое же) а на пластик что типа такого http://parnikiteplicy.ru/ventilyaciya/avtomaticheskoe-otkryvanie-fortochek.html
          Но это все индивидуально, а решения аля стильно модно молодежно и не дорого нет


    1. masterkit
      29.02.2016 13:13

      1. Anonym
        29.02.2016 13:19

        Спасибо, оказывается эту статью я тоже видел. Но работать той конструкции в Питере ровно один раз — до первого ветра.


        1. masterkit
          29.02.2016 14:01

          Ну, пока автор не жаловался, хотя в Москве порывы ветра не меньше бывают. Впрочем, в комментариях к статье предложили возможное решение — поставить червячный привод. И плавно, и нагрузки бОльшие выдержит.


  1. Oxystin
    26.02.2016 20:12

    У меня такой же датчик. Тоже хотел интегрировать в систему умный дом, средствами arduino или esp. Пока тщетно. Если у вас получится дайте знать.


  1. sim31r
    27.02.2016 01:10
    +1

    Что-то я сомневаюсь, что при 800 ppm сразу так и возникнет сонливость. При плавании в бассейне в легких не то что 800 ppm, все 80 000 ppm, и никакой усталости, наоборот, бодрость и полезный эффект — увеличение жизненного объема легких.
    Так же интересно, как организм «отличит» что в воздухе не 500 ppm, а 800 ppm, при том что в легких на глазок 8 000 ppm. Очень много СО2 выделяет сам организм, настолько много, что внешние условия теряются на этом фоне. И легкие у человека, не как у птиц, нет сквозной вентиляции, часть СО2 остается при выдохе, и смешивается с чистым воздухом при вдохе, особенно при неглубоком, «бытовом» дыхании дома или офисе.
    Возможно, высокое значение СО2 в помещении коррелирует с какими-то другими вредными воздействиями:

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

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