KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor

KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum

Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

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

Informationen und Diskussionen über Logik-Engine und Logik-Editor
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Ersteller
piet61
Reactions:
Beiträge: 35
Registriert: Fr Dez 08, 2023 3:50 pm
Hat sich bedankt: 22 Mal
Danksagung erhalten: 17 Mal

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

#1

Beitrag 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
TWS 3500XL ID: 1403 (VPN offen, Reboot nach Rücksprache)

Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1264 Mal
Danksagung erhalten: 2213 Mal

#2

Beitrag 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
Zuletzt geändert von Robert_Mini am Mi Aug 07, 2024 10:24 am, insgesamt 3-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

SchateMuhl
Reactions:
Beiträge: 472
Registriert: Mi Nov 23, 2022 9:31 pm
Wohnort: Werther bei Nordhausen
Hat sich bedankt: 128 Mal
Danksagung erhalten: 185 Mal
Kontaktdaten:

#3

Beitrag 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"]
      
      
  ]
}
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Grüße
Andreas

TWS 3500M ID:992 /XL ID:1198 , VPN offen, Reboot nach Absprache
- KNX mit TWS, 1Home, ENO Gateway, ETS6.3
- PV Anlagen AC gekoppelt mit Fronius IG 40/60 und Symo 10KW
- 96kWh LiFePo mit 3 x MultiPlus 48/8000 und DC PV Anlagen über MPPT

Ersteller
piet61
Reactions:
Beiträge: 35
Registriert: Fr Dez 08, 2023 3:50 pm
Hat sich bedankt: 22 Mal
Danksagung erhalten: 17 Mal

#4

Beitrag 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
TWS 3500XL ID: 1403 (VPN offen, Reboot nach Rücksprache)

Ersteller
piet61
Reactions:
Beiträge: 35
Registriert: Fr Dez 08, 2023 3:50 pm
Hat sich bedankt: 22 Mal
Danksagung erhalten: 17 Mal

#5

Beitrag 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
Zuletzt geändert von piet61 am Mi Aug 07, 2024 10:47 am, insgesamt 1-mal geändert.
TWS 3500XL ID: 1403 (VPN offen, Reboot nach Rücksprache)

SchateMuhl
Reactions:
Beiträge: 472
Registriert: Mi Nov 23, 2022 9:31 pm
Wohnort: Werther bei Nordhausen
Hat sich bedankt: 128 Mal
Danksagung erhalten: 185 Mal
Kontaktdaten:

#6

Beitrag 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.
Grüße
Andreas

TWS 3500M ID:992 /XL ID:1198 , VPN offen, Reboot nach Absprache
- KNX mit TWS, 1Home, ENO Gateway, ETS6.3
- PV Anlagen AC gekoppelt mit Fronius IG 40/60 und Symo 10KW
- 96kWh LiFePo mit 3 x MultiPlus 48/8000 und DC PV Anlagen über MPPT

Ersteller
piet61
Reactions:
Beiträge: 35
Registriert: Fr Dez 08, 2023 3:50 pm
Hat sich bedankt: 22 Mal
Danksagung erhalten: 17 Mal

#7

Beitrag von piet61 »

Hallo Robert (@Robert_Mini),
klappt wunderbar mit der UND-Logik und der Verzögerung :handgestures-thumbupright: Vielen Dank!

Viele Grüße

Piet
TWS 3500XL ID: 1403 (VPN offen, Reboot nach Rücksprache)

Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1264 Mal
Danksagung erhalten: 2213 Mal

#8

Beitrag von Robert_Mini »

Gerne.
Vielleicht kannst du noch einen Screenshot der Logik zur besseren Nachvollziehbarkeit posten.

Danke
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
piet61
Reactions:
Beiträge: 35
Registriert: Fr Dez 08, 2023 3:50 pm
Hat sich bedankt: 22 Mal
Danksagung erhalten: 17 Mal

#9

Beitrag 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
TWS 3500XL ID: 1403 (VPN offen, Reboot nach Rücksprache)
Benutzeravatar

starwarsfan
Reactions:
Beiträge: 1395
Registriert: Mi Okt 10, 2018 2:39 pm
Hat sich bedankt: 864 Mal
Danksagung erhalten: 1199 Mal

#10

Beitrag 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:
Kind regards,
Yves

TWS 2500 ID:159 / TWS 3500 ID:618 / TWS 3500 ID:1653 + PBM ID:401 / ProxMox / 1-Wire / iButtons / Edomi (LXC / Docker) / evcc / ControlPro
(TW-VPN jeweils offen, Reboot nach Rücksprache)
Antworten

Zurück zu „Logikengine & Logik-Editor“