Следим за углекислым газом
Вместе с Димой Коруновым выступили с докладом о микроклимате в офисе и дома. Рассказали о том, зачем уделять внимание содержанию углекислого газа, как автоматизировать сбор метрик и как держать концентрацию в норме.
Что нужно знать об углекислом газе
При дыхании человек потребляет кислород, а выдыхает — углекислый газ, содержание которого в воздухе измеряют в миллионных долях (ppm). Фоновый показатель зависит от места измерения и варьируется от 400 до 600 ppm. В провинциальных городах содержание CO2 ниже, чем в мегаполисах с промышленными предприятиями.
Психологическая отметка в 400 ppm преодолена уже в 2013 году.
Что касается помещений, то содержание углекислого газа зависит в основном от количества людей в них. При этом люди склонны недооценивать влияние концентрации CO2 на здоровье и качество жизни. Каждый знает, что если в помещении много углекислого газа, то в помещении становится душно, а чтобы стало лучше — нужно проветривать. Но как часто и зачем это делать — задумываются немногие.
Воздух в помещении считается качественным, если содержание CO2 в нём не превышает 800 ppm. При достижении 1000 ppm люди чувствуют себя вяло и сонливо, а значение в 1400 ppm ГОСТ 30494-2011 считает недопустимым. В такой обстановке человеку становится тяжело концентрироваться на интеллектуальной работе из-за головной боли.
Опасным для жизни считаются 40000 ppm — при достижении такой концентрации у человека проявляются симптомы кислородного голодания: учащается пульс и возникает ощущение тошноты. К счастью, «надышать» такую концентрацию сидя в офисе невозможно. Тем не менее, даже небольшие превышения способы влияют на качество жизни.
Как измерять и автоматизировать
В офисе ФБ с 2017 года работают датчики углекислого газа MasterKit MT8060 от компании «Даджет». Компания Дайджест продаёт их в России под собственным именем, хотя в Китае этот датчик более известен под брендом Zyaura ZG01.
Эта модель измеряет сразу три показателя микроклимата:
- Содержание углекислого газа;
- Температуру воздуха;
- Относительную влажность воздуха.
При превышении 800 ppm на датчике загорается жёлтый индикатор, а при 1200 ppm — мерзко пищит. На передней панели есть кнопка выключения звука: его выключают через неделю использования, чтобы датчик не отвлекал от работы.
В итоге датчик работает, но на него никто не обращает внимание. Тогда мы и задались вопросом автоматизации: как собирать метрики, чтобы знать о микроклимате офиса больше.
Сбор метрик
Датчик MT8060 имеет урезанную аппаратную шину SPI для передачи данных. В SPI данные поступают последовательностью бит по шине данных (DATA), а сигналом для измерения служит восходящий фронт управляющего сигнала (CLOCK).
Датчик кодирует передаваемые данные 5-байтовым протоколом, а метрику представляет в BCD (Binary-coded decimal) или HEX-коде. Длительность такого сообщения составляет 2ms — по 50µ на каждый бит информации.
------------------------------------
| Type | MSB | LSB | SUM | CRT |
-------|------|------|------|-------
| 0x52 | 0x06 | 0x52 | 0xAA | 0x0D |
------------------------------------
Сообщение начинается с байта типа сообщения (Type), затем два байта значения метрики (MSB, LSB), байт контрольной суммы для проверки целостности (SUM). Завершается передача байтом возврата каретки (CRT), обозначающего конец сообщения.
Для сбора метрик мы использовали микроконтроллер ESP8266. Он поддерживает работу с Wi-Fi (IEEE 802.11 b/g/n) по частоте 2.4 GHz, а также передачу и приём данных по шинам SPI, UART, I2C.
Для чтения метрик мы разработали скетч на C++11 c Arduino. Программа работает в несколько потоков, поддерживает OTA обновления по беспроводной сети, регистрирует DNS-имя в Multicast DNS для Service Discovery, а также предоставляет HTTP API для управления и конфигурирования.
Пересылка метрик
Микроконтроллер собирает данные с MT8060 и отправляет полученные метрики по протоколу MQTT брокеру. Протокол MQTT работает поверх TCP и широко известен работой в IoT и пользуется популярностью у интеграторов.
Брокер позволяет одному издателю отправлять сообщения, принимая их нескольким подписчикам — то есть обычный такой Publisher-Subscriber.
Основным преимуществом этого протокола является встроенная поддержка в Arduino без необходимости изобретать прикладной протокол и хранилище для передачи. Или, если речь идёт о пассивном сборе, то как-то уведомлять сервер о себе.
Приём метрик
В офисе мы установили MQTT-брокер Mosquitto и настроили микроконтроллер для работы с ним.
Особенностью Mosquitto является хранение всех метрик в памяти — все операции быстрые и диск не нужен. Mosquitto поддерживает аутентификацию по имени пользователю и паролю, а также TLS-шифрование.
В офисной сети мы не стали использовать TLS, поскольку среда для передачи метрик доверенная, а сами метрики защищать не требуется.
Агрегация метрик
Со стороны мониторинга мы разработали небольшой агрегирующий MQTT-прокси. Его задача — подписаться сообщения от MQTT-брокера и обновлять состояние метрик в памяти для внешних систем мониторинга.
Это небольшое Go-приложение для агрегации метрик. Оно хранит состояние в памяти в hash-map, автоматически регистрирует и удаляет неактивные устройства, а также предоставляет HTTP-интерфейс для метрик в формате JSON.
Также подготовили простую интеграцию для Zabbix с этим прокси: с поддержкой автообнаружения элементов.
Как прогнозировать
На сайте проекта Engineering Toolbox мы нашли упрощённую, но хорошо согласованную математическую модель насыщения вентилированного помещения углекислым газом.
Согласно этой модели, концентрация CO2 определяется:
- Объёмом газа, выделяемого людьми в помещении;
- Объёмом помещения (㎥);
- Объёмом приточного воздуха (㎥ в час);
- Временем (в часах);
- Фоновым уровнем углекислого газа (ppm);
- Стартовым уровенем углекислого газа в помещении (ppm).
На протяжении 7 дней мы измеряли концентрацию CO2 в жилом и офисном помещениях, которые редко проветривают. Полученные данные разбили на рабочие интервалы, скорректировали случайные и систематические ошибки, а затем построили концентрации от времени.
Основываясь на полученных данных, мы рассчитали объём вентилируемого газа в офисе и квартире, а после применили скорректированную модель к другим помещениям и подготовили базовые рекомендации.
Что делать
Если вы работаете из дома один, то рабочее помещение в 25㎥ необходимо проветривать хотя бы раз в час. Для этого достаточно открыть окно на 5-7 минут — углекислый газ достаточно быстро рассеивается.
Опенспейс в 125㎥ на 12 человек — минимум раз в полчаса. В этом смысле, практичнее постоянно держать включенным бризер: его работы на минимальной мощности в 40㎥ в час достаточно, чтобы поддерживать концентрацию углекислого газа в пределах нормы.
Берегите себя и оставайтесь производительными.