From ce0faa656eb5b21625863c183b6743445ce7d201 Mon Sep 17 00:00:00 2001 From: "Scott C. MacCallum" Date: Wed, 23 Oct 2024 20:56:09 -0400 Subject: [PATCH] Many changes --- battery-monitor.sh | 62 +++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/battery-monitor.sh b/battery-monitor.sh index a8470a0..bd2b2f6 100755 --- a/battery-monitor.sh +++ b/battery-monitor.sh @@ -2,46 +2,56 @@ # battery-monitor.sh # This program lets the user know when the battery needs to be charged. -# Copyright (c) 2024, Scott C. MacCallum (scm@sdf.org). -# All rights reserved. +# Copyright (c) 2024, Scott C. MacCallum (scott@scm-guru.live). -# Redistribution and use of this software in source and binary forms, with or -# without modification, are permitted provided that the following conditions -# are met: +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# at your option) any later version. -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. -# * Neither the name of Scott C. MacCallum nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission of Scott C. -# MacCallum. +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. +# To do. Add code to verify that the user is root, or has run the script with +# sudo. Add code to verify that the bc program is installed. -# Change this variable to your batteries identification e.g. BAT0 +# Change this variable to the group that should be informed of a need to +# charge the battery. On GNU/Linux distributions users are often part of +# their own group e.g. scm. + +group="" + +# Change the battery variable to your batteries identification e.g. BAT0. battery="" + charge=$(cat /sys/class/power_supply/$battery/charge_now) discharge=$(cat /sys/class/power_supply/$battery/current_now) hours=$(echo "scale=2; $charge / $discharge" | bc -l) minutes=$(echo "scale=2; $hours * 60" | bc -l) -minimum=0.33 -# If the battery has 15 minutes left of charge, let all users know +# Change the minimum variable to the minimum amount of minutes that a battery +# has left before the group is informed to recharge it e.g. 50.00. When I +# tested this and the battery-suspend.sh script, I was surprised to discover +# that the computer turned off despite having reported that there was 10 +# minutes left! I created the battery-status.sh script to aid in my +# understanding of what was going on, and I discovered a variance of about 10 +# minutes plus/minus each time that I ran it. Keep the minus 10 minutes in +# mind when setting the minimum value. + +# YOU'VE BEEN WARNED! + +minimum= if (( $(echo "$minutes < $minimum" | bc -l) )); then - echo "Recharge battery!" | wall + echo "Suspending the computer! Battery charge is needed!" | wall + sleep 3 + systemctl suspend fi exit 0