Volt, Takt, Temp. auslesen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo liebe Pi-Freunde,

    habe seit wenigen Wochen meinen ersten Pi in den Händen. Da ich aber berufllich nicht dazu kam, konnte ich erst vor ein paar Tagen mit dem rumspielen anfangen.

    Habe mir gestern einen Seafile Server aufgesetzt, dieser funktioniert auch soweit problemlos. Nach einigem stöbern im Internet bin ich auf das Thema Monitoring gestoßen. Genauer gesagt möchte ich mir gerne Emails vom aktuellen Status, sprich was die Temeratur, die Spannung und den CPU Takt angeht, verschicken lassen. Habe dann im Internet ein Script gefunden welches die Temperatur per Mail verschickt. Habe es dann folgendermaßen angepasst (siehe Code Felder innherhalb des folgenden Codes)

    Bekomme dann aber keine Mails mehr. Kann mir bitte jemand sagen, was ich falsch gemacht habe bzw. kann mir jemand die richtigen Parameter nennen, die ich eintragen muss um die CPU Spannung (vcgencmd measure_temp,vcgencmd_clock, etc..) und Taktrate auszulesen?

    Vielen Dank!!:helpnew:

    Einmal editiert, zuletzt von Raykor (13. Dezember 2013 um 17:06)

  • Ganz auf die schnelle beim drübergucken:
    Du hast eine Funktion "Volts", fragst aber nach "getVolts"

    def Volts():
    res = os.popen('vcgencmd measure_volts').readline()
    return(res.replace("volts=","").replace("'V\n",""))

    voltsFloat = float(getVolts())

    jetzt läuft es bei mir durch... Ob emails gesendet werden? keine Ahnung... Aber es waren 2 "replace-fehler" drinnen...

    Zeile: return(res.replace("volt=","").replace("V\n",""))



    Und ja, emails gehen raus

  • Habe jetzt den von dir geposteten Code genommen, bekomme aber keine Emails :(

    Code
    def Volts():
        res = os.popen('vcgencmd measure_volts').readline()
        return(res.replace("volt=","").replace("V\n",""))

    Der Teil ist definitv richtig? Keine falschen Paramenter benutzt? Wenn ich, wie gesagt, nur die Temp. - abfrage drin habe funktioniert es super..

    Einmal editiert, zuletzt von Raykor (13. Dezember 2013 um 18:00)

  • Ja, ich bekomme mails...
    Habe allerdings noch 2 Änderungen gemacht...

    Hier mal der Text der Mail:

    Zitat


    [font="Helvetica"]Temperatur 30.9 Grad Celsius[/font]
    [font="Helvetica"]Spannung 1.2 Volt.[/font]
    [font="Helvetica"]Zeit: 17:21:07 am 13.12.2013[/font]

    Änderung 1)

    Code
    if (tempFloat > criticalTemperature):


    Ich habe die Critical Temp (war 60°) runtergesetzt...

    Änderung 2) Du hast den Inhalt der Mail überschrieben... (2 x value = )

    Daraus wurde:

    Code
    value = "Temperatur " + str(tempFloat) + " Grad Celsius" + "\n" + "Spannung " + str(voltsFloat) + " Volt." + "\n" + "Zeit: " + time + " am " + date
  • EDIT: Das Problem waren die Cronjobs!! Hab jetzt einen rausgenommen, und schon kommen die richtigen Mails an..eine Fräge noch..wie lautet die korrekte Funktion um die Taktraten auszulesen?

    def getClockARM():
    res = os.popen('vcgencmd measure_clock arm').readline()
    return(res.replace("temp=","").replace("'C\n",""))

    def getClockCore():
    res = os.popen('vcgencmd measure_clock core).readline()
    return(res.replace("temp=","").replace("'C\n",""))

    Was muss denn dann anstelle von ("tem=","").replace("'C\n","")) stehen?


    Funktioniert leider immer noch nicht. Hänge mal meine Scripte an.


    "status.py", funktioniert NICHT



    monitoring-cpu-temp.py, funktioniert:


    die cronjobs:

    Code
    */1 * * * * python monitoring-cpu-temp.py >/dev/null 2>&1
    */1 * * * * python status.py >/dev/null 2>&1


    Danke für deine Mühen!!!

    Einmal editiert, zuletzt von Raykor (13. Dezember 2013 um 19:04)

  • die cronjobs:

    Code
    */1 * * * * python monitoring-cpu-temp.py >/dev/null 2>&1
    */1 * * * * python status.py >/dev/null 2>&1

    Das ist doppelt-gemoppelt :)
    * bedeutet eh jede Minute.
    Sinn würde */5 machen (alle 5 Minuten)

    Bitte auch den vollständigen Pfad zum Script angeben

    Code
    * * * * * python /home/pi/monitoring-cpu-temp.py >/dev/null 2>&1
    * * * * * python /home/pi/status.py >/dev/null 2>&1

    Den Code teste ich jetzt mal aus...


    EDIT: Das Problem waren die Cronjobs!! Hab jetzt einen rausgenommen, und schon kommen die richtigen Mails an..eine Fräge noch..wie lautet die korrekte Funktion um die Taktraten auszulesen?

    def getClockARM():
    res = os.popen('vcgencmd measure_clock arm').readline()
    return(res.replace("temp=","").replace("'C\n",""))

    def getClockCore():
    res = os.popen('vcgencmd measure_clock core).readline()
    return(res.replace("temp=","").replace("'C\n",""))

    Was muss denn dann anstelle von ("tem=","").replace("'C\n","")) stehen?


    Im Terminal ergibt "vcgencmd measure_clock arm" folgendes:
    frequency(45)=700000000

    Da mein Raspi mit 700 MHz rennt, müssen die letzten 6 Nullen weg. und vorn alles inkl "="...

    Ergo:


    Code
    def getClockARM():
       res = os.popen('vcgencmd measure_clock arm').readline()
       return(res.replace("frequency(45)=","").replace("00000",""))

    Den 2. Eintrag kannst Du Dir anhand des Beispieles selbst zusammenreimen, oder?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!