Ich nutze für einige Verbrauchs-Zähler einen recht einfachen ABB-KNX-Eingang, der zählen kann, aber nicht viel mehr.
Den Rest mache ich mit folgender Logik und das Ergebnis schreibe ich in eine Zeitserie
Senden per C = on change oder T=Timer (Triggereingang setzen)
Ich empfehle für diese Logik unbedingt Persistenz zu aktivieren!
Der Zähler zählt immer weiter nach oben und übernimmt im Fall, dass der eingehende Zählerwert kleiner ist als der zuvor, automatisch den letzten Ausgangswert der Logik als Startwert (3ter Eingang). Das ist für die Fälle wichtig, wenn Dein KNX-Zähler bei einer Neuprogrammierung den Wert verliert oder wenn der KNX-Zählerbereich beschränkt ist und er irgendwann bei 0 anfängt...
Code: Alles auswählen
/**
* Zählerlogik mit Nulldurchgangserkennung und Wertvorgabe
*
* Nutzungsrechte:
* 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.
*/
{
"Input":[
["ext. Zähler","Wert des externen Impuls-Zählers","$CountExt","c"],
["Teiler","Teiler zum Herstellen des korrekten Zählerwertes. Beispiel: Wenn ein Impuls = 0,01 Zählerwerte sind, dann ist der Teiler 100","$Teiler","u"],
["Startwert","Startwert für den Zähler","$CountInit","c"]
],
"Output":[
["Zählerwert","Wert des Zählers","$Value","c"]
],
"Level":[
["$CountExt", "integer", 0],
["$CountInit", "float", 0.0],
["$lastCountExt", "integer", 0],
["$Reset", "bool", false],
["$Value", "float", 0.0],
["$ValueAdder", "float", 0.0],
["$constTrue", "bool", true],
["$const1", "integer", 1],
["$Teiler", "integer", 100]
],
"Module":[
["Comparator" , "$lastCountExt" , "$Reset" , "$CountExt"],
["Latch","$Value","$CountInit","$Reset",0],
["Latch","$CountExt","$lastCountExt","$constTrue",0],
["Ratio","$CountExt","$ValueAdder", "$Teiler"],
["Polynomial", "$const1", "$Value",["$CountInit", "$ValueAdder"]]
]
}