Ankündigung

Einklappen
Keine Ankündigung bisher.

LNKNX - Wert direkt vom Bus lesen

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

    KNX/EIB LNKNX - Wert direkt vom Bus lesen

    Hallo,
    ich lese mittels Java von LNKNX Werte über EIBD von KNX Bus aus. (<read><object id="watt_L1"/></read>)
    Im Normalfall wird mir dann der gepufferte Wert von LNKNX zurückgeliefert.

    Dies ist auch für viele Fälle völlig ausreichend, da auch die Statusänderungen von z.B. eines Lichtaktors über den Bus geschickt werden und somit bekannt sind.

    Nun möchte ich Energiemesswerte vom Bus auslesen. Diese werden von den angeschlossenen Geräten verändert (z.B. springt ein Kühlschrank an, dies wird nicht per Bus beeinflusst). Nun könnte ich dem Energiemessgerät mitteilen, er möchte doch bei einer Änderung von X Watt den neuen Wert über den Bus senden. Wenn ich die Genauigkeit beliebig hochtreibe, würde dies den Bus einfach zumüllen. Für eine Übersicht reicht ja auch ein Wert mit z.B. einer Genauigkeit von 50Watt.
    Wie kann ich aber den wirklich aktuellen Wert vom Bus anfragen? Hat jemand eine Idee?

    #2
    Hi,

    meine erste spontane Idee (nicht getestet und wahrscheinlich auch nicht optimal):

    - mach eine linknx-rule, die auf einen Trigger hin einen read-request losschickt (dieser wird ja innerhalb 1 Sek beantwortet)
    <rule id="lesen">
    <condition type="object" id="lesetrigger" value="1" trigger="true"/>
    <actionlist>
    <action type="send-read-request" id="watt_L1"/>
    <action type="set-value" id="lesetrigger" value="0"/>
    </actionlist>
    </rule>

    - von Java aus machst Du dann einen <write><object id="lesetrigger" value="1"/></write>
    - nach einer Sekunde machst Du dann Deinen read unten

    Der Wert ist dann relativ aktuell (max 1 Sek alt) oder (falls nicht geantwortet wurde) der letzte aus dem cache.

    Ob Dir das genau genug ist, weiß ich natürlich nicht...

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      oh - "send-read-request" kannte ich noch gar nicht. Ich habe das immer über den Umweg einer shell-command gemacht:

      Code:
          <rule id="Rueckmeldung_EZ_Deckenlampe_1">
             <condition type="object" id="2_0_0_DeckenlampeDimmen" value="stop" trigger="true">
             </condition>
             <actionlist type="if-true">
             <action type="shell-cmd" cmd="/usr/bin/groupread ip:127.0.0.1 2/0/2" delay="2"/>
             </actionlist>
          </rule>
      Könntest Du nicht den Befehl direkt über Java absetzen (also ohne Linknx)?

      Viele Grüße,

      Stefan
      Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

      Kommentar

      Lädt...
      X