Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Script ausführen mit Rückgabewert

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    - √ - Script ausführen mit Rückgabewert

    Hallo,

    Habe in einer Logik folgenden Befehl der alle 120 Sekunden aufgerufen wird.
    Wenn ich den smarthome im Debug Modus laufen lasse sehe ich auch den Wert auf der Konsole.
    Dieser liefert mir die aktuelle Temperatur der CPU meines odroiden. Wie kann ich diesen Wert nun in einen Plot übertragen?


    Code:
    if logic.name == 'CPUTemp':
       os.system("/usr/bin/sudo /bin/cat /sys/devices/virtual/thermal/thermal_zone0/temp")
    Gruß

    Stefan

    #2
    item.conf
    Code:
    [my]
        [odroid]
            [cpu_temp]
                type = num
                cache = on
                sqlite = yes

    my_logic.py
    Code:
    sh.my.odroid.cpu_temp(os.system("/usr/bin/sudo /bin/cat /sys/devices/virtual/thermal/thermal_zone0/temp"))

    Alternativ sollte auch das funktionieren, ohne logic:
    item.conf
    Code:
    [my]
        [odroid]
            [cpu_temp]
                type = num
                cache = on
                sqlite = yes
                cycle = 120
                eval = os.system("/usr/bin/sudo /bin/cat /sys/devices/virtual/thermal/thermal_zone0/temp")
    Umgezogen? Ja! ... Fertig? Nein!
    Baustelle 2.0 !

    Kommentar


      #3
      Moin Stefan,

      mach Dir ein Item zurecht, schreibt da SQLite = Yes rein, setze type = num und dann kannst Du Dir in Deiner Logik das Item einfach per Wertzuweisung setzen.

      Der Rest ist dann Standard-Plot eines Items.

      Gruß,
      Bernd

      Kommentar


        #4
        Stehe mir gerade selbst im weg! Wert bleibt Null.

        Meine odroid.py
        Code:
        #!/usr/bin/env python
        
        sh.Zentral.CPUTemp(os.system("/usr/bin/sudo /bin/cat /sys/devices/virtual/thermal/thermal_zone0/temp"))
        Meine Logic.conf:
        Code:
        [CPUTemp]
        	filename = odroid.py
        	cycle = 120
        Und meine Item.conf
        Code:
        [Zentral]
           [[CPUTemp]]
        		type = num
        		sqlite = yes
        		cache = on
        In der HTML einfach mal zum testen:
        Code:
        {{ basic.value('test1','Zentral.CPUTemp') }}
        Hallo Marcus,

        Gleichheitszeichen weggebastelt, trotzdem 0

        Kommentar


          #5
          Hallo,

          ein kleiner Anfängerfehler :-)

          Code:
          sh.my.odroid.cpu_temp = os.system("/usr/bin/sudo /bin/cat /sys/devices/virtual/thermal/thermal_zone0/temp")
          =>

          Code:
          sh.my.odroid.cpu_temp(os.system("/usr/bin/sudo /bin/cat /sys/devices/virtual/thermal/thermal_zone0/temp"))
          Bis bald

          Marcus

          Kommentar


            #6
            Hilft leider auch nicht.

            Kommentar


              #7
              Geändert ... im Browser ist Code schreiben aber auch doof ... mach ich nie wieder.

              Aber das eval war richtig - darauf wollte ich eigentlich hinaus.

              EDIT: Sowas lässt sich übrigens hervorragend im interaktiven Modus testen! "smarthome.py -i"
              Gibts sonst was im Log dazu ?
              Umgezogen? Ja! ... Fertig? Nein!
              Baustelle 2.0 !

              Kommentar


                #8
                So, heute morgen wars dann einfacher. Hab die Lösung.

                os.open liefert als Rückgabewert nicht die Standardausgabe (in meinen Fall das Ergebnis von cat) sondern 0 wenn der Befehl fehlerfrei ausgeführt worden ist.
                Damit die Standardausgabe übergeben werden kann muss das ganze in einem subprocess laufen.

                Hier meine odroid.py

                [CODE]#!/usr/bin/env python
                import subprocess

                sh.Zentral.CPUTemp(subprocess.check_output(("/usr/bin/sudo /bin/cat /sys/devices/virtual/thermal/thermal_zone0/temp"), shell=True))

                Kann also geschlossen werden, danke nochmals für die Hilfe.

                PS: der odroid C1 ist wirklich schnell im Vergleich zum raspberry.

                Kommentar

                Lädt...
                X