Нужна помощь с ПВУ Electrolux ERVX600 inv, не осилю виртуальный девайс под нее

Когда я в разделе serial добавляю новое устройство, выбираю свой шаблон, то на закладке этих параметров в выпадающем списке все показывает корректно. А вот когда я после создания устройства захожу на него в разделе девайсы, у меня этот ползунок тупо меняет цифры от 1 до 14, то есть даже близко не из указанного диапазона

У вас получилось создать виджет с переключателем вкл/выкл?

Да, я выше написал что после перезагрузки вб и изменения одного параметра на свитч все завелось :slight_smile: только забыл спасибо написать :slight_smile: теперь проблема с шаблоном и enum

Опишите подробнее вашу проблему.
Что конкретно вы делаете и что хотите получить?
Для вашей задачи, объявленной в теме, можно ознакомиться с документацией. А также для облегчения понимая сути проблемы/вопроса необходимо следовать правилам техпортала.

Отвечу цитатами из моих постов выше

  1. У ПВУ два вентилятора, входящий-исходящий, но скорость там выставляется не последовательным рядом цифр, а следующим образом:

Параметр 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

Пришлите, пожалуйста, файл своего шаблона

Ловите.

config-electrolux-ervx.json (8,3 КБ)

тут перечисляются только настроечные параметры. Эта секция не оказывает никакого, совершенно, влияния на отображение устройств в рабочем режиме. Только на настроечные параметры, передаваемые в модуль при начале работы.
Enum для channels - нет, не реализован.

В шаблоне вы используете тип для канала range (по сути ползунок), а хотите, чтобы он был перечисляемым.

Ну, была слабая надежда что если при первоначальной настройке можно поставить произвольный ряд чисел, то и в работе устройства функционал сохранится:)
Хотя, прекрасно понимаю, что таких идиотов что создали этот контроллер ПВУ надо пинать ногами.
Видимо, самым простым способом будет правило whenchanged на этот ползунок, которое будет писать в регистр нужное число? Или есть еще какие-то приемы решения данного вопроса?

Как вариант в виджете один переключатель (для вкл/выкл) и один ползунок (с диапазоном от 1 до 10). Ну а в правиле соответственно прописать, что конкретно писать в устройство.

Здравствуйте.
Остались ли еще у вас вопросы по заявленной теме?

Ну, как выяснилось шаблон не особо помог :slight_smile: сейчас сяду писать логику работы, а это 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 же прилетел, его фильтровать надо.

так если после null спустя 5 секунд прилетает снова обновление - я устану фильтровать этот поток сознания :slight_smile:

Я правильно понимаю, что надо вставить что-то типа

then: function (newValue, devName, cellName) 
		{  
                       if (newValue != NULL)

Ну да.
Например тут расматривалось.

Здравствуйте.
У вас получилось реализовать правило? Остались ли еще вопросы?