Виртуальное устройство для zigbee штор

У меня есть zigbee карнизы Lilistore TS0601_lilistore, подключены через модуль WBE2R-R-ZIGBEE. В интерфейсе Zigbee2MQTT выглядят вот так:

В mqtt публикую следующие топики

Я создал для управления в UI и проброса в Алису виртуальное устройство:

Через UI цель управлять позицией (так же ее пробросит в Алису), иметь “switch” открыть/закрыть (так же его пробросит в Алису как on_off), иметь “switch” с возвратом остановки штор, иметь “enum” для установки состояния Открыть/Закрыть/Стоп.
Для этого я сделал несколько правил:

Но есть нюансы в работе правил:

  1. “enum” не устанавливается дефолтное, выглядит пустым значением. Как сделать, так что бы при запуске ВУ значение в “enum” устанавливалось из соответствующего топика?
  2. когда я устанавливаю “enum” в какое то из значений штора начинает ездить то туда то сюда и в самом значении “enum” меняется постоянно значение. Что надо добавить в правило, что бы избежать подобного зацикливания?

Я хотел обеспечить, что бы если в Zigbee2MQTT изменить какое то из значений как позиции так и состояния, то оно отразилось в UI, и если в UI я изменил позицию или состояние, то в Zigbee2MQTT выставились соответствующие значения.

Подскажите, где не верно в правиле код написан и что надо добавить?

Добрый день.

Для проверки делаю:

log.info("Start value + enum")

function makeNewVirtualControl(vdName, nameControl, typeControl){
  log.info("GetDevice", getDevice("vdName"))
  if (getDevice(vdName) === undefined) {
    log.info("Define new")
    defineVirtualDevice(vdName, {
      title: vdName,
      cells: {},
    })
  }
   //Тут проверим есть ли уже контрол и если нет - создадим.
  if (!getDevice(vdName).isControlExists(nameControl)) {
    log.debug("Контрола "+nameControl+" нет, создаем.")
    getDevice(vdName).addControl(nameControl, typeControl);
  }
}





var VDEV_NAME = "myEnumDevice";
var CTRL_NAME = "mode";
var CTRL_NAME_RO = "modeRO";
var CTRL_NAME_TEXT = "modeTEXT";

log.info("Define new {} control", CTRL_NAME);
makeNewVirtualControl(VDEV_NAME, CTRL_NAME, {
  type: "value",
  value: 0,
  readonly: false,
  enum: {
    0: { en: 'off', ru: 'Выкл' },
    1: { en: 'Auto', ru: 'Авто' },
    2: { en: 'Manual', ru: 'Ручной' }
  }
});

log.info("Define new {} control", CTRL_NAME_TEXT);
makeNewVirtualControl(VDEV_NAME, CTRL_NAME_TEXT, {
  type: "text",
  value: "off",
  readonly: false,
  enum: {
    "off": { en: 'off', ru: 'Выкл' },
    "Auto": { en: 'Auto', ru: 'Авто' },
    "Manual": { en: 'Manual', ru: 'Ручной' }
  }
});
 

Получаю установленное “off”:

/devices/myEnumDevice/controls/modeTEXT/meta {"enum":{"Auto":{"en":"Auto","ru":"Авто"},"Manual":{"en":"Manual","ru":"Ручной"},"off":{"en":"off","ru":"Выкл"}},"order":2,"readonly":false,"type":"text"}
/devices/myEnumDevice/controls/modeTEXT off

То есть в значение попадает то, что задано в value: "off",

Типично перед установкой какого-то значения предварительно проверяю - нужно ли его менять. То есть перед dev = сравниваю устанавливаемое значение с новым если они (уже) равны - то не меняю.

Ну и рекомендую конвертор wb-mqtt-zigbee - избавляет от лишних publish и типы значений сразу дает верные.

Я когда узнал о wb-mqtt-zigbee сразу и хотел его поставить, даже снес старый конвертер, но он только в тестинге. Если его можно как то накатить на стейбл без перехода на тестинг, был бы признателен если подскажете как?

Посмотрел:

apt policy wb-mqtt-zigbee
wb-mqtt-zigbee:
  Installed: (none)
  Candidate: 1.4.1
  Version table:
     1.4.1 1010
       1010 http://deb.wirenboard.com/wb8/bullseye testing/main arm64 Packages
       1010 http://deb.wirenboard.com/wb8/bullseye testing/main armhf Packages
root@wirenboard-AYK5U4TB:~# apt-cache depends wb-mqtt-zigbee
wb-mqtt-zigbee
  Depends: <python3:any>
    python3:armhf
    python3
  Depends: python3-wb-common
  Conflicts: wb-zigbee2mqtt

Из зависимостей только python3-wb-common который и stable есть.

Пробовал удалять wb-zigbee2mqtt и ставить wb-mqtt-zigbee

sudo apt purge -y wb-zigbee2mqtt
sudo systemctl restart wb-rules
apt update && apt install wb-mqtt-zigbee

получал ошибку E: Unable to locate package wb-mqtt-zigbee

Только подключать репозиторий testing или ставить из файла. В stable его нет.