Включение контроллера при подаче питания (с WB-UPS)

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

Подскажите, пожалуйста, возможен ли автоматический запуск контроллера при возвращении питания в следующем случае:
контроллер подключен через WB-UPS v.2
и, при получении сигнала о пропаже внешнего питания, делаю выключение wirenboard командой “halt”

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

Если контроллер Wiren Board подключен через WB-UPS v.2 и вы выполняете команду halt при получении сигнала о пропаже внешнего питания, то автоматический запуск контроллера при восстановлении питания возможен, но при некоторых условиях:

  1. Команда halt: Эта команда завершает работу операционной системы и переводит контроллер в состояние, близкое к выключению, но оставляет его включенным на аппаратном уровне. Это значит, что контроллер будет требовать ручного вмешательства для включения после восстановления питания.
  2. WB-UPS v.2: Когда питание восстанавливается, WB-UPS v.2 автоматически подаст питание на контроллер, но если он был переведен в состояние “halt”, то контроллер не включится автоматически.
  3. Решение: Чтобы контроллер автоматически запускался при восстановлении питания, вам нужно использовать команду shutdown -h now вместо halt. Эта команда полностью завершает работу операционной системы и выключает контроллер. Если питание будет восстановлено, контроллер автоматически включится.

Таким образом, для автоматического запуска контроллера при восстановлении питания лучше всего использовать команду shutdown -h now, которая позволяет корректно завершить работу ОС и выключить контроллер, готовый к автоматическому включению при появлении питания.

1 лайк

Доброго дня!
Можно пример на WBR применение команды shutdown -h now?
Спасибо!

Добрый день,
Попробовал на WB-Rules портировать пока не вышло.
У меня вот подобное применение применение использую в таком ключе

free -m | grep Mem | awk ‘{print $3}’ | while read usedMemory; do
if [ $usedMemory -gt 1500 ]; then
echo “Memory usage exceeded 1500 MB, shutting down the controller.”
shutdown now
else
echo “Memory usage is within limits: $usedMemory MB.”
fi
done

Если система потребляет больше 1500 то уходит в шатдаун.

Так же хочу уточнить кейс, а для чего отправлять в отключение систему, если она и так отключится, когда батарейка разрядится?

у меня например стоит ИБП WB-UPS v.2. В описании не указано при каком уровне разряда ИБП отключается и отключается ли вообще. Т.е. возможно работает пока совсем не сядет батарейка. Как поведет себя контроллер при пониженном напряжении?

Общий принцип работы описан в данной статье.

читал,
“Выход Vb — напряжение на аккумуляторных модулях, можно использовать для оценки степени заряда. 6.0 В — разряжен, 8.4 В — полностью заряжен”
Поведение при “разряжен” не ясно. Поэтому есть желание при напряжении близком к 6 В принудительно отключить корректно контроллер

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

Я правильно понял: - контроллер при разряде батареи ИБП самостоятельно корректно отключится?
если так, тогда достаточно будет просто отправить сообщение при напряжении (например 6,5В), что “сетевого питания нет, а работа от ИБП завершается”

Подскажите, а если произойдёт так, что контроллер отключится после пропадания питания, но основное питание вернётся до момента разряда WB-UPSv2, то как поведёт себя система?

Правильно понимаю, что контроллер в этом случае не включится после восстановления питания (т.к. не сможет отследить этот факт из-за того, что питание на нём и не пропадёт)?

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

Приходит сигнал с бесперебойника о пропаже внешнего питания
Отправляю команду отключания на перифейрийный контроллер (raspberry, ей критичны жесткие выключения)
Затем выключаю wirenboard

Но он выключался почему-то только командой halt из правил, а shutdown не срабатывало, но может я что не так делал.

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

Я правильно понял: - контроллер при разряде батареи ИБП самостоятельно корректно отключится?
Контроллер - корректно. Шины - рубильником (но не во время обмена).
При снижении напряжения ниже некоего порога контроллер завершает опрос по всем интерфейсам (честно, не пробовал как ведет себя на RS485-устройствах с большим таймаутом, но “телеграфный” запрос - 240 бит на 110 бод с задержкой 250 мс - отрабатывает полностью даже если отрубить внешнее питание в момент передачи первого байта запроса), после чего завершает работу как при нажатии кнопки питания.
Все бы хорошо, если бы не одно но: обработать данные из последнего запроса уже не получится - контроллер “выключается” (а ну как результат обработки требует записи на флешку или, того хуже, отправки СМС?). То есть обрабатывать разрядку батареи ИБП всё равно надо заранее в своем коде…

как я понял, до версии 7.4 не было контроллера питания у WB. А где же этот порог так и не понятно

Добрый день, уточните, пожалуйста, остается ли вопрос актуальным?

Для меня вот это актуально:

Подскажите, а если произойдёт так, что контроллер отключится после пропадания питания, но основное питание вернётся до момента разряда WB-UPSv2, то как поведёт себя система?
Правильно понимаю, что контроллер в этом случае не включится после восстановления питания (т.к. не сможет отследить этот факт из-за того, что питание на нём и не пропадёт)?

Добрый день,

При выполнении команды shutdown -h now, если до полного разряда аккумулятора вернется напряжение, контроллер должен запуститься штатно. Это поведение гарантируется встроенными механизмами управления питанием. После восстановления питания контроллер выполнит перезагрузку и начнет свою работу в обычном режиме, как при любом стандартном включении.