Home Assistant

Подключение BME280 к Orange Pi PC Plus

Подключение BME280 к Orange Pi PC Plus

У меня есть датчик BME280 с помощью которого можно измерять температуру, влажность и атмосферное давление. И так как сервер Home Assistant собранный на Orange Pi PC Plus находится у меня в одной из комнат квартиры было бы целесообразно подключить датчик BME280 к Orange Pi PC Plus через I2C интерфейс. К сожалению разработчики Home Assistant летом 2022 года решили отказаться от GPIO (General Purpose Input Output — интерфейс ввода/вывода общего назначения). Пишут, что использование интеграций через GPIO устарело и удалено начиная с версии 2022.6.Х, подробно тут. 


Подключаем BME280 к Orange Pi PC Plus


Поддержка шины I2C в Armbian

Так как сервер Home Assistant установлен на Orange Pi PC Plus с установленым на него Armbian для активации поддержки шины I2C нужно зайти в утилиту конфигурации.

Если нет прямого доступа к консоли, то подключаемся с помощью терминального клиента по SSH. Для подключения я пользуюсь программой Putty. В терминале вводим команду

armbian-config

В утилите :

  • выбираем Hardware затем жмем Ok
  • выбираем пункт System затем жмем Ok
  • ставим звездочку напротив i2c0
  • ставим звездочку напротив i2c1
  • ставим звездочку напротив i2c2
  • нажимаем Save и затем Back
  • В выпавшем окне жмем Reboot

Ждем пока система перезагрузится с новыми установленными програмными модулями.

Заходим в консоль и проверяем загрузку модулей GPIO

lsmod | grep gpio

Устанавливаем утилиты I2C

sudo apt-get install -y i2c-tools

Смотрим доступные шины

i2cdetect -l

Смотрим адреса устройств на шине 1

sudo i2cdetect -y 1


MQTT и MQTT-IO

Устанавливаем MQTT брокер Mosquitto по этой инструкции.

Далее устанавливаем дополнение MQTT-IO, тоже в терминале:

  • зайти под пользователем homeassistant
  • активировать виртуальное окружение homeassistant
  • выполнить команду установки MQTT-IO
sudo -u homeassistant -H -s
source /srv/homeassistant/bin/activate
python3 -m pip install mqtt-io

Создаем конфигурационный файл MQTT-IO 

 sudo nano /home/homeassistant/.homeassistant/mqtt-io.yml

Записываем в него следующие строки

mqtt:
  host: localhost
  port: 1883
  user: !secret mqtt_login
  password: !secret mqtt_password
  protocol: 3.1
  topic_prefix: home_mqii-io
  client_id: home_mqtt-io
  ha_discovery:
    enabled: yes

sensor_modules:
  - name: BME280_sensor
    module: bme280
    i2c_bus_num: 1
    chip_addr: 0x76

sensor_inputs:
  - name: BME280_pressure
    module: BME280_sensor
    interval: 120
    digits: 1
    type: pressure

Закрываем текстовой редактор “Ctrl-X”, подтверждаем сохранение “Y” и жмем Enter.

Запускаем дополнение MQTT-IO

/srv/homeassistant/bin/python3 -m mqtt_io /home/homeassistant/.homeassistant/mqtt-io.yml

Видим что модуль запустился, подключился к брокеру MQTT и считал данные с датчика.

Останавливаем запущенный процесс нажатием комбинации клавиш “Ctrl-Z”

Выходим из учетной записи пользователя homeassistant

exit

Создаем файл для запуска сервиса при старте системы:

sudo nano /etc/systemd/system/home-assistant@mqtt-io.service

Вставляем в него следующие строки:

[Unit]
Description=MQTT-IO
After=mosquitto.service

[Service]
Type=simple
User=homeassistant
ExecStart=/srv/homeassistant/bin/python3 -m mqtt_io /home/homeassistant/.homeassistant/mqtt-io.yml
RestartForceExitStatus=100
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

Закрываем текстовой редактор “Ctrl-X”, подтверждаем сохранение “Y” и жмем Enter.

Включаем MQTT-IO в качестве сервиса::

sudo systemctl --system daemon-reload
sudo systemctl enable home-assistant@mqtt-io
sudo systemctl start home-assistant@mqtt-io

Проверяем работу

sudo systemctl status home-assistant@mqtt-io.service

:


Добавляем датчик на панель Home Assistant

В Home Assistant идем в Настройки -> Устройства и службы. Находим карточку с интеграцией MQTT

Кликаем по надписи “1 устройство” и на следующей странице находим карточку “Сенсоры” и жмем там “Добавить на панель”

В новом окне подтверждаем свой выбор нажав на надпись “Добавить на панель”

Датчик давления сенсора BME280 добавлен на панель


hPa преобразуем в mmHg

Данные об атмосферном давлении поступают в гектопаскалях (hPa)  но мне привычней когда данные указываются в миллиметрах ртутного столба (mmHg).

Если нет прямого доступа к консоли, то подключаемся по SSH. Открываем файл configuration.yaml :

sudo nano /home/homeassistant/.homeassistant/configuration.yaml

Добавляем в него такую строчку

sensor: !include_dir_merge_list include/sensors

Перемещаемся в домашнюю директорию Home Assistant в папку “include”

cd /home/homeassistant/.homeassistant/include/

Создаем папку “sensors”

sudo mkdir sensors

В папке “sensors” создадим текстовой документ “pressure.yaml”

 sudo nano /home/homeassistant/.homeassistant/include/sensors/pressure.yaml

В который вставим такие строки

- platform: template
  sensors:
    pressure_cal:
      value_template: "{{ '%.1f' | format(states('sensor.bme280_pressure') | float * 0.75006375541921) }}"
      unit_of_measurement: mmHg
      availability_template: "{{ states('sensor.bme280_pressure') not in ['unavailable', 'unknown', 'none'] }}"

Закрываем текстовой редактор “Ctrl-X”, подтверждаем сохранение “Y” и жмем Enter.

Перезагружаем Home Assistant


Добавляем сенсор на панель “Обзор”

  • В Home Assistant  идем на вкладку “Обзор”
  • В правом верхнем углу кликаем по трем точкам и далее жмем “Изменить панель”
  • В правом нижнем углу нажимаем “Добавить карточку”
  • Находим карточку “Объект” и жмем на нее
  • в выпавшем окне слева вверху в поле обьект выбираем объект “pressure_cal”
  • Подтверждаем картоку нажав справа внизу “сохранить”
  • На панеле справа вверху жмем “Готово”

Карточка с данными атмосферного давления в миллиметрах ртутного столба теперь на панеле в Home Assistant.