Meta.Morph
Lt. Junior Grade
- Registriert
- März 2022
- Beiträge
- 440
Servus,
ich bin im Bash/Python Scripting noch komplett unerfahren.
Folgendes: ich nutze Qtile als WM. Hier müsste ich ein Tool fürs Power Managment Installieren. Aber hey, warum nicht das wissen anwenden und in etwas Nützliches gießen (auch wenn das Projekt wirklich Mini ist...).
Ging auch relativ Fix:
Funktionieren tut das ganze. Toll.
Aber ich kann mir auch gut Vorstellen, das solch ein Script vor 20 Jahren vielleicht noch cool war - heute aber nicht mehr... der schlaueste Weg ist.
Welche Möglichkeiten gibt es, ein besseres Script zu schreiben?
Mit welchen Python Bibliotheken müsste ich mich beschäftigen?
EDIT:
Als kleines Update nach dem Urlaub:
... das sollte alle Unnötigen abfragen auf das nötigste reduzieren - ohne den Code im wesentlichen zu verändern.
ich bin im Bash/Python Scripting noch komplett unerfahren.
Folgendes: ich nutze Qtile als WM. Hier müsste ich ein Tool fürs Power Managment Installieren. Aber hey, warum nicht das wissen anwenden und in etwas Nützliches gießen (auch wenn das Projekt wirklich Mini ist...).
Ging auch relativ Fix:
Python:
import os
from time import sleep
def getBatteryStatus():
status = int(os.popen("acpi -b | cut -d ',' -f2 | sed s/%//").read().strip())
return status
def getChargeStatus():
status = os.popen("acpi -b | cut -d ' ' -f3 | cut -c 1-11").read().strip()
return status
def energySave():
os.system("rfkill block bluetooth wlan")
os.system("brightnessctl set 10%")
while getBatteryStatus() < 33 and getBatteryStatus() > 10 and getChargeStatus() == "Discharging":
os.system("xset dpms force off")
sleep(30)
def energyEmergency():
os.system("systemctl suspend")
while True:
# if charging every 5 minutes
if getChargeStatus() == "Discharging":
while getChargeStatus() == "Discharging":
# until discharging, make this - chack every 2 minutes
# when battery is 33% and over 10%, energy save
if getBatteryStatus() < 33 and getBatteryStatus() > 10:
energySave()
# when battery is 10% and under and discharge, emergency
elif getBatteryStatus() < 10 and getChargeStatus() == "Discharging":
energyEmergency()
sleep(120)
sleep(300)
Funktionieren tut das ganze. Toll.
Aber ich kann mir auch gut Vorstellen, das solch ein Script vor 20 Jahren vielleicht noch cool war - heute aber nicht mehr... der schlaueste Weg ist.
Welche Möglichkeiten gibt es, ein besseres Script zu schreiben?
Mit welchen Python Bibliotheken müsste ich mich beschäftigen?
EDIT:
Als kleines Update nach dem Urlaub:
Python:
#!/usr/bin/env python
import os
from time import sleep
batStatus = 0
lowBat = 25
emergencyBat = 10
batteryTimerNormal = 300
batteryTimerLow = 120
batteryTimerEmergency = 30
def getBatteryStatus():
status = int(os.popen("acpi -b | cut -d ',' -f2 | sed s/%//").read().strip())
return status
def getChargeStatus():
status = os.popen("acpi -b | cut -d ' ' -f3 | cut -c 1-11").read().strip()
return status
def energySave():
os.system("rfkill block bluetooth wlan")
os.system("brightnessctl set 10%")
while batStatus < lowBat and batStatus > emergencyBat and getChargeStatus() == "Discharging":
os.system("xset dpms force off")
batStatus = getBatteryStatus()
sleep(batteryTimerEmergency)
def energyEmergency():
os.system("brightnessctl set 10%")
os.system("systemctl suspend")
if getChargeStatus() != "Discharging":
os.system("brightnessctl set 50%")
else:
os.system("brightnessctl set 30%")
while True:
if getChargeStatus() == "Discharging":
while getChargeStatus() == "Discharging":
batStatus = getBatteryStatus()
if batStatus < lowBat and batStatus > emergencyBat:
energySave()
elif batStatus < emergencyBat:
energyEmergency()
sleep(batteryTimerLow)
sleep(batteryTimerNormal)
... das sollte alle Unnötigen abfragen auf das nötigste reduzieren - ohne den Code im wesentlichen zu verändern.
Zuletzt bearbeitet: