nachdem Stefan ja zum Ende des letzten Jahres von seiner "Horror"-Geschichte zu berichten wusste, habe ich darüber nachgedacht, dass meine Shelly Button 1-Ansätze natürlich immer nur dann funktionieren können, wenn die Akkustände der Devices auch OK sind.
Daher habe ich mal eine Logik gebastelt, welche die Akkustände einsammelt und die Anzahl der Devices deren Stand unter einem vorgegebenen Schwellwert liegt ausgibt. Als zweiten Ausgabewert sammle ich mir die Adressen der betroffenen Devices ein, die dann mit einem "|" getrennt in einem String auftauchen. Ja, es gibt abschließend mindestens immer ein "|" in dem String wenn minmdestens ein relevantes Device gefunden wurde, aber das war mir jetzt den Aufwand nicht wert.
Nicht wundern, in der Logik findet sich für jedes meiner 20 relevanten Devices ein entsprechend kopierter Block. Weil in einer Custom-Logik-Zelle des TWS ganz bewusst keine Schleifen unterstützt werden ist das m.E. der "simpelste" Ansatz.
Code: Alles auswählen
/**
Syntax:
["Latch","$Eingang","$Ausgang","$Trigger",TriggerOption]
Eingang und Ausgang müssen vom gleichen Typ sein, also (float/float),(integer/integer),(bool/bool) oder (string/string).
Der Trigger ist vom Typ "bool" und bestimmt, ob der Eingangswert am Ausgang übernommen wird.
Das Verhalten des Triggers kann durch die TriggerOption angepasst werden.
TriggerOption Der Eingangswert wird am Ausgang übernommen, wenn ...
0 ... Trigger = true ist
1 ... der Trigger von false nach true wechselt (steigende Flanke)
2 ... der Trigger von true nach false wechselt (fallende Flanke)
3 ... der Trigger seinen Wert ändert (steigende oder fallende Flanke)
ansonsten bleibt der Ausgang unverändert.
Comperator
Der Schwellwertschalter erlaubt 2 Varianten:
Ein Schwellwert: Der Eingangswert wird mit dem Schwellwert verglichen und die Logikzelle gibt 1 aus, wenn $Input_Wert > $Schwellwert erfüllt ist.
["Comparator" , "$Input_wert" , "$Output" , "$Schwellwert"]
Oberer und unterer Schwellwert: Der Ausgang der Logik liefert 0, wenn der untere Schwellwert unterschritten ist, eine 1, wenn der obere Schwellwert überschritten ist. Liegt der Input_Wert zwische oberer und unterer Schwelle, wird der unveränderte Ausgangswert ausgegeben.
["Comparator" , "$Input_Wert" , "$Output" , ["$UntereSchwelle","$ObereSchwelle"]]
Polynomial
Berechnet den Funktionswert eines Polynoms der Form:
f(x)=A0 + A1 * X + A2 * X^2 + ... + An * X^n
["Polynomial", "$Variable_X", "$Ergebnis",["$A0", "$A1", "$A2", ..., "$An"]]
*/
{
"_Meta": {
"Description": "Icon für Status der Haustüre in der Visu.",
"Version": "1.0",
"Icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIGZpbGw9IiMwMDAwMDAiIGhlaWdodD0iODAwcHgiIHdpZHRoPSI4MDBweCIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiANCgkgdmlld0JveD0iMCAwIDI5OCAyOTgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTE4LDEzMnYxMjRjMCw0LjQxOCwzLjkxNSw4LDguMzMzLDhoMjQ4YzQuNDE4LDAsNy42NjctMy41ODIsNy42NjctOFYxMzJIMTh6IE0yMDcuMzMzLDE4OEgyMTZ2LTljMC00LjQxOCwzLjU4Mi04LDgtOA0KCQlzOCwzLjU4Miw4LDh2OWgxMC4zMzNjNC40MTgsMCw4LDMuNTgyLDgsOHMtMy41ODIsOC04LDhIMjMydjEwYzAsNC40MTgtMy41ODIsOC04LDhzLTgtMy41ODItOC04di0xMGgtOC42NjdjLTQuNDE4LDAtOC0zLjU4Mi04LTgNCgkJUzIwMi45MTUsMTg4LDIwNy4zMzMsMTg4eiBNMTMyLjI1NCwyMDQuMTk2bDE3LjMwNC0zNC4yNDJjMC44NzQtMS43MjksMi44NTgtMi41ODMsNC43MTYtMi4wMjkNCgkJYzEuODU1LDAuNTU1LDMuMDQ3LDIuMzU4LDIuODI5LDQuMjgzTDE1NC42MzYsMTk0aDEwLjIwNmMxLjM5NiwwLDIuNjg5LDAuNzI3LDMuNDE2LDEuOTE5YzAuNzI2LDEuMTkxLDAuNzc4LDIuNjc1LDAuMTM5LDMuOTE1DQoJCWwtMTcuMzA4LDMzLjU0M2MtMC43LDEuMzU3LTIuMDksMi4xNjctMy41NTUsMi4xNjdjLTAuMzgzLDAtMC43NzEtMC4wNTYtMS4xNTQtMC4xNzFjLTEuODQ2LTAuNTU3LTMuMDMyLTIuMzUtMi44MjItNC4yNjYNCgkJTDE0NS44NywyMTBoLTEwLjA0NmMtMS4zOSwwLTIuNjc5LTAuNzIxLTMuNDA3LTEuOTA0QzEzMS42ODksMjA2LjkxMiwxMzEuNjI4LDIwNS40MzYsMTMyLjI1NCwyMDQuMTk2eiBNNTguMzMzLDE4OWgzNQ0KCQljNC40MTgsMCw4LDMuNTgyLDgsOHMtMy41ODIsOC04LDhoLTM1Yy00LjQxOCwwLTgtMy41ODItOC04UzUzLjkxNSwxODksNTguMzMzLDE4OXoiLz4NCgk8cGF0aCBkPSJNMTAxLDY2VjQyYzAtNC40MTgtMy4yNDktOC03LjY2Ny04aC0zNUM1My45MTUsMzQsNTAsMzcuNTgyLDUwLDQydjI0SDEwMXoiLz4NCgk8cGF0aCBkPSJNMjUwLDY2VjQyYzAtNC40MTgtMy4yNDktOC03LjY2Ny04aC0zNWMtNC40MTgsMC04LjMzMywzLjU4Mi04LjMzMyw4djI0SDI1MHoiLz4NCgk8cGF0aCBkPSJNMjkwLjgzMyw4MmgtMC41SDguODMzQzQuNDE1LDgyLDAsODUuMDgyLDAsODkuNXYxOGMwLDQuNDE4LDQuNDE1LDguNSw4LjgzMyw4LjVoMjgyYzQuNDE4LDAsNy4xNjctNC4wODIsNy4xNjctOC41di0xOA0KCQlDMjk4LDg1LjA4MiwyOTUuMjUxLDgyLDI5MC44MzMsODJ6Ii8+DQo8L2c+DQo8L3N2Zz4="
},
"Input": [
["Battery_01","Devicekennung-XXXXXXXXXXXX","$I_Battery_01","a"],
["Battery_02","Devicekennung-XXXXXXXXXXXX","$I_Battery_02","a"],
["Battery_03","Devicekennung-XXXXXXXXXXXX","$I_Battery_03","a"],
["Battery_04","Devicekennung-XXXXXXXXXXXX","$I_Battery_04","a"],
["Battery_05","Devicekennung-XXXXXXXXXXXX","$I_Battery_05","a"],
["Battery_06","Devicekennung-XXXXXXXXXXXX","$I_Battery_06","a"],
["Battery_07","Devicekennung-XXXXXXXXXXXX","$I_Battery_07","a"],
["Battery_08","Devicekennung-XXXXXXXXXXXX","$I_Battery_08","a"],
["Battery_09","Devicekennung-XXXXXXXXXXXX","$I_Battery_09","a"],
["Battery_10","Devicekennung-XXXXXXXXXXXX","$I_Battery_10","a"],
["Battery_11","Devicekennung-XXXXXXXXXXXX","$I_Battery_11","a"],
["Battery_12","Devicekennung-XXXXXXXXXXXX","$I_Battery_12","a"],
["Battery_13","Devicekennung-XXXXXXXXXXXX","$I_Battery_13","a"],
["Battery_14","Devicekennung-XXXXXXXXXXXX","$I_Battery_14","a"],
["Battery_15","Devicekennung-XXXXXXXXXXXX","$I_Battery_15","a"],
["Battery_16","Devicekennung-XXXXXXXXXXXX","$I_Battery_16","a"],
["Battery_17","Devicekennung-XXXXXXXXXXXX","$I_Battery_17","a"],
["Battery_18","Devicekennung-XXXXXXXXXXXX","$I_Battery_18","a"],
["Battery_19","Devicekennung-XXXXXXXXXXXX","$I_Battery_19","a"],
["Battery_20","Devicekennung-XXXXXXXXXXXX","$I_Battery_20","a"],
["Schwellwert","Prüfschwelle","$I_Schwellwert","a"]
],
"Output": [
["AnzUnterSchwelle","Anzahl der Devices mit Batterielevel unter Schwellwert","$O_AnzUnterSchwelle","a"],
["DeviceKennungen","Adressen der Devices mit niedrigem Akkustand","$O_DeviceKennungen","a"]
],
"Level":[
["$CompResult","bool",false],
["$ConstEins","integer",1],
["$ConstFalse","bool",false],
["$ConstNull","integer",0],
["$ConstTrue","bool",true],
["$DevAdrWithDelim","string",""],
["$DeviceAdresse_01","string","XXXXXXXXXXXX"],
["$DeviceAdresse_02","string","XXXXXXXXXXXX"],
["$DeviceAdresse_03","string","XXXXXXXXXXXX"],
["$DeviceAdresse_04","string","XXXXXXXXXXXX"],
["$DeviceAdresse_05","string","XXXXXXXXXXXX"],
["$DeviceAdresse_06","string","XXXXXXXXXXXX"],
["$DeviceAdresse_07","string","XXXXXXXXXXXX"],
["$DeviceAdresse_08","string","XXXXXXXXXXXX"],
["$DeviceAdresse_09","string","XXXXXXXXXXXX"],
["$DeviceAdresse_10","string","XXXXXXXXXXXX"],
["$DeviceAdresse_11","string","XXXXXXXXXXXX"],
["$DeviceAdresse_12","string","XXXXXXXXXXXX"],
["$DeviceAdresse_13","string","XXXXXXXXXXXX"],
["$DeviceAdresse_14","string","XXXXXXXXXXXX"],
["$DeviceAdresse_15","string","XXXXXXXXXXXX"],
["$DeviceAdresse_16","string","XXXXXXXXXXXX"],
["$DeviceAdresse_17","string","XXXXXXXXXXXX"],
["$DeviceAdresse_18","string","XXXXXXXXXXXX"],
["$DeviceAdresse_19","string","XXXXXXXXXXXX"],
["$DeviceAdresse_20","string","XXXXXXXXXXXX"],
["$String2Add","string",""],
["$StringDelimiter","string","|"],
["$StringEmpty","string",""],
["$I_Battery_01","integer",0],
["$I_Battery_02","integer",0],
["$I_Battery_03","integer",0],
["$I_Battery_04","integer",0],
["$I_Battery_05","integer",0],
["$I_Battery_06","integer",0],
["$I_Battery_07","integer",0],
["$I_Battery_08","integer",0],
["$I_Battery_09","integer",0],
["$I_Battery_10","integer",0],
["$I_Battery_11","integer",0],
["$I_Battery_12","integer",0],
["$I_Battery_13","integer",0],
["$I_Battery_14","integer",0],
["$I_Battery_15","integer",0],
["$I_Battery_16","integer",0],
["$I_Battery_17","integer",0],
["$I_Battery_18","integer",0],
["$I_Battery_19","integer",0],
["$I_Battery_20","integer",0],
["$I_Schwellwert","integer",0],
["$O_AnzUnterSchwelle","integer",0],
["$O_DeviceKennungen","string,250",""]
],
"Module":[
["Latch","$ConstNull","$O_AnzUnterSchwelle","$ConstTrue",0],
["Latch","$StringEmpty","$O_DeviceKennungen","$ConstTrue",0],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_01"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_01","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_02"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_02","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_03"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_03","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_04"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_04","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_05"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_05","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_06"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_06","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_07"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_07","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_08"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_08","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_09"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_09","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_10"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_10","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_11"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_11","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_12"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_12","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_13"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_13","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_14"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_14","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_15"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_15","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_16"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_16","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_17"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_17","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_18"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_18","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_19"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_19","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"],
//Potentiell hinzuzufügenden String immer leeren
["Latch","$StringEmpty","$String2Add","$ConstTrue",0],
// Der Batteriestand wird mit dem Schwellwert verglichen wenn der Batteriewert <= Schwelle dann steht $CompResult auf 1, sonst auf 0
["Comparator","$I_Schwellwert","$CompResult","$I_Battery_20"],
//Wenn $CompResult = 0, dann wird der Zähler nicht erhöht, sonst um 1 höher
["Polynomial","$CompResult","$O_AnzUnterSchwelle",["$O_AnzUnterSchwelle","$ConstEins"]],
//String mit Adresse und Delimiter immer vorbereiten
["Concat",["$DeviceAdresse_20","$StringDelimiter"],"$DevAdrWithDelim"],
//Wenn wir ein relevantes Device gefunden haben, dann Adresse mit Trenner in String2Add übernehmen
["Latch","$DevAdrWithDelim","$String2Add","$CompResult",0],
//Da Concat keine Bedingungen kennt, hier dann immer den Vorbereiteten String anfügen. Der mag auch leer sein!
["Concat",["$O_DeviceKennungen","$String2Add"],"$O_DeviceKennungen"]
]
}
Den Schwellwert habe ich bei mit als Parameter fix mit "30" besetzt.
Die Ausgänge sind natürlich auch schon in der Visu gelandet:
"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."
Kommentare, Hinweise, etc. immer gerne!
Viel Spaß damit.
Beste Grüße
Jens
PS: Meine Devices sind schon alle geladen! Sie haben sich nur nach dem letzten Update der Logikzelle noch nicht wieder alle gemeldet.