Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeitliche Abfolge von Logik Events

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

    Zeitliche Abfolge von Logik Events

    Ich hab da noch mal ein Problem, welches ich mir zwar erklären kann, aber im Moment nicht weiß, wie ich es lösen kann:

    Situation:

    Telegram-Receiver LBS mit 3 Ausgängen (Chat-ID, Text, Authorized)
    Diese drei Ausgänge des Telegram Recievers werden mit 3 Ausgangs-LBS auf drei verschiedene interne KO's gegeben.

    Das KO am Ausgang A2 (Text) triggert nun eine Logik. Diese Logik muss allerdings jetzt sequentiell die Werte aller drei KO's auswerten:

    1. Wenn der Text = "INTERNET", dann
    2. prüfe ob Chat-ID = "meine Chat-ID" oder "Chat-ID meiner Frau", dann
    3. prüfe ob Authorrized=1, dann
    4. Führe 4 Befehle in einer Ausgangsbox aus.

    Soweit die Logik. Das Problem ist nun folgendes:

    Wenn eine neue Nachricht im Telegram Reciever ankommt, triggert der Text an A2 des Telegram-Receivers meine Logik. Das passiert scheinbar bevor das KO "Authorized", welches von A3 kommt gesetzt wurde. Daher liefert die Logik nicht das erwartete Ergebnis, denn Authorized ist noch leer, wenn meine Logik abläuft.

    Wie kann man also sicherstellen, dass bei 3 Ausgängen eines LBS, die alle in einer Logik benötigt werden, diese alle mit den aktuellen Werten gesetzt sind, bevor die Logik getriggert wird.

    Hier das konkrete Beispiel:

    2016-09-16 22_37_59-EDOMI · Administration.png

    Erste Ausgangsbox setzt das KO 861 (Chat-ID), zweite Ausgangsbox setzt KO 862 (Text), dritte Ausgangsbox setzt KO 863 (Authorized).
    Wenn ich nun den Befehl "INTERNET" sende, sieht der Live Status wie folgt aus:

    2016-09-16 22_53_57-EDOMI · Administration.png

    Man sieht, dass das KO 863 eigentlich oben als Ergebnis des Telegram Receivers auf 1 steht, unten beim Ablauf der Logik allerdings 0 war, da die Logik durch 862 (Text) ausgelöst wurde und das KO863 zu dem Zeitpunkt noch nicht gesetzt war.

    Mir fehlt hier gerade die kreative Idee.

    #2
    Hi,

    ich habe bisher nur mal kurz mit dem Telegram Receiver und Sender rumgespielt, aber habe das Szenario vor dir oben so hinbekommen - allerdings ohne den Umweg über iKOs. Ich habe die Ausgängen A1,A2 und A3 je durch eine Vergleicher-Box gejagt und die Ergebnisse ver-UND-ed, daran die Ausgangsbox mit den Befehlen. Das klappt eigentlich recht zuverlässig. Vielleicht versuchst du es mal ohne die iKOs.

    Gruß,
    Matthias

    Kommentar


      #3
      Zitat von baumhaus123 Beitrag anzeigen
      Hi,

      ich habe bisher nur mal kurz mit dem Telegram Receiver und Sender rumgespielt, aber habe das Szenario vor dir oben so hinbekommen - allerdings ohne den Umweg über iKOs. Ich habe die Ausgängen A1,A2 und A3 je durch eine Vergleicher-Box gejagt und die Ergebnisse ver-UND-ed, daran die Ausgangsbox mit den Befehlen. Das klappt eigentlich recht zuverlässig. Vielleicht versuchst du es mal ohne die iKOs.
      Ich bin mir ziemlich sicher, dass es das Problem nicht lösen würde, denn wenn du einen Befehl sendest, wird dieser ausgeführt, Sendet danach jemand anders mit einer anderen Chat-ID denselben Befehl, so wird dieser auch ausgeführt, wenn zuerst die Message auf deinen Vergleicher LBS gesendet wird, denn dieser triggert dann deinen UND Baustein, auf dem ja noch deine Chat-ID und das Authorized liegt. Es ist halt wirklich abhängig davon, in welcher Reihenfolge die drei Ausgänge abgearbeitet werden.

      Ich habe in meinem o.g. Beispiel mal die Ausgangsboxen vertauscht, so dass die Ausgangsbox an E2 (Message) die höchste ID hat. Dann funktioniert es. Denn dann werden Chat-ID und Authorized an den Ausgängen E1 und E3 gesetzt bevor die E2 meine Logik triggert. Aber das ganze ist ja nicht wirklich deterministisch, wenn man auf die IDs der LBS achten muss, damit es funktioniert.

      Mit einem Verzögerer würde es sicher auch gehen, aber auch das ist unschön.
      Einzig was ich mir derzeit vorstellen könnte ist, einen weiteren Ausgang im Telegram-Receiver zu haben, der nur Authorized Telegramme ausgibt und zwar in der Form. "Chat-ID:Telegrammtext". Dann wüsste man, wenn an diesem Ausgang ein Wert kommt, dann ist er Authorized und man hat sowohl Chat-ID als auch den Text in einem Wert. Dann würden die Vergleich zwar etwas aufwendiger, aber es wäre ein eindeutiger Event.

      Vermutlich sollte man in LBS vermeiden, mehrere Ausgänge zu haben, die man gemeinsam auswerten muss. Das sollte dann wohl besser im LBS passieren, da man die Ausgänge später nicht mehr zusammenbekommt.



      Kommentar


        #4
        Vielleicht ein neuen LBS am Ende der drei Ausgänge der in einer Schleife so lange läuft bis alle drei Werte (nach Wertänderung) zur Verfügung stehen und erst dann …?
        Danke und LG, Dariusz
        GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

        Kommentar


          #5
          Wenn ich das richtig verstehe, brauchst Du den hier: http://service.knx-user-forum.de/?co...ad&id=19000132
          Zuletzt geändert von vento66; 17.09.2016, 08:29.

          Kommentar


            #6
            Zitat von coliflower Beitrag anzeigen
            Vielleicht ein neuen LBS am Ende der drei Ausgänge der in einer Schleife so lange läuft bis alle drei Werte (nach Wertänderung) zur Verfügung stehen und erst dann …?
            Oder Du machst einen kleinen LBS dahinter (oder baust den in den bestehenden LBS mit ein) der die 3 Ausgänge erst freigibt, wenn alle 3 Ausgänge einen Refresh erfahren haben.
            >>Smelly One<<
            >> BURLI <<
            Grüße Armin

            Kommentar


              #7
              Zitat von vento66 Beitrag anzeigen
              Wenn ich das richtig verstehe, brauchst Du den hier: http://service.knx-user-forum.de/?co...ad&id=19000132
              Den hatte ich gar nicht gesehen. Damit wird es bestimmt funktionieren, da ja hier in einem LBS die drei Ausgänge auf einen gebracht werden. Super. Danke.

              Kommentar

              Lädt...
              X