Ankündigung

Einklappen
Keine Ankündigung bisher.

[Logik] Statusabhängiges Folgetelegramm

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

    [Logik] Statusabhängiges Folgetelegramm

    Nabend zusammen,

    ich versuche eine Logik aus SmarthomeNG zu übernehmen. Die Patschfunktion einen MDT GT2 sendet ein 0 Telegramm auf die GA 1/1/255 welches alle Lampen eines Raumes enthält. Sind alle Lampen aus soll eine bestimmte eingeschaltet werden. Bei jedem patsch ein 0-Telegram ist um auch ohne Logikengine darüber zumindest alle Lampen des Raumes ausgeschalten werden können.
    Theoretisch müsste ich doch auf das 0-Telegramm auf der GA 1/1/255 reagieren und nur dann eine 1 an den Baustein 1183 (UND) senden, die restliche Zeit sollte dort eine 1 stehen was ich aber nicht hinbekommen habe. Ich habe schon etliche Varianten mit Verzögerer, FlipFlop etc. probiert aber bisher ohne Erfolg. Eventuell könnt ihr mir dabei einen Denkanstoß geben. Nachfolgend ist der aktuelle Stand welcher mir immer die Lampe in der Ausgangsbox auf den angegebenen Wert setzt, unabhängig vom aktuellen Status.
    Switchon.PNG


    Die folgende Logik stammt aus SmarthomeNG und erfüllt genau die Anforderung

    Code:
    #!/usr/bin/env python3
    # switchon.py
    
    # get triggering item
    trigger_source = 'Wohnzimmer.Licht.Patsch'
    logger.warning('SwitchOn triggered by '+trigger_source)
    trigger_item = sh.return_item(trigger_source)
    
    if not trigger_item():
        # switch on associated item
        item_to_switchon = sh.return_item('Wohnzimmer.Licht.LED')
        if not sh.return_item('Wohnzimmer.Licht.LED'):
            if not sh.return_item('Wohnzimmer.Licht.Spot.w'):
                logger.warning('Switching on '+str(item_to_switchon))
                item_to_switchon(20)
    else:
        logger.warning('SwitchOn trigger item is switched off. Nothing to do.')
    Zuletzt geändert von Lonie; 09.05.2019, 11:19.
    Grüße
    Marcel

    #2
    Was genau läuft denn aktuell falsch? Vermutlich eine Ausgangsbox<>0 nehmen würde schon helfen, denn der AND liefert natürlich auch 0en.

    Kommentar


      #3
      Bis zur Ausgangsbox soll es ja nur kommen wenn alle Lampen aus sind (untere Eingangsbox) und ein 0 Telegramm auf 1/1/255 reinkommt. Aktuell werden über den Bus alle Lampen ausgeschaltet und direkt danach triggert die Logik welche die Regel in der Ausgangsbox ausführt. Ich vermute fast dass es ein Timingproblem ist
      Grüße
      Marcel

      Kommentar


        #4
        Was hast du denn in der Ausgangsbox? Dort solltest du nicht die 1/1/255 schalten.
        Du musst die GA, die der Schalter sendet von der GA, die die Leuchten schaltet trennen.
        Schalter sendet 1/1/255, Edomi bekommt die 0, Sendet 1 aud den UND LBS, und die Ausgangsbox sollte dann die Leuchten einzeln einschalten.

        Kommentar


          #5
          Ich würde mit 2x Sperre-LBS (14000029) arbeiten:

          einmal gesperrt bei ODER (1182) = 1 und offen bei ODER = 0 -> "1" soll auf Adresse der einzuschaltenden Lampe gesendet werden
          die andere Logik gesperrt bei ODER = 0 und offen bei 1 -> "0" soll auf 1/1/255 gesendet werden

          Kommentar


            #6
            Oder einfach nur eine kleine Verzögerung hinter deine GA 1/1/255 und eine Ausgangsbox (E1 == 0) benutzen und dann die GA der gewünschten Lampe auf 1 setzen. Quasi ohne den Status der anderen Lampen zu prüfen.

            Möglicherweise kommt dein Status ohnehin "zu spät", sodass du bei der Verwendung des Sperre LBS die Sperre noch aktiv ist, wenn deine "0" von der 1/1/255 kommt. Die Aktoren müssen ja erst reagieren und dann noch den Status senden. Da vergehen ein paar ms. Also solltest du die Auswertung so oder so etwas verzögern.

            Der "UND"-Baustein führt hier wahrschleinlich nicht zu dem gewünschten Verhalten, da die Patschfunktion ja immer nur eine 0 auf den Bus sendet (oder?) und damit liegt an deinem Inverter immer eine 1 an und sobald alle Status-KOs eine 0 aufweisen würde deine Logik getriggert werden, auch wenn gerade keiner "gepatscht" hat.
            Gruß
            Stefan

            Kommentar


              #7
              Zitat von MrIcemanLE Beitrag anzeigen
              Der "UND"-Baustein führt hier wahrschleinlich nicht zu dem gewünschten Verhalten, da die Patschfunktion ja immer nur eine 0 auf den Bus sendet (oder?) und damit liegt an deinem Inverter immer eine 1 an und sobald alle Status-KOs eine 0 aufweisen würde deine Logik getriggert werden, auch wenn gerade keiner "gepatscht" hat.
              Das ist auch meine Vermutung. Im Endeffekt bleibt an der GA 1/1/255 immer eine 0 stehen und die Logik reagiert nicht nur auf Telegramme sondern auf den aktuellen Zustand. Gibt es eine Möglichkeit ausschließlich auf ein eingehendes Telegramm zu reagieren? Der Status von 1/1/255 ändert sich ja nie sondern erhält nur Telegramme mit identischem Status
              Grüße
              Marcel

              Kommentar


                #8
                Ich würde es so versuchen.
                Habe dein Schema nur nachgebildet.!

                Wenn das Oder innerhalb der Impulszeit von in diesem Beispiel 1000ms auf 0 springt, gibt die Sperre frei und lässt sas Signal des Impulses durch.
                Da E4 der Sperre auf 1 gesetzt ist, wird das Signal auch dann geschickt, wenn das Telegramm zuvor eingetroffen ist!
                Na nach der Impulszeit wieder 0 an E2 der Sperre anliegt, wird nach der Impulszeit auch das Licht nicht mehr eingeschalten.
                Du müsstest also nur noch austesten, wie lange deine Impulszeit denn so sein soll....
                Durch den Impuls bleibt innerhalb der Logik GA 1/1/255 auch eben nicht imemr auf 0, sondern wechselt!


                tmp.jpg

                Kommentar


                  #9
                  Zitat von Lonie Beitrag anzeigen
                  Gibt es eine Möglichkeit ausschließlich auf ein eingehendes Telegramm zu reagieren?
                  Die Logiken werden immer von eingehenden Telegrammen getriggert. Was dann passiert hängt natürlich von der Logik ab.

                  Daher kam ja die Empfehlung mit dem Werks-LBS "Sperre", der ähnlich einem UND-Baustein funktioniert. Deine Status KOs würden die Sperre aufheben, wenn alle auf 0 stehen und damit auch keine weitere Verarbeitung triggern. Wenn jetzt die verzögerte 0 bzw. 1 deines KO 1/1/255 kommt, wird es entweder durchgelassen oder nicht. Danach passiert bis zur nächsten 0 nichts mehr. Es wird also nicht permanent geprüft, sondern nur bei einem Event ( = Telegramm).

                  Eine Frage bleibt in deinem Fall, warum so umständlich, wenn die 1/1/255 ohnehin per KNX-Verknüpfung die anderen Lampen ausschaltet, brauchst du das doch nicht mehr prüften. Einfach kurz warten und dann die gewünschte Lampe anschalten.
                  Gruß
                  Stefan

                  Kommentar


                    #10
                    Hatte auch schon einen Vorschlag gebastelt. Also nicht falsch verstehen givemeone

                    Window.png
                    Gruß
                    Stefan

                    Kommentar


                      #11
                      Zitat von MrIcemanLE Beitrag anzeigen
                      Hatte auch schon einen Vorschlag gebastelt. Also nicht falsch verstehen givemeone
                      Viele Wege führen nach Rom, ist doch spannend!.
                      Meine Variante hätte nicht immer die 500ms delay, sondern würde direkt reagieren, sobald der Oder-Zweig "Frei" gibt.
                      Dafür benötigt sie auch eine Custom-LBS und nicht nur eingebaute.... .

                      so long

                      Kommentar


                        #12
                        Nach einigem hin- und her läuft es jetzt. Wichtig war die Sperre der Lampenstatus und der Impuls/Trigger ohne Dauer. Hauptproblem im Verständnis war wohl dass man nicht wie in SHNG ein explizites Triggeritem setzen kann sondern Sperren auf alle Eingänge setzen muss welche man nicht als Auslöser der Logik haben möchte

                        Switchon_v2.PNG
                        Grüße
                        Marcel

                        Kommentar


                          #13
                          In dem fall kannst Du den Impuls ziemlich sicher auch entfernen!

                          sG
                          Joe

                          Kommentar


                            #14
                            Leider nicht. Wenn er nicht in der Kette ist werden zuerst alle Lampen durch den KNX Bus ausgeschalten und ca. 70ms später die Lampe im Ausgangsbaustein eingeschalten.
                            Grüße
                            Marcel

                            Kommentar


                              #15
                              Und mit der Verzögerung (mehr als 70ms) satt dem Trigger/Impuls-LBS?
                              Gruß
                              Stefan

                              Kommentar

                              Lädt...
                              X