From 82acf6b147c31b870bed2c53597e6e49379b2628 Mon Sep 17 00:00:00 2001 From: Marcus Noble Date: Tue, 30 Dec 2025 10:01:14 +0000 Subject: [PATCH] Added wattage Signed-off-by: Marcus Noble --- home/.bin/wattage | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 home/.bin/wattage diff --git a/home/.bin/wattage b/home/.bin/wattage new file mode 100755 index 0000000..5ad8874 --- /dev/null +++ b/home/.bin/wattage @@ -0,0 +1,52 @@ +#!/usr/bin/env zsh + +source .utils + +print_usage() { + blue "wattage - Show battery / charging status" + echo " " + underline "Usage:" + echo "wattage" +} + +while test $# -gt 0; do + case "$1" in + -h|--help) + print_usage + exit 0 + ;; + esac +done + + +info=$(ioreg -w 0 -f -r -c AppleSmartBattery) +vol=$(echo $info | /usr/bin/grep '"Voltage" = ' | /usr/bin/grep -oE '[0-9]+') +amp=$(echo $info | /usr/bin/grep '"Amperage" = ' | /usr/bin/grep -oE '[0-9]+') +amp=$(bc <<< "if ($amp >= 2^63) $amp - 2^64 else $amp") +wat="$(( (vol / 1000.0) * (amp / 1000.0) ))" + +power_details=$(/usr/sbin/system_profiler SPPowerDataType -json | jq -c) + +cable_connected=$(echo $power_details | jq -r '.SPPowerDataType[] | select(.sppower_battery_charger_connected) | .sppower_battery_charger_connected') +cable_wat=$(echo $power_details | jq -r '.SPPowerDataType[] | select(.sppower_ac_charger_watts) | .sppower_ac_charger_watts') + + +battery_current=$(echo $power_details | jq -r '.SPPowerDataType[] | select(.sppower_battery_charge_info) | .sppower_battery_charge_info.sppower_battery_state_of_charge') +battery_max=$(echo $power_details | jq -r '.SPPowerDataType[] | select(.sppower_battery_health_info) | .sppower_battery_health_info.sppower_battery_health_maximum_capacity') + +printf "🔋 %.0f%% (max %s)\n" $battery_current $battery_max + +if [[ "$cable_connected" == "FALSE" ]]; then + echo "🔌 No charger connected" +else + printf "🔌 Cable watts: %.0f W\n" $cable_wat + if [[ "$wat" -gt "0" ]] + then + printf "âšĄī¸ Charging at: %.0f W\n" $wat + fi +fi + +if [[ "$wat" -lt "0" ]] +then + printf "đŸĒĢ Discharging at: %.0f W\n" $wat +fi