Ollig
June 7, 2024, 2:47pm
1
Есть простое правило для кнопки переключателя
var table = "wb-mr6cv3_142/K2";
defineRule("live_room_table", {
when: function () {
return dev["wb-gpio/EXT1_IN13"];
},
then: function (newValue, devName, cellName) {
dev[table] = !dev[table]
}
})
В логах такая ошибка
ERROR: control wb-mr6cv3_142/K2 SetValue() error: can't convert control value 'true' (type bool) to datatype '0'
И второе правило
var bra = "wb-mr6cv3_155/K6";
defineRule("live_room_bra", {
when: function () {
return dev["wb-gpio/EXT1_IN14"];
},
then: function (newValue, devName, cellName) {
dev[bra] = !dev[bra]
}
})
Ошибка в jouran ERROR: [rule error] failed to SetValue for unexisting control wb-mr6cv3_155/K6: true
Ollig
June 7, 2024, 3:04pm
2
после изменение рабочего правила (которые до сохранения работало) так же отвалилось
function makeSwitcher(name, control_switcher, relay_control) {
var motion_timer_id = null;
defineRule(name, {
when: function(){
return dev[control_switcher];
},
then: function(newValue, devName, cellName) {
log("push "+ control_switcher);
dev[relay_control] = !dev[relay_control]
}
});
}
makeSwitcher("outside_bra", "wb-gpio/EXT2_IN1", out_bra);
Ошибка та же ERROR: [rule error] failed to SetValue for unexisting control wb-mr6c_187/K3: true
defineRule("tmp", {
when: function(){
return dev["wb-gpio/EXT1_IN10"];
},
then: function(newValue, devName, cellName) {
dev["wb-mr6cv3_155"]["K6"] = !dev["wb-mr6cv3_155"]["K6"]
}
});
Аналогично
ERROR: control wb-mr6cv3_155/K6 SetValue() error: can't convert control value 'true' (type bool) to datatype '0'
Dobro
June 8, 2024, 10:36pm
3
У меня аналогичная проблема, появилось после последнего обновления.
3 Likes
sikmir
June 10, 2024, 8:32am
5
Это stable или тестинг? Какая версия wb-rules?
Версия wb-rules?
Ну и после строчки
var bra = "wb-mr6cv3_155/K6";
Добавьте
log.info("value=", dev[bra], "type=", typeof(dev[bra]) );
и покажите вывод.
Ollig
June 15, 2024, 9:58am
10
var bra ="wb-mr6cv3_155/K6";
var table = "wb-mr6cv3_142/K2";
var out_bra = "wb-mr6c_187/K3";
var out_main = "wb-mr6c_187/K1";
function makeSwitcher(name, control_switcher, relay_control) {
defineRule(name, {
when: function(){
return dev[control_switcher];
},
then: function(newValue, devName, cellName) {
log("push "+ control_switcher);
log.info("value(dev[",relay_control,"]=", dev[relay_control], "type=", typeof(dev[relay_control]) );
dev[relay_control] = !dev[relay_control]
}
});
}
makeSwitcher("outside_bra", "wb-gpio/EXT2_IN1", out_bra);
makeSwitcher("bra", "wb-gpio/EXT1_IN10", bra);
makeSwitcher("live_room_table", "wb-gpio/EXT1_IN13", table);
makeSwitcher("live_room_bra", "wb-gpio/EXT1_IN14", bra);
Jun 15 09:50:41 wirenboard wb-rules[3051]: INFO: [rule info] push wb-gpio/EXT1_IN14
Jun 15 09:50:41 wirenboard wb-rules[3051]: INFO: [rule info] value(dev[ wb-mr6cv3_155/K6 ]= null type= object
Jun 15 09:50:41 wirenboard wb-rules[3051]: ERROR: control wb-mr6cv3_155/K6 SetValue() error: can't convert control value 'true' (type bool) to datatype '0'
Jun 15 09:50:47 wirenboard wb-rules[3051]: INFO: [rule info] push wb-gpio/EXT1_IN13
Jun 15 09:50:47 wirenboard wb-rules[3051]: INFO: [rule info] value(dev[ wb-mr6cv3_142/K2 ]= null type= object
Jun 15 09:50:47 wirenboard wb-rules[3051]: ERROR: control wb-mr6cv3_142/K2 SetValue() error: can't convert control value 'true' (type bool) to datatype '0'
Версия:
apt policy wb-rules
wb-rules:
Installed: 2.20.10
Ollig
June 15, 2024, 3:29pm
11
Команда
mosquitto_sub -t "/devices/wb-mr6cv3_155/controls/K6" -v
/devices/wb-mr6cv3_155/controls/K6 0
Можно и включить
mosquitto_pub -t “/devices/wb-mr6cv3_155/controls/K6/on” -m 1
Обратите внимание.
Если описываю существующее устройство, например так:
var bra ="wb-gpio/A1_OUT";
log.info("value1(dev[",bra,"]=", dev[bra], "type=", typeof(dev[bra]) );
То получаю ожидаемое в лог:
2024-06-17 15:58:23value1(dev[ wb-gpio/A1_OUT ]= false type= boolean
Ollig
June 17, 2024, 4:46pm
13
Я так понимаю вы намекайте, что устройства var bra ="wb-mr6cv3_155/K6"
не существует?
Но
Правило работало раньше.
Командой mosquitto_sub -t "/devices/wb-mr6cv3_155/controls/K6" -v
я могу включить устройство
Что бы не совершить ошибку, копирую устройства из ui
Как видно из сообщений, я не один такой
Тем не менее - проверьте именно отдельным скриптом, как показывал, наличие устройства.
Ну и заодно какой-то из стандартных контролов, тот же “wb-gpio/A1_OUT”
Corwin
June 21, 2024, 2:06pm
15
Аналогично, ЛОГ закраснел после сегодняшнего обновления на
wb-rules:
Installed: 2.20.8
21-06-2024 17:03:48.120 [wb-rules]
ERROR: control wb-gpio/EXT4_R3A5 SetValue() error: can’t convert control value ‘false’ (type bool) to datatype ‘0’
21-06-2024 17:03:48.112 [wb-rules]
ERROR: control wb-gpio/EXT3_R3A6 SetValue() error: can’t convert control value ‘false’ (type bool) to datatype ‘0’
1 Like
Ollig
June 21, 2024, 8:23pm
16
var bra ="wb-gpio/A1_OUT";
log.info("value1(dev[",bra,"]=", dev[bra], "type=", typeof(dev[bra]) );
var bra ="wb-mr6cv3_155/K6"
log.info("value1(dev[",bra,"]=", dev[bra], "type=", typeof(dev[bra]) );
Это пустой файл
Ollig:
log.info("value1(dev[",bra,"]=", dev[bra], "type=", typeof(dev[bra]) );
Обратите внимание, нету.
Покажите пожалуйста вывод подписки на топик “devices/wb-mr6cv3_155/controls/K6”
Ollig
June 24, 2024, 6:50pm
18
мне кажется я уже показывал в этом сообщении Перестало работать правило, ошибка can't convert control - #11 от пользователя Ollig
Или вы просили о другом? Было бы удобно если сразу писали как это делать
trackMqtt("/devices/wb-mr6cv3_155/controls/K6", function(message) {
log.info("name: {}, value: {}".format(message.topic, message.value));
});
Да, именно о таком выводе, но с подтопиками.
То есть “/devices/wb-mr6cv3_155/controls/K6/#”
Все топики должны соответствовать конвенции, в них должны мыть корректно описаны meta/.
Ollig
June 25, 2024, 12:13pm
20
Вроде это же ваш контроллер, в нем ничего не менял
Отлично, выглядит как будто все на месте. Лучше б текстом, конечно.
Подключите контроллер к облаку, если еще не подключен ну и пришлите приглашение на support@wirenboard.com
Посмотрю сам.