Ankündigung

Einklappen
Keine Ankündigung bisher.

autotimer mit dauer aus Item - Fehler

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

    autotimer mit dauer aus Item - Fehler

    versuche ich die Dauer für autotimer aus ein Item zu holen, so bekomme ich eine Fehlermeldung
    (SHNG 1.4.2.master)
    Code:
    [Dg]
        [[Tablet]]
            [[[Test]]]
                type = bool
            [[[StromversorgungTest]]]
                type = bool
                value = true
                autotimer = sh.Dg.Tablet.StromversorgungTest.Dauer() = False = latest
                eval_trigger = Dg.Tablet.Test
                eval = not value
                [[[[Dauer]]]]
                    value = 5
    der autotimer im backend:
    [('5', False), 'latest', 'Dg.Tablet.StromversorgungTest.Dauer', None]
    2018-04-13 22:56:27 ERROR Dg.Tablet.StromversorgungTest Method Dg.Tablet.StromversorgungTest exception: unsupported type for timedelta seconds component: str
    Traceback (most recent call last):
    File "/usr/local/smarthome/lib/scheduler.py", line 451, in _task
    obj(**value)
    File "/usr/local/smarthome/lib/item.py", line 775, in __run_eval
    self.__update(value, caller, source, dest)
    File "/usr/local/smarthome/lib/item.py", line 902, in __update
    next = self._sh.now() + datetime.timedelta(seconds=_time)
    TypeError: unsupported type for timedelta seconds component: str
    Zuletzt geändert von ivande; 13.04.2018, 22:46.

    #2
    Hi,

    habe ich zwar so noch nicht verwendet und bin mir auch gar nicht sicher, ob es gehen soll, aber "Dauer" sollte dann von type = num sein. Zumindest würde ich das versuchen.

    Gruß, Waldemar

    Kommentar


      #3
      Jep, den typ festlegen halte ich für eine gute Idee. Der Master sollte das im übrigen auch gemeldet haben: Sowas wir "Item Dg.Tablet.StromversorgungTest.Dauer: type unknown. Please use one of: ..."

      Kommentar


        #4
        Hi,

        nur aus Interesse: Lag es an dem type?

        Gruß, Waldemar

        Kommentar


          #5

          mit type=num funktioniert der autotimer mit dem dauer-Item. Ich hab es erst gerade getestet.

          mit type=num ist natürlich die dauer = 10m #(10Minuten) nicht möglich..

          Ich hab das Beispiel ohne dem type-Attribut aus der Doku:
          Laut Doku sollten auch Minuten möglich sein.
          Evtl. müsste die Doku bzw die autotimer-Funktion entsprechend angepasst werden.


          Alternativ zur Angabe von absoluten Werten für dauer und wert, können nun auch Items als dauer und/oder wertangegeben werden:

          [item]
          type = num
          autotimer = sh.item.dauer() = 0
          [[dauer]]
          value = 45

          item:
          type: num
          autotimer: sh.item.dauer() = 0
          dauer:
          value: 45

          setzt nach der in item.dauer angegebenen Dauer (hier initial 45 Sekunden) den Wert des Items auf 0. Die Angabe des Items kann auch als relative Angabe erfolgen (sh..dauer())

          Der Wert für dauer kann auf folgende Weise angegeben werden:
          1. eine Zahl, die die Anzahl an Sekunden angibt
          2. eine Zahl gefolgt von m, gibt die Anzahl an Minuten an
          3. eine Zahl gefolgt von s, gibt die Anzahl an Sekunden an (alternative Schreibweise zur Variante 1)

          Gruß Ivan

          Kommentar


            #6
            Hi Ivan,

            Du könntest natürlich auch type=str versuchen und dann 10m angeben, aber ich würde bezweifeln, dass das klappt. Ansonsten mach doch für 10 Minuten einfach 600...

            Gruß, Waldemar

            Kommentar


              #7
              type=str geht nicht, hatte ich schon versucht.
              10x60=600 wäre auch möglich - ich könnte ja auch ein Dauer-Minuten-Hilfsitem anlegen und die Umrechnung über eval machen..

              Kommentar


                #8
                Und funktioniert: '15m' ?

                Also:
                Code:
                '15m'

                Kommentar


                  #9
                  Code:
                  [item]
                      type = num
                      autotimer = sh.item.dauer() = 0
                      [[dauer]]
                          type = num  # funktioniert (natürlich nur mit Zahlenwerte in Sekunden)
                          #type = str     funktioniert nicht : unsupported type for timedelta seconds component: str
                          # ohne type = xy funktioniert nicht : unsupported type for timedelta seconds component: str

                  Kommentar


                    #10
                    das ist ja noch nicht mal yaml ,-)

                    Kommentar


                      #11
                      ich benutze noch das Visual-Studio-Tool json2conf incl Templates von mumpf, welches (noch) kein yaml ausgibt :-)

                      Kommentar


                        #12
                        Echt, das benutzt jemand? Ist ja irre... hätte ich gar nicht gedacht.

                        Ich bastele durchaus an einem json2yaml, ich bin zwischenzeitlich auf callidomus umgestiegen (mit einem json2cd) und will dann wieder auf shNG, ohne alles neu machen zu müssen (das JSON ist großteils gleich geblieben). Aber Du musst noch Geduld haben, ich bin derzeit beruflich zu sehr eingebunden, um da konzentriert weiter machen zu können.

                        Gruß, Waldemar

                        Kommentar

                        Lädt...
                        X