Баг wb-mrgbw-d, встает в черный

Здесь по сути проблема скорее всего в самом правиле.
Наблюдается ли у вас данный эффект при изменении цвета через команды:

mosquitto_pub -t "/devices/wb-mrgbw-d_161/controls/RGB/on" -m "255;0;0"
mosquitto_pub -t "/devices/wb-mrgbw-d_161/controls/RGB/on" -m "0;255;0"

Не совсем ясно, какой функционал вы пытаетесь реализовать через данное правило. Чем не устраивает стандартный виджет?

1 лайк

Это нужно для того чтобы было реализовано виртуальное устройство с функциями: гирлянды, включения разных лент в различные цвета, а так же для выбора одноименного цвета(два диммера), несколько блоков питания для разных лент и управления голосом через Яндекс виртуальным устройством. До обновления на “Release name wb-2304 stable” все работало идеально. Давайте пожалуйста разберемся с правилом.Правило упростили до 1 диммера и выбора цвета, простое для чтения и из “коробки” должно работать. Возможно это баг.

mosquitto_pub -t "/devices/wb-mrgbw-d_161/controls/RGB/on" -m "255;0;0"
mosquitto_pub -t "/devices/wb-mrgbw-d_161/controls/RGB/on" -m "0;255;0"

Вот так работает.

Подскажите, какой у вас был релиз до обновления на wb-2304? А также версию контроллера.

К сожалению не помню. Wb rules были примерно 1.7. Wirenboard 6

Крайний раз обновлял примерно : февраль 2021

Добрый день, данных которые я предоставил достаточно?

Михаил помогите пожалуйста, из за этой проблемы испытываем трудности в использование “умного дома”.

Если устройство работает корректно, то с очень большой вероятностью проблема в правиле.
По вашему утверждению, что правило работало корректно на wb-rules 1.7 и Wirenboard 6, пока что не получилось воспроизвести.
Попробуйте пока что перед

dev['light_RGB/Цвет над телевизором'] = newValue;

добавить

log.info("записываем в топик light_RGB/Цвет над телевизором значение", newValue, "типа", typeof(newValue)  );

и посмотреть, что по сути передается устройству.

2023-08-04 13:17:08Цвет над телевизором_1 255;0;0
2023-08-04 13:17:08Цвет над телевизором_2 255;0;0
2023-08-04 13:17:12Цвет над телевизором_1 0;255;0
2023-08-04 13:17:12Цвет над телевизором_2 0;255;0
2023-08-04 13:17:12записываем в топик light_RGB/Цвет над телевизором значение 0;0;0 типа string
2023-08-04 13:17:12Цвет над телевизором_1 0;0;0
2023-08-04 13:17:12Цвет над телевизором_3 0;0;0
2023-08-04 13:17:12записываем в топик light_RGB/Цвет над телевизором значение 0;0;0 типа string

Михаил выше лог, в том виде как Вы просили. Можно пример правила для создания виртуального устройства, которое управляет RGB (в Вашей вики этого нет, либо мы не увидели)?

Михаил добрый день. Вы не забыли про нас?

Кто то может помочь с вопросом? По факту обновили и перестало работать.

Я в логе вижу запись “0;0;0” При записи в устройство строки с нулями я ожидаю что все каналы будут иметь “0”, то есть выключены.
То есть поведение вполне логично.
Возможно - я не совсем понимаю саму проблему?

Проблема такая. Есть виртуальное устройство, оно управляет физическим rgb. При выборе цвета , к примеру с 255.0.0 на 0.0.255 включится черный цвет 0 0 0. Я подозреваю проблема в том , что 0 устанавливается по очереди на канал.

Как вариант, покажите пример виртуального устройства для управления wb rgb

Я не настоящий программист, прошу простить за корявый код:

//08_08_test_01.js
log.info("script 08_08_test_01.js started")
//#setInterval(function(){
//#  log("wb-mrgbw-d-fw3_189/RGB Palette is {}".format(dev["wb-mrgbw-d-fw3_189/RGB Palette"]))
//#}, 1000)

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.info("Контрола нет, создаем.")
      getDevice(vdName).addControl(nameControl, typeControl);
    }
 
}

makeNewVirtualControl("Temp_RGB", "test1", {type: "rgb", value: "#FFFFFF", readonly: false});

defineRule("Foo RGB conrol", {
  whenChanged: 'Temp_RGB/test1',
  then: function(value) {
    log.info("Temp_RGB/test1", value)
    dev["wb-mrgbw-d-fw3_189/RGB Palette"] = value;
  }
})

И да, кстати: Совместимость скриптов при обновлении wb-rules — Wiren Board

Спасибо, проверим отпишусь!

Я, кстати, так и не понял вашего скрипта, к сожалению. Какие-то сравнения строк, неявные преобразования… Я бы просто разобрал рекурсивно строку и менял бы значения индивидуально…

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.