Отключение V_OUT

Добрый день!
Несколько лет назад я, возможно с Вашей помощью, написал скрипт который выключает линию V_OUT для перезагрузки подвисших устройств на RS485 шинах.
Скрипт удобно применять если по какой-то причине выключатель исчез с веб-интерфейса.
Скрипт успешно работает на контроллерах WB6. Пользовались им редко.
Но тут заметили что на контроллере WB7 этот скприт выводит из строя флеш-память. Она отключатеся, консоль виснет и перезагрузка не всегда спасает.
Можно ли понять почему и как-то исправить этот скрипт? Может сменился порт gpio ?

#!/bin/sh
### Временно отключает GPIO 73 для сброса внешнего питания в шинах модбас каналов V_OUT

GPIO=73 ### VOUT pin number  2 bank 9 offset 
systemctl stop wb-mqtt-gpio
echo "Gpio list..."
ls -1 /sys/class/gpio/
echo "Exporting 73 number"
echo $GPIO >  /sys/class/gpio/export
echo "Gpio list..."
ls -1 /sys/class/gpio/
echo "Set gpio $GPIO to mode : out"
echo out > /sys/class/gpio/gpio$GPIO/direction
echo "Turn off and sleep 5 sec"
echo 0 >  /sys/class/gpio/gpio73/value
sleep 5
echo "Turn on"
echo 1 >  /sys/class/gpio/gpio73/value
#echo $GPIO >  /sys/class/gpio/unexport

systemctl start wb-mqtt-gpio

Заранее спасибо

Добрый день,

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

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

добрый вечер собрал данные и вывод usb debug консоли в момент запуска скрипта

logwb7.txt (10,5 КБ)
diag_ADC2MZH4_2025-02-14-18.58.09.zip (114,3 КБ)

Добрый день,

Пока исследую ваши лог-файлы, могу предложить следующее правило, которое выполняет ту же задачу, что и ваш скрипт:

defineRule("restart_V_OUT_periodic", {
  when: cron("@every 10s"), // Запуск каждые 10 секунд
  then: function () {
    log("Перезапуск V_OUT");
    dev["wb-gpio"]["V_OUT"] = false; // Выключаем V_OUT
    setTimeout(function() {
      dev["wb-gpio"]["V_OUT"] = true; // Включаем V_OUT через 1 секунду
    }, 1000);
  }
});

Проверьте, работает ли предложенное правило так, как ожидается.

Добрый день!

В логах нет критических ошибок, которые могли бы указать на причину проблемы. Обычно, если возникает множество ошибок, контроллер автоматически отключает шину и фиксирует это в логах с соответствующим сообщением.

У вас есть тестовый WB7 ? можете просто запустить на нём этот мой скрипт?

Добрый день,

Да, есть. У вас возникли трудности с выполнением указанного выше скрипта? Если да, опишите подробнее, что именно не работает или какие ошибки возникают.

Не надо использовать прямое управление gpio. На разных версиях даже в одной мажорной могут быть аппаратные отличия. И да, номера отличаются. Используйте драйвер как советует коллега.

Мы просто не используем wb rules, и даже выпиливаем его для освобождения ресурсов под другие задачи. Скрипт на bash был неплохим решением если веб-интерфейс недоступен или по какой-то причине не отображал выключатель родной.

Неважно, откуда (из какого ПО) взаимодействовать с топиками wb-mqtt-gpio.
Но прямое управление gpio - это лишнее.
Архитектура взаимодействия с железом - работа с ним через брокер → драйвер.
https://wirenboard.com/wiki/MQTT#Структура_сообщения_—_команды_на_изменение_состояния
Работу наприямую - рекомендовать не могу.

Добрый день, удалось ли решить вопрос?

Принципиально нет. Пока на WB7 не будем пользоваться своим скриптом. Если возникунут вопросы как отключить линию V_OUT а mqtt и веб-интерфейс в этом не помогут, то обращусь снова с конкретным контроллером. Согласен что дергать gpio напрямую плохая идея.

Добрый день!

Помечаю тему как решенную. Если возникнут дополнительные вопросы, прошу создать новую тему или написать в данной.