Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage nach Verwendung crontab und cycle im item

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

    Frage nach Verwendung crontab und cycle im item

    Hallo Forum,

    nachdem ich etwas mehr Zeit in das Verstehen von sh.py und die smartvisu investieren konnte, komme ich an einigen corner usecases vorbei. Hier eine Frage dazu:

    Bei den items kann ich ja crontab verwenden, um sie anzusteuern. Funktioniert prächtig, darüber läuft auch meine Weihnachtsbeleuchtung. Jetzt bin ich bei cycle angekommen.

    Ich versuche gerade einen ping ohne explizite Logik umzusetzen. Mit
    Code:
        [[reelbox]]
            type = bool
            eval = sh.tools.ping('192.168.2.22')
            cycle = 300
            sqlite = yes
    sollte doch eigentlich der Atem regelmäßig alle 5 Minuten abgearbeitet werden. Tut es leider nicht. Dann hatte ich noch in der Doku gelesen, dass man mit cycle auch gleich einen Wert setzen kann. Das hatte ich dann mit
    Code:
        [[reelbox]]
            type = bool
            cycle = 300 = sh.tools.ping('192.168.2.22')
            sqlite = yes
    probiert. Tut leider auch nicht. Im Log steht dann:
    Code:
    2013-12-23 15:42:09,447 WARNING  rechner.reelbox Item rechner.reelbox: value sh.tools.ping('192.168.2.57') does not match type bool. Via Scheduler None -- item.py:__update:347
    Jetzt gibt die Funktion sh.tools.ping() doch einen Bool Wert zurück: in der Doku steht: sh.tools.ping(): Pings a computer and returns True if the computer responds, otherwise False.

    Wo liegt denn mein Denkfehler ?
    Danke für Hilfe.
    Michel

    #2
    Ich denke, das sh.tools.ping() in Logiken zu gebrauchen ist, nicht im Eval bei Items. Das ist meiner bescheidenen Ansicht nach eher für kleinere Umrechnungen gedacht (Taupunkt, etc.).
    Derzeit zwischen Kistenauspacken und Garten anlegen.
    Baublog im Profil.

    Kommentar


      #3
      Hallo greentux,

      kann ich nachvollziehen. Ich verstehe aber die Type Unverträglichkeit nicht. Die sollte eigentlich nicht passieren. Bei den "kleineren Funktionen" klappt es ja auch.
      Die Einfachheit der Nutzung ping innerhalb eval ist schon sehr effektiv, wenn es klappen würde.

      Frohe Weihnachtstage !

      Michel

      Kommentar


        #4
        Hi Michel,

        cycle unterstützt eval nicht direkt.

        Probier mal:

        cycle = 200 =1
        eval = sh.tools.ping(....

        Bis bald

        Marcus

        Kommentar


          #5
          Kann man nun alle Funktionen aus der Logik auch in Eval nutzen oder wie grenzt man das ab Marcus?
          Wäre was für ein paar Doku Sätze...
          Derzeit zwischen Kistenauspacken und Garten anlegen.
          Baublog im Profil.

          Kommentar


            #6
            Man kann alle Funktionen in eval benutzen.

            Man kann aber nicht Python Code als Wert für Cycle und crontab verwenden.
            Das eine hat mit dem anderen nichts zu tun.


            Gesendet von unterwegs

            Kommentar


              #7
              Auf Beispiel 1 ganz oben trifft das nicht zu.
              Das geht also nur nicht, weils nicht getriggert wird, was man wie beschrieben aber umsetzen kann...
              Derzeit zwischen Kistenauspacken und Garten anlegen.
              Baublog im Profil.

              Kommentar


                #8
                Was trifft auf Beispiel 1 nicht zu?

                Und ja, es wird nicht getriggert.


                Gesendet von unterwegs

                Kommentar


                  #9
                  Zitat von mknx Beitrag anzeigen
                  Hi Michel,

                  cycle unterstützt eval nicht direkt.

                  Probier mal:

                  cycle = 200 =1
                  eval = sh.tools.ping(....

                  Bis bald

                  Marcus
                  Hallo Marcus,

                  Deinen Vorschlag konnte ich erst eben ausprobieren weil ich unterwegs war, danke für die Lösung, hat funktioniert ! Mit dem cycle und python ist mir klar. Was jetzt ist aber noch offen ist, warum die Lösung in meiner ersten Beispiel nicht triggert (ich habe es gerade nochmal nachvollzogen), cycle = 300 = 1 vor eval = .... aber eval triggert. Ist dort eine Reihenfolge zu beachten oder was ist der Trick ?

                  Guten Start in Jahr 2014 !

                  Michel

                  Kommentar

                  Lädt...
                  X