Ankündigung

Einklappen
Keine Ankündigung bisher.

Mengenberechnung eval, trigger

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

    Mengenberechnung eval, trigger

    Im Garten betreibe ich Regner, die über Magnetventile ein- und ausgeschaltet werden.
    Ich habe schon reichlich experimentiert, wie ich die Beregnungs-Menge messen kann.
    Die Idee war, bei jedem Ausschalten die Menge über die Einschaltzeit zu berechnen, deshalb habe ich das in den Items wie folgt konfiguriert:

    Code:
    Hunter1:
        name: Regner 1
        type: bool
        knx_dpt: 1
        knx_listen: 6/4/1
        knx_send: 6/1/1
        nw: true
        Menge:
            name: Menge mm
            type: num
            database: init
            eval: sh..age() * 0.002 if sh...() == False else 0
            eval_trigger: ..
    das klappt aber leider nicht. ich finde teilweise hohe Werte, wenn ich smarthomeNG neu starte.
    was mache ich falsch ?

    #2
    Du prüfst ob Hunter1 False ist, dann berechnest Du die Menge. Da Hunter1 beim Start von SmartHomeNG definitiv falsch ist, berechnest Du einen Wert, den Du vermutlich nicht haben willst.

    knx_listen lauscht nur nach Telegrammen. Wenn keines kommt, wird der Wert des Items auch nicht gesetzt. Wenn Du willst, dass Hunter1 beim Start von SmartHomeNG den richtigen Wert hat, musst Du statt knx_listen entweder knx_init oder knx_cache verwenden. knx_init löst eine Read Anfrage auf dem KNX Bus aus und initalisiert das Item mit der Antwort (vorausgesetzt das KNX Device kann auf Read Anfragen antworten). knx_cache liest den Cache von KNXD aus und nur wenn es in dem Cache keinen Wert gibt, wird eine Read Anfrage an das KNX Device gestellt.
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Dies Initialisierungsgeschichte möchte ich umgehen; die Berechnung sollte nur stattfinden am Ende einer Beregnung (wenn ich also ausschalte).
      Ich entdecke immer wieder andere Situationen in denen Werte ermittelt oder in der db gespeichert werden, obwohl ich das nicht möchte.
      z.B. wenn ich Abends kurz vor Mitternacht einen Tageswert zum Speichern abfragen möchte.
      Gibt es ein flag, das mir sagt, ob ich in der Initialisierung bin. oder muss ich on_change als trigger nehmen ? wie kann ich einen Trigger bei der Initialisierung umgehen ?

      Kommentar


        #4
        Zitat von whe Beitrag anzeigen
        Dies Initialisierungsgeschichte möchte ich umgehen
        Dann wirst Du immer falsche Werte haben.
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5
          Sorry, dann haben wir aneinander vorbei geredet; sicher müssen beim Neustart aller Werte richtig gesetzt sein.
          aber ich muss beim Neustart nicht unbedingt alle Trigger und Logiken ausführen.

          Kommentar


            #6
            Ließe sich das nicht über updated_by abfangen, 'init' gegen 'knx'?

            Kommentar

            Lädt...
            X