UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ
NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ
NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074
[DISKUSSION] Logik-Unterstützung - mehrere Trigger zeitversetzt
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: 375
- Registriert: So Apr 14, 2019 11:12 am
- Hat sich bedankt: 203 Mal
- Danksagung erhalten: 198 Mal
Logik-Unterstützung - mehrere Trigger zeitversetzt
Hallo zusammen,
irgendwie komme ich auf keine sinnvolle Lösung/Idee oder denke einfach zu kompliziert. Daher möchte ich mal fragen, ob jmd. eine pragmatische Idee für folgende Logik hat.
Funktion: Setze n verschiedene Trigger (für HTTP-API um die Calls/minute nicht zu überschreiten) nach einer am Eingang definierten Verzögerungszeit.
Eingang: Verzögerungszeit (z. B. 5 sec.)
Ausgang 1: True nach 1x Verzögerungszeit (also true nach 5 sec.)
Ausgang 2: True nach 2x Verzögerungszeit (also true nach 10 sec.)
Ausgang 3: True nach 3x Verzögerungszeit (also true nach 15 sec.)
...
Ausgang n: True nach nx Verzögerungszeit (also true nach n x 5 sec.)
Nach einer Kombination mit CalcFormula, Monoflop, Latch, SendExplicit erhalte ich in Grafana immer noch nicht die gewünschten Ergebnisse . Nun brauche ich erst mal eine Pause und freue ich mich in der Zwischenzeit auf Ideen oder Minimalbeispiele.
Besten Dank!
Grüß
Adi
irgendwie komme ich auf keine sinnvolle Lösung/Idee oder denke einfach zu kompliziert. Daher möchte ich mal fragen, ob jmd. eine pragmatische Idee für folgende Logik hat.
Funktion: Setze n verschiedene Trigger (für HTTP-API um die Calls/minute nicht zu überschreiten) nach einer am Eingang definierten Verzögerungszeit.
Eingang: Verzögerungszeit (z. B. 5 sec.)
Ausgang 1: True nach 1x Verzögerungszeit (also true nach 5 sec.)
Ausgang 2: True nach 2x Verzögerungszeit (also true nach 10 sec.)
Ausgang 3: True nach 3x Verzögerungszeit (also true nach 15 sec.)
...
Ausgang n: True nach nx Verzögerungszeit (also true nach n x 5 sec.)
Nach einer Kombination mit CalcFormula, Monoflop, Latch, SendExplicit erhalte ich in Grafana immer noch nicht die gewünschten Ergebnisse . Nun brauche ich erst mal eine Pause und freue ich mich in der Zwischenzeit auf Ideen oder Minimalbeispiele.
Besten Dank!
Grüß
Adi
Zuletzt geändert von adimaster am Sa Feb 05, 2022 8:32 pm, insgesamt 1-mal geändert.
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache
-
- Reactions:
- Beiträge: 1876
- Registriert: Di Okt 09, 2018 9:26 am
- Hat sich bedankt: 635 Mal
- Danksagung erhalten: 775 Mal
Hallo Adi,
Bin momentan leider stark eingeschränkt, würde ein paar Tage dauern, bis ich nen Code erstellt haben kann... aber vielleicht hilft dir diese Diskussion als Ideengeber
viewtopic.php?p=24628#p24628
Dort wird nur ein Ausgang geschaltet, aber es läuft auch eine Zeitenabhängige Kette... das müsste eigentlich im Grunde ähnlich sein.
Bin momentan leider stark eingeschränkt, würde ein paar Tage dauern, bis ich nen Code erstellt haben kann... aber vielleicht hilft dir diese Diskussion als Ideengeber
viewtopic.php?p=24628#p24628
Dort wird nur ein Ausgang geschaltet, aber es läuft auch eine Zeitenabhängige Kette... das müsste eigentlich im Grunde ähnlich sein.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
-
- Reactions:
- Beiträge: 3585
- Registriert: So Aug 12, 2018 10:20 am
- Hat sich bedankt: 1253 Mal
- Danksagung erhalten: 1649 Mal
Das geht doch mit dem Taktsignalgeber, der Standardlogiken.
Einen Eingang der den Taktgeber Startet/Stoppt und den zweiten Wert als fixen Parameter 5s, am Ausgang ein Mapping auf true = 1 und false = 1 und Sendebedingung A allways.
Kommt auf dem Start-Stop ein true an, dann sendet das Ding alle 5s eine 1 wohin, bis an dem Start/Stopp Eingang ein false kommt.
Einen Eingang der den Taktgeber Startet/Stoppt und den zweiten Wert als fixen Parameter 5s, am Ausgang ein Mapping auf true = 1 und false = 1 und Sendebedingung A allways.
Kommt auf dem Start-Stop ein true an, dann sendet das Ding alle 5s eine 1 wohin, bis an dem Start/Stopp Eingang ein false kommt.
Grüße
Göran
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension
Göran
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension
-
- Reactions:
- Beiträge: 375
- Registriert: So Apr 14, 2019 11:12 am
- Hat sich bedankt: 203 Mal
- Danksagung erhalten: 198 Mal
Danke Sven und Göran!
Wäre es möglich, den Takt nicht direkt an einen Ausgang zu legen, sondern:
- mit jedem Takt einen Zähler mittels Addition mit 1 (CalcFormula) hochzählen
- mittels Multiplexer und
- nachgeschalteten Latches
den richtigen Ausgang schreiben?
Dann würde ich aber noch Sendexplicit anstelle von "always" benötigen um nicht jedes Mal auf allen Ausgängen zu senden, schätze ich.
Wenn dann alle durch sind --> mit einem break stoppen, bis der Zähler wieder neu getriggert wird.
Wobei das dann auch schon wieder kompliziert klingt
Die andere Möglichkeit wären n "And-Module" mit Trigger (würden wahrscheinlich so 15 Stück bei mir werden). Das wäre sicherlich das effizienteste und schnellste. Allerdings finde ich das irgendwie nicht so smart wie eine einzige CustomLogik die ein HTTP-API Sub-System triggert.
Ich stelle mir vor, dass zu einer bestimmten Uhrzeit n verschiedene Ausgänge jeweils im Abstand von x Sekunden nacheinander true senden. So werden die calls/min des APIs nicht überschritten. In jeder Programmiersprache eine einfach Schleife mit nem Delay drin ... .
Grüße
Adi
Das schau ich mir genauer an.
Ja, klingt super einfach. Du ziehst hier aber nur einen einzigen Ausgang in Betracht. Richtig?
Wäre es möglich, den Takt nicht direkt an einen Ausgang zu legen, sondern:
- mit jedem Takt einen Zähler mittels Addition mit 1 (CalcFormula) hochzählen
- mittels Multiplexer und
- nachgeschalteten Latches
den richtigen Ausgang schreiben?
Dann würde ich aber noch Sendexplicit anstelle von "always" benötigen um nicht jedes Mal auf allen Ausgängen zu senden, schätze ich.
Wenn dann alle durch sind --> mit einem break stoppen, bis der Zähler wieder neu getriggert wird.
Wobei das dann auch schon wieder kompliziert klingt
Die andere Möglichkeit wären n "And-Module" mit Trigger (würden wahrscheinlich so 15 Stück bei mir werden). Das wäre sicherlich das effizienteste und schnellste. Allerdings finde ich das irgendwie nicht so smart wie eine einzige CustomLogik die ein HTTP-API Sub-System triggert.
Ich stelle mir vor, dass zu einer bestimmten Uhrzeit n verschiedene Ausgänge jeweils im Abstand von x Sekunden nacheinander true senden. So werden die calls/min des APIs nicht überschritten. In jeder Programmiersprache eine einfach Schleife mit nem Delay drin ... .
Grüße
Adi
Zuletzt geändert von adimaster am So Feb 06, 2022 1:49 am, insgesamt 1-mal geändert.
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache
-
- Reactions:
- Beiträge: 3741
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1164 Mal
- Danksagung erhalten: 2058 Mal
Hallo Adi!
Ich grüble auch mit , insbesondere ob sich das mit variabler Anzahl von Ausgängen machen lässt.
Ein paar Fragen:
- geht es nur um ein True oder muss irgendwann ein false gesendet werden?
- was passiert bei Sperre - nichts? oder false? Trigger sollen dann ignoriert werden?
- Du schreibst Eingang Verzögerungszeit: soll dieser nur Triggern und das Intervall festlegen? Würde ich trennen und ggf. 2x das gleiche Obj. verknüpfen
- Verzögerungszeit ist nach dem Triggern fest - ok oder noch während der Abarbeitung dynamisch änderbar?
Lg
Robert
Ich grüble auch mit , insbesondere ob sich das mit variabler Anzahl von Ausgängen machen lässt.
Ein paar Fragen:
- geht es nur um ein True oder muss irgendwann ein false gesendet werden?
- was passiert bei Sperre - nichts? oder false? Trigger sollen dann ignoriert werden?
- Du schreibst Eingang Verzögerungszeit: soll dieser nur Triggern und das Intervall festlegen? Würde ich trennen und ggf. 2x das gleiche Obj. verknüpfen
- Verzögerungszeit ist nach dem Triggern fest - ok oder noch während der Abarbeitung dynamisch änderbar?
Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Reactions:
- Beiträge: 375
- Registriert: So Apr 14, 2019 11:12 am
- Hat sich bedankt: 203 Mal
- Danksagung erhalten: 198 Mal
Cool, freut mich! Und ja, macht sogar wirklich Sinn mit einer variablen Anzahl, da dann für sämtlichen HTTP-API Anfragen anwendbar. Ggf. dann sogar auch als festes Modul für den TWS interessant?!Robert_Mini hat geschrieben: ↑So Feb 06, 2022 10:27 am Ich grüble auch mit , insbesondere ob sich das mit variabler Anzahl von Ausgängen machen lässt.
Ich werde mich später hinsetzen und die Problem-/Funktionsbeschreibung inkl. Anwendungsbsp. visualisieren; ist sicherlich leichter als mit Text.
Grüße
Adi
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache
-
- Reactions:
- Beiträge: 646
- Registriert: So Aug 12, 2018 1:51 pm
- Wohnort: Amstetten, Österreich
- Hat sich bedankt: 205 Mal
- Danksagung erhalten: 275 Mal
So eine Logik im Logikeditor wäre wirklich interessant, hab das zur Zeit in NodeRed am Laufen zur Abfrage von Werten per MQTT, da ich keine einfache Lösung im Logikeditor gefunden habe.
mfg
Wolfgang
Timberwolf 2500 #151 / VPN offen / Reboot nach Rücksprache
+ PBM #938
Wolfgang
Timberwolf 2500 #151 / VPN offen / Reboot nach Rücksprache
+ PBM #938
-
- Reactions:
- Beiträge: 3741
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1164 Mal
- Danksagung erhalten: 2058 Mal
Ergänzend: Ich habe mal eine Logik gepostet, die eine parametrierbare Sequenz absetzt (Sendeverzögerung und Wert). Läuft bei mir erweitert auf 3 Werte.
viewtopic.php?f=65&t=2412&p=26817&hilit ... ger#p26817
Damit würde deine Anwendung schon mal abgedeckt sein. Ich schau mir aber gerade noch eine 2. Lösung an.
Robert
viewtopic.php?f=65&t=2412&p=26817&hilit ... ger#p26817
Damit würde deine Anwendung schon mal abgedeckt sein. Ich schau mir aber gerade noch eine 2. Lösung an.
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Reactions:
- Beiträge: 3741
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1164 Mal
- Danksagung erhalten: 2058 Mal
Hallo Adi!
Ich hab mal eine schnelle Lösung gebaut. Nicht parametrisch und ohne Reset / Break.
Im Prinzip ganz einfach gehalten: Timer startet mit Verzögerung, beim Timerablauf wird ein SendExplicit mit fallender Flanke ausgelöst.
Diese fallende Flanke startet gleichzeitig den nächsten Timer...
Lässt sich durch kopieren von einzelnen Zeilen einfach erweitern.
Man könnte auch gleich 16 Ausgänge festlegen und per "+" einblendbar machen. Das wäre nur bedingt smart, denn die restlichen Timer laufen im Hintergrund trotzdem...
lg
Robert
Ich hab mal eine schnelle Lösung gebaut. Nicht parametrisch und ohne Reset / Break.
Im Prinzip ganz einfach gehalten: Timer startet mit Verzögerung, beim Timerablauf wird ein SendExplicit mit fallender Flanke ausgelöst.
Diese fallende Flanke startet gleichzeitig den nächsten Timer...
Lässt sich durch kopieren von einzelnen Zeilen einfach erweitern.
Man könnte auch gleich 16 Ausgänge festlegen und per "+" einblendbar machen. Das wäre nur bedingt smart, denn die restlichen Timer laufen im Hintergrund trotzdem...
lg
Robert
Code: Alles auswählen
/**===========================================================
Trigger mit definierbarem Intervall
============================================================*/
{
"Level":[
["$I_Interval","float",5.0],
["$I_Trigger","bool",false],
["$I_Enable","bool",false],
["$Status","bool",false],
["$Reset","bool",false],
["$Output1","bool",true],
["$Output2","bool",true],
["$Output3","bool",true],
["$Output4","bool",true], // ggf. weitere Variablen mit ansteigender Nr. anlegen
["$Touched","bool",false],
["$Timer1Status","bool",false],
["$Timer2Status","bool",false],
["$Timer3Status","bool",false],
["$Timer4Status","bool",false], // ggf. weitere Variablen mit ansteigender Nr. anlegen
["$Konst1","float",1.0],
["$Konst0","float",0.0],
["$KonstTrue","bool",true],
["$KonstFalse","bool",false]
],
"Module":[
// Auswerten, ob der Triggereingang getriggert hat
["Triggered", "$I_Trigger", "$Touched" ],
// Timer 1 wird durch Trigger gestartet
["Monoflop","$Touched","$Reset","$Timer1Status","$I_Interval",0],
// Ablaufender Timer startet jeweils mit fallender Flanke den nächsten Timer
["Monoflop","$Timer1Status","$Reset","$Timer2Status","$I_Interval",4],
["Monoflop","$Timer2Status","$Reset","$Timer3Status","$I_Interval",4],
["Monoflop","$Timer3Status","$Reset","$Timer4Status","$I_Interval",4], // weiter kopieren und TimerNr anpassen
["SendExplicit","$Timer1Status","$Output1",2],
["SendExplicit","$Timer2Status","$Output2",2],
["SendExplicit","$Timer3Status","$Output3",2],
["SendExplicit","$Timer4Status","$Output4",2] // weiter kopieren und TimerNr + OutputNr anpassen
],
"Input":[
["Interval","Input","$I_Interval","u"],
["Trigger","Input","$I_Trigger","a"]
],
"Output":[
["Output1","Output","$Output1","x"],
["Output2","Output","$Output2","x"],
["Output3","Output","$Output3","x"],
["Output4","Output","$Output4","x"] // weiter kopieren und OutputNr anpassen
]
}
Zuletzt geändert von Robert_Mini am So Feb 06, 2022 2:22 pm, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Elaborated Networks
- Reactions:
- Beiträge: 9689
- Registriert: So Aug 12, 2018 9:27 am
- Wohnort: Frauenneuharting
- Hat sich bedankt: 4831 Mal
- Danksagung erhalten: 7633 Mal
- Kontaktdaten:
Eine Möglichkeit könnte auch der State Machine Baustein darstellen
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.