Здравствуйте.
Пытаюсь добавить виртуальные устройства.
В списке топиков висит (от старых попыток):
|virtual_bedroom_temperature|fill|value|/devices/virtual_bedroom_temperature/controls/fill|0|OK|
|virtual_bedroom_temperature|hand_mode|switch|/devices/virtual_bedroom_temperature/controls/hand_mode|false|OK|
|virtual_bedroom_temperature|period|value|/devices/virtual_bedroom_temperature/controls/period|4|OK|
Сохраняю правило:
log(new Date());
/// TODO: подключить к головке датчика концевик и отследить наличие колебаний в пограничных значениях штока и посередине. Задрать повыше этот предел
// ШИМ несущая частота 4 секунды. Максимально возможное значение (бережем реле), при котором тем не менее не происходит колебаний штока (бережем исполнительный механизм)
var timerInterval = 4;
// минимальный интервал таймера, ниже которого не может работать исполняющее реле (1/2 of load power source cycle + 1 ms max.) 1000/50/2 + 1 = 11
// + промежуточное ??
// + канал связи ??
// начнем с 11 + 11 + 11 с запасом 50 мс
// ниже этого порога возможен дребезг. Если такая ситуация наступит, пишем ошибку и останавливаемся в крайнем положении. Это будет либо вкл, либо выкл.
var minSwitchTime = 0.05;
var rooms = [
{
'code': 'virtual_bedroom_temperature',
'title': 'Желаемая температура',
'controlled_topic': 'wb-gpio/EXT1_K8',
// канал целочисленных данных о температуре, итоговая температура * 0.01
'temp_topic': 'wb-msw-v3_145/raw-temp'
}
];
rooms.forEach(function cb(value, index, array) {
defineVirtualDevice(value.code, {
title: value.title,
cells: {
target_temp: {
title: "Желаемая температура",
type: "value",
value: 22,
min: 5,
max: 30,
precision: 0.1,
units: "deg C"
},
current_temp: {
title: "Текущая температура",
type: "value",
value: false,
lazyInit: true,
min: 5,
max: 30,
precision: 0.01,
units: "deg C"
},
fill: {
title: "Заполнение Шим",
type: "value",
units: "%",
value: 0,
precision: 0.1,
min: 0,
max: 100,
},
period: {
title: "Длительность ШИМ импульса",
type: "value",
units: "s",
value: timerInterval,
readonly: true,
min: 4,
max: 4,
},
hand_mode: {
title: "Ручное управление Шим",
type: "switch",
value: false,
},
}
});
});
Дальше ничего нельзя сделать.
Для ячейки текущая температура, пришлось поставить false. Без этого парсер не пропускал. Считаю что для ленивой ячейки, нет смысла требовать value.
По смыслу температура не определена на момент запуска правила, поэтому сделал его отложенным. Чтобы появился когда фактически данные пойдут.
Собственно на чем спотыкается. Похоже отсутствует проверка того что ленивая ячейка уже создана при обновлении виртуального устройства.
В топиках появляется еще одна позиция:
virtual_bedroom_temperature | fill | value | /devices/virtual_bedroom_temperature/controls/fill | 0 | OK |
---|---|---|---|---|---|
virtual_bedroom_temperature | hand_mode | switch | /devices/virtual_bedroom_temperature/controls/hand_mode | false | OK |
virtual_bedroom_temperature | period | value | /devices/virtual_bedroom_temperature/controls/period | 4 | OK |
virtual_bedroom_temperature | target_temp | value | /devices/virtual_bedroom_temperature/controls/target_temp | 22 | OK |
В логах:
01-02-2023 18:22:18.413 [wb-rules] ERROR: [backend] trying to remove unexisting control virtual_bedroom_temperature/current_temp
Также еще есть ошибки. Стоит ли обращать внимание? Неприятно с нуля такие вещи видеть.
01-02-2023 18:13:47.569 [wb-rules] | INFO: system/DTS Version: failed to convert value ‘’, passing raw |
---|---|
01-02-2023 18:13:47.562 [wb-rules] | INFO: [rule info] error running command callback for /bin/sh: Error: error error (rc -100) |
anon native strict preventsyield | |
init /usr/share/wb-rules-system/rules/wb-mqtt-dac.js:14 | |
anon /usr/share/wb-rules-system/rules/wb-mqtt-dac.js:77 | |
anon /usr/share/wb-rules-system/scripts/lib.js:331 preventsyield | |
01-02-2023 18:13:47.559 [wb-rules] | ERROR: [rule error] failed to open config file: /etc/wb-mqtt-dac.conf |
01-02-2023 18:13:47.559 [wb-rules] | ERROR: [rule error] failed to open config file: /etc/wb-mqtt-dac.conf |
01-02-2023 18:13:47.556 [wb-rules] | ERROR: [rule error] failed to open config file: /var/lib/wb-mqtt-dac/conf.d/system.conf |
01-02-2023 18:13:47.514 [wb-rules] | INFO: /usr/share/wb-rules-system/rules/wbmz-battery.js is NOT under source root /etc/wb-rules |
01-02-2023 18:13:47.479 [wb-rules] | sh: 4: /etc/wb_env.sh: source: not found |
01-02-2023 18:13:47.328 [wb-rules] | INFO: /usr/share/wb-rules-system/rules/wb-mqtt-dac.js is NOT under source root /etc/wb-rules |
01-02-2023 18:13:47.287 [wb-rules] | INFO: /usr/share/wb-rules-system/rules/system.js is NOT under source root /etc/wb-rules |
01-02-2023 18:13:47.276 [wb-rules] | ERROR: command ‘/bin/sh -c echo 1 > /sys/class/pwm/pwmchip0/export’ failed with exit status 1 |
01-02-2023 18:13:47.272 [wb-rules] | sh: echo: I/O error |