Modul HourCounter - Betriebsstundenzähler mit einem Fensterkontakt

Begonnen von John, 08 April 2013, 22:11:55

Vorheriges Thema - Nächstes Thema

John

#135
Die neue Version des HourCounters ist gebacken.

Es gibt sehr viele Möglichkeiten und Wünsche den HourCounter einzusetzen.
Etwa der nach Aggregation der Werte in beliebigen Zeiträumen.

Ich habe mich daher entschlossen, das Modul 98_HourCounter weitgehend zu belassen und hier nur
die Kernfunktionen zu implementieren.

Dafür wurde ein "Interface" integriert, das es ermöglicht in weiten Grenzen, neue Funktionalitäten hinzuzufügen.
Damit können die Anwender ihrer Phantasie freien Lauf lassen.

Das Modul 99_UtilsHourCounter ist eine Referenz-Implementierung hierfür.

Es stellt folgende Funktionen zur Verfügung:

  • Counts pro Stunde,Tag,Woche,Monat
  • Betriebsstunden pro Tag,Woche,Monat
  • Auslastung = Pulszeit in Sek. pro Tag/(vergangene Sekunden seit Tagesbeginn) * 100
  • Fixe Timing-Events bei Stunden,Tages,Wochen und Monatswechsel.

Die nächsten Tage werde ich das Wiki nach und nach erweitern.

Inbetriebnahme:

Beide Module in das ../FHEM/ Verzeichnis kopieren.
Der HourCounter arbeitet zunächst wie die Vorgängerversion.
Die neuen Möglichkeiten werden über ein Notify aktiviert.

Alle meine HourCounter beginnen mit CN.* also z.B. CN.BRENNER.
Somit werden mit nachfolgendem Notify alle HourCounter mit den neuen Möglichkeiten beglückt.
Die Sub appHCNotify befindet sich in 99_UtilsHourCounter.pm

define CN.EVENT notify CN\..*:(countsOverall:|value:|tickHour:|tickDay:|tickWeek:|tickMonth:).* {appHCNotify("%NAME","%EVTPART0","%EVTPART1");;}

Der Filter für die Log-Datei der Rohwerte bei CN.BRENNER
define CN.BRENNER.File FileLog ./log/CN.BRENNER-%Y.log CN.BRENNER:(counts|pause|pulse|tick|clear|value|appUtilizationTemp).*:.*

Der Filter für die Log-Datei der aggregierten Werte bei CN.BRENNER
define CN.BRENNER.FileDay FileLog ./log/CN.BRENNER-Day-%Y.log CN.BRENNER:app\w+(PerHour|PerDay|PerWeek|PerMonth)(?!Temp).*


John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

strauch

@John vielen Dank. Da brauch ich mal ein paar Stunden freien Kopf :-).
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

Stephan

Das war auch mein erster Gedanke..:-)

Ansonsten erst mal wieder ein grosses Dankeschön an John, der ausser den tollen Sachen, die er uns hier zu Verfügung stellt, auch bei den dümmsten Fragen immer erstklassige und verständliche Hilfe und Antworten liefert!
Gruß
Stephan

fhem 5.5, Raspi B, CUL V3 868 (max), Arduino Uno R3 conf.firmata v2.05

netbus

Hy,
Kann man mit dem HourCounter auch andere Werte ausser 0/1 bzw. open/close auswerten?
Hintergrund:
Ich möchte gerne meinen Stromverbrauch der alle 5 Sekunden ermittelt wird erfassen und so Monatsverbräuche generieren.

strauch

Was für Daten überträgt denn der Zähler? Es gibt ja auch spezielle Module wie USBSML nur für Stromzähler.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

netbus


strauch

Hast du mal ein Logausschnitt? Meiner überträgt auch Wattwerte, aber da muss ich nix zählen, das macht der Zähler alles selber und ich muss es nur loggen und mit nem Plot darstellen.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

strauch

@John, ich teste gerade deine Erweiterung, ich bekomme aber keine Ergebnisse. Jetzt muss ich mal ganz simpel Fragen. Wenn ich das notify aktiviert habe, dann müsste doch auch im Log des Counters der alles mitloggt die app Werte auftauchen?

Meine definition sieht so aus:
define hwr_Gaszaehler HourCounter hwr_Gaszaehler_Reedkontakt:reading:.on hwr_Gaszaehler_Reedkontakt:reading:.off
attr hwr_Gaszaehler verbose 1

define Filelog_hwr_Gaszaehler FileLog ./log/hwr_Gaszaehler-%Y.log hwr_Gaszaehler

define cn_hwr_gaszaehler notify hwr_Gaszaehler:(countsOverall:|value:|tickHour:|tickDay:|tickWeek:|tickMonth:).* {appHCNotify("%NAME","%EVTPART0","%EVTPART1");;}

define FileLog_cn_hwr_Gaszaehler FileLog ./log/FileLog_cn_hwr_gaszaehler-%Y.log hwr_Gaszaehler:app\w+(Utilization|PerHour|PerDay|PerWeek|PerMonth)(?!Temp).*


Im Log FileLog_cn_hwr_Gaszaehler tauchen keine Infos auf. Auch bekommt das notify keine Werte. Wobei mir gerade die Idee kommt das verbose 1 vielleicht ein Problem ist, ich wollte halt nicht jeden Tick im allgemeinen Log stehen haben, das teste ich mal.

Wobei das mit dem regexp im Filelog auch nicht richtig aussieht, obwohl ich kein Fehler finden kann:
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

John

ZitatWenn ich das notify aktiviert habe, dann müsste doch auch im Log des Counters der alles mitloggt die app Werte auftauchen?

Hast du schon einen Stundenwechsel abgewartet ?

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

strauch

ja schaut so aus:
2014-02-11_16:51:55 hwr_Gaszaehler value: 0
2014-02-11_16:52:23 hwr_Gaszaehler countsPerDay: 175
2014-02-11_16:52:23 hwr_Gaszaehler countsOverall: 1016
2014-02-11_16:52:23 hwr_Gaszaehler pauseTimeIncrement: 28
2014-02-11_16:52:23 hwr_Gaszaehler pauseTimePerDay: 14032
2014-02-11_16:52:23 hwr_Gaszaehler pauseTimeOverall: 123447
2014-02-11_16:52:23 hwr_Gaszaehler value: 1
2014-02-11_16:52:23 hwr_Gaszaehler 175
2014-02-11_16:56:14 hwr_Gaszaehler pulseTimeIncrement: 231
2014-02-11_16:56:14 hwr_Gaszaehler pulseTimePerDay: 46940
2014-02-11_16:56:14 hwr_Gaszaehler pulseTimeOverall: 196722
2014-02-11_16:56:14 hwr_Gaszaehler value: 0
2014-02-11_16:56:34 hwr_Gaszaehler countsPerDay: 176
2014-02-11_16:56:34 hwr_Gaszaehler countsOverall: 1017
2014-02-11_16:56:34 hwr_Gaszaehler pauseTimeIncrement: 20
2014-02-11_16:56:34 hwr_Gaszaehler pauseTimePerDay: 14052
2014-02-11_16:56:34 hwr_Gaszaehler pauseTimeOverall: 123467
2014-02-11_16:56:34 hwr_Gaszaehler value: 1
2014-02-11_16:56:34 hwr_Gaszaehler 176
2014-02-11_17:00:00 hwr_Gaszaehler tickHour: 1
2014-02-11_17:00:28 hwr_Gaszaehler pulseTimeIncrement: 234
2014-02-11_17:00:28 hwr_Gaszaehler pulseTimePerDay: 47174
2014-02-11_17:00:28 hwr_Gaszaehler pulseTimeOverall: 196956
2014-02-11_17:00:28 hwr_Gaszaehler value: 0
2014-02-11_17:00:45 hwr_Gaszaehler countsPerDay: 177
2014-02-11_17:00:45 hwr_Gaszaehler countsOverall: 1018
2014-02-11_17:00:45 hwr_Gaszaehler pauseTimeIncrement: 17
2014-02-11_17:00:45 hwr_Gaszaehler pauseTimePerDay: 14069
2014-02-11_17:00:45 hwr_Gaszaehler pauseTimeOverall: 123484
2014-02-11_17:00:45 hwr_Gaszaehler value: 1
2014-02-11_17:00:45 hwr_Gaszaehler 177
2014-02-11_17:01:49 hwr_Gaszaehler pulseTimeIncrement: 64
2014-02-11_17:01:49 hwr_Gaszaehler pulseTimePerDay: 47238
2014-02-11_17:01:49 hwr_Gaszaehler pulseTimeOverall: 197020
2014-02-11_17:01:49 hwr_Gaszaehler value: 0
2014-02-11_17:05:08 hwr_Gaszaehler countsPerDay: 178
2014-02-11_17:05:08 hwr_Gaszaehler countsOverall: 1019
2014-02-11_17:05:08 hwr_Gaszaehler pauseTimeIncrement: 199
2014-02-11_17:05:08 hwr_Gaszaehler pauseTimePerDay: 14268
2014-02-11_17:05:08 hwr_Gaszaehler pauseTimeOverall: 123683
2014-02-11_17:05:08 hwr_Gaszaehler value: 1
2014-02-11_17:05:08 hwr_Gaszaehler 178
2014-02-11_17:06:02 hwr_Gaszaehler pulseTimeIncrement: 54
2014-02-11_17:06:02 hwr_Gaszaehler pulseTimePerDay: 47292
2014-02-11_17:06:02 hwr_Gaszaehler pulseTimeOverall: 197074


Bei Verbose 3 ist es auch nicht anders
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

John

die Daten müssen in der Datei FileLog_cn_hwr_Gaszaehler  stehen, also in dem Filelog dessen Filter
app.*Per.* aufweist.

Mit verbose hat das nichts zu tun, verbose beeinflusst die Ausgabe in die fhem.log.

Die aggregierten Werte sind aber in den Filelogs.

Ausserdem kannst du mit forceHourChange einen Stundenwechsel erzwingen, um zu sehen, ob die Einträge im Log
der aggregierten Werte erscheinen. (Dann muss man nicht bis zum Stundenwechsel warten)

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

strauch

Jetzt muss ich noch mal ganz doof fragen...

set hwr_Gaszaehler forceHourChange?

Dann kommt bei mir forceHourChange command not found auf ein notify geht kein set.
Wo muss ich das forceHourChange ansetzten? Ich hab grad nen Brett vorm Kopf.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

John

Hast du die aktuelle Version ?

$HourCounter_Version="1.00 - 02.02.2014 (john)";

Hast du nach dem Installieren FHEM neu gestartet ?

set CN.Test forceHourChange

führt bei mir  zu folgenden Events

Zitat2014-02-11 21:08:23 HourCounter CN.Test tickHour: 1
2014-02-11 21:08:23 HourCounter CN.Test appCountsPerHourTemp: 0
2014-02-11 21:08:23 HourCounter CN.Test appCountsPerHour: 0

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

strauch

Ok es klappt..... ähmmm ja sehr peinlich, ich hatte beide Dateien nicht in meiner fhem installation. Ich könnte wetten das ich sie schon vor ein paar Tagen installiert hatte, ich hatte sie auch heruntergeladen. Sorry für die Umstände und danke für den Hinweis mit der Version. hmpf das ist ja frustrierend.....

Ich werde dann morgen mal weiter testen.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

blueberry63

Hallo,

ich habe nun auch angefangen, HourCounter für die Messung meines Gasverbrauchs (mittels RPI_GPIO) zu nutzen. Es funktioniert auch soweit ganz prima, allerdings weiss ich nicht weiter, wie ich die aggregierten Werte in meine DBLog bekomme. Im Wiki ist ja nur das Übertagen in eine Datei beschrieben:
Zitat
define CN.Test.FileDay FileLog ./log/CN.Test-Day-%Y.log CN.Test:app\w+(Utilization|PerHour|PerDay|PerWeek|PerMonth)(?!Temp).*

Da ich versuche, so wenig wie möglich auf die SD-Karte zu schreiben, würde auch hier gerne die Datenbank nutzen (die bei mir auf einem NAS liegt). Geht das?

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower