Zähler-Logik (z.B. für Regenmessung)
Verfasst: Mi Mär 25, 2020 10:09 pm
Hi
Ich habe einen Regensensor, welcher an einem Binäreingang hängt. Der Eingang ist als Zähler konfiguriert, zählt also bei jedem Impulseingang um eins hoch. Wenn das KNX-Device neu programmiert wird, fängt der Zähler aber wieder bei Null an, was natürlich dann in den Grafana-Auswertungen überhaupt nicht mehr passt (da ich dort mit der tollen Differenz-Funktion die Regenmenge ermittle). Und da ich ein 12fach KNX-Gerät habe kann es eben schon mal vorkommen, dass das Device neu programmiert werden muss.
Die Logik hier macht folgendes:
- Der Zählerwert kann mit einem beliebigen Faktor umgerechnet (bei mir z.B. 0.518 pro Impulseingang)
- Wenn der Zählerstand zurückgesetzt wird und wieder von 0 beginnt, so wird der Gesamtwert dennoch richtig weitergerechnet
- Initiale Werte können ggf. als Parameter im Code übergeben werden
WICHTIG: Logik Persistent aktivieren ist wichtig, damit die Zählerstände auch einen Reset überlegen.
Allfällige Codeoptimierungen sind willkommen.
Als Regenzähler verwende ich dieses Gerät hier
zu finden z.B. mit dem Suchbegriff "Misol WH-SP-RG"
Gruss
Dani
Ich habe einen Regensensor, welcher an einem Binäreingang hängt. Der Eingang ist als Zähler konfiguriert, zählt also bei jedem Impulseingang um eins hoch. Wenn das KNX-Device neu programmiert wird, fängt der Zähler aber wieder bei Null an, was natürlich dann in den Grafana-Auswertungen überhaupt nicht mehr passt (da ich dort mit der tollen Differenz-Funktion die Regenmenge ermittle). Und da ich ein 12fach KNX-Gerät habe kann es eben schon mal vorkommen, dass das Device neu programmiert werden muss.
Die Logik hier macht folgendes:
- Der Zählerwert kann mit einem beliebigen Faktor umgerechnet (bei mir z.B. 0.518 pro Impulseingang)
- Wenn der Zählerstand zurückgesetzt wird und wieder von 0 beginnt, so wird der Gesamtwert dennoch richtig weitergerechnet
- Initiale Werte können ggf. als Parameter im Code übergeben werden
WICHTIG: Logik Persistent aktivieren ist wichtig, damit die Zählerstände auch einen Reset überlegen.
Allfällige Codeoptimierungen sind willkommen.
Code: Alles auswählen
/**=====================================================================
Logik zur Verarbeitung von Zählerwerten, z.B. einem Regensensor.
Der Zählerwert kann mit einem Faktor umgerechnet werden. Bei
Rest des Zählerstandes (z.B. durch Programmierung des KNX-Gerätes)
zählt der Gesamtwert korrekt weiter.
Initiale Werte (Zählerstand, Gesamtwert) können übergeben werden
direkt im Code
======================================================================*/
{
"Level":[
// in diese beiden Variablen hier können ggf. initiale Werte
// übergeben werden
["$Z_gesamt","float",0.0],
["$Z_alt","float",0.0],
// ab hier keine Anpassung mehr
["$Z_neu","float",0.0],
["$Z_delta","float",0.0],
["$Z_offset","float",0.0],
["$Konst_X","float",1.0],
["$Min","float",0.0],
["$Val_ok","bool",false],
["$Trigger","bool",false],
["$Out_val","float",0.0],
["$Out_temp","float",0.0],
["$Faktor","float",1.0]
],
"Module":[
// Prüfen ob Zähler neu <= Zöhler alt ist
["Limiter","$Z_neu","$Out_val","$Val_ok",["$Min", "$Z_alt"]],
// Delta zwischen Zähler alt und Zähler neu
["Polynomial", "$Konst_X", "$Z_delta",["-$Z_alt", "$Z_neu"]],
//Auswahl des Wertes für Offset. Entweder Delta oder neuer Wert (i.d.R. 0)
["Multiplexer",["$Z_delta","$Z_neu"],"$Z_offset","$Val_ok"],
// Zähler Offset zu gesamt addieren
["Polynomial", "$Faktor", "$Z_gesamt",["$Z_gesamt", "$Z_offset"]],
// Trigger zum alten Werte überschreiben
["Limiter","$Z_offset","$Out_temp","-$Trigger",["$Min", "$Min"]],
// Zähler alt korrekt setzen
["Latch","$Z_neu","$Z_alt","$Trigger",0]
],
"Input":[
["Zählerstand","Eingang Zählerstand","$Z_neu","c"],
["Faktor","Faktor für Umrechnung Gesamtzähler","$Faktor","c"]
],
"Output":[
["Gesamtwert","Ausgang Gesamtwert","$Z_gesamt","c"],
["Zähler-Reset","Zähler zurückgesetzt","$Val_ok","c"]
]
}
/**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. */
zu finden z.B. mit dem Suchbegriff "Misol WH-SP-RG"
Gruss
Dani