В этом проекте используются Raspberry Pi Zero W, Pimoroni Enviro+ и датчик качества воздуха Plantower для мониторинга, отображения и составления отчетов о частицах воздуха, газах, температуре, влажности, давлении воздуха, уровне освещенности и уровне шума. Существует также возможность контролировать уровни eCO2 и TVOC, добавив датчик SGP30. Код основан на многих примерах и библиотеках Python, опубликованных Pimoroni, с рядом модификаций и улучшений.
Была добавлена базовая функция прогноза погоды на основе уровней и изменений атмосферного давления.
Отображение уровня освещенности в превосходной игре «Погода и свет» было изменено для отображения уровня качества воздуха. Оттенок фона теперь отражает уровень качества воздуха, а положение солнца теперь отображается с помощью видимого значка солнца. Он также предоставляет информацию о прогнозе погоды, уровне шума (если включен) и вносит некоторые незначительные изменения в индикатор влажности.
Комбинированная функция была изменена, чтобы обеспечить улучшенную видимость каждого графика. Цвета графика основаны на пороговых значениях уровней для каждого параметра и отображают только измеренные параметры. Метод display_everything также был изменен, чтобы отображать только параметры качества воздуха, чтобы улучшить читаемость дисплея.
Функция «Все в одном» была изменена, чтобы обеспечить возможность циклического переключения между всеми функциями Enviro Monitor.
Точность измерений температуры и влажности была повышена за счет проведения обширных испытаний и регрессионного анализа (от 0 до 40 градусов Цельсия) для разработки более эффективных алгоритмов компенсации. Однако сами по себе даже эти улучшенные алгоритмы не обеспечивали достаточной точности, и пришлось использовать корпус, напечатанный на 3D-принтере, чтобы отделить Enviro+ от Raspberry Pi Zero W и соединить их ленточным кабелем.
Помимо улучшения измерений температуры и влажности, были проведены испытания и регрессионный анализ для обеспечения временной компенсации дрейфа, температуры, влажности и давления воздуха для датчиков газа Enviro+. Алгоритмы и калибровка по чистому воздуху также используются для получения показаний датчика газа в частях на миллион. Для поддержки регрессионного анализа предусмотрена функция регистрации данных. Файл журнала для этого анализа необходимо включить и преобразовать в действительный формат JSON, прежде чем приступать к дальнейшему регрессионному анализу.
Точность показаний давления воздуха обеспечивается за счет компенсации высоты. Высота задается параметром «altitude» в файле config.json.
Корпус не является водонепроницаемым и должен быть защищен от непогоды. Основание требуется только в том случае, если устройство установлено не на вертикальной поверхности. Существует вариант корпуса и крышки для модели Indoor Plus, который контролирует уровни eCO2 и TVOC. Этот вариант корпуса обеспечивает дополнительное пространство и циркуляцию воздуха для датчика SGP30.
К корпусу также можно добавить погодозащитный чехол для дополнительной защиты от непогоды. При использовании этой оболочки необходимо в файле config.json для параметра «enable_display» установить значение «false». Это ограничивает функциональность дисплея только оттенком и серийным номером на основе качества воздуха, а также изменением переменных компенсации температуры и влажности, чтобы смягчить влияние крышки на датчик температуры и влажности.
В версию 6 добавлены приблизительные измерения уровней шума на основе этого репозитория. Эта функция не была откалибрована и не предназначена для точного измерения уровня звука. В версии 6.7 улучшена частотная компенсация функции измерения уровня шума, но все равно требуется доработка и калибровка. Эта функция измерения уровня шума требует дополнительной настройки (описанной ниже), а после настройки ее необходимо включить в файле конфигурации.
Поддержка mqtt обеспечивает возможность использования внешних датчиков температуры и влажности (для регистрации данных и регрессионного анализа), взаимодействия между Enviro Monitor и системой домашней автоматизации, а также для поддержки взаимодействия между наружными и внутренними мониторами Enviro Monitor. Такое взаимодействие позволяет дисплею внутреннего монитора Enviro переключаться между показаниями внутри и снаружи.
Альтернативой использованию внутренних и наружных мониторов Enviro, связанных с mqtt, для получения показаний на открытом воздухе на внутреннем мониторе Enviro Monitor является настройка внутреннего монитора Enviro Monitor на сбор показаний Luftdaten или каналов ввода-вывода Adafruit с другого монитора Enviro Monitor.
Взаимодействие Luftdaten было изменено для поддержки добавления показаний минимального, максимального и среднего уровня шума. Показания уровня шума можно отправить в Luftdaten, установив для параметра Enable_luftdaten_noise значение true в файле config.json. Обратите внимание, что Luftdaten в настоящее время не может быть настроен с тремя датчиками на узел, поэтому показания уровня шума можно отправлять в Luftdaten только в том случае, если отключены показания PM или климата. Это можно сделать, установив для параметра «disable_luftdaten_sensor_upload» в файле config.json значение «Climate» или «PM».
Та же настройка Enviro+ используется для настройки Enviro Monitor, а параметры файла config.json используются для настройки его функциональности. Описание параметров файла config.json находится здесь.
Для настройки измерений уровня шума необходимо выполнить следующие дополнительные действия:
Успешное выполнение этой настройки необходимо перед включением измерения шума в файле конфигурации.
обновление sudo apt-get
обновление sudo apt-get
локон -sSL https://get.pimoroni.com/enviroplus | бить
sudo python -m pip удалить звуковое устройство
sudo pip3 установить звуковое устройство == 0.3.15
Для версий 6.7 и более поздних также выполните:
sudo apt-get установить python3-scipy
sudo pip3 установить git+https://github.com/endolith/waveform_anaанализ.git@master
Затем следуйте инструкциям по адресу: https://learn.adafruit.com/adafruit-i2s-mems-microphone-breakout/raspberry-pi-wiring-test, включая «Добавление регулятора громкости».
Используйте следующее вместо документированного текста для ~/.asoundrc:
Для версий до версии 6.7:
Используйте alsamixer, чтобы установить уровень захвата adau7002 на 50.
Для версии 6.7 и более поздних:
Используйте alsamixer, чтобы установить уровень захвата adau7002 на 10.
Руководство пользователя содержит рекомендации по использованию Enviro Monitor.
Обеспечивается поддержка потоковой передачи прогноза погоды, качества воздуха, температуры, влажности, точки росы, давления воздуха, концентрации твердых частиц, концентрации газа, уровней освещенности, уровней шума, а с помощью дополнительного датчика SGP30 — данных eCO2 и TVOC в Adafruit IO. Это можно включить и настроить следующим образом:
Следующие поля в файле config.json Enviro Monitor необходимо заполнить для предоставления данных в каналы ввода-вывода Adafruit.
«enable_adafruit_io»: установите значение true, чтобы включить, и значение false, чтобы отключить каналы ввода-вывода Adafruit.
"aio_user_name": "Ваше имя пользователя Adafruit IO",
"aio_key": "Ваш ключ ввода-вывода Adafruit",
«aio_feed_window»: значение от 0 до 9. Устанавливает время начала одноминутного окна подачи (см. Управление регулированием Adafruit). Установите значение 0, если у вас только один монитор Enviro.
«aio_feed_sequence»: значение от 0 до 3. Устанавливает время начала обновления канала в течение одной минуты (см. Управление регулированием Adafruit). Установите значение 0, если у вас только один монитор Enviro.
"aio_household_prefix": "Префикс ключа ввода-вывода Adafruit для домохозяйства, за которым вы наблюдаете (см. Соглашение об именах ввода-вывода Adafruit)",
"aio_location_prefix": "Префикс ключа ввода-вывода Adafruit для местоположения этого конкретного монитора Enviro. Используйте «indoor» для внутреннего монитора или «outdoor» для наружного монитора. (см. Соглашение об именах Adafruit IO)",
«aio_package»: установлено значение «Премиум плюс», «Премиум плюс шум», «Премиум», «Премиум шум», «Базовый воздух» или «Базовый комбо».
Вам понадобится учетная запись Adafruit IO+, чтобы использовать пакеты «Premium Plus», «Premium Plus Noise», «Premium» или «Premium Noise», а также монитор Enviro Monitor Indoor Plus (оснащенный датчиком SGP30 eCO2/TVOC) для « Пакеты «Премиум Плюс» или «Премиум Плюс Шум» (см. Пакеты Adafruit IO)»,
Скрипт настраивает каналы ввода-вывода Adafruit Enviro Monitor, информационные панели и блоки, как в этом примере.
Сценарий может настроить несколько домохозяйств и местоположений за один запуск, заполняя словарь aio_feed_prefix необходимыми данными. Формат aio_feed_prefix:
aio_feed_prefix = {'Имя домохозяйства 1': {'key': 'household1key', 'package': 'aio_package', 'locations': {'Location1Name': 'location1key', 'Location2Name': 'location2key'}, 'visibility ': 'public' или 'private'}, 'Имя семьи 2': {'key': 'household2key', 'package': 'aio_package', 'locations': {'Location1Name': 'location1key'}, 'visibility': 'public' или 'private'}}
Домашние имена и домашние ключи должны соответствовать именам, определенным в файлах config.json соответствующих мониторов Enviro.
Например, если у вас есть только один монитор Enviro для вашей семьи и вы установили для параметра «aio_household_prefix» значение «home», для «aio_location_prefix» значение «outdoor» и для «aio_package» значение «Premium» в файле config.json для этот Enviro Monitor, и если вы хотите, чтобы каналы, информационные панели и блоки были настроены с частной видимостью:
aio_feed_prefix = {'Home': {'key': 'home', 'package': Premium', 'locations': {'Outdoor': 'outdoor'}, 'visibility': 'private'}}
Если у вас есть два монитора Enviro для вашего дома, и если в файлах config.json для параметра «aio_household_prefix» установлено значение «home» для обоих мониторов Enviro, для параметра «aio_location_prefix» установлено значение «outdoor» для наружного монитора и «indoor» для для вашего внутреннего монитора, установите для «aio_package» значение «Premium» для наружного монитора и «Premium Plus» для внутреннего монитора, а если вам нужны каналы, информационные панели и блоки, установленные с публичной видимостью:
aio_feed_prefix = {'Home': {'key': 'home', 'package': Premium Plus', 'locations': {'Outdoor': 'outdoor', 'Indoor': 'indoor'}, 'visibility': 'публичный'}}
Два других определяемых пользователем словаря — это aio_user_name и aio_key. Они должны быть заполнены тем же именем пользователя и ключом, которые вы использовали в файле config.json вашего Enviro Monitor.
aio_user_name = "Ваше имя пользователя Adafruit IO"
aio_key = "Ваш ключ ввода-вывода Adafruit"
Если этот параметр включен, обновления ленты Adafruit IO генерируются каждые 10 минут. Переменные aio_feed_window и aio_feed_sequence файла конфигурации используются для минимизации ошибок регулирования ввода-вывода Adafruit при сборе каналов с нескольких мониторов Enviro. Переменная aio_feed_window может иметь значение от 0 до 9, чтобы задать время начала одноминутного окна обновления канала. 0 открывает окно в 0, 10, 20, 30, 40 и 50 минут после часа, 1 открывает окно в 1, 11, 21, 31, 41 и 51 минуту после часа, 2 открывает окно в 2, 12, 22, 32, 42 и 52 минуты часа и так далее. Переменная aio_feed_sequence может иметь значение от 0 до 3, чтобы установить время начала обновления канала в течение одной минуты. 0 запускает обновление ленты сразу после открытия окна, 1 задерживает старт на 15 секунд, 2 на 30 секунд и 3 на 45 секунд.
Соглашение об именах для каждого канала, информационной панели или блока Adafruit IO Enviro Monitor заключается в использовании имени домохозяйства, за которым следует местоположение соответствующего местоположения Enviro Monitor внутри этого домохозяйства, в качестве префикса для каждого канала, информационной панели или блока. Вы выбираете подходящее имя для «aio_household_prefix», а «aio_location_prefix» может быть «внутренним» или «наружным». Например, если для параметра «aio_household_prefix» установлено значение «home», а для «aio_location_prefix» — значение «outdoor», префикс имени каждого канала будет установлен как «Home Outdoor», а префикс ключа каждого канала — «home-outdoor-». Подача температуры будет иметь название «Температура дома на улице» и ключ «Температура дома на улице». Приборная панель будет иметь название «Домой» и кнопку «Домой», а также указатель температуры. Блок на этой панели будет иметь имя «Датчик наружной температуры» и ключ «Датчик наружной температуры».
Доступны шесть вариантов пакета Adafruit IO: «Премиум» с 14 потоками данных на Enviro, «Премиум-шум» с 17 потоками данных на Enviro, «Премиум Плюс» с 16 потоками данных на Enviro (т. е. добавление eCO2 и TVOC через дополнительную опцию). датчик SGP30), «Premium Plus Noise» с 19 потоками данных на Enviro, для которых требуется учетная запись Adafruit IO+; «Basic Air» с 5 потоками данных о качестве воздуха (уровень качества воздуха, текст о качестве воздуха, PM1, PM2,5 и PM10) и «Basic Combo» с 5 потоками данных о качестве воздуха/климате (уровень качества воздуха, значок прогноза погоды, температура, Влажность и давление воздуха).
Для использования пакетов Adafruit IO «Premium Noise» и «Premium Plus Noise» необходимо настроить и включить измерения шума в Enviro, используя соответствующие инструкции по настройке. В версии 6.5 изменены каналы шума и информационные панели, чтобы отображать максимальный, минимальный и средний уровни шума между обновлениями каналов, тогда как предыдущие версии отображали только максимальные уровни шума между обновлениями каналов.
Этот проект лицензируется по лицензии MIT — подробности см. в файле LICENSE.md.
Прогноз погоды на основе www.worldstormcentral.co/law_of_storms/secret_law_of_storms.html Р. Дж. Эллиса.