Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - 1-Wire Plugin zyklisches Senden, Senden bei Änderung

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

    - √ - 1-Wire Plugin zyklisches Senden, Senden bei Änderung

    Hallo zusammen,

    ich möchte einige 1-Wire Temperaturen auf den KNX-Bus senden. Nun möchte ich das wie bei einem RTR realisieren: zyklisches Senden, Senden bei Änderung (%), Senden bei Änderung (°C). Allerdings konnte ich nirgends finden wie ich die entsprechenden Items konfigurieren muss. Derzeit ist folgendes eingetragen:

    Code:
    [1_wire]
    	[[IBB_Cape]]
    		type = num
    		visu = yes
    		knx_dpt = 9
    		knx_send = x/x/x
    		knx_reply = x/x/x
    		ow_addr = 28.79CDE2040000
    		ow_sensor = T
    Senden und Lesen funktioniert natürlich einwandfrei. Nur der Rest fehlt mir noch... (das Senden geschieht natürlich im 300s Rhythmus wie im 1-Wire per Default im Plugin vorgegeben allerdings möchte ich es gerne für einzelne Sensoren erhöhen, bzw. bei einem bestimmten Delta ein Telegramm auslösen)
    Geht das überhaupt so wie ich mir das vorstelle oder muss ich des via Logic machen?

    Grüße Michael

    #2
    Hi Michael,

    zuerst muss klar sein, dass die 300s die feste Abfragerate festlegen. D.h. schneller als alle 300s kommen eh keine neuen Werte! Wenn das nicht reicht, musst du den Wert runtersetzen. Onewire kann halt nur gepollt werden - wer einen schnellen Temperaturanstieg/eine Schaltbetätigung oder ein offenes Fenster innerhalb von 10s braucht, muss halt alle 10s pollen oder überhaupt etwas geeigneteres (z.B. KNX!? - da können sich die Sensoren halt aktiv melden) dafür nehmen.

    Zum Rest: (Vorsicht, Pseudocode)

    Absolutänderung +-1:
    Code:
    eval = value if ((value > (self()+1)) or (value < (self()-1))) else None
    relative Änderung +-10%:
    Code:
    eval = value if ((value > (self()*1.1)) or (value < (self()*0.9))) else None
    relative Änderung +-10% UND mindestens einmal pro Stunde:
    Code:
    eval = value if ((value > (self()*1.1)) or (value < (self()*0.9)) or (self.age() > 3600)) else None
    enforce_updates = true
    enforce_updates wird gebraucht, weil sonst der gleiche Wert nicht gesendet werden würde (was aber 1x stündlich gewollt ist).

    Ich liebe "eval"... ;-)

    Grüße
    Robert

    Kommentar


      #3
      Hey,

      das mit den 300s war schon klar. Hab mich evtl. etwas unglücklich ausgedrückt...

      Deine Codebeispielen werde ich mal Testen.

      Danke

      Kommentar


        #4
        So ganz funktioniert das ganze noch nicht....

        Auf dem KNX bekomme ich weder eine Antwort auf eine Leseanfrage noch kommen zyklisch Werte.

        Was bewirkt eigentlich das
        Code:
        self()
        ?

        Kommentar


          #5
          Öhm, knx_reply überhaupt gesetzt?

          Was sagt die Debug-Ausgabe?

          self() - der eigene Wert

          Kommentar


            #6
            self ist die Referenz auf das eigene Objekt der Klasse

            Gesendet von meinem GT-I9100 mit Tapatalk

            Kommentar


              #7
              Zitat von Robert Beitrag anzeigen
              self() - der eigene Wert
              knx_reply ist gesetzt.

              Habe den Fehler jetzt gefunden...

              Das Kupfer der KNX-Ader ist durchgebrochen. Scheinbar habe ich das BBB zu oft bewegt.

              Kommentar

              Lädt...
              X