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.
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...