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

[DISKUSSION] Logik-Unterstützung - mehrere Trigger zeitversetzt

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
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
adimaster
Reactions:
Beiträge: 375
Registriert: So Apr 14, 2019 11:12 am
Hat sich bedankt: 203 Mal
Danksagung erhalten: 198 Mal

#11

Beitrag von adimaster »

Robert_Mini hat geschrieben: So Feb 06, 2022 10:27 am - geht es nur um ein True oder muss irgendwann ein false gesendet werden?
Ausschließlich true!
Robert_Mini hat geschrieben: So Feb 06, 2022 10:27 am - was passiert bei Sperre - nichts? oder false? Trigger sollen dann ignoriert werden?
Bei Sperre wird nicht getriggert (Funktion komplett abschalten).
Robert_Mini hat geschrieben: So Feb 06, 2022 10:27 am - 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
Die Verzögerungszeit dient der Einhaltung der Aufrufe/min bei HTTP-API requests.
Robert_Mini hat geschrieben: So Feb 06, 2022 10:27 am - Verzögerungszeit ist nach dem Triggern fest - ok oder noch während der Abarbeitung dynamisch änderbar?
Nein, wird einmal am Eingang festgelegt und ggf. mal justiert.

Zur Ergänzung anbei eine Erläuterung des Ziels inkl. Anwendungsbsp. und mögliche Schnittstellen. Das soltle v. a. für historische und prognostizierte Daten interessant sein, die man eher nur alle 24 h abfragen möchte:
(Hier der Alphavantage-Beitrags-Link aus dem Bild.)

Bild


Einfachste Lösung, aber dann eben laute einzelne "Ands" für x beliebige HTTP-API requests, s. hier und hier
Bild

Ich sehe, dass Du in der Zwischenzeit schon wieder einen Vorschlag hast @Robert_Mini :bow-yellow:
Dann schaue ich mir das auch an.

Grüße
Adi
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache

Ersteller
adimaster
Reactions:
Beiträge: 375
Registriert: So Apr 14, 2019 11:12 am
Hat sich bedankt: 203 Mal
Danksagung erhalten: 198 Mal

#12

Beitrag von adimaster »

Robert_Mini hat geschrieben: So Feb 06, 2022 2:20 pm Diese fallende Flanke startet gleichzeitig den nächsten Timer...
Man ist das einfach und genial zugleich!!! Und ich addiere mir zig einzelne Intervalle für jeden Ausgang zusammen :angry-banghead: :angry-banghead: :angry-banghead:
Das probiere ich schon mal aus. Ist auf jeden Fall deutlich einfacher als mein bisheriger Ansatz! Danke :clap: !
Robert_Mini hat geschrieben: So Feb 06, 2022 2:20 pm 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...
Damit will ich noch Erfahrung sammeln; habe ich noch nicht angewendet.
Heißt im Code wären diese 16 Ausgänge bereits vorhanden? Aber nicht zwingend in der GUI aktiv?!
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache

Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#13

Beitrag von Robert_Mini »

adimaster hat geschrieben: So Feb 06, 2022 3:00 pm Man ist das einfach und genial zugleich!!!
Hab ich auch hier im Forum gelernt. Aber die Flankenoptionen der verschiedenen Module (Timer, Latch, SendExplicit, etc.) sind wirklich mächtig.
adimaster hat geschrieben: So Feb 06, 2022 3:00 pm Heißt im Code wären diese 16 Ausgänge bereits vorhanden? Aber nicht zwingend in der GUI aktiv?!
Richtig.

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

Ersteller
adimaster
Reactions:
Beiträge: 375
Registriert: So Apr 14, 2019 11:12 am
Hat sich bedankt: 203 Mal
Danksagung erhalten: 198 Mal

#14

Beitrag von adimaster »

Robert_Mini hat geschrieben: So Feb 06, 2022 2:20 pm 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...
Ich habe es versucht auf meine Bedürfnisse geringfügig anzupassen ... jetzt doch nochmal 1:1 Deines verwendet ...
Die Timer laufen gut, aber irgendwie "feuert" die Logik dennoch gleichzeitig auf allen 4 Outputs und zu oft in Grafana.
Bei Dir auch?

Bild
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache

Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#15

Beitrag von Robert_Mini »

Hallo Adi!

Bei mir hat das so funktioniert (hatte sogar auf ein KNX Testobjekt getestet, um bez. SendExpliziz sicher zu gehen).
Du musst aber das Intervall entweder als Parameter oder per Dokmode eingeben, da der interne Defaultwert vom Eingang sonst mit 0 überschrieben wird.

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

Ersteller
adimaster
Reactions:
Beiträge: 375
Registriert: So Apr 14, 2019 11:12 am
Hat sich bedankt: 203 Mal
Danksagung erhalten: 198 Mal

#16

Beitrag von adimaster »

Hast Du Grafana auch geprüft?
Das mit den KNX Objekten hatte ich ohnehin vor … das werde ich als Nächstes tun und nochmal verifizieren. Sicher ist sicher. Ich berichte 😅
Robert_Mini hat geschrieben: So Feb 06, 2022 7:14 pm
Du musst aber das Intervall entweder als Parameter oder per Dokmode eingeben, da der interne Defaultwert vom Eingang sonst mit 0 überschrieben wird.
Jap, das mache ich immer via Dokmode (dafür ist der genial 🤩 ).
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache

Ersteller
adimaster
Reactions:
Beiträge: 375
Registriert: So Apr 14, 2019 11:12 am
Hat sich bedankt: 203 Mal
Danksagung erhalten: 198 Mal

#17

Beitrag von adimaster »

Robert_Mini hat geschrieben: So Feb 06, 2022 7:14 pm Bei mir hat das so funktioniert (hatte sogar auf ein KNX Testobjekt getestet, um bez. SendExpliziz sicher zu gehen).
Jetzt habe ich es mit KNX-Objekten getestet --> funktioniert einwandfrei :dance:
Somit werde ich das noch um den Uhrzeittrigger aus der GUI erweitern und dann müsste es passen.
Dort hatte ich vorhin Schwierigkeiten ... ich kann ja auch nicht abfragen, ob getriggert wurde oder doch?

Aber was ich nicht verstehe ... wieso erhält Grafana falsche Werte --> diese stimmen nicht mit den Outputs überein :doh:
Hast Du Dir das bei Dir auch mal angesehen @Robert_Mini
Wie testest Du bzw. andere? Nutzt Ihr Grafana oder doch eher KNX-Testobjekte?

Update:
Ich habe das jetzt noch erweitert und so gelöst:
► Text zeigen
Jedoch fällt mir nun keine Lösung ein, den Uhrzeit-Trigger im And-Modul (s. Fragezeichen im Bild) auch noch mit zu integrieren.
Wäre das hier erforderlich?

Warum das Modul ohne den Baustein "Triggered" total durcheinander läuft, verstehe ich leider nicht wirklich :think:

Code dazu:

Code: Alles auswählen

/**
 * HTTP-API-Trigger
 *
 * Triggers acc. to defined interval to handle call-limits.
 * 
 * Einräumung der Nutzungsrechte gemäß TOLL:
 * Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL
 * ("Timberwolf Open Logikblock License"), die unter https://wrgt.news/TOLL
 * zum Download zur Verfügung steht.
 * 
 * Change History:
 * 1.00 (06.02.2022): initial version --> And-Module with Timer necessary (for bInStart)
 */
{
  "_Meta": {
    "Description": "HTTP-API-Trigger",
    "Version": "",
    "Icon": ""
  },
  "Level": [
     ["$bInActive", "bool", false],
     ["$iInInterval", "integer", 30],
     ["$bInStart", "bool", false],
     ["$bOutTrigger1", "bool", true],
     ["$bOutTrigger2", "bool", true],
     ["$bOutTrigger3", "bool", true],
     ["$bOutTrigger4", "bool", true],
     ["$bOutTrigger5", "bool", true],
     ["$bOutTrigger6", "bool", true],
     ["$bOutTrigger7", "bool", true],
     ["$bOutTrigger8", "bool", true],
     ["$bOutTrigger9", "bool", true],
     ["$bOutTrigger10", "bool", true],
     ["$bLeReset", "bool", false],
     ["$bLeTouched", "bool", false],
     ["$bLeTimer1", "bool", false],
     ["$bLeTimer2", "bool", false],
     ["$bLeTimer3", "bool", false],
     ["$bLeTimer4", "bool", false],
     ["$bLeTimer5", "bool", false],
     ["$bLeTimer6", "bool", false],
     ["$bLeTimer7", "bool", false],
     ["$bLeTimer8", "bool", false],
     ["$bLeTimer9", "bool", false],
     ["$bLeTimer10", "bool", false]
  ],
  "Input": [
     ["bInActive", "Activate Trigger-Function for HTTP-API", "$bInActive", "u"],
     ["iInInterval", "Defines the interval in seconds between each trigger", "$iInInterval", "u"],
     ["bInStart", "Starts the sequence", "$bInStart", "a"]
  ],
  "Output": [
     ["bOutTrigger1", "Trigger1", "$bOutTrigger1", "x"],
     ["bOutTrigger2", "Trigger2", "$bOutTrigger2", "x"],
     ["bOutTrigger3", "Trigger3", "$bOutTrigger3", "x"],
     ["bOutTrigger4", "Trigger4", "$bOutTrigger4", "x"],
     ["bOutTrigger5", "Trigger5", "$bOutTrigger5", "x"],
     ["bOutTrigger6", "Trigger6", "$bOutTrigger6", "x"],
     ["bOutTrigger7", "Trigger7", "$bOutTrigger7", "x"],
     ["bOutTrigger8", "Trigger8", "$bOutTrigger8", "x"],
     ["bOutTrigger9", "Trigger9", "$bOutTrigger9", "x"],
     ["bOutTrigger10", "Trigger10", "$bOutTrigger10", "x"]
  ],
  "Module": [
     ["Break", ["-$bInActive"]],
     ["Triggered", "$bInStart", "$bLeTouched"],
     ["Monoflop", "$bLeTouched", "$bLeReset", "$bLeTimer1", "$iInInterval", 0],
     ["Monoflop", "$bLeTimer1", "$bLeReset", "$bLeTimer2", "$iInInterval", 4],
     ["Monoflop", "$bLeTimer2", "$bLeReset", "$bLeTimer3", "$iInInterval", 4],
     ["Monoflop", "$bLeTimer3", "$bLeReset", "$bLeTimer4", "$iInInterval", 4],
     ["Monoflop", "$bLeTimer4", "$bLeReset", "$bLeTimer5", "$iInInterval", 4],
     ["Monoflop", "$bLeTimer5", "$bLeReset", "$bLeTimer6", "$iInInterval", 4],
     ["Monoflop", "$bLeTimer6", "$bLeReset", "$bLeTimer7", "$iInInterval", 4],
     ["Monoflop", "$bLeTimer7", "$bLeReset", "$bLeTimer8", "$iInInterval", 4],
     ["Monoflop", "$bLeTimer8", "$bLeReset", "$bLeTimer9", "$iInInterval", 4],
     ["Monoflop", "$bLeTimer9", "$bLeReset", "$bLeTimer10", "$iInInterval", 4],
     ["SendExplicit", "$bLeTimer1", "$bOutTrigger1", 2],
     ["SendExplicit", "$bLeTimer2", "$bOutTrigger2", 2],
     ["SendExplicit", "$bLeTimer3", "$bOutTrigger3", 2],
     ["SendExplicit", "$bLeTimer4", "$bOutTrigger4", 2],
     ["SendExplicit", "$bLeTimer5", "$bOutTrigger5", 2],
     ["SendExplicit", "$bLeTimer6", "$bOutTrigger6", 2],
     ["SendExplicit", "$bLeTimer7", "$bOutTrigger7", 2],
     ["SendExplicit", "$bLeTimer8", "$bOutTrigger8", 2],
     ["SendExplicit", "$bLeTimer9", "$bOutTrigger9", 2],
     ["SendExplicit", "$bLeTimer10", "$bOutTrigger10", 2]
  ]
}
Zuletzt geändert von adimaster am So Feb 06, 2022 11:02 pm, insgesamt 2-mal geändert.
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache

Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#18

Beitrag von Robert_Mini »

Hallo Adi!

Ich antworte in 3 quotes, hoffe das ist einigermaßen lesbar. Freue mich, dass es schon mal funktioniert.
adimaster hat geschrieben: So Feb 06, 2022 9:47 pm Somit werde ich das noch um den Uhrzeittrigger aus der GUI erweitern und dann müsste es passen.
Dort hatte ich vorhin Schwierigkeiten ... ich kann ja auch nicht abfragen, ob getriggert wurde oder doch?
Das geht tatsächlich nicht. Man könnte natürlich alle Eingänge abfragen ob getriggert, wenn alle false liefern, dann muss es der Logik-Trigger der Zelle oder ein Timer gewesen sein. D.h. man müsste zusätzlich prüfen, ob ein Timer abgelaufen ist (=aufwendig mit zwischenspeichern des letzten Timerzustandes jedes Monoflops...).

@StefanW: das wären noch 2 nette, kleine Erweiterungen des LE (Trigger der Zelle in das Modul triggered aufnehmen und die Timer um eine Variable erweitern, ob der Timer beim aktuellen Aufruf abgelaufen ist).

Im Moment würde ich tatsächlich die AND-Logik als Trigger mit Cron als 2. Logik belassen... (oder den Cron in die Custom Logik einbauen).
adimaster hat geschrieben: So Feb 06, 2022 9:47 pm Aber was ich nicht verstehe ... wieso erhält Grafana falsche Werte --> diese stimmen nicht mit den Outputs überein :doh:
Hast Du Dir das bei Dir auch mal angesehen @Robert_Mini
Wie testest Du bzw. andere? Nutzt Ihr Grafana oder doch eher KNX-Testobjekte?
Ich teste normalerweise immer nur mit Grafana, außer wenn SendExplicit dabei ist, dann zusätzlich mit KNX Test-GAs.
Hintergrund ist, dass Grafana immer den Zustand der Variablen aufzeichnet, unabhängig davon, ob diese auch an den Dispatcher übergeben werden.
Im Fall deiner Logik ist das etwas unglücklich, da der Ausgang fix auf True steht- und über das SendExplicit das Senden gesteuert wird. Man könnte den Wert von Output auch mit dem Timer mitändern, dann würde man das etwas besser sehen, muss aber sicher sein, dass Output auch auf 1 ist, wenn gesendet wird.
adimaster hat geschrieben: So Feb 06, 2022 9:47 pm Update:
Ich habe das jetzt noch erweitert und so gelöst...

Warum das Modul ohne den Baustein "Triggered" total durcheinander läuft, verstehe ich leider nicht wirklich :think:
Versteh grad nicht, wie das gemeint ist, ich teste deinen Code mal. Aber wie hast du denn dann die Logik angestoßen?

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

Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#19

Beitrag von Robert_Mini »

Hy Adi!

Gerade noch ohne Triggered getestet.
Modifikation nachstehend. Im wesentlichen den Eingang direkt auf den Timer und die Timer-Option auf 2 (pos. Flanke), ansonsten triggert sich die Logik selbst ein 2. Mal, wenn der Trigger noch auf True steht und die Logik von einem anderen Timer aufgerufen wird (0 = pegelgesteuert).

lg
Robert

Code: Alles auswählen

     ["Break", ["-$bInActive"]],
    // ["Triggered", "$bInStart", "$bLeTouched"],
    // ["Monoflop", "$bLeTouched", "$bLeReset", "$bLeTimer1", "$iInInterval", 0],
     ["Monoflop", "$bInStart", "$bLeReset", "$bLeTimer1", "$iInInterval", 2],
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

StefanW
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:

#20

Beitrag von StefanW »

Hi Robert,
Robert_Mini hat geschrieben: Mo Feb 07, 2022 7:58 am@StefanW: das wären noch 2 nette, kleine Erweiterungen des LE (Trigger der Zelle in das Modul triggered aufnehmen und die Timer um eine Variable erweitern, ob der Timer beim aktuellen Aufruf abgelaufen ist).
bitte dazu eine separate Diskussion anlegen und genau beschreiben, was umgesetzt werden soll. Wenn weitere Foristen das dann auch so sehen, gebe ich das gerne weiter.

lg

Stefan
Zuletzt geändert von StefanW am Mo Feb 07, 2022 9:13 am, insgesamt 1-mal geändert.
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.
Antworten

Zurück zu „Zusätzliche Logikbausteine“