Hauptmenü

Modul HourCounter

Begonnen von John, 23 Oktober 2014, 18:14:00

Vorheriges Thema - Nächstes Thema

John

HourCounter bestimmt die Puls- und die Pausen-Zeit eines digitalen Signales und zählt dessen Auftreten.

Damit lässt sich unter anderem Folgendes realisieren:

  •    Zähler für beliebige Ereignisse       
  •    Zähler für binäre Ereignisse (mit steigender und fallender Flanke)
  •    Betriebszeit-Erfassung (zählt die Sekunden im ON-Zustand, Tageszähler, Gesamtzähler)   
  •    Ruhezeit-Erfassung (zählt die Sekunden im OFF-Zustand, Tageszähler, Gesamtzähler)   
  •    Auslastung (Verhältnis von Einschaltzeit/Gesamtzeit)   

Da es sehr viele Ideen gibt, die erfassten Inkremente weiterzuverarbeiten, habe ich mich dazu entschlossen
eine Art-API mit Referenz-Implementierung dazuzugeben (99_UtilsHourCounter.pm).

Damit erhält man

  •    Zähler über Stunde, Tag , Woche, Monat, Jahr (z.B. wie oft schaltet mein Brenner ein)     
  •    Betriebszeit/Verbrauch über Stunde, Tag , Woche, Monat, Jahr (z.B. Ölverbrauch des Brenners)   

Im Forum .. finden sich hierzu viele Beispiele für Anwendungs-Szenarien.
http://forum.fhem.de/index.php/topic,12216.0.html

Wie das Modul einzusetzen ist, wird im WIKI erklärt:
http://www.fhemwiki.de/wiki/HourCounter

Viel Spass damit.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

John

#1
Mit Einführung der zyklischen Werte-Aktualisierung (Attribut interval) wurden erhebliche Änderungen notwendig,
die auch Anpassungen an der bestehenden Konfiguration der Anwender erfordern können.

Die operativen Readings werden nun regelmässig aktualisert.
(countsOverall, countsPerDay,pauseTimeIncrement..)

Um die Datenflut zu begrenzen muss man  mit event-min-interval und event-on-change-reading arbeiten:
event-min-interval             .*:3600
event-on-change-reading            .*     


Während der Puls-Phase wird nun pulseTimeIncrement, pulseTimePerDay, pulseTimeOverall stets neu berechnet.
Analog hierzu die Readings der Pause-Phase.

pauseTimeEdge nimmt den Wert von pauseTimeIncrement nach Ende der Pausen-Phase auf. Analog hierzu pulseTimeEdge.


Änderungen in 99_UtilsHourCounter

* value, countsOverall können nicht mehr als Trigger innerhalb von 99_UtilsHourCounter verwendet werden,
  da diese nun auch aktualisiert werden, wenn sich der Wert nicht ändert.
* die Steuerung in diesem Modul erfolgt nun ausschliesslich über die tick*-Readings
  (siehe aktualisierte 99_UtilsHourCounter über den Link der Wiki-Seite)

entsprechend muss sich auch der Notify ändern der 99_UtilsHourcounter aufruft

  define CN.EVENT notify CN\..*:tick.* { appHCNotify("%NAME","%EVTPART0","%EVTPART1");;}

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

John

Neuer Version 1.0.1.2

BugFix: Unter bestimmten Bedingungen wurde pulseTimeIncrement, pauseTimeIncrement nicht hochgezählt,
Dies war dann der Fall, wenn ein Ereignis kam, ohne daß sich der Zustand änderte.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP