Для этого планировал изначально применить apcupsd однако как оказалось в последних версиях OpenBSD применили новый драйвер upd благодаря которому можно обойтись штатными средствами системы для мониторинга.
Минус заключается в том что нештатными средствами воспользоваться уже будет нельзя. Ну да ладно, для достижения наших планов родного sensorsd вполне хватит.
Первое что нужно сделать это понятное дело включить упс и воткнуть его usb кабелем в нашу прекрасную OpenBSD систему.
смотрим на появившиеся датчики:
Код: Выделить всё
$ sysctl hw.sensors.upd0
hw.sensors.upd0.indicator0=On (BatteryPresent), OK
hw.sensors.upd0.indicator1=Off (Charging), OK
hw.sensors.upd0.indicator2=Off (Discharging), OK
hw.sensors.upd0.indicator3=Off (NeedReplacement), OK
hw.sensors.upd0.indicator4=Off (ShutdownImminent), OK
hw.sensors.upd0.indicator5=On (ACPresent), OK
hw.sensors.upd0.indicator6=Off (Overload), OK
hw.sensors.upd0.percent0=100.00% (RemainingCapacity), OK
hw.sensors.upd0.percent1=100.00% (FullChargeCapacity), OK
hw.sensors.upd0.timedelta0=757.000000 secs (RunTimeToEmpty), OK
Теперь в sensorsd.conf нам нужно настроить поведение сенсоров (обратите внимание на то что некоторые сенсоры "нормально выключены" а некоторые "нормально включены"
/etc/sensorsd.conf:
Код: Выделить всё
hw.sensors.upd0.indicator3:low=1:high=0:command=echo "Need to ReplaceBattery sensor: %2" | mail -s "Sensor %t changed" -r noreply@*** kasak@***
hw.sensors.upd0.indicator4:low=1:high=0:command=echo "Sensor ShutdownImminent changed: %2" | mail -s "Sensor %t changed" -r noreply@*** ***@gmail.com ; halt -p
hw.sensors.upd0.indicator5:low=0:high=1:command=echo "Who turn %2 the lights?" | mail -s "Sensor %t changed" -r noreply@*** ***@gmail.com
hw.sensors.upd0.indicator6:low=1:high=0:command=echo "Reactor overloaded! Sensor %2" | mail -s "Sensor %t changed" -r noreply@*** kasak@***
первая строка - третий индикатор need replacement, просто шлём письмо на любой свой ящик (можно и локальный) о необходимости замены батареи
вторая строка - shutdown imminent. Упс посылает сигнал о том что выключение неминуемо и нужно срочно выключается. Шлём письмо на нелокальный ящик и выключаемся.
третья строка - индикатор питания в розетке. в случае выключения он пошлёт сигнал. В случае обратного включения тоже. Отправляем на нелокальный ящик
последняя строка - перегрузка. Письмо можно кинуть на локальный ящик.
Дополнительная информация:
1) По умолчанию сенсорсд проверяет инфомрацию с сенсоров каждые 20 секунд, кроме того чтобы датчик "устоялся" проверка должна пройти три раза, поэтому письмо придётся ждать минуту. На мой взгляд это удобно. Значение в 20 секунд меняется параметром -c
2) К сожалению функционал sensorsd не позволяет делать с упсом ничего кроме мониторинга. Однако же, если говорить конкретно о Back-UPS es 550 как в моём случае, родной powerchute personal обладает даже ещё более скудным функционалом. apcupsd в этом плане более продвинутый. Однако же насколько мне известно Back-UPS сам не особенно что умеет делать. Калибровка батареи в моём случае производится выключением питания и работой от батареи на нагрузку до самого разряда упса. Это изменяет параметр hw.sensors.upd0.timedelta0. Исходя из вышесказанного я сделал для себя вывод что sensorsd обладает вполне достаточным функционалом если используется back-ups. А smart-ups имеет rs232 и для него лучше использовать apcupsd. Не включаете smart-ups через usb, иначе не сможете использовать apcupsd.
3) Применительно к питанию аквариумов либо других потребителей где есть моторчики, лучше искать упсы с чистой синусойдой при работе от батарей, в back-ups аппроксимированная синусойда, моторчики это не любят. Однако питание у меня выключается редко, минуту-две вполне можно пережить и на апроксимированной синусойде. Но это вредно, учтите.
Недостатки:
К сожалению имеют место быть ложные срабатывания при перезапуске sensorsd. Срабатывает датчик indicator5 и кажется ещё indicator6. Если случается перезапуск то придут пару писем. Причина неизвестна.
Значения high и low взяты из переписки одного из разработчиков, прочтённые мной на marc.info. Точнее там было написано что сенсор может выдавать вместо On и Off разные значения даже отрицательные и доподлинно неизвестно какие именно посылает тот или иной ибп, исходя из этого пришлось выдумывать такие настройки на каждый сенсор. Писать в high и low буквенные значения не допускается. Следует понимать что sensorsd использует значения high и low и они оба являются триггером, любое из значений вызовет отсылку письма, что мы и наблюдаем. Странно разве что то что срабатывают только два датчика. К сожалению это недоработка которую в будущем надеюсь исправят. Пока что данный способ отражает вполне рабочий вариант хоть и не без недостатков.