#!/bin/bash

IFS=':'

while read -a line; do
	# Clear out extra spaces
	key=$(tr -d ' ' <<< ${line[0]})
	val=${line[1]## }
	val_num=$(grep -Eo '[0-9.]+' <<< $val)

	case $key in
		MODEL)
			gmetric --name="ups_model" --value="$val" --type=string --group=ups --title="UPS model"
		;;
		LINEV)
			gmetric --name="ups_line_voltage" --value="$val_num" --units="V" --type=float --group=ups --title="UPS line voltage"
		;;
		LOADPCT)
			gmetric --name="ups_load_percent" --value="$val_num" --units="%" --type=float --group=ups --title="UPS load"
			loadpct=$(tr -d '.' <<< $val_num) # Strip out decimals for bash's integer math (should now be in thousandths, for accuracy in case there is a decimal)
		;;
		BCHARGE)
			gmetric --name="ups_battery_charge" --value="$val_num" --units="%" --type=float --group=ups --title="UPS battery charge"
		;;
		TIMELEFT)
			gmetric --name="ups_time_left" --value="$val_num" --units="min" --type=float --group=ups --title="UPS time left"
		;;
		BATTV)
			gmetric --name="ups_battery_voltage" --value="$val_num" --units="V" --type=float --group=ups --title="UPS battery voltage"
		;;
		TONBATT)
			gmetric --name="ups_time_on_battery" --value="$val_num" --units="s" --type=uint32 --group=ups --title="UPS time on battery"
		;;
		BATTDATE)
			gmetric --name="ups_battery_date" --value="$val" --type=string --group=ups --title="UPS battery date"
		;;
		NOMPOWER)
			nompower=$val_num
		;;
	esac
done <<< $(/usr/sbin/apcaccess)

# Calculate load in watts
load_watts=$(( ($loadpct * $nompower) / 1000 ))
gmetric --name="ups_load" --value="$load_watts" --units="W" --type=float --group=ups --title="UPS load"
