Zähler-Logik (z.B. für Regenmessung)

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

Ersteller
danik
Reactions:
Beiträge: 228
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 95 Mal
Danksagung erhalten: 152 Mal

Zähler-Logik (z.B. für Regenmessung)

#1

Beitrag von danik »

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.

Bild
Logik.png

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. */
Als Regenzähler verwende ich dieses Gerät hier
Regensensor.png
zu finden z.B. mit dem Suchbegriff "Misol WH-SP-RG"

Gruss
Dani
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
TW 950Q #321, VPN offen, Reboot nach Rücksprache


StefanW
Elaborated Networks
Reactions:
Beiträge: 3779
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Grafing
Hat sich bedankt: 1550 Mal
Danksagung erhalten: 2756 Mal
Kontaktdaten:

#2

Beitrag von StefanW »

Wow Dani,

sehr schön!. Tolle Anleitung!

lg

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART der Elaborated Networks GmbH
Support nur über dieses Forum und in individuellen Fällen über support@wiregate.de.
Bitte KEINE PN Impressum und Datenschutzerklärung oben

Antworten

Zurück zu „Zusätzliche Logikbausteine“