NEU! UPGRADE IP 11 verfügbar!
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[TIPP] [V4.0 IP5] Logik zur Überwachung von Akkuständen von Shelly-Devices

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
Antworten

Ersteller
blaubaerli
Reactions:
Beiträge: 2325
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 898 Mal
Danksagung erhalten: 700 Mal

[V4.0 IP5] Logik zur Überwachung von Akkuständen von Shelly-Devices

#1

Beitrag von blaubaerli »

Hallo zusammen,

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. :confusion-scratchheadyellow:

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

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"]

   ]
}      
Ich habe bewusst die Adressen als Strings hinterlegt, weil die Buttons im Haus mitunter auch schon mal wandern. Die haben bei mir alle unten ihre Adressen aufgeklebt bekommen, sonst bekomme ich das nicht mehr auseinandergehalten. Bei Bedarf also die in der o.g. Logik anonymisierten Strings einfach gegen hilfreiche Texte tauschen.

Den Schwellwert habe ich bei mit als Parameter fix mit "30" besetzt.

Die Ausgänge sind natürlich auch schon in der Visu gelandet:

Bild

"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. :whistle:
Zuletzt geändert von blaubaerli am Di Jan 02, 2024 1:42 pm, insgesamt 1-mal geändert.
wiregate1250 & timberwolf168 (2600er), VPN offen, Reboot nach Vereinbarung
Bitte WIKI lesen.
Antworten

Zurück zu „Zusätzliche Logikbausteine“