Предполагается, что значение по умолчанию поля writeable равно false (кроме типов switch, pushbutton и range - для них true). Но в любом случае для однозначности в своих скриптах лучше явно указывать это поле, чтобы избежать неопределённости.
Сейчас к релизу готовится версия 2.2.3 - в ней будет поправлено ещё некоторые неоднозначныые моменты в этом месте.
Была 2.2.1. После апдейта до 2.2.2 сразу заработало, но вчера заметил что баг начал воспроизводится опять (перед этим выключал всю систему физически).
Оно перезаписывается из одного единственного правила, отрабатывает правильно и есть в логе значительно позже.
Тоесть ошибка точно не в правилах или их логике. (работало стабильно до апдейта на 2.2)
Что можно попробовать?
Есть ли в джвижке 2.2.2 какая-то особенность, типа например switch понимает только true/false. Как правильно мне присвоить значение контролу и поменять значение канала и общего RGB?
Посмотрел логи:
Apr 16 14:28:02 wirenboard-A3PW5UD7 daemon.info wb-rules[2194]: ERROR: control A4-MRGBW-D/RGB SetValue() error: This control is not writable
Подскажите как правильно сделать, не перебором же искать причину.
это баг, исправление планируется. Пока рекомендую откатиться на версию 1.7.
P.S. тема явно выбрана неправильно. Лучше всего создавать новую тему. Перенёс в другое место.
Как правильно откатиться? Не нашел, наверно нужно в топе указать как оперативно восстановить после случайного апдейта полуфабриката.
Выполнил:
apt update
apt install wb-rules-system=1.6.3
После обратил внимание что девайс Buzzzer имеет определенные не активные поля. Switch можно включить, но вот выключить уже не удается. Сколько таких подснежников остается только гадать.
Какая версия у меня все таки стоит? ниже лог. Жирным выделил две команды которые нашел в разных частях ветки.
соответсвенно запускается процедура dimLight, по окончании которой wb-rules бесследно умирает.
Помогает только через shell: service wb-rules restart
Сейчас пробую откатиться на предыдущие версии и выяснить где еще работает.
UPD: Пришлось откатиться аж до 1.7.1, только там заработало все как было раньше.
Могу предоставить код и конфигурацию системы для анализа.
P.S. Для того чтобы проверить список доступных версий пакета в терминале выполняем:
apt-get update
apt-cache policy wb-rules
Покажет все вресии пакета, выбираем нужную и командой apt install wb-rules=[нужная версия пакета] (например apt install wb-rules=2.2.0) устанавливаем пакет.
обновился на новую версию 20200217 - перестали работать все скрипты((
dpkg -s wb-rules Version: 2.3.1, какой был - не знаю.
в логе пусто, ошибок нет.
пример скрипта:
// Включение / выключение правила выключателем на панели Devices
// Создаём виртуальное устройство - выключатель
defineVirtualDevice("upravl_obogrev", {
title: "Upravl obogrev",
cells: {
enabled: {
type: "switch",
value: false
},
}
});
defineRule("heater_control", { //название правила - "контроль обогревателя"
whenChanged: "wb-msw-v3_21/Temperature", //при изменении состояния датчика wb-msw-v3_21
then: function(newValue, devName, cellName) { //выполняй следующие действия
if (dev.upravl_obogrev.enabled) { // если вируальн. устр-во simple_test в положении enabled
if ( newValue < 18) { //если температура датчика меньше xx градусов
dev["wb-mr3_15"]["K1"] = 1; //установи K1 модуля wb-mr3 с адресом 15 в состояние "включено"
} else { // иначе
if ( newValue > 19) { //если температура датчика больше xx градусов
dev["wb-mr3_15"]["K1"] = 0; //установи K1 модуля wb-mr3 с адресом 15 в состояние "выключено"
}
}
}
}
});