Zuletzt angesehen: » thunar » dokumentation_uebersetzen » desktop » samsung_smt_7020s » kompendium » mail » kamikaze » neues_wiki » anschluss_an_das_internet_mit_pppoe_mpd_und_firewall_pf » batterieueberwachung
Batterieüberwachung
| Betrifft OS: |
|---|
![]() |
Mittels cron und einem Shellskript soll bei leerer Batterie der Laptop automatisch ausgeschaltet werden. Zwei Minuten bevor der Laptop heruntergefahren wird, erhält der Benutzer eine Warnmeldung auf der Konsole und auf dem X11-Bildschirm.
Voraussetzung
ACPI (Advanced Configuration and Power Interface) ist aktiviert, näheres zu ACPI unter: Energie- und Ressourcenverwaltung / Was ist ACPI? und ggf.: ACPI-Fehlersuche
Batteriestatus abfragen
Grundsätzlich gibt es 2 Möglichkeiten, um unter FreeBSD den Batteriestatus eines Laptops abzufragen:
Möglichkeit 1:
$ /usr/sbin/acpiconf -i batt
Ausgabe (Beispiel):
Design capacity: 4000 mAh Last full capacity: 4000 mAh Technology: secondary (rechargeable) Design voltage: 14800 mV Capacity (warn): 420 mAh Capacity (low): 156 mAh Low/warn granularity: 264 mAh Warn/full granularity: 3780 mAh Model number: PA3395U Serial number: 3658Q Type: Li-Ion OEM info: TOSHIBA State: discharging Remaining capacity: 23% Remaining time: unknown Present rate: 0 mA Voltage: 14334 mV
Möglichkeit 2:
$ /sbin/sysctl hw.acpi.battery
Ausgabe (Beispiel):
hw.acpi.battery.life: 23 hw.acpi.battery.time: 15 hw.acpi.battery.state: 1 hw.acpi.battery.units: 1 hw.acpi.battery.info_expire: 5
Möglich ist hierbei auch:
$ /sbin/sysctl hw.acpi.battery.life $ /sbin/sysctl hw.acpi.battery.time
Ausgaben dazu (Beispiele):
hw.acpi.battery.life: 23 hw.acpi.battery.time: 15
bzw.:
$ /sbin/sysctl -n hw.acpi.battery.life $ /sbin/sysctl -n hw.acpi.battery.time
Ausgaben dazu (Beispiele):
23 15
Die o.g. Befehle kann man verwenden, um per Shellskript den Batteriestatus zu überwachen.
hw.acpi.battery.time Information nicht liefern, deshalb ist es ratsam vor der Erstellung eines Überwachungsskriptes zu testen (im Batteriebetrieb!), welche Ausgaben die o.g. Befehle produzieren.
Shellskript
Das Shellskript /usr/local/sbin/batterietest kontrolliert die Stromversorgung und den Batteriestand des Laptops. Ist die Batterie leer, löst das Shellskript das Herunterfahren des Laptops aus.
/usr/local/sbin/batterietest
#!/bin/csh # /usr/local/sbin/batterietest # Akkustand kontrollieren set restminuten=`/sbin/sysctl -n hw.acpi.battery.time` set modus=`/sbin/sysctl -n hw.acpi.battery.state` # Wird der Laptop nur von der Batterie mit Strom versorgt? if ( "${modus}" == "1" ) then # Reicht die Batterie nicht mehr fuer 7 Minuten? if ( "${restminuten}" < "7" ) then shutdown -p +2 "Die Batterie ist leer! Der Computer wird in 2 Minuten heruntergefahren!" & endif endif
Eine Alternative (falls das o.g. Skript nicht funktionieren sollte, weil z.B. `/sbin/sysctl -n hw.acpi.battery.time` keine/falsche Ergebnisse liefert):
#!/bin/csh # /usr/local/sbin/batterietest # Akkustand kontrollieren set restprozent=`/sbin/sysctl -n hw.acpi.battery.life` set modus=`/sbin/sysctl -n hw.acpi.battery.state` # Wird der Laptop nur von der Batterie mit Strom versorgt? if ( "${modus}" == "1" ) then # Batteriestand unter 15%? if ( "${restprozent}" < "15" ) then shutdown -p +2 "Die Batterie ist leer! Der Computer wird in 2 Minuten heruntergefahren!" & endif endif
Nicht vergessen: Das Shellskript ausführbar machen mit:
# chown root /usr/local/sbin/batterietest # chmod u+x /usr/local/sbin/batterietest
root-Crontab
Jetzt benötigt man noch einen Eintrag in der root-Crontab, damit alle 3 Minuten das Shellskript /usr/local/sbin/batterietest aufgerufen wird:
# su # crontab -e
Jetzt folgende Zeilen eingeben:
# root-crontab # SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin # #minute hour mday month wday command # # Batteriestand alle 3 Minuten kontrollieren */3 * * * * /usr/local/sbin/batterietest
die neuen Zeilen speichern und den Editor verlassen.
Sie befinden sich hier: Hauptseite » howto » batterieueberwachung
