Core Temperatur auslesen und warnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Citral
User
Beiträge: 12
Registriert: Dienstag 7. Juni 2016, 04:27
Kontaktdaten:

Hallo,

ich habe hier einen Laptop bei dem Acer bezüglich der Kühlung komplett versagt hat ;)... irgendwann erreicht es die magische 105°C und schmiert ab. Deswegen habe ich mir überlegt ein kleines Script zu schreiben, was mich rechtzeitig warnt durch Pieptöne, Popups was auch immer und ich die ressourcenfressende Programme rechtzeitig stoppen kann und der Laptop sich runterkühlt.

Natürlich habe ich mich vorher etwas schlau gemacht und das PySensors-Modul entdeckt, was es wohl leider nur für Python2 gibt. Aus dem Codebeispiel werde ich leider auch nicht schlau, wie ich die Temperatur sauber auslese. Wenn ich das Script ausführe bekomme ich folgende Ausgabe
home@home:~/Python/new$ python mytest.py
coretemp-isa-0000 at ISA adapter
Core 0: 73.00
Core 2: 72.00
Wie bekomme ich die beiden Werte über eine Variable vermittelt?
BlackJack

@Citral: Dokumentation gibt's nicht so wirklich viel. Es gibt aber auch nicht so wirklich viel Funktionalität. Du musst die Chips auflisten, wobei Du den Chipnamen ganz oder Teilweise vorgeben kannst, dann musst Du nicht alle durchgehen. Den Namen kannst Du ja mit dem Beispielcode ermitteln der alle Chips auflistet.

Wenn Du den Chip hast, kannst Du darüber iterieren um die Features zu bekommen die man mit dem Chip auslesen kann. Und von so einem Feature kannst Du dann mit der `get_value()`-Methode (beliebig oft) den gerade aktuellen Wert auslesen.

Code: Alles auswählen

In [38]: list(sensors.iter_detected_chips('coretemp-*'))
Out[38]: [<Chip prefix='coretemp' bus=Bus(1, 0) addr=0 path='/sys/class/hwmon/hwmon1/device'>]

In [39]: chip = next(sensors.iter_detected_chips('coretemp-*'))

In [40]: list(chip)
Out[40]: 
[<Feature name='temp1' number=0 type=2>,
 <Feature name='temp2' number=1 type=2>,
 <Feature name='temp3' number=2 type=2>]

In [41]: list(chip)[0].get_value()
Out[41]: 40.0

In [42]: list(chip)[0].get_value()
Out[42]: 38.0

In [43]: list(chip)[0].get_value()
Out[43]: 39.0

In [44]: list(chip)[0].get_value()
Out[44]: 39.0
Bis auf die ”Abkürzung” mit dem vorgegeben Chipnamen wird hier jetzt aber auch nichts verwendet was nicht auch in dem kleinen Beispiel aus der Dokumentation vorkommt. Auch wenn die zugegebenermassen recht dürftig ist.
Antworten