Seite 1 von 3

[V4.0.1] Frage zur Logikengine / Signalverzögerung

Verfasst: Mi Aug 07, 2024 9:13 am
von piet61
Hallo Forum,
bei einigen Fenstern in unserem EFH setze ich Enocean Fenstergriffe ein. Diese Griffe haben im KNX 2 Status-KOs. Diese beiden KOs senden ein Statuswert je nach Stellung des Fenstergriffs.

Code: Alles auswählen

Status 1=0 UND Status 2=0 -> geschlossen
Status 1=1 UND Status 2=0 -> gekippt
Status 1=1 UND Status 2=1 -> geöffnet
Über eine Binärmultiplexerlogik mache ich daraus einen Dezimalwert (0=geschlossen, 1=gekippt, 3=geöffnet), dies funktioniert auch so wie gewünscht.
Bild

Den Ausgangswert der Binärmultiplexer nutze ich für die Anzeige in der Visu und schreibe die Werte in eine Grafana Zeitserie.

Wenn man einen Fenstergriff direkt von 'gekippt' zu 'geschlossen' oder umgekehrt ändert, dann bewegt sich der Griff ja über den 'geöffnet' Status.
Für die Anzeige in der Visu ist das egal, aber in der Zeitserie ergibt sich dann immer so ein unschöner 'Peak' in der Darstellung.

Bild

Ich würde gerne verhindern, dass diese Peaks in den Zeitserien auftauchen. Dazu müsste das Signal vom Fenstergriff verzögert werden (ca. 1 Sekunde) und bei Änderung des Signals innerhalb der Verzögerungszeit soll das ursprüngliche Signal verworfen werden, so dass Änderungen von 1 (gekippt) nach 0 (geschlossen) und umgekehrt ohne den 'Umweg' über die 3 (geöffnet) dargestellt werden.

Leider bin ich mit der TWS Logik noch nicht so vertraut. Ich habe die vielen verschiedenen Timer Logiken gesehen, weiß aber nicht, welche ich für die Lösung meines Problems wie verwenden sollte.

Ich würde mich freuen, wenn Ihr mir hierzu einen Tipp geben könntet.

Vielen Dank und viele Grüße

Piet

Re: [V4.0.1] Frage zur Logikengine / Signalverzögerung

Verfasst: Mi Aug 07, 2024 9:53 am
von Robert_Mini
Hallo Piet!

Am einfachsten geht das mit einer UND-Logik mit nur dem K1134 als Eingang. Der Ausgang der UND-Logik hat dann eine Verzögerung, diese auf 1s setzen.
Den Ausgang der UND-Logik auf deinen Binärmultiplexer, fertig.

Hoffe ich hab das richtig verstanden und konnte helfen!

EDIT: noch einfacher wäre eine Verzögerung am KNX-Aktor.

Lg
Robert

Re: [V4.0.1] Frage zur Logikengine / Signalverzögerung

Verfasst: Mi Aug 07, 2024 10:03 am
von SchateMuhl
Hi Piet

Was genau verwendest du für Griffe und was für ein Gateway benutzt du?
Ich selber habe 25 Soda Fenstergriffe mit einem Gateway von AdfWeb.
Ich habe mir für jeden Griff eine Logik gebaut, die mir dann direkt Offen oder Gekippt am Ausgang ausgibt, ausserdem werden damit noch die Umrechnungen von Temperatur und Feuchte gemacht.
in eine TS schreibe ich die Werte 0 = Geschlossen, 1 = gekippt und 10 = geöffnet, diese Werte gebe ich auch auf die VISU um mit den Werten jeweils das richtige Symbol an zu zeigen.

Eventuell willst du davon etwas benutzen.
Bildschirmfoto 2024-08-07 um 09.53.07.png

Code: Alles auswählen

{
  "_Meta": { // Optional
    "Description": "Fenstergriff-Auswertung ",
    "Version": "2.00",
    "Icon": "" // format: "data:image/svg+xml;base64,ENCODED_FILE"
  }, 
  "Level": [
      
      // Eingangs Variablen
      ["$in_1","integer",0],      
      ["$in_2","integer",0],      
      ["$in_3","integer",0],      
      ["$in_4","integer",0],      
      ["$in_5","integer",0],      
      ["$in_6","integer",0],      
      ["$in_7","float",0],      
      ["$in_8","float",0],      
      ["$in_9","integer",0],      
      ["$in_10","integer",0],      
      // Ausgangs Variablen
      
      ["$out_1","integer",0],         
      ["$out_2","integer",0],      
      ["$out_3","integer",0],      
      ["$out_4","integer",0],      
      ["$out_5","integer",0],      
      ["$out_6","integer",0],      
      ["$out_7","float",0],             
      ["$out_8","float",0],        
      ["$out_9","float",0],        
         
      
      ["$out_10","integer",0], 
      ["$out_11","string","                   "], 
   
      
      ["$Var_1","integer",0],  
      ["$Var_2","integer",1],
      ["$Var_3","integer",0],
    
      ["$GG_0","integer",0],
      ["$GG_1","integer",1],
      ["$GG_2","integer",0],
      ["$GG_3","integer",0],
      ["$GG_4","integer",0],
    
      ["$GO_0","integer",0],
      ["$GO_1","integer",0],
      ["$GO_2","integer",0],
      ["$GO_3","integer",1],
      ["$GO_4","integer",1],
    
      ["$GA_0","integer",0],
      ["$GA_1","integer",1],
      
      ["$format_t","string","%.1f °C "], 
      ["$format_f","string","%.1f %% "],
      ["$format_b","string","%.0f %%B "],
      
      ["$visu_temp","string",""],
      ["$visu_feuchte","string",""],
      ["$visu_batt","string",""],
      
      ["$Form_visu","string","( X1 + (X2 * 10) + (X3 * 100) )  "], 
      
      ["$Form_temp","string","( X1 * 0.32 ) -20 "], 
      ["$Form_feucht","string","( X1 * 0.5)"], 
      ["$Form_batt","string","( X1 * 5)"]      
    
      
  ],
  "Input": [
      ["Griff-Position", "Griff Position", "$in_1", "c"],    // Eingangs Wert 
      ["Fensterstatus", "Fensterstatus", "$in_2", "c"],    // Eingangs Wert 
      ["Rechte Taste", "Rechte Taste", "$in_3", "c"],    // Eingangs Wert 
      ["Linke Taste", "Linke Taste", "$in_4", "c"],    // Eingangs Wert 
      ["Alarm", "Alarm", "$in_5", "c"],    // Eingangs Wert 
      ["Bewegung", "Motion", "$in_6", "c"],    // Eingangs Wert 
      ["Urlaubs Mode", "Urlaubs Mode", "$in_7", "c"],    // Eingangs Wert 
      ["Temperatur", "Temperatur", "$in_8", "c"],    // Eingangs Wert 
      ["Feuchtigkeit", "Feuchtigkeit", "$in_9", "c"],    // Eingangs Wert 
      ["Roh-Batterie", "Roh-Batterie", "$in_10", "c"]    // Eingangs Wert 
      
      
      
  ],
  "Output": [
      ["Fenster Gekippt", "Fenster Gekippt", "$out_1", "a"],  
      ["Fenster Offen", "Fenster Offen", "$out_2", "a"],    
      ["Fenster Rechte Taste", "Rechte Taste", "$out_3", "a"],
      ["Fenster Linke Taste", "Linke Taste", "$out_4", "a"],
      ["Fenster Alarm", "Fenster Alarm", "$out_5", "a"],
      ["Urlaubs Modus", "Urlaubs Modus", "$out_6", "a"],
      ["Temperatur", "Temperatur", "$out_7", "a"],
      ["Feuchtigkeit", "Feuchtigkeit", "$out_8", "a"],
      ["Batterie", "Batterie", "$out_9", "a"],
    
      ["Position für VISU", "Pos-VISU", "$out_10", "a"],
      ["Werte für VISU", "Werte", "$out_11", "a"]
  ],

  "Module": [
      
      
      ["Multiplexer",["$GG_0","$GG_1","$GG_2","$GG_3","$GG_4"], "$out_1", "$in_1"]    ,
      ["Multiplexer",["$GO_0","$GO_1","$GO_2","$GO_3","$GO_4"], "$out_2", "$in_1"]    ,
      ["Multiplexer",["$Var_1","$Var_2","$Var_3"], "$out_3", "$in_3"]    , 
      ["Multiplexer",["$Var_1","$Var_2","$Var_3"], "$out_4", "$in_4"]    ,
      ["Multiplexer",["$Var_1","$Var_2"], "$out_5", "$in_5"]    ,
      ["CalcFormula",["$in_8"], "$out_7", "$Form_temp"]    , 
      ["CalcFormula",["$in_9"], "$out_8", "$Form_feucht"]    , 
      ["CalcFormula",["$in_10"], "$out_9", "$Form_batt"] ,            
      
      ["CalcFormula",["$out_1","$out_2","$out_5"], "$out_10", "$Form_visu"], 
      
      ["Printf","$out_7","$format_t", "$visu_temp"],
      ["Printf","$out_8","$format_f", "$visu_feuchte"],
      ["Printf","$out_9","$format_b", "$visu_batt"],
      
      ["Concat",["$visu_temp","$visu_feuchte","$visu_batt"], "$out_11"]
      
      
  ]
}

Re: [V4.0.1] Frage zur Logikengine / Signalverzögerung

Verfasst: Mi Aug 07, 2024 10:41 am
von piet61
Hallo Robert (@Robert_Mini),
vielen Dank für die Info - das mit der UND-Logik werde ich gleich mal ausprobieren!

Eine Verzögerung direkt im KNX lässt sich leider nicht konfigurieren (ist ein Weinzierl KNX ENO Gateway 636).

Viele Grüße

Piet

Re: [V4.0.1] Frage zur Logikengine / Signalverzögerung

Verfasst: Mi Aug 07, 2024 10:46 am
von piet61
Hallo Andreas (@SchateMuhl ),
vielen Dank für Deine Logik - ich werde sie mir mal anschauen und versuchen sie zu verstehen :think:

Ich verwende verschiedene Fenstergriffe (Hoppe, Eltako FFG7B, SODA) und ein Weinzierl KNX ENO Gateway 636.

Viele Grüße

Piet

Re: [V4.0.1] Frage zur Logikengine / Signalverzögerung

Verfasst: Mi Aug 07, 2024 10:51 am
von SchateMuhl
Hallo Piet (@piet61 )

OK, viel spass beim spielen.
Mit dem Weinzierl 636 war ich nicht so richtig zufrieden, die Firmware darauf gibt glaube erst ein Batterie Low wenn die Batterie 10% erreicht hat, mit 10 % haben meine Soda's schon nicht mehr gesendet.

Re: [V4.0.1] Frage zur Logikengine / Signalverzögerung

Verfasst: Mi Aug 07, 2024 12:52 pm
von piet61
Hallo Robert (@Robert_Mini),
klappt wunderbar mit der UND-Logik und der Verzögerung :handgestures-thumbupright: Vielen Dank!

Viele Grüße

Piet

Re: [V4.0.1] Frage zur Logikengine / Signalverzögerung

Verfasst: Mi Aug 07, 2024 2:49 pm
von Robert_Mini
Gerne.
Vielleicht kannst du noch einen Screenshot der Logik zur besseren Nachvollziehbarkeit posten.

Danke
Robert

Re: [V4.0.1] Frage zur Logikengine / Signalverzögerung

Verfasst: Do Aug 08, 2024 10:34 am
von piet61
Hallo Robert (@Robert_Mini),
natürlich, sehr gerne.

Hier die Und-Logik, um das Signal von Status 2 des Fenstergriffs um 1 Sekunde zu verzögern.
Bild

Den Ausgang dieser Logik habe ich dann mit dem 2. Eingang der Multiplexer Logik verknüpft (ich habe noch einen Trigger für ein zyklisches Senden des Signals hinzugefügt).
Bild

Im Grafana Chart kann man nun sehen, dass die Änderung von 'geschlossen' nach 'gekippt' (Status '0' und '1') und umgekehrt ohne den Umweg über 'geöffnet' (Status '3') aufgezeichnet wird, obwohl der Griff selbst den 'geöffnet' Staus beim Bewegen des Griffs kurz tangiert.
Bild

Ich würde diese Funktionen nun gerne in einer Custom Logik zusammenfassen, aber dazu muss ich noch etwas lesen und üben :think:

Viele Grüße

Piet

Re: [V4.0.1] Frage zur Logikengine / Signalverzögerung

Verfasst: Do Aug 08, 2024 2:55 pm
von starwarsfan
Hallo Robert
Robert_Mini hat geschrieben: Mi Aug 07, 2024 9:53 am Am einfachsten geht das mit einer UND-Logik mit nur dem K1134 als Eingang. Der Ausgang der UND-Logik hat dann eine Verzögerung, diese auf 1s setzen.
Wenn ich mir den Code des UND-Bausteines anschaue, dann frage ich mich, woher da die Optionen für die Ein- und Ausgänge kommen!? Also wie/wo ist definiert, dass man dort eine Verzögerung konfigurieren kann? Wie mache ich das in einem Custom-LBS? :confusion-scratchheadyellow: