Zigbee выключатель и whenChanged

Приветствую!
До обновления zigbee2mqtt этот код работал:

defineRule('controlSwitch', {
  whenChanged: 'zb-switch2/action',
  then: function (newValue, devName, cellName) {
    log(newValue);
    if(newValue == "2_single") {
      dev['wb-mr6c_209/K1'] = !dev['wb-mr6c_209/K1'];
    }
    dev['zb-switch2/action'] = "0";
  },
});

Теперь dev[‘zb-switch2/action’] = “0” не записывает значение в топик, и соответственно при повторном нажатии на кнопку whenChanged не срабатывает. Есть какие варианты без костыля в виде виртуального устройства?

Добрый день.

А что именно обновляли? Только и исключительно z2m?

Это не совсем корректно, поскольку вы присваиваете топику, судя по имени имеющему булев тип в качестве значения строку “0”.
С таким типом корректно будет работать присвоение false/
Ну и рекомендую переходить на новый конвертор - который не требует таких скриптов.

Перешел на новый конвертер. Новый конвертер много лучше того что было.

zb-switch2/action	text	/devices/zb-switch2/controls/action	
2_single

Выключатель(две клавиши) в action выдает значения: 1_single, 2_single, 1_double, 2_double

Очевидно что новый конвертер так-же требует костыля. Вот только старый костыль теперь не работает.

Работает, только надо publish() использовать. Поскольку сейчас driver конвертора не wb-rules - то правила в его топики писать напрямую не могут.

Добрый день,
Удалось ли решить вопрос?

Да решил. Может кому пригодится:

defineRule('controlSwitch', {
  whenChanged: 'zb-switch2/action',
  then: function (newValue, devName, cellName) {
    if(newValue == "2_single") {
      dev['wb-mr6c_209/K1'] = !dev['wb-mr6c_209/K1'];
    }
    publish("/devices/zb-switch2/controls/action", "null");
  },
});// */

Отлично! Рад, что все получилось!