Ankündigung

Einklappen
Keine Ankündigung bisher.

Verarbeitet linknx ein "send-read-request" synchron oder asynchron?

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

    Verarbeitet linknx ein "send-read-request" synchron oder asynchron?

    Hallo,

    weiß jemand, ob die linknx-action "send-read-request" synchron oder asynchron arbeitet?

    Für manche Steuerungsfälle ist es ja notwendig, den aktuellen Wert einer GA zu kennen. Den kann man mit der o.g. action abfragen. Wenn dann sofort die nächste action ausgeführt wird, ohne dass die Antwort da ist, dann kann das zu einem Fehlverhalten führen, weil linknkx im Speicher evtl. einen anderen Wert hat. Falls asynchron, muss man ein delay oder sleep einbauen.

    Danke vorab für Eure Info.

    Gruß
    Peter

    #2
    Hallo Peter,

    ist auf jeden Fall asynchron! Hab das im linknx schon ausprobiert, aber ich glaube, das ist sogar im KNX so festgelegt (ohne die spec jetzt auswendig zu kennen): Die Response darf sich etwas Zeit lassen (ich hab 1 Sek. im Kopf, bin mir aber nicht sicher - da gibt es sicherlich Leute, die es besser wissen).

    Ich wollte damit nur sagen, dass es schon durch die Ebene drunter gar nicht anders als asynchron mit linknx geht.

    Deswegen war mein erster Vorschlag für Deinen anderen Thread auch so, dass der read-Request zyklisch abgesetzt wird, aber die Folgeaktionen dann über eine Wertänderung getriggert werden. Wenn Du mich fragst, ist das auf jeden fall sauberer als jeder sleep.

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      Hallo Waldemar,

      linknx könnte den send-read-request ja so implementieren, dass es auf eine Antwort oder einen (vom Benutzer zu definierenden :-)) Time-out wartet. Damit wäre der Befehl synchron obwohl die darunter liegende Technik asynchron arbeitet.

      Dein Vorschlag, die GA-Abfrage und die Verarbeitung zu entkoppeln, indem man einfach auf die ankommenden Telegramme reagiert, ist natürlich elegant. Funktioniert auch in den meisten Einsatzfällen: wenn gewährleistet ist, dass das Gerät tatsächlich auf die Anfrage antwortet (is-alive? kannst Du damit nicht beantworten) und wenn man nicht die Auskunft mehrerer Adressen verknüpfen muss.

      Toll wäre ein send-read-request, der auf die Antwort wartet und zusätzlich einen Status zurückgibt, ob eine Antwort des Geräts kam oder nicht. Vielleicht liest das ja jemand aus dem Entwicklerteam ;-)

      Bis dahin werde ich wohl die eine oder andere Implementierung notgedrungen mit sleep() machen müssen.

      Gruß
      Peter

      Kommentar

      Lädt...
      X