Когда я в разделе serial добавляю новое устройство, выбираю свой шаблон, то на закладке этих параметров в выпадающем списке все показывает корректно. А вот когда я после создания устройства захожу на него в разделе девайсы, у меня этот ползунок тупо меняет цифры от 1 до 14, то есть даже близко не из указанного диапазона
У вас получилось создать виджет с переключателем вкл/выкл?
Да, я выше написал что после перезагрузки вб и изменения одного параметра на свитч все завелось только забыл спасибо написать
теперь проблема с шаблоном и enum
Опишите подробнее вашу проблему.
Что конкретно вы делаете и что хотите получить?
Для вашей задачи, объявленной в теме, можно ознакомиться с документацией. А также для облегчения понимая сути проблемы/вопроса необходимо следовать правилам техпортала.
Отвечу цитатами из моих постов выше
- У ПВУ два вентилятора, входящий-исходящий, но скорость там выставляется не последовательным рядом цифр, а следующим образом:
Параметр VentSpeed_IN
регистр 10
Пара значений следующая:
0-выкл
2-скорость 1
3-скорость 2
5-скорость 3
8-скорость 4
9-скорость 5
10-скорость 6
11-скорость 7
12-скорость 8
13-скорость 9
14-скорость 10
То есть для того чтобы запустить вентилятор на скорость 3, нужно записать в регистр 5, для скорости 10 нужно записать в регистр 14
Я делаю шаблон, в котором пишу следующее:
“parameters”: [
{
"id": "input_speed",
"title": "Input Fan Speed",
"address": 10,
"reg_type" : "holding",
"format": "s16",
"enum": [0, 2, 3, 5, 8, 9, 10, 11, 12, 13, 14],
"enum_titles": ["Off", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ],
"default": 0,
"min": 0,
"max": 14,
"scale": 1,
Сохраняю шаблон, захожу в сериал-добавление девайса, добавляю новый, выбираю свой шаблон, там даже выпадающий список совпадает с моими ожиданиями. Однако, когда я захожу в раздел девайсов, там ползунок тупо меняет значения от 1 до 14, а совсем не из того ряда что указан в enum
Пришлите, пожалуйста, файл своего шаблона
тут перечисляются только настроечные параметры. Эта секция не оказывает никакого, совершенно, влияния на отображение устройств в рабочем режиме. Только на настроечные параметры, передаваемые в модуль при начале работы.
Enum для channels - нет, не реализован.
В шаблоне вы используете тип для канала range (по сути ползунок), а хотите, чтобы он был перечисляемым.
Ну, была слабая надежда что если при первоначальной настройке можно поставить произвольный ряд чисел, то и в работе устройства функционал сохранится:)
Хотя, прекрасно понимаю, что таких идиотов что создали этот контроллер ПВУ надо пинать ногами.
Видимо, самым простым способом будет правило whenchanged на этот ползунок, которое будет писать в регистр нужное число? Или есть еще какие-то приемы решения данного вопроса?
Как вариант в виджете один переключатель (для вкл/выкл) и один ползунок (с диапазоном от 1 до 10). Ну а в правиле соответственно прописать, что конкретно писать в устройство.
Здравствуйте.
Остались ли еще у вас вопросы по заявленной теме?
Ну, как выяснилось шаблон не особо помог сейчас сяду писать логику работы, а это js в чистом виде, буду сам шишки набивать
Вы вот лучше скажите почему WhenChanged в правилах срабатывает, когда перезагружается устройство или wb-rules? Очень неприятно было, когда активировался статус изменения счетчиков датчиков протечки после перезагрузки wbrules
Ну, будет вопросы - думаю помогу, я совсем немного разбираюсь в wb-rules.
А если устройство удаляется - то новое значние топика, на который подписано правило - NULL, что ожидаемо.
Если такое поведение не нужно - то значения на входе в функцию надо фильтровать.
ну вот, получилось, что в mwac сделал 4 зоны на протечку, создал виртуальное устройство, в котором функция whenchanged смотрела за входами s1, f1-f3, и потом при добавлении устройства в вб получил все 4 взведенные зоны. пришлось писать правило, что если все 4 зоны взвелись сразу то это глюк. Причем до сих пор функция работает криво, потому что whenchanged срабатывает несколько раз на один и тот же датчик, как будто в датчик несколько раз пишется одно и то же число.
Вот такая функция
whenChanged: [
'wb-mwac_24/S1 Counter',
'wb-mwac_24/S3 Counter',
'wb-mwac_24/F1 Counter',
'wb-mwac_24/F2 Counter',
'wb-mwac_24/F3 Counter'
],
then: function (newValue, devName, cellName)
{
log.info('Выясняем зону протечки, [' + cellName + '] state:' + newValue );
дает вот такоие замечательные результаты.
19-07-2023 23:11:26.931 [wb-rules] INFO: [rule info] Выясняем зону протечки, [F3 Counter] state:14
19-07-2023 23:11:26.931 [wb-rules] INFO: [rule info] Выясняем зону протечки, [F3 Counter] state:14
19-07-2023 23:11:26.914 [wb-rules] INFO: [rule info] Протечки не было. Сброс кривого статуса защиты от протечек после перезагрузки mqtt
19-07-2023 23:11:26.881 [wb-rules] INFO: [rule info] Выясняем зону протечки, [F2 Counter] state:13
19-07-2023 23:11:26.859 [wb-rules] INFO: [rule info] Выясняем зону протечки, [F1 Counter] state:19
19-07-2023 23:11:26.825 [wb-rules] INFO: [rule info] Выясняем зону протечки, [S3 Counter] state:9
19-07-2023 23:11:26.790 [wb-rules] INFO: [rule info] Выясняем зону протечки, [S1 Counter] state:72
19-07-2023 23:11:21.149 [wb-rules] INFO: [rule info] Выясняем зону протечки, [F1 Counter] state:19
19-07-2023 23:11:21.149 [wb-rules] INFO: [rule info] Выясняем зону протечки, [F1 Counter] state:19
19-07-2023 23:11:21.139 [wb-rules] INFO: [rule info] Выясняем зону протечки, [F3 Counter] state:14
Вопрос - нафига писать одно и то же значение в одну и ту же ячейку два раза?
19-07-2023 23:11:21.139 [wb-rules] INFO: [rule info] Выясняем зону протечки, [F3 Counter] state:14
19-07-2023 23:11:26.931 [wb-rules] INFO: [rule info] Выясняем зону протечки, [F3 Counter] state:14
так если после null спустя 5 секунд прилетает снова обновление - я устану фильтровать этот поток сознания
Я правильно понимаю, что надо вставить что-то типа
then: function (newValue, devName, cellName)
{
if (newValue != NULL)
Здравствуйте.
У вас получилось реализовать правило? Остались ли еще вопросы?