Датчик давления в Home Assistant через Zigbee2MQTT: настройка единиц измерения pressure, bar и kPa

Практическое руководство по настройке единиц измерения давления (pressure, bar, kPa, hPa) в Home Assistant при работе с Zigbee2MQTT. Разбираем конвертацию, типичные ошибки, шаблонные сенсоры и автоматизации.
Когда в умном доме появляется датчик давления — будь то барометр для метеостанции, датчик в системе полива или манометр в компрессорной установке — рано или поздно встаёт вопрос единиц измерения. Zigbee2MQTT по умолчанию отдаёт давление в гектопаскалях (hPa), Home Assistant с радостью это принимает, но что если ваше устройство говорит в bar, а вы хотите видеть kPa? Или наоборот — датчик шлёт kPa, а автоматизация ждёт psi?
Эта статья — практическое руководство по настройке единиц измерения давления в Home Assistant при работе через Zigbee2MQTT. Разберём, как устроена передача данных, где именно происходит конвертация и как заставить систему показывать ровно те единицы, которые нужны вам.
Почему вообще возникает проблема с единицами давления
Zigbee2MQTT — это мост между Zigbee-устройствами и MQTT-брокером. Он получает сырые данные от датчика и публикует их в топик в JSON-формате. Для датчиков давления в большинстве случаев это выглядит так:
{
"pressure": 1013.25,
"linkquality": 120,
"battery": 87
}
Вопрос: в каких единицах приходит это число? Ответ зависит от конкретного устройства и его прошивки. Большинство Zigbee-датчиков давления (например, Aqara, Tuya, Xiaomi) передают давление в гектопаскалях (hPa), потому что это стандарт для метеорологических датчиков. Но есть устройства, которые шлют kPa, bar или даже psi.
Home Assistant, в свою очередь, имеет собственную систему единиц измерения. Для давления в настройках профиля пользователя можно выбрать одну из единиц: hPa, kPa, bar, psi, mmHg, inHg. Но вот незадача: если датчик шлёт значение в одних единицах, а HA считает, что это другие — данные будут отображаться некорректно.
Как Zigbee2MQTT сообщает о единицах измерения
Zigbee2MQTT — довольно умный мост. Для многих устройств он знает, в каких единицах датчик передаёт данные, и включает эту информацию в описание. Посмотрите на атрибуты устройства в Zigbee2MQTT — там будет указано unit: "hPa" или аналогично.
Но есть нюанс: Zigbee2MQTT не всегда конвертирует единицы. Он просто передаёт то, что получил от датчика, и сообщает, в каких единицах это пришло. Конвертация — задача Home Assistant.
Настройка единиц измерения в Home Assistant
Шаг 1: Проверяем, что видит Home Assistant
Первым делом зайдите в Home Assistant → Настройки → Устройства и службы → найдите ваше Zigbee-устройство через интеграцию Zigbee2MQTT. Откройте сущность sensor.*_pressure и посмотрите на атрибуты.
Если вы видите что-то вроде:
unit_of_measurement: "hPa"
device_class: "pressure"
state_class: "measurement"
Значит, HA получил от Zigbee2MQTT данные с пометкой, что это гектопаскали. Всё хорошо, и можно переходить к настройке отображения.
Шаг 2: Меняем единицы через профиль пользователя
Самый простой способ — изменить единицы измерения в профиле. Зайдите в Настройки → Профиль пользователя → раздел Единицы измерения. Там вы найдёте выпадающий список для давления.
Выбрав, скажем, kPa, вы измените единицы для всех датчиков давления в системе. Home Assistant автоматически сконвертирует значения из исходных единиц в выбранные.
Это удобно, когда у вас один-два датчика и вы хотите единообразия. Но если датчиков несколько и они работают в разных диапазонах (один — барометр, другой — давление в трубах), глобальная настройка может не подойти.
Шаг 3: Индивидуальная настройка через карточку или шаблон
Для индивидуальной настройки конкретного датчика используйте Шаблонные сенсоры (Template Sensor). Это позволяет создать новую сущность, которая будет конвертировать значение из исходного в нужное вам.
Пример: у вас датчик давления воды, который через Zigbee2MQTT отдаёт значение в bar, но вы хотите видеть kPa.
template:
- sensor:
- name: "Water Pressure kPa"
unique_id: water_pressure_kpa
unit_of_measurement: "kPa"
device_class: "pressure"
state_class: "measurement"
state: >
{% set pressure_bar = states('sensor.water_pressure') | float %}
{{ (pressure_bar * 100) | round(1) }}
Здесь мы берём значение из исходного сенсора (в bar), умножаем на 100 и получаем kPa. Обратите внимание на фильтр round(1) — он округляет результат до одного знака после запятой, чтобы избежать «мусорных» цифр.
Аналогично можно конвертировать в любые другие единицы:
- bar → kPa: умножить на 100
- kPa → bar: разделить на 100
- hPa → kPa: разделить на 10
- psi → kPa: умножить на 6.89476
- mmHg → kPa: умножить на 0.133322
Шаг 4: Использование фильтров в Zigbee2MQTT
Zigbee2MQTT поддерживает настройку homeassistant в конфигурации, которая позволяет переопределять единицы измерения для конкретного устройства. Это делается через файл configuration.yaml Zigbee2MQTT.
Откройте конфигурацию Zigbee2MQTT (обычно это /opt/zigbee2mqtt/data/configuration.yaml или путь, который вы указали при установке) и найдите секцию device_options или добавьте её:
device_options:
'0x00158d0003a12345':
homeassistant:
pressure:
unit_of_measurement: "kPa"
Здесь 0x00158d0003a12345 — это IEEE-адрес вашего устройства (его можно найти в веб-интерфейсе Zigbee2MQTT). После изменения конфигурации перезапустите Zigbee2MQTT:
sudo systemctl restart zigbee2mqtt
После этого Home Assistant должен увидеть сущность с новыми единицами. Но будьте осторожны: если устройство реально передаёт hPa, а вы укажете kPa, HA будет интерпретировать сырые данные как kPa, и значение станет неверным (в 10 раз меньше реального).
Типичные ошибки и как их избежать
Ошибка 1: Путаница между hPa и kPa
Самая частая ошибка. Многие датчики Aqara передают давление в hPa, но в характеристиках на коробке указано kPa. В результате Home Assistant показывает значение 101.3 вместо 1013. Если вы видите подозрительно маленькое или большое число — проверьте исходные единицы.
Как проверить: откройте веб-интерфейс Zigbee2MQTT, найдите устройство и посмотрите на «сырое» значение в топике MQTT. Сравните с реальным атмосферным давлением в вашем регионе (можно посмотреть на любом метеосайте). Если значение совпадает с реальным — единицы верны.
Ошибка 2: Глобальная настройка единиц ломает другие датчики
Если у вас есть барометр (hPa) и датчик давления воды (bar), а вы выставили в профиле kPa — барометр будет показывать 101.3 kPa (что корректно), а датчик воды — значение, умноженное на 100 (что, скорее всего, неверно). Решение — использовать шаблонные сенсоры для каждого датчика отдельно, а глобальную настройку оставить по умолчанию.
Ошибка 3: Неверная конвертация в шаблоне
При создании шаблонного сенсора легко ошибиться в коэффициенте. Всегда проверяйте:
- 1 bar = 100 kPa = 1000 hPa
- 1 kPa = 10 hPa
- 1 psi ≈ 6.895 kPa
- 1 mmHg ≈ 0.1333 kPa
Рекомендую сначала вычислить ожидаемое значение вручную, а потом сравнить с тем, что показывает шаблонный сенсор.
Ошибка 4: Забыли про device_class
Если не указать device_class: "pressure", Home Assistant не будет знать, что это давление, и не сможет корректно отображать графики и выполнять конвертации. Всегда указывайте device_class для датчиков давления.
Проверка результата
После настройки убедитесь, что всё работает корректно:
- Откройте Настройки → Устройства и службы → ваше устройство → сущность давления.
- Проверьте, что
unit_of_measurementсоответствует ожидаемому. - Сравните значение с реальным давлением (для барометра) или с эталонным манометром (для технических датчиков).
- Посмотрите график за несколько часов — он должен быть плавным, без скачков.
Для быстрой проверки можно использовать MQTT-инструменты. Подпишитесь на топик устройства:
mosquitto_sub -h localhost -t 'zigbee2mqtt/0x00158d0003a12345'
Вы увидите сырые данные, которые публикует Zigbee2MQTT. Сравните их с тем, что отображается в Home Assistant.
Автоматизации с учётом единиц
Когда единицы настроены, можно строить автоматизации. Например, предупреждение о падении давления в системе отопления:
automation:
- alias: "Low water pressure alert"
trigger:
- platform: numeric_state
entity_id: sensor.water_pressure_kpa
below: 150
condition:
- condition: state
entity_id: binary_sensor.water_leak
state: "off"
action:
- service: notify.mobile_app_phone
dаta:
title: "Внимание!"
message: "Давление в системе отопления упало ниже 150 kPa!"
Обратите внимание: в автоматизации мы используем уже сконвертированное значение в kPa, поэтому порог срабатывания указываем в тех же единицах.
Датчики давления и калибровка
Отдельная тема — калибровка. Zigbee-датчики давления, особенно дешёвые, могут иметь погрешность. Если вы заметили, что датчик стабильно показывает значение на несколько единиц выше или ниже реального, можно ввести поправку через шаблонный сенсор.
Пример: барометр показывает на 2 hPa больше реального. Создаём скорректированный сенсор:
template:
- sensor:
- name: "Pressure Corrected"
unique_id: pressure_corrected
unit_of_measurement: "hPa"
device_class: "pressure"
state_class: "measurement"
state: >
{% set raw = states('sensor.pressure_raw') | float %}
{{ (raw - 2) | round(1) }}
Этот подход особенно полезен, если вы используете датчик для метеостанции и хотите точных прогнозов.
Что делать, если Zigbee2MQTT не определяет единицы
Бывают ситуации, когда Zigbee2MQTT публикует значение без указания единиц. В этом случае Home Assistant может не создать сущность с device_class или создать её с неправильными единицами.
Решение — вручную переопределить через конфигурацию Zigbee2MQTT. В файле configuration.yaml добавьте:
external_converters:
- my_pressure_converter.js
И создайте файл конвертера my_pressure_converter.js в папке converters:
const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const e = exposes.presets;
const definition = {
zigbeeModel: ['TS0201'],
model: 'TS0201_pressure',
vendor: 'Tuya',
description: 'Pressure sensor with kPa units',
fromZigbee: [fz.tuya_pressure],
toZigbee: [],
exposes: [e.pressure()],
meta: {
tuyaDatapoints: [0x01],
tuyaValueConverter: (value) => value / 10 // конвертация в kPa
},
};
module.exports = definition;
Это уже продвинутый уровень, но он решает проблему, когда устройство нестандартное и Zigbee2MQTT не знает, как с ним работать.
Заключение
Настройка единиц измерения давления в Home Assistant через Zigbee2MQTT — задача несложная, но требует понимания того, откуда берутся данные и как они конвертируются. Главное — запомнить три правила:
- Всегда проверяйте исходные единицы — что реально передаёт датчик.
- Используйте глобальные настройки только для однотипных датчиков, для разнородных — шаблонные сенсоры.
- Указывайте
device_class: "pressure"— иначе Home Assistant не сможет корректно обрабатывать данные.
Правильно настроенные датчики давления — это не только красивые графики в дашборде, но и залог корректной работы автоматизаций. Представьте, что ваша автоматизация полива сработает при падении давления в системе, а из-за неверных единиц порог срабатывания окажется в 100 раз выше или ниже — и вы получите либо ложные тревоги, либо затопление.
Если вы только начинаете знакомство с Zigbee2MQTT и Home Assistant, рекомендую прочитать статьи про настройку координатора и выбор Zigbee-устройств. А если вы используете ESP32 для своих DIY-датчиков — возможно, вам будет интересен ESPHome, где единицы измерения настраиваются прямо в YAML-конфигурации.
Удачной настройки, и пусть ваши датчики всегда показывают правду!
Понравилась статья?
Поставьте лайк и сохраните полезный материал в закладки.
Home Assistant: А есть ли аналоги?
Xiaomi Miot Auto в Home Assistant: установка, настройка и подключение устройств Xiaomi
Sonoff Zigbee 3.0 USB Dongle Plus в Home Assistant: настройка ZHA и Zigbee2MQTT
LocalTuya. Перепрошивка розеток Tuya: Как отвязать розетку от облака.
Как устанавливать репозитории из GitHub в Home Assistant: HACS, custom_components и ручной способ
Matter и Thread в Home Assistant: новый стандарт умного дома 2024