NEU! UPGRADE IP 11 verfügbar!
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2
Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074
Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117
NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2
Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074
Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117
NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs
[FINR] Logik verzögert triggern/abarbeiten
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
-
- Reactions:
- Beiträge: 2184
- Registriert: So Aug 12, 2018 1:38 pm
- Wohnort: Karlsruher Raum
- Hat sich bedankt: 482 Mal
- Danksagung erhalten: 889 Mal
Logik verzögert triggern/abarbeiten
Hi,
ich stehe gerade vor dem Problem, dass ich eine Logik verzögert abarbeiten will, nachdem diese eigentlich durch einen Change am Eingang getriggert wurde.
Konkreter Fall: Meine Wetterstation liefert mir 4 Helligkeitswerte, die bei Änderungen und zyklisch gesendet werden und nicht gleichzeitig kommen. D.h. meine Logik fängt bei einem neuen Wert auf dem ersten Helligkeitseingang mitunter schon an zu rechnen, mit veralteten Helligkeitswerten der anderen Eingänge.
Einfachste High-Level Lösung wäre aus meiner Sicht die Abarbeitung 1s zu verzögern, dann sind alle Werte gültig. Oder eine Ein-/Ausschaltverzögerung auf dem Ausgang mit der LE "eingebauten" Lösung. Diese sendet im Falle der Ein-/Ausschaltverzögerung nicht nur den aktuellen Wert, sondern auch noch den vorangegangenen (Beta25).
Die Logik soll durch Änderungen an den Eingängen triggern, nicht zyklisch.
Hat da jemand eine schlaue und schlanke Idee?
ich stehe gerade vor dem Problem, dass ich eine Logik verzögert abarbeiten will, nachdem diese eigentlich durch einen Change am Eingang getriggert wurde.
Konkreter Fall: Meine Wetterstation liefert mir 4 Helligkeitswerte, die bei Änderungen und zyklisch gesendet werden und nicht gleichzeitig kommen. D.h. meine Logik fängt bei einem neuen Wert auf dem ersten Helligkeitseingang mitunter schon an zu rechnen, mit veralteten Helligkeitswerten der anderen Eingänge.
Einfachste High-Level Lösung wäre aus meiner Sicht die Abarbeitung 1s zu verzögern, dann sind alle Werte gültig. Oder eine Ein-/Ausschaltverzögerung auf dem Ausgang mit der LE "eingebauten" Lösung. Diese sendet im Falle der Ein-/Ausschaltverzögerung nicht nur den aktuellen Wert, sondern auch noch den vorangegangenen (Beta25).
Die Logik soll durch Änderungen an den Eingängen triggern, nicht zyklisch.
Hat da jemand eine schlaue und schlanke Idee?
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
-
- Elaborated Networks
- Reactions:
- Beiträge: 9775
- Registriert: So Aug 12, 2018 9:27 am
- Wohnort: Frauenneuharting
- Hat sich bedankt: 4879 Mal
- Danksagung erhalten: 7820 Mal
- Kontaktdaten:
Hallo Jochen,
stelle halt die ersten drei Eingänge vom Triggerverhalten so, dass diese keinen Berechnungstrigger auslösen und nur bei Eintreffen auf den vierten Wert wird getriggert. Oder geht das nicht, weil die Reihenfolge der Meldungen unterschiedlich ist?
Ansonsten bräuchte man ein vierfach-Und mit Zeitfenster... (wenn alle vier Werte innerhalb Zeitraum X eintreffen, wird eine 1 am Ausgang gesendet)...
mal sehen, was dem anderen Stefan dazu einfällt
Stefan
stelle halt die ersten drei Eingänge vom Triggerverhalten so, dass diese keinen Berechnungstrigger auslösen und nur bei Eintreffen auf den vierten Wert wird getriggert. Oder geht das nicht, weil die Reihenfolge der Meldungen unterschiedlich ist?
Ansonsten bräuchte man ein vierfach-Und mit Zeitfenster... (wenn alle vier Werte innerhalb Zeitraum X eintreffen, wird eine 1 am Ausgang gesendet)...
mal sehen, was dem anderen Stefan dazu einfällt
Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de
Link zu Impressum und Datenschutzerklärung oben.
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de
Link zu Impressum und Datenschutzerklärung oben.
-
- Reactions:
- Beiträge: 2184
- Registriert: So Aug 12, 2018 1:38 pm
- Wohnort: Karlsruher Raum
- Hat sich bedankt: 482 Mal
- Danksagung erhalten: 889 Mal
Hi Stefan,
wäre ne Idee. Muss mir das Timing ansehen, ob die konsistent in der gleichen Reihenfolge kommen. Dank TWS KNX Busmonitor ja kein Problem
wäre ne Idee. Muss mir das Timing ansehen, ob die konsistent in der gleichen Reihenfolge kommen. Dank TWS KNX Busmonitor ja kein Problem
Zuletzt geändert von Dragonos2000 am Sa Aug 03, 2019 2:05 pm, insgesamt 2-mal geändert.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
-
- Elaborated Networks
- Reactions:
- Beiträge: 588
- Registriert: Mi Aug 15, 2018 11:34 am
- Hat sich bedankt: 82 Mal
- Danksagung erhalten: 559 Mal
Hallo Jochen,
Und wie ich als alter Latriner immer zu sagen pflege: "Mens sana in campari soda" (oder so ähnlich)
Ich glaube, ich habe da die richtige Erweiterung für deine Custom-Logik.
Folgende Erweiterung in deine Custom-Logik "mergen" und deine Ausgänge auf Sende-Option "T" (on timer) umstellen:
Beispiel:
Vorher:
Nachher:
Das sieht dann, nach hinzufügen der gewünschten Eingänge, in etwa so aus:
Durch einen neuen Wert an einem der Eingänge wird der Timer gestartet.
Nach Ablauf der Wartezeit wird die Logik berechnet und die Werte an den Ausgängen gesendet.
Wenn während der Timer läuft, neue Werte an den Eingängen eintreffen, wird die Logik zwar auch berechnet, aber es wird nichts an den Ausgängen gesendet (wegen der Sende-Option "T" = "on timer").
Alternativ könnte man auch den retirggerbaren Timer (Monoflop) verwenden (mit Trigger-Option 1):
["Monoflop","$ConstTrue","-$ConstTrue",0,"$WaitTime",1]
Dann würde die Logik mit der Ausgabe der Werte solange warten bis (die Dauer der Wartezeit lang) Ruhe an den Eingängen herrscht.
Jeder neue Wert an den Eingängen würde dann den Timer "retriggern" und erst wenn eine Wartezeit lang kein neuer Wert eingetroffen ist, werden die Ausgänge gesendet.
hat etwas länger gedauert. Musste er erst zum joggen, da fällt mir dann auch meist was ein.Dragonos2000 hat geschrieben: ↑Fr Aug 02, 2019 1:02 pm Einfachste High-Level Lösung wäre aus meiner Sicht die Abarbeitung 1s zu verzögern, dann sind alle Werte gültig.
Und wie ich als alter Latriner immer zu sagen pflege: "Mens sana in campari soda" (oder so ähnlich)
Ich glaube, ich habe da die richtige Erweiterung für deine Custom-Logik.
Folgende Erweiterung in deine Custom-Logik "mergen" und deine Ausgänge auf Sende-Option "T" (on timer) umstellen:
Code: Alles auswählen
"Level": [
["$ConstTrue","bool",true],
["$WaitTime","float",1],
],
"Module": [
["Monoflop","$ConstTrue","-$ConstTrue",0,"$WaitTime",0],
],
"Input": [
["Wartezeit","Wartezeit nach Eingang des ersten Triggers bevor Ergebnis gesendet wird","$WaitTime","c"],
],
"Output": [
]
Vorher:
Code: Alles auswählen
{
"Level": [
["$VAR<In!>","float",0],
["$Min","float",0],
["$Max","float",0],
["$Mean","float",0],
["$Median","float",0],
["$VAR<Inhibit?>","bool",false]
],
"Module": [
["Break",["$VAR<Inhibit?>"]],
["Statistic",["$VAR<In!>"],"$Min","$Max","$Mean","$Median"]
],
"Input": [
["Eingang","Eingangs-Wert","$VAR<In!>","c"],
["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
],
"Output": [
["Min","Minimum","$Min","t"],
["Max","Maximum","$Max","t"],
["Mean","Mittelwert","$Mean","t"],
["Median","Zentralwert","$Median","t"]
]
}
Code: Alles auswählen
{
"Level": [
["$VAR<In!>","float",0],
["$Min","float",0],
["$Max","float",0],
["$Mean","float",0],
["$Median","float",0],
["$ConstTrue","bool",true],
["$WaitTime","float",1],
["$VAR<Inhibit?>","bool",false]
],
"Module": [
["Break",["$VAR<Inhibit?>"]],
["Monoflop","$ConstTrue","-$ConstTrue",0,"$WaitTime",0],
["Statistic",["$VAR<In!>"],"$Min","$Max","$Mean","$Median"]
],
"Input": [
["Eingang","Eingangs-Wert","$VAR<In!>","c"],
["Wartezeit","Wartezeit nach Eingang des ersten Triggers bevor Ergebnis gesendet wird","$WaitTime","c"],
["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
],
"Output": [
["Min","Minimum","$Min","t"],
["Max","Maximum","$Max","t"],
["Mean","Mittelwert","$Mean","t"],
["Median","Zentralwert","$Median","t"]
]
}
Durch einen neuen Wert an einem der Eingänge wird der Timer gestartet.
Nach Ablauf der Wartezeit wird die Logik berechnet und die Werte an den Ausgängen gesendet.
Wenn während der Timer läuft, neue Werte an den Eingängen eintreffen, wird die Logik zwar auch berechnet, aber es wird nichts an den Ausgängen gesendet (wegen der Sende-Option "T" = "on timer").
Alternativ könnte man auch den retirggerbaren Timer (Monoflop) verwenden (mit Trigger-Option 1):
["Monoflop","$ConstTrue","-$ConstTrue",0,"$WaitTime",1]
Dann würde die Logik mit der Ausgabe der Werte solange warten bis (die Dauer der Wartezeit lang) Ruhe an den Eingängen herrscht.
Jeder neue Wert an den Eingängen würde dann den Timer "retriggern" und erst wenn eine Wartezeit lang kein neuer Wert eingetroffen ist, werden die Ausgänge gesendet.
Zuletzt geändert von S. Kolbinger am Sa Aug 03, 2019 4:43 pm, insgesamt 1-mal geändert.
Gruß,
Stefan K.
Stefan K.
-
- Reactions:
- Beiträge: 2184
- Registriert: So Aug 12, 2018 1:38 pm
- Wohnort: Karlsruher Raum
- Hat sich bedankt: 482 Mal
- Danksagung erhalten: 889 Mal
Hallo Stefan,
vielen herzlichen Dank! Das wäre echt simpel und schlank
Musste das aber trotzdem mehrmals lesen und hab' immer noch Stirnrunzeln
Verständnisfragen:
Bleibt die Logik beim Monoflop stehen, bis der Timer abgelaufen ist? Oder läuft der Timer los und noch während der Timer läuft, wird auch schon die Statistik berechnet und nur noch nicht gesendet?
Wenn ich mehrere Timer in einer Customlogik verwende: Welcher Timer zieht dann bei Sendeoption "T" ?
Btw.: Die Werte kommen in der Reihenfolge inkonsistent...(um die Frage von vorher noch zu beantworten).
vielen herzlichen Dank! Das wäre echt simpel und schlank
Musste das aber trotzdem mehrmals lesen und hab' immer noch Stirnrunzeln
Verständnisfragen:
Bleibt die Logik beim Monoflop stehen, bis der Timer abgelaufen ist? Oder läuft der Timer los und noch während der Timer läuft, wird auch schon die Statistik berechnet und nur noch nicht gesendet?
Wenn ich mehrere Timer in einer Customlogik verwende: Welcher Timer zieht dann bei Sendeoption "T" ?
Btw.: Die Werte kommen in der Reihenfolge inkonsistent...(um die Frage von vorher noch zu beantworten).
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
-
- Reactions:
- Beiträge: 2184
- Registriert: So Aug 12, 2018 1:38 pm
- Wohnort: Karlsruher Raum
- Hat sich bedankt: 482 Mal
- Danksagung erhalten: 889 Mal
Und Stefan: Kein Ding, dass es etwas gedauert hat. Zumal wir auch Wochenende haben!
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
-
- Elaborated Networks
- Reactions:
- Beiträge: 588
- Registriert: Mi Aug 15, 2018 11:34 am
- Hat sich bedankt: 82 Mal
- Danksagung erhalten: 559 Mal
Hallo Jochen,
Eine alternative Lösung wäre, die Ausführung der Logik zu unterbrechen, bis der Timer abgelaufen ist.
Da gibt es aktuell aber noch ein Problem, dessen Fix es leider nicht mehr in diese Version geschafft hat.
Aber der sollte aller Wahrscheinlichkeit nach beim nächsten Bug-Fix dabei sein.
Mögliche Timer-Module sind:
Die Logik bleibt nicht stehen. Es wird weiter berechnet, aber erst nach Ablauf des Timers, wird dann auch das Ergebnis gesendet.Dragonos2000 hat geschrieben: ↑Sa Aug 03, 2019 8:29 pm Bleibt die Logik beim Monoflop stehen, bis der Timer abgelaufen ist? Oder läuft der Timer los und noch während der Timer läuft, wird auch schon die Statistik berechnet und nur noch nicht gesendet?
Eine alternative Lösung wäre, die Ausführung der Logik zu unterbrechen, bis der Timer abgelaufen ist.
Da gibt es aktuell aber noch ein Problem, dessen Fix es leider nicht mehr in diese Version geschafft hat.
Aber der sollte aller Wahrscheinlichkeit nach beim nächsten Bug-Fix dabei sein.
Die Sende-Option "T" (on timer) bezieht sich auf alle Timer-Module in der Logikzelle und ist nicht selektiv.Dragonos2000 hat geschrieben: ↑Sa Aug 03, 2019 8:29 pm Wenn ich mehrere Timer in einer Customlogik verwende: Welcher Timer zieht dann bei Sendeoption "T" ?
Mögliche Timer-Module sind:
- Monoflop (single shot timer): Triggert nach Ablauf der Zeitdauer
- Clock (zyklischer Timer) : Triggert jedesmal nach Wechsel des Taktzustandes
- Cron (Uhrzeit abhängiger Timer): Triggert jedesmal bei erreichen der eingestellten Zeit(en)
Gruß,
Stefan K.
Stefan K.
-
- Reactions:
- Beiträge: 2184
- Registriert: So Aug 12, 2018 1:38 pm
- Wohnort: Karlsruher Raum
- Hat sich bedankt: 482 Mal
- Danksagung erhalten: 889 Mal
Ich hab's mal so implementiert und beobachte die Tage das Verhalten. Im Doktormodus de LE ist das irgendwie nicht so richtig visualisierbar. Da sieht es aus, als würde der Ausgang einfach zweimal senden (einmal sofort und dann nach der eingestellten Verzögerung).
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
-
- Elaborated Networks
- Reactions:
- Beiträge: 588
- Registriert: Mi Aug 15, 2018 11:34 am
- Hat sich bedankt: 82 Mal
- Danksagung erhalten: 559 Mal
Das ist noch ein Anzeigefehler im Doktor-Modus. Das werden wir noch korrigieren.Dragonos2000 hat geschrieben: ↑Mo Aug 05, 2019 9:41 am Im Doktormodus de LE ist das irgendwie nicht so richtig visualisierbar. Da sieht es aus, als würde der Ausgang einfach zweimal senden (einmal sofort und dann nach der eingestellten Verzögerung).
Gruß,
Stefan K.
Stefan K.
-
- Reactions:
- Beiträge: 2184
- Registriert: So Aug 12, 2018 1:38 pm
- Wohnort: Karlsruher Raum
- Hat sich bedankt: 482 Mal
- Danksagung erhalten: 889 Mal
Ich werde die TImer-Infos von oben in die KB einbauen. @Robert_Mini ok? Oder willst Du das machen?
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit