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

[Gelöst] Modul "Triggered"

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
S. Kolbinger
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 558 Mal

Modul "Triggered"

#1

Beitrag von S. Kolbinger »

Es gibt ein neues Modul für die Logic-Engine: Das "Triggered"-Modul mit dem sich erkennen lässt, welcher Eingang die Logik getriggert hat.

Die Syntax für die Trigger-Erkennung sieht folgendermassen aus:
[ "Triggered", "$Input", "$Touched" ]
    "Triggered" :  Modulkennung
    "$Input":      Referenz auf einen Level der mit einem Eingang verbunden ist
    "$Touched":    Referenz auf einen boolschen Level

Der Trigger-Erkennung funktioniert folgendermaßen:
Der Status des "$Input"-Levels wird überprüft, ob er beim aktellen Durchlauf dieser Logik bereits einmal "angefasst" wurde.
Ist das der Fall wird "$Touched" auf true gesetzt, anderfalls auf false

Wenn ein Ereignis an einem Eingang die Logik triggert, bekommt der mit dem Eingang verbundene Level vorher das "Touched"-Flag gesetzt.
Somit lässt sich einfach abfragen, ob dieser Eingang die Logik ausgelöst hat.

Achtung:
Wird ein Level intern "angefasst", z.B. durch ein vorheriges Modul beschrieben, wird ebenfalls das "Touched"-Flag gesetzt. Will man sicher nur auf "Eingang triggered" testen, muss dieser Test möglichst vor allen anderen Modulen stehen, die den Level verändern können.

Das Modul ist bereits in der aktuellen DEV-Version verfügbar. Viel Spaß beim ausprobieren :handgestures-thumbupright:
Zuletzt geändert von Robosoc am Do Aug 27, 2020 2:39 pm, insgesamt 1-mal geändert.
Gruß,
Stefan K.

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

#2

Beitrag von Robert_Mini »

Sehr cool und schöne Umsetzung!

DANKE!
Robert

PS: Schön, dass du mal wieder hier aktiv postest!
Zuletzt geändert von Robert_Mini am Mi Feb 26, 2020 9:25 pm, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
S. Kolbinger
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 558 Mal

#3

Beitrag von S. Kolbinger »

@Robert_Mini
ich muss doch unseren besten Custom-Logik-Experten :bow-yellow: so gut es geht unterstützen.

Voll krass Respekt, was du alles aus den Bausteinen rausholst. :handgestures-thumbupright:
Gruß,
Stefan K.

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

#4

Beitrag von Robert_Mini »

Danke für die Blumen!
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

#5

Beitrag von Robert_Mini »

Hallo Stefan!

Ich habe noch ein größeres Problem mit einem Timer mit meinem Impuls => Leistungsmessung.
Darf ich dazu morgen wiedermal eine Frage hochholen?

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

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#6

Beitrag von Robosoc »

@S. Kolbinger Ich habe versucht das Modul in der V1.6 zu verwenden. Es gibt auch keine Fehlermeldung, der Code wird akzeptiert. Aber die folgende Logik wird nie ausgeführt. Es scheint mir, als würde ich immer in den "Break" reinlaufen.

Betrifft die ersten zwei Module:

Code: Alles auswählen

["Triggered", "$Grenz_1w", "$Inhibit_1w"],
["Break", ["$Inhibit_1w"]],
Wenn man die Eingänge in der Dok-Grafana Ansicht anschaut, scheint es mir so zu sein, dass jede Veränderung auf jedem Eingang den Ausgang vom Modul "triggered" auf true setzt und nicht nur dann, wenn der Eingang $Grenz_1w die Logik tatsächlich triggered.

Code: Alles auswählen

/**
* Vorlaufregler-Freigabe
*/

{
  "Input":[
    ["HKV-Schalter","Aktiviert oder Deaktiviert den HKV","$HKV_SW_In","c"],
    ["Heizbedarf","Ist Heizbedarf im Bereich des HKV vorhanden?","$Heizbedarf","a"],
    ["Grenz_1w","true bei Überschreitung des eingestellten Parameter (z.B. 37°)","$Grenz_1w","c"],
    ["Grenz_Fernfühler","true bei Überschreitung des eingestellten Parameter (z.B. 40°) ","$Grenz_KNX","c"],
    ["Stellwert_Grenzschalter Obergrenze","true bei Überschreitung, veranlasst eine Fahrt auf 0% um das Ventil zurückzusetzen (sollte das Ventil die Position verloren haben)","$Stell_max","c"],
    ["Stellwert_Grenzschalter Untergrenze","true bei Unterschreitung, veranlasst das abschalten der Heizpumpe, wenn kein Bedarf ist","$Stell_min","c"],
    ["Timer","Verzögerungszeit der Hitzeschutzdeaktivierung","$timer","u"]
  ],
  "Output":[
    ["HKV-Aktiv","Aktiviert oder Deaktiviert den HKV","$HKV_SW_Out","a"],
    ["HKV-Pumpe","Aktiviert oder Deaktiviert die HKV-Pumpe","$HKV_Pump_Out","a"],
    ["Stellwert_Zwangs_Reset","true wenn Stellwert auf 0% gesetzt werden soll","$Stell_SW_Out","c"]
  ],
  "Level":[
    ["$Blocker","bool",false],
    ["$Hitzeschutz","bool",false],
    ["$HKV_SW_In","bool",true],
    ["$Heizbedarf","bool",false],
    ["$Grenz_1w","bool",false],
    ["$Grenz_KNX","bool",false],
    ["$Inhibit_1w","bool",false],
    ["$Inhibit_KNX","bool",false],
    ["$dummy_1w","bool",false],
    ["$dummy_KNX","bool",false],
    ["$timer","integer",30],
    ["$Stell_max","bool",false],
    ["$Stell_min","bool",false],
    ["$HKV_SW_Out","bool",false],
    ["$HKV_Pump_Out","bool",false],
    ["$Stell_SW_Out","bool",false],
    ["$const_true","bool",true]
  ],
  "Module":[
    // vermeidung von unnötigen triggern bei Temperaturänderungen: Abbruch, wenn durch Grenzwert 1wire getriggert, aber dieser keine steigende Flanke hat
    ["Triggered", "$Grenz_1w", "$Inhibit_1w"],
    //["Latch","$const_true","$dummy_1w","$Grenz_1w",1],
    //["And" , ["-$dummy_1w" , "$Inhibit_1w"], "$Inhibit_1w"],
    ["Break", ["$Inhibit_1w"]],
    // vermeidung von unnötigen triggern bei Temperaturänderungen: Abbruch, wenn durch Grenzwert Fernfühler KNX getriggert, aber dieser keine steigende Flanke hat
    //["Triggered", "$Grenz_KNX", "$Inhibit_KNX" ],
    //["Latch","$const_true","$dummy_KNX","$Grenz_KNX",1],
    //["And" , ["-$dummy_KNX" , "$Inhibit_KNX"], "$Inhibit_KNX"],
    //["Break", ["$Inhibit_KNX"]],
    // eigentliche Logik
    ["Or" , ["$Grenz_1w" , "$Grenz_KNX", "$Stell_max"], "$Hitzeschutz"],
    ["Or" , ["$Hitzeschutz" , "-$HKV_SW_In", "-$Heizbedarf"], "$Stell_SW_Out"],
    ["Monoflop","$Hitzeschutz",0,"$Blocker","$timer",2],
    ["Or" , ["-$Hitzeschutz" , "$Blocker"], "-$Hitzeschutz"],
    ["And" , ["-$Hitzeschutz" , "$HKV_SW_In", "$Heizbedarf"], "$HKV_SW_Out"],
    ["And" , ["-$Hitzeschutz" , "$HKV_SW_In", "$Heizbedarf", "-$Stell_min"], "$HKV_Pump_Out"]
  ]
}
Habe einige Module zu Beginn durch Auskommentieren deaktiviert, damit der Code zunächst erstmal nur den wesentlichen Teil testet. Deaktivierst Du zusätzlich noch die beiden ersten Module, funktioniert der Code, wie gewünscht. Die Logik wird dann aber bei jeder Temperaturänderung auf den Eingängen Grenz_1w und Grenz_KNX ( versehen mit Eingangsfunktion "Schwellwert über") getriggert, was bei mir in diesem Fall sehr häufig ist und das will ich mit "triggered" unterbinden...
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Ersteller
S. Kolbinger
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 558 Mal

#7

Beitrag von S. Kolbinger »

Hallo Sven,

danke für die Rückmeldung.
Ich fürchte, da hast du einen echten Bug :character-bowser: entdeckt.

Leider wird bei Abbruch mit "Break" das Triggered-Flag nicht korrekt zurück gesetzt und schlägt beim nächsten Trigger wieder zu :roll:
Das habe ich bei meinen Tests leider übersehen. Sorry.

FINR
Gruß,
Stefan K.

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#8

Beitrag von Robosoc »

Alles klar, kein Problem. Habe es jetzt durch eine vorgeschaltete Logikzelle gelöst und Trigger dann mit c.darauf war ich dummerweise vorher nicht gekommen und habe extra deshalb von meinem Vorhaben abgewichen nur noch auf Hauptversionen zu setzen...der Rest ist Geschichte😂

Meinst Du Du wirst es in der offiziellen 1.6 gelöst haben? Habe es so in die K.B. Geschrieben in Abschnitt 4.6.6...sonst nehme ich es wieder raus.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

StefanW
Elaborated Networks
Reactions:
Beiträge: 9689
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4831 Mal
Danksagung erhalten: 7632 Mal
Kontaktdaten:

#9

Beitrag von StefanW »

Robosoc hat geschrieben: Sa Mär 14, 2020 9:21 pmMeinst Du Du wirst es in der offiziellen 1.6 gelöst haben?
Next Release wird erstmal "V 1.6.0 Insider Preview 2" sein...

lg

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.

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

#10

Beitrag von Robert_Mini »

Hallo @Robosoc!

Kannst du das Verhalten nochmal testen, ob das mit 1.6RC1 oder IP3 behoben ist?

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

Zurück zu „Logikengine & Logik-Editor“