Проброс в интеграцию с Алисой датчиков

Настроил интеграцию с Алисой, и стал вопрос пробросить состояние протечки. Есть модуль WB-MWAC на нем 3 датчика протечки проводных и один датчик Zigbee Aqara WL-S02D
контрол протечка и контролы F1-3 в MWAC - true/false, у zigbee датчика тоже:

{
“battery”: 100,
“battery_low”: false, - Сигнал о низком заряде
“device_temperature”: 25,
“last_seen”: 1778653425321,
“linkquality”: 14,
“power_outage_count”: 6,
“state”: “OFF”,
“tamper”: false,
“voltage”: 3115,
“water_leak”: false - Сигнал протечки
}

Изучив Интеграция контроллера Wiren Board в Дом с Алисой — Wiren Board и devices.types.sensor.water_leak | Платформа умного дома Яндекса
понял что в интеграции надо создать датчики и им передать свойства:
devices.properties.event - battery_level
devices.properties.event - water_leak
devices.properties.float - battery_level
Для MWAC только devices.properties.event - water_leak

С devices.properties.float - battery_level вопроса не возникло. А вот с event - water_leak/battery_level пока нет понимания как правильно передавать.

  1. если у нас контрол true/false в Интеграция контроллера Wiren Board в Дом с Алисой — Wiren Board написано, что передаем просто один и тот же контрол с разними значениями:
    value = dry — нет протечки;
    value = leak — протечка?
    В таком случае как это работает? Контрол ведь передает true/false при этом он одновременно мапится и на dry и на leak?
  2. по battery_level в Яндексе заявлено low — низкий/normal — нормальный, в документации WB тоже: low — низкий/normal — нормальный. При этом в интерфейса Интеграции Алисы 3 значения:

Это ошибка или для чего то это надо?

Здравствуйте!

Уточню документацию и дам вам ответ.

Добрый день!

Для water_leak в MQTT не нужно передавать строки dry и leak. Контрол может оставаться булевым: true/false.

В настройках интеграции нужно выбрать:

devices.properties.eventinstance = water_leakvalue = leak

и указать соответствующий контрол протечки.

В этом случае интеграция сама интерпретирует значения так:

true  → leakfalse → dry

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

Для WB-MWAC можно создать отдельные датчики протечки для нужных контролов, например Leak, F1, F2, F3, и для каждого указать:

property = devices.properties.eventinstance = water_leakvalue = leak

Для Zigbee-датчика Aqara WL-S02D аналогично: если water_leak = true означает протечку, указывайте value = leak.

По battery_level: для Яндекса используются значения:

lownormal

Если в интерфейсе отображается третье значение, для battery_level его использовать не нужно. Для Zigbee-датчика обычно достаточно передать:

devices.properties.float / battery_level

от контрола battery, а также при необходимости:

devices.properties.event / battery_level / low

от контрола battery_low.

То есть battery_low = true будет означать низкий заряд. Для normal отдельная настройка обычно не требуется, если нет задачи явно передавать событие восстановления нормального уровня заряда.

На странице Интеграция контроллера Wiren Board в Дом с Алисой — Wiren Board в разделе Особенности реализации события open, описана похожая ситуация про событие open.
И там как раз если у нас один контрол с true/false то передается и то и то.

Ну либо там не четко описан подход. но тогда если не нужно передавать событие для случая false, не понятно зачем тогда у яндекса есть dry, normal, close - какая то запутанная логика и подход.

Ясности пока не появилось((((

Тогда зачем оно там? это ошибка или фича?

Добрый день!

Cобытия open, motion и water_leak — особые, им не требуется несколько топиков. Они могут менять своё значение на основе данных одного топика.

Один датчик, который передает в mqtt топик состояние контактов замкнуто/разомкнуто. Значения true, on, любое число > 0 — активируют выбранное значение события (например, Открыто), значения false, off, 0 — активируют противоположное значение события (например, Закрыто).
То есть в конфигураторе вы выбираете одно значение (leak), а второе (dry) подставляется автоматически как противоположное. Никакого двойного маппинга не нужно, интеграция сама подставляет: раз true = leak, то false = dry.

Третье значение battery_level в интерфейсе зарезервировано для устройств, которые смогут различать три вида состояния заряда.

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

и для aqara

На счет “Третье значение battery_level в интерфейсе зарезервировано для устройств, которые смогут различать три вида состояния заряда.” - Сам УДЯ у себя описывает только 2 возможных значение, а вот уровень воды water_level имеет три состояния, но full там нет.

Спасибо! В целом понял принцип работы с событиями open, motion и water_leak и как я понял battery_level из того же списка. Проверю battery_level на отдельных топиках из ВУ.

В целом слабо описано на стороне WB интеграция, многое интуитивно понятно, но нет подробностей, нюансов, примеров.