HourCounter: Unterschied zwischen den Versionen

Aus FHEMWiki
Zeile 17: Zeile 17:
== Status ==
== Status ==
Das Modul befindet sich noch in der Evaluierungs-Phase.
Das Modul befindet sich noch in der Evaluierungs-Phase.
Es wurde noch keine Version veröffentlicht.
 
Erste Beta-Version 0.99 ist [http://forum.fhem.de/index.php/topic,12216.msg107808.html#msg107808 hier] zu finden.


== Voraussetzungen ==
== Voraussetzungen ==

Version vom 16. November 2013, 11:53 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

  • Ermittlung von Betriebsstunden, Auslastung, Verbräuchen, Schalthäufigkeiten
  • Ermittlung der Häufigkeit, Puls- Pausendauer pro Tag
  • Ermittlung der Puls-/Pausendauer der letzten Schaltperiode
  • Bereitstellung von Ereignissen zur Fortführung der Kumulation für Wochen- Tages- u. Monatswerte
  • 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.

Erste Beta-Version 0.99 ist hier zu finden.

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 Kurve "Brenner EIN" 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 "Dauer" zeigt die Dauer des letzten Pulses in Sekunden
  • die Kurve Auslastung zeigt das Verhältnis des Readings pulseTimePerDay zur seit Tagesbeginn vergangenen Zeit.

Eigene Readings definieren

ToDo.

Archiv für Tages-/Wochen-/Monatswerte anlegen

ToDo.

Charts anlegen

ToDo.

Fragen und Antworten

ToDo