raspiblitz/home.admin/config.scripts/blitz.ups.sh

126 lines
3.4 KiB
Bash
Raw Normal View History

2019-08-05 22:29:31 +02:00
#!/bin/bash
source /home/admin/raspiblitz.info
source /mnt/hdd/raspiblitz.conf
# command info
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
echo "Configure a UPS (Uninterruptible Power Supply)"
echo "blitz.ups.sh on apcusb"
2019-08-05 22:55:48 +02:00
echo "blitz.ups.sh status"
2019-08-05 22:29:31 +02:00
echo "blitz.ups.sh off"
exit 1
fi
###################
# SWITCH ON
###################
if [ "$1" = "1" ] || [ "$1" = "on" ]; then
echo "Turn ON: UPS"
if [ "$2" = "apcusb" ]; then
# MODEL: APC with USB connection
# see video: https://www.youtube.com/watch?v=6UrknowJ12o
# installs apcupsd.service
sudo apt-get install -f apcupsd
# edit config: /etc/apcupsd/apcupsd.conf
sudo systemctl stop apcupsd
2019-08-07 21:49:16 +02:00
sudo systemctl disable apcupsd
# make service autostart
sudo sed -i '3iAfter=background.service' /lib/systemd/system/apcupsd.service
sudo sed -i '3iWants=background.service' /lib/systemd/system/apcupsd.service
2019-08-05 22:29:31 +02:00
sudo sed -i "s/^UPSCABLE.*/UPSCABLE usb/g" /etc/apcupsd/apcupsd.conf
sudo sed -i "s/^UPSTYPE.*/UPSTYPE usb/g" /etc/apcupsd/apcupsd.conf
sudo sed -i "s/^DEVICE.*/DEVICE/g" /etc/apcupsd/apcupsd.conf
2019-08-06 14:26:11 +02:00
# give the RaspiBlitz a minimum of 15 min to shutdown
sudo sed -i "s/^MINUTES.*/MINUTES 15/g" /etc/apcupsd/apcupsd.conf
# some APC UPS were not running stable below 90% Battery - so start shutdown at 95% remaining
sudo sed -i "s/^BATTERYLEVEL.*/BATTERYLEVEL 95/g" /etc/apcupsd/apcupsd.conf
sudo sed -i "s/^ISCONFIGURED=.*/ISCONFIGURED=yes/g" /etc/default/apcupsd
sudo sed -i "s/^SHUTDOWN=.*/SHUTDOWN=\/home\/admin\/XXshutdown.sh/g" /etc/apcupsd/apccontrol
sudo sed -i "s/^WALL=.*/#WALL=wall/g" /etc/apcupsd/apccontrol
2019-08-07 21:49:16 +02:00
sudo systemctl enable apcupsd
2019-08-05 22:29:31 +02:00
sudo systemctl start apcupsd
# add default 'ups' raspiblitz.conf if needed
if [ ${#ups} -eq 0 ]; then
2020-01-22 03:00:21 +01:00
echo "ups=on" >> /mnt/hdd/raspiblitz.conf
2019-08-05 22:29:31 +02:00
fi
# set ups config value (in case of update)
sudo sed -i "s/^ups=.*/ups='apcusb'/g" /mnt/hdd/raspiblitz.conf
echo "OK - UPS is now connected"
echo "Check status/connection with command: apcaccess"
else
echo "FAIL: unknown or missing second parameter 'UPSTYPE'"
exit 1
fi
fi
2019-08-05 22:55:48 +02:00
###################
# STATUS
###################
if [ "$1" = "status" ]; then
# check if already activated
2020-01-22 03:00:21 +01:00
if [ ${#ups} -eq 0 ] || [ "${ups}" = "off" ]; then
2019-08-05 22:55:48 +02:00
echo "upsStatus='OFF'"
exit 0
fi
if [ "${ups}" = "apcusb" ]; then
2019-08-06 15:09:10 +02:00
status=$(apcaccess -p STATUS 2>/dev/null | xargs)
2019-08-05 22:55:48 +02:00
if [ ${#status} -eq 0 ]; then
echo "upsStatus='n/a'"
else
2019-08-05 23:33:57 +02:00
echo "upsStatus='${status}'"
2019-08-05 22:55:48 +02:00
# get battery level if possible
2019-08-05 22:58:48 +02:00
if [ "${status}" = "ONLINE" ] || [ "${status}" = "ONBATT" ]; then
2019-08-05 23:33:57 +02:00
battery=$(apcaccess -p BCHARGE | xargs | cut -d "." -f1)
2019-08-05 23:35:03 +02:00
echo "upsBattery=${battery}"
2019-08-05 22:55:48 +02:00
fi
fi
exit 0
else
echo "upsStatus='CONFIG'"
exit 0
fi
fi
2019-08-05 22:29:31 +02:00
###################
# SWITCH OFF
###################
if [ "$1" = "0" ] || [ "$1" = "off" ]; then
echo "Turn OFF: UPS"
# check if already activated
2020-01-22 03:00:21 +01:00
if [ ${#ups} -eq 0 ] || [ "${ups}" = "off" ]; then
2019-08-05 22:29:31 +02:00
echo "FAIL: UPS is already off."
exit 1
fi
if [ "${ups}" = "apcusb" ]; then
sudo systemctl stop apcupsd
sudo systemctl disable apcupsd
2019-08-05 23:41:25 +02:00
sudo apt-get remove -y apcupsd
2020-01-22 03:00:21 +01:00
sudo sed -i "s/^ups=.*/ups=off/g" /mnt/hdd/raspiblitz.conf
2019-08-05 22:29:31 +02:00
else
echo "FAIL: unknown UPSTYPE: ${ups}"
exit 1
fi
fi