-
Notifications
You must be signed in to change notification settings - Fork 0
/
battery_check.sh
58 lines (49 loc) · 1.96 KB
/
battery_check.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/bash
# Intervallo in secondi tra i controlli
INTERVALLO=60
# Soglie per notifiche
SOGLIA_BASSA=20
SOGLIA_CRITICA=10
SOGLIA_ALTA=90
SOGLIA_INCREMENTO=10 # Incremento significativo per notifiche
# Variabili per lo stato precedente
ultimo_stato=""
ultima_percentuale=-1
# Funzione per controllare lo stato della batteria
controlla_batteria() {
# Ottieni informazioni sulla batteria
local stato=$(acpi -b)
local percentuale=$(echo "$stato" | grep -oP '\d+%' | tr -d '%')
local stato_carica=$(echo "$stato" | grep -oP 'Charging|Discharging|Full')
# Controlla se c'è una variazione significativa
if [[ "$stato_carica" != "$ultimo_stato" || \
( $percentuale -ne $ultima_percentuale && \
$((percentuale % SOGLIA_INCREMENTO)) -eq 0 ) ]]; then
# Aggiorna lo stato precedente
ultimo_stato="$stato_carica"
ultima_percentuale=$percentuale
# Notifiche basate sullo stato della batteria
if [[ "$stato_carica" == "Charging" ]]; then
if [[ $percentuale -ge $SOGLIA_ALTA ]]; then
echo "[INFO] Batteria in carica e vicina al 100% ($percentuale%)."
elif [[ $percentuale -lt $SOGLIA_ALTA ]]; then
echo "[INFO] Batteria in carica: $percentuale%."
fi
elif [[ "$stato_carica" == "Discharging" ]]; then
if [[ $percentuale -le $SOGLIA_CRITICA ]]; then
echo "[CRITICO] Batteria molto scarica! Solo $percentuale% rimasti. Collegare il caricatore!"
elif [[ $percentuale -le $SOGLIA_BASSA ]]; then
echo "[ATTENZIONE] Batteria scarica: $percentuale%."
else
echo "[INFO] Batteria in uso: $percentuale%."
fi
elif [[ "$stato_carica" == "Full" ]]; then
echo "[INFO] Batteria completamente carica e collegata alla corrente."
fi
fi
}
# Loop infinito per il monitoraggio
while true; do
controlla_batteria
sleep $INTERVALLO
done