Не корректное состояние выходов WBIO-DO-R10A-8 при перезапусках контроллера

И ещё раз о WBIO-DO-R10A-8 и перезапуске контроллера.
Настройка:


Состояние до тестов:

reboot по ssh: состояние реле не изменилось.
Перевёл реле в состояние:

после выключения по питанию и включения, состояние:

Сам в шоке, и что с этим делать?
Если бы они были выключены - было бы понятно: “пиши правила сохранения состояния” и будет счастье, а так даже не предполагаю что делать?
Спасибо.
P.S. Устройства “defineVirtualDevice” отрабатывают - так же, по reboot - запоминают своё состояние, а “по питанию”- восстанавливают состояние “перед reboot”, и переключения во между reboot и “отключением питания” ни как не сохраняются.
P.P.S. Сначала планировал написать в ветке “периферийных устройств”, но обратил внимание на defineVirtualDevice.
P.P.P.S. HW Revision: 7.3.4, прошивка 202305261110.

Люди помогите. Нашёл ещё вот это Откат к ранее сохраненному значению в History при потере питания, похоже действительно проблема именно не в корректном завершении wb-mqtt-gpio. Но вопрос что с этим делать… питание может пропасть в любой момент и после загрузки контролер перейдет в не понятное состояние.

Как временная мера, хочу попробовать периодически или по переходу на ИБП принудительно вызывать “сохранение состояния”, но подскажите КАК?

К тому же: периодически (я не очень понимал при каких обстоятельствах, теперь ясно), то WIFI, то LTE то поднимались, то не поднимались - похоже он переходил в “не контролируемые” состояния.

У контроллера не бывает “неконтролируемых” состояний. Его состояние может быть “непонятным” либо может быть баг. Мы сейчас воспроизведем вашу ситуацию. Либо объясним, либо исправим.

Здравствуйте! Пришлите пожалуйста диагностический архив.
На данный момент у сервиса wb-mqtt-gpio нет ручек для принудительного сохранения, так что вы не сможете так сделать.

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

У нас wb-mqtt-gpio записывает значения на диск по логике berkleydb плюс дисковые кэши. Если выключать питание сразу (читайте - в пределах нескольких секунд) после записи gpio, значение почти гарантированно не запомнится. Время от времени дисковый кэш синхронизируется и значения пишутся, так что где-то через минуту или чуть больше всё запомнится.

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

В софте есть бага, которая несколько ухудшает ситуацию с записью, но даже после того, как мы её починим, всё равно будет задержка записи, так что если в конкретной ситуации это критично, лучше использовать modbus-модули, там внутри на уровне железа есть решения, гарантирующие сохранность предыдущего состояния.

Если в вашем проекте есть какое-то “безопасное” состояние GPIO (которое можно установить при запуске и это ничего не сломает), возможно, вам поможет настройка “не пытаться вспомнить предыдущее значение” для gpio и пусть wb-rules сам его восстанавливает. Прямо сейчас такой настройки нет, но у нас в ближайших планах есть её добавление.

Добрый день.
Вы правы под “неконтролируемое” я действительно имел ввиду “непонятным”.
Но это то же не точное определение СИТУАЦИИ.

Давайте по порядку, wb-mqtt-gpio - если и не может сохранять состояния, то как минимум я могу вызвать reboot или systemctl restart wb-mqtt-gpio :slight_smile:

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

  1. gpio1 - равно 0.
  2. Перезагружаю по reboot; после загрузки gpio1 - равно 0.
  3. Устанавливаю gpio1 - равным 1.
  4. Перезагружаю по “питанию”; после загрузки gpio1 - равно 0.

Пункты 3 и 4 можно делать сколь угодно раз gpio1 возвращается к значению до reboot.

Я долго пытался понять почему встроенный LTE модуль не хочет подниматься автоматически, надо было жать кнопку “Подключить”, а дело оказалось именно в описанном выше. Я его поднял, сказал reboot - и теперь он подключается автоматически.

Кстати, убирал все “Правила” - ситуация не менялась.

По дисковым кэшам - я в курсе.

По логике: я к сожалению выбрал WBIO-DO-R10A-8 и WB-MR6CU v.2 вместо двух WB-MR6CU v.2… задача была проста:

при потере питания и восстановлении оного - всё должно вернуться “как было”.

Если WB-MR6CU v.2 - для контроллера является “Главным”, то WBIO-DO-R10A-8 - “подчиненным”…

Ну в целом systemctl restart wb-mqtt-gpio должен помогать :slight_smile:

Ну в целом systemctl restart wb-mqtt-gpio должен помогать :slight_smile:

Сделал по переходу к ИБП, слабое решение конечно, но хоть какое-то.

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.