HourCounter: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
Zeile 11: Zeile 11:
* Bereitstellung von Ereignissen zur Fortführung der Kumulation für Wochen- Tages- u. Monatswerte
* Bereitstellung von Ereignissen zur Fortführung der Kumulation für Wochen- Tages- u. Monatswerte
* Ermittlung von Betriebsstunden, Auslastung, Verbräuchen
* Ermittlung von Betriebsstunden, Auslastung, Verbräuchen
* unterstützende Funktionen zur Ablage von Tages-, Wochen- und Monatswerten


== Zielsetzung des WIKI-Artikels ==
== Zielsetzung des WIKI-Artikels ==

Version vom 16. November 2013, 01:10 Uhr


Clock - Under Construction.svg An dieser Seite wird momentan noch gearbeitet.


HourCounter ist ein Perl-Modul, das die Anzahl von Ereignissen erfasst. Bei bipolaren Ereignissen wird zusätzlich die Puls- sowie die Pausendauer ermittelt. Im vorliegenden Beispiel wird ein Betriebsstundenzähler mit einem MAX-Fensterkontakt realisiert.

Features

  • Erfassung von FHEM-Ereignissen
  • Ermittlung der Häufigkeit pro Tag
  • Ermittlung der Puls-/Pausendauer der letzten Schaltperiode
  • Ermittlung kumulierten Werte für Puls-/Pausedauer
  • Bereitstellung von Ereignissen zur Fortführung der Kumulation für Wochen- Tages- u. Monatswerte
  • Ermittlung von Betriebsstunden, Auslastung, Verbräuchen
  • unterstützende Funktionen zur Ablage von Tages-, Wochen- und Monatswerten

Zielsetzung des WIKI-Artikels

Erläuterung der Funktionalität zur weiterführenden Diskussion im Forum. Forum

Status

Das Modul befindet sich noch in der Evaluierungs-Phase. Es wurde noch keine Version veröffentlicht.


Voraussetzungen

keine besonderen Voraussetzungen. Das Modul ist anders als das Vorgängerskript nicht mehr an Max-Komponenten gebunden.

Definition

Abstrakt

define <name> HourCounter <regexp_for_ON> [<regexp_for_Off>]

<regexp_for_ON> ist ein regulärer Ausdruck der das Ereignis beschreibt. Wenn auch [<regexp_for_Off>] definiert ist, so sprechen wir von einem bipolarem Ereignis, das einen EIN- sowie einen AUS-Zustand aufweist. <regexp_for_ON> berschreibt in diesem Fall die positive Flanke,[<regexp_for_Off>] die negative Flanke. Die Struktur des regexp-Ausdruckes ist analog zu jener beim Notify aufgebaut.

Konkret

define CN.Test HourCounter SHUTTER.JOHN:onoff:.1 SHUTTER.JOHN:onoff:.0

Hier wird der HourCounter CN.TEST definiert. Ein MAX-Fensterkontakt mit Namen SHUTTER.BRENNER wird als Ereignis-Geber verwendet. Das Reading "onoff" wird als Trigger für unserem Zähler genutzt. Bei den Fensterkontakten sehen diese Ereignisse wie folgt aus:

2013-11-15 23:19:12 MAX SHUTTER.JOHN onoff: 1
....
2013-11-15 23:19:24 MAX SHUTTER.JOHN onoff: 0

Die neue Instanz weisst folgende Struktur auf


Internals:
   CFGFN      
   DEF        SHUTTER.JOHN:onoff:.1 SHUTTER.JOHN:onoff:.0
   NAME       CN.Test
   NR         601
   NTFY_ORDER 50-CN.Test
   STATE      0
   TYPE       HourCounter
   Readings:
     2013-11-15 23:30:15   clearDate       2013-11-15 23:30:15
     2013-11-15 23:30:15   countsOverall   0
     2013-11-15 23:30:15   countsPerDay    0
     2013-11-15 23:30:15   pauseTimeIncrement 0
     2013-11-15 23:30:15   pauseTimeOverall 0
     2013-11-15 23:30:15   pauseTimePerDay 0
     2013-11-15 23:30:15   pulseTimeIncrement 0
     2013-11-15 23:30:15   pulseTimeOverall 0
     2013-11-15 23:30:15   pulseTimePerDay 0
     2013-11-15 23:30:15   state           0
     2013-11-15 23:30:15   value           0
   Helper:
     OFF_Regexp SHUTTER.JOHN:onoff:.0
     ON_Regexp  SHUTTER.JOHN:onoff:.1
     calledByEvent 
     changedTimestamp 2013-11-15 23:30:15
     forceClear 
     forceDayChange 
     isFirstRun 
     sdRoundHourLast 1384552800
     value      -1

Readings

Reading Beschreibung
clearDate Datum, zu dem alle kumulativen Readings über set .. clear gelöscht wurden
countsOverall Absolutzähler für das Auftreten des ON-Ereignisses
countsPerDay Tageszähler für das Auftreten des ON-Ereignisses
pauseTimeIncrement Zeitdauer in Sekunden der Pause-Phase der letzten Periode
pauseTimeOverall Zeitdauer in Sekunden über alle aufgetretenen Pause-Phasen
pauseTimePerDay Zeitdauer in Sekunden über alle aufgetretenen Pause-Phasen des akt. Tages
pulseTimeIncrement Zeitdauer in Sekunden der Puls-Phase der letzten Periode
pulseTimeOverall Zeitdauer in Sekunden über alle aufgetretenen Puls-Phasen
pulseTimePerDay Zeitdauer in Sekunden über alle aufgetretenen Puls-Phasen des akt. Tages
value Aktueller Schaltzustand gemäss ON/OFF Ereignis

Web-Oberfläche

HourCounter


Anwendung

Nachfolgende Darstellung zeigt das Einschaltverhalten eines Heizungskessels zusammen mit den abgeleiteten Werten.

13 11 15 HourCounter Chart.png

  • die rote Kurve zeigt die Trigger-Signale unseres ON/OFF Filters, also das Ein-/Ausschalten des Brenners
  • die Kurve "Brenner-Starts" zeigt die über den Tag aufgelaufenen Starts, also chronologisch das Anwachsen von Reading countsPerDay

' die Kurve "Betriebsstunden" zeigt die aufgelaufene Zeit aus dem Reading pulseTimePerDay umgerechnet zu Stunden

  • die Kurve Auslastung zeigt das Verhältnis des Readings pulseTimePerDay zu seit Tagesbeginn vergangenen Zeit.