Проблема с модулем WBE2-DO-R3A-1

Скрипт, отвечающий за коммутацию каналов 2 встроенных реле WBE2-DO-R3A-1, благодаря которому включаются и отключаются свет по времени, работает через раз.
Сам скрипт:

// Правило для включения наружного света в 18:00:00
defineRule("turn_on_outLight_at", {
    when: cron("0 0 18 * * *"), // Запускать каждый день в 18:00:00
    then: function () {
        log.info("Наружное освещение включено в 18:00:00"); // Запись в лог
        dev["wb-gpio/MOD1_OUT1"] = 1; // Включаем реле
    }
});

// Правило для выключения наружного света в 10:00:00
defineRule("turn_off_outLight_at", {
    when: cron("0 0 10 * * *"), // Запускать каждый день в 10:00:00
    then: function () {
        log.info("Наружное освещение выключено в 10:00:00"); // Запись в лог
        dev["wb-gpio/MOD1_OUT1"] = 0; // Выключаем реле
    }
});

// Правило для включения света рекламы в 18:00:00
defineRule("turn_on_adLight_at", {
    when: cron("0 0 18 * * *"), // Запускать каждый день в 18:00:00
    then: function () {
        log.info("Свет рекламы включен в 18:00:00"); // Запись в лог
        dev["wb-gpio/MOD2_OUT1"] = 1; // Включаем реле
    }
});

// Правило для выключения света рекламы в 10:00:00
defineRule("turn_off_adLight_at", {
    when: cron("0 0 10 * * *"), // Запускать каждый день в 10:00:00
    then: function () {
        log.info("Свет рекламы выключен в 10:00:00"); // Запись в лог
        dev["wb-gpio/MOD2_OUT1"] = 0; // Выключаем реле
    }
});

В лог идёт такая ошибка:

20-08-2024 12:45:00.005 [wb-rules]	ERROR: control wb-gpio/MOD1_OUT1 SetValue() error: can't convert control value '1' (type float64) to datatype '1'
20-08-2024 12:45:00.001 [wb-rules]	INFO: [rule info] Наружное освещение включено в 18:00:00

Редактирую скрипт, меняя тип данных:

// Правило для включения наружного света в 18:00:00
defineRule("turn_on_outLight_at", {
    when: cron("0 0 18 * * *"), // Запускать каждый день в 18:00:00
    then: function () {
        log.info("Наружное освещение включено в 18:00:00"); // Запись в лог
        dev["wb-gpio/MOD1_OUT1"] = '1'; // Включаем реле
    }
});

В лог идёт такая ошибка:

20-08-2024 12:45:00.005 [wb-rules]	ERROR: control wb-gpio/MOD1_OUT1 SetValue() error: can't convert control value '1' (type string) to datatype '1'

Редактирую скрипт:

// Правило для включения наружного света в 18:00:00
defineRule("turn_on_outLight_at", {
    when: cron("0 0 18 * * *"), // Запускать каждый день в 18:00:00
    then: function () {
        log.info("Наружное освещение включено в 18:00:00"); // Запись в лог
        dev["wb-gpio/MOD1_OUT1"] = true; // Включаем реле
    }
});

Ошибка в логе:

19-08-2024 13:46:13.006 [wb-rules]	ERROR: control wb-gpio/MOD1_OUT1 SetValue() error: can't convert control value 'true' (type bool) to datatype '0'

Самое главное, что все три варианта данных подходят и скрипт выполняется и включает/выключает свет, но через раз, а в 50% ничего не происходит и в лог вылезают ошибки подобного вида.
В чём может быть проблема?

Здравствуйте.

Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.

diag_output_ANJLATX5_2024-08-20-14.55.46.zip (487.3 KB)

Вы используете несколько устаревшие версии сервисов, поэтому сначала обновитесь:

apt update
apt upgrade

Затем перезагрузите контроллер и проверьте версию

dpkg -l | grep wb-rules

Вы должны увидеть актуальную версию:

 wb-rules                              2.20.15 

Должен работать первый вариант кода.
Если после выполнения процедуры проблема останется - пишите, будем искать дальше.

Хм, действительно, у меня сейчас версия wb-rules 2.20.8, но apt update пишет “All packages are up to date.” и соответственно ничего обновить не даёт, это как-то можно обойти?

root@wirenboard-ANJLATX5:~# apt update
Hit:1 http://debian-mirror.wirenboard.com/debian bullseye InRelease
Hit:2 http://debian-mirror.wirenboard.com/debian bullseye-updates InRelease
Hit:3 http://deb.wirenboard.com/wb7/bullseye stable InRelease             
Hit:4 http://debian-mirror.wirenboard.com/debian bullseye-backports InRelease
Hit:5 http://debian-mirror.wirenboard.com/debian-security bullseye-security InRelease
Hit:6 https://deb.nodesource.com/node_16.x bullseye InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
root@wirenboard-ANJLATX5:~# 

Значит, для вашей wb-2310 это крайняя возможная версия wb-rules.
Однако, обновление версии контроллера оставим в качестве последнего средства.
Пока давайте проверим существование прочих скриптов, которые управляют тем же каналом.

Скриптов больше нет для этого реле
А в ручную я могу поставить новый wb-rules?

Я просто в поддержку уже писал несколько дней назад, у меня была проблема с 6-ти канальным реле, которая в журнал выдавала точно такую же ошибку:

[wb-rules]	ERROR: control wb-mr6cu_177/K5 SetValue() error: can't convert control value 'false' (type bool) to datatype '0'

Решилось путём рестара wb-rules в ручную, однако при перезагрузке контроллера ошибка возвращается и нужно рестартить wb-rules опять;
Я скачивал прошивку через веб интерфейс:

root@wirenboard-ANJLATX5:~# wb-release
Wirenboard release wb-2404 (as stable), target wb7/bullseye

You can get this info in scripts from /usr/lib/wb-release.
root@wirenboard-ANJLATX5:~# 

Но wb-rules так и не обновился

Приложите пожалуйста ссылку прошлой темы.
Также пришлите диагностический архив после обновления.

Спасибо!

diag_output_ANJLATX5_2024-08-21-13.42.56.zip (129.6 KB)

У нас сегодня вышла stable 2407, где, вероятно, исправили в том числе и вашу ошибку. Обновитесь пожалуйста и сообщите о результате.

Спасибо!

Не могли бы вы пожалуйста предоставить ссылку на 2407? Через веб интерфейс только 2404, а сам найти не смог
Обновил вручную пакет wb-rules с гитхаба до последней версии, и проблема с рандомными ошибками вроде бы ушла, в том числе и с 6 канальным реле, но надо ещё понаблюдать не появятся ли они за ночь
Буду благодарен за ссылку на 2407, сам найти не смог, спасибо!

Она лежит там же где и все.
Для вашего контроллера тут.
Первая строчка latest или третья…

Видно?

Да, появилась, спасибо