Modul HourCounter - Betriebsstundenzähler mit einem Fensterkontakt

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

Vorheriges Thema - Nächstes Thema

Cihan

Hallo John. Ich habe mir gerade den Wikipediaartikel zu Hourcounter durchgelesen.

Ich habe bei mir einen Zähler eingerichtet der Gasverbrauch heisst. Dieser zählt auch.
Jetzt steht im Wiki Artikel folgendes.

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

Spätestens nach einer steigenden und einer fallenden Flanke sind die zuvor genannten app*-Readings zu sehen.

muss ich statt CN.EVENT einfach Gasverbrauch hinschreiben? Das .EVENT irritiert mich ein bisschen.

Danke.
RPi4 Shelly Zigbee

John

Hallo Cihan,

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

Im einzelnen:

CN.EVENT :  ist einfach der Name des Noity's und kann beliebig festgelegt werden.

CN\..*:tick.* : Damit haben viele Probleme, daher  folgende Erkärung:

Bei jedem Notify muss man ja festlegen, was gefiltert werden soll um Informationen aus dem Event an das nachfolgende Skript weiterzuleiten.
Alles was man im Event-Monitor sieht sind Events, die als potentieller Input zur Verfügung stehen.
Wir wollen hier ganz bestimmte filtern, nämlich diejenigen, die von Objekte des Typs Hourcounter kommen und hier interessiert uns
eigentlich nur das Reading "tick".

Alle Hourcounter in meiner FHEM-Config beginnen mit CN.<irgendwas> z.B. CN.Brenner zählt bei mir die Brenner-Starts.

Ein Notify-Filter ist immer so aufgebaut

     <regexp für FHEM Objekte>:<regexp für Readings>

Der Doppelpunkt ist also der Separator zwischen den beiden RegExps.
Damit haben wir
CN\..* für die Objektnamen
und
tick.* für die Readings

Ein paar Regexp-Grundlagen:
. ist ein Platzhalter für ein beliebiges Zeichen
* bedeutet das Zeichen kann 0..n Mal wiederholt werden
\ ist ein Escaper und bedeuetet, daß das folgendzeichen nicht als Regexp-Steuerzeichen interpretiert werden darf

CN\..*  filtere die Events von allen FHEM-Objekten, deren Name mit "CN." beginnt
und
tick.*  filtere die Events deren Reading-Name mit tick beginnt.

Es müssen also beide Bedingungen gleichzeitig zutreffen, damit das Event an das nachfolgende Skript weitergeleitet wird.

Da nun dein Hourcounter "Gasverbrauch" heisst, wird dieser Notify keinen Treffer haben.

Deine Hausaufgabe ist nun aus dem zuvor Erklärten einen korrekten Notify zu entwerfen.


John


CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Cihan

John du bist mein Held heute!

Ich habe meine zwei Counter umbenannt in CN.* so wie du. Erscheint mir für die Zukunft besser.
Jetzt habe ich die Extrawerte.

(http://fs2.directupload.net/images/150217/suj9het8.jpg)

Jetzt sehe ich aber, das das Modul wohl für ein Reed Kontakt ausgelegt ist. Und ich aber über die Laufzeit den Verbrauch berechne.

John kannst du nochmal gucken? Im Wiki sind viel mehr Werte angegeben, als ich hab.

(http://fs1.directupload.net/images/150217/pqux358g.jpg)
(http://fs1.directupload.net/images/150217/u32hpv22.jpg)
appOpHoursPerWeek, appOpHoursPerMonth

Kann es sein, das die erst erscheinen wenn die Woche etc. um sind?
Edit:

Es stimmt ich habe mit force einen Jahreswechsel verursacht und die Sachen erscheinen. Top!
RPi4 Shelly Zigbee

harry57

Hi,
ich habe eine kleine Frage : Ich bilde mir ein, dass der Wochenzähler appOpHoursPerWeek nicht auf 0 gesetzt wurde sobald eine neue Woche begonnen hat sondern erst erneuert wurde, wenn die woche um ist..... d.h. man konnte eine Woche zurückschauen, was super ist :)

Zumindest bei mir macht der Zähler das so - und  ist damit anders als der Monatscounter - der gibt den 0 Wert nicht aus, sondern lässt den Wert drin...

Oder hab ich einen Fehler in meine config gebastelt und/oder meine Logfiles sind daher falsch ??


Danke

Harry

Bartimaus

Hallo,


irgendwie ist gestern FHEM abgestürzt, und hat scheinbar die fhem.save zerschossen. Jetzt sind fast alle Readings zum HourCounter meiner Heizung zurückgesetzt. Einzig der Gesamtverbrauch seit Start des HourCounters ist erhalten geblieben.
Wie kann man die Daten hierzu noch rekonstruieren ? Log-Dateien sind noch da...


Lg
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

strippo

Hallo,
Mit dem HourCounter Modul habe ich ein Smartmeter B+G E-t Tech mit einem S0 Interface in Betrieb genommen. Als "Vorschaltmodul" zum Abfragen der Raspi Pins ist das Modul RPI-GPIO im Einsatz. Funktioniert soweit sogut.
In Analogie möchte ich nun einen zweiten Zähler (Ferrariszähler) mit einem USB Lesekopf aus dem Volkszählerprojekt (Udo) zusätzlich anschliessen. Auch wieder mit HourCounter.
Welches "Vorschaltmodul" eignet sich für die Impulsaufnahme über USB ??
Übergangsweise habe ich das Problem mit dem modifizierten 74_S0Counter.pm
(http://forum.fhem.de/index.php?topic=14807.0)
provisorisch gelöst. Gibt es noch eine mir unbekannte professionellere Lösung?
Danke
Strippo
Asus-Mini PC mit CUL
Homematic HM-Sec_SD, HM-CC-RT-DN, HM-TC-IT-WM-W-WU
FS20,FHTB,HMS100t
openv Viessdata2 mit Optolink

kvo1

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

strippo

ja, danke, das kenne ich. SMLUSB unterstützt  aber ein Protokoll, das aus einem Elektrozähler den gesamten Zählerstand etc. ausliest (Zumindest habe ich das so verstanden). Ich suche aber nur ein Modul, das die Zählimpulse einer Scheibe eines Ferrariszähler per USB überträgt und dem Modul HourCounter zur Verfügung stellt.
Trotzdem Danke
Strippo
Asus-Mini PC mit CUL
Homematic HM-Sec_SD, HM-CC-RT-DN, HM-TC-IT-WM-W-WU
FS20,FHTB,HMS100t
openv Viessdata2 mit Optolink

satprofi

wie kommt ihr zu den readings "appCountsperWeek" ?

bei mir fängts erst ab zeile "clearDate" an  :-\
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

raspklaus

Welches Koppelrelais kann man für die Heizungsanbindung nehmen ?


John

Darauf gibt es keine pauschale Antwort.

Die Auswahl des Relais hängt von den elektischen Eigenschaften des Signals ab, welches du auskoppeln willst.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

raspklaus

Ich suche eines für die Heizungsauswertung aus Antwort 6 hier im Threat

Omega

#417
Hallo zusammen,

ich habe seit einiger Zeit einen HourCounter, der meinen Gasverbrauch (per Read-Kontakt) auswertet.
Die verwendeten Definitionen:

define Gasverbrauch HourCounter GPIOGaszaehler:on GPIOGaszaehler:off
define FileLog_Gasverbrauch FileLog ./log/Gasverbrauch-%Y-%m.log Gasverbrauch:countsOverall:.*|Gasverbrauch:countsPerDay:.*|Gasverbrauch:state:.*

Das funktioniert auch einwandfrei, ich kann für meine Heizung den kompletten Gasverbrauch (sowohl für's Heizen als auch für die Warmwasseraufbereitung) ermitteln.

Jetzt habe ich festgestellt, dass ich bei meiner Heizung auch den Status der Speicherladepumpe abfragen kann. Die läuft nur, wenn die Heizung die Warmwasseraufbereitung durchführt.
Mein Gedanke dazu: zusätzlich eine separate Auswertung des Gasverbrauchs zur Warmwasseraufbereitung.

Ich habe zuerst einen Dummy definiert, der nur dann ,,on" sein soll, wenn die Speicherladepumpe läuft UND der GPIO-Kontakt den Status wechselt (habe aber noch nicht testen können, ob der auch so funktioniert. Die nächste WW-Aufbereitung ist erst morgen).


define d.WW_GasZaehler dummy
attr d.WW_GasZaehler setList state:ON,OFF
attr d.WW_GasZaehler userReadings onoff {((ReadingsVal("Vitocrossal","Speicherladepumpe",0) eq "on") && (ReadingsVal("GPIOGaszaehler","state",0) eq "on"))?1:0;; }


Danach habe ich einen 2. HourCounter definiert, der auf meinen Dummy lauschen soll:

define WW_Gasverbrauch HourCounter d.WW_GasZaehler:onoff:.1 d.WW_GasZaehler:onoff:.0


Wenn ich gleich danach einen shutdown restart mache, habe ich folgendes Phänomen:
Im Filelog Gasverbrauch-2015-09.log habe ich zusätzlich zu den normalen Einträgen (Gasverbrauch *) folgende Einträge (WW_Gasverbrauch *).

2015-09-15_16:22:20 Gasverbrauch countsPerDay: 147
2015-09-15_16:22:20 Gasverbrauch countsOverall: 3729573
2015-09-15_17:32:20 WW_Gasverbrauch countsPerDay: 0
2015-09-15_17:33:02 Gasverbrauch countsPerDay: 147
2015-09-15_17:33:02 Gasverbrauch countsOverall: 3729573
2015-09-15_17:33:11 WW_Gasverbrauch countsPerDay: 0


Mein normales Log zu diesem Restart sieht so aus:

2015.09.15 17:32:42 3: [UtilsHourCounter] Init Done with Version 1.0.1.0 - 10.12.2014 (john)
2015.09.15 17:32:42 1: Including fhem.cfg
2015.09.15 17:32:42 3: telnetPort: port 7072 opened
2015.09.15 17:32:42 3: WEB: port 8083 opened
2015.09.15 17:32:42 3: WEBphone: port 8084 opened
2015.09.15 17:32:42 3: WEBtablet: port 8085 opened
2015.09.15 17:32:43 2: eventTypes: loaded 337 events from ./log/eventTypes.txt
2015.09.15 17:32:43 3: HourCounter HourCounter Initialize.220 Init Done with Version 1.0.1.2 - 24.12.2014
2015.09.15 17:32:43 0: HourCounter Gasverbrauch Define.228 parameters: Gasverbrauch HourCounter GPIOGaszaehler:on GPIOGaszaehler:off
2015.09.15 17:32:54 3: VCONTROL: Define open DATEI 'VScotHO1.cfg'
2015.09.15 17:32:54 3: VCONTROL: open DATEI 'VScotHO1.cfg'
2015.09.15 17:32:54 3: VCONTROL: DATEI 'VScotHO1.cfg' refreshed
2015.09.15 17:32:54 3: VCONTROL opening VCONTROL device /dev/ttyUSB0
2015.09.15 17:32:54 3: VCONTROL opened VCONTROL device /dev/ttyUSB0
2015.09.15 17:32:54 3: VCONTROL: Initialization
2015.09.15 17:32:56 3: FHEM2FHEM opening CT_fhem at 192.168.0.24:7072
2015.09.15 17:32:56 3: FHEM2FHEM device opened (CT_fhem)
2015.09.15 17:32:56 0: HourCounter WW_Gasverbrauch Define.228 parameters: WW_Gasverbrauch HourCounter d.WW_GasZaehler:onoff:.1 d.WW_GasZaehler:onoff:.0
2015.09.15 17:32:56 1: Including ./log/fhem.save
2015.09.15 17:32:56 1: usb create starting
2015.09.15 17:32:56 3: Probing CUL device /dev/ttyAMA0
2015.09.15 17:32:57 3: Probing TCM_ESP3 device /dev/ttyAMA0
2015.09.15 17:32:57 3: Probing FRM device /dev/ttyAMA0
2015.09.15 17:33:02 1: usb create end
2015.09.15 17:33:02 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2015.09.15 17:33:02 0: Featurelevel: 5.6
2015.09.15 17:33:02 0: Server started with 82 defined entities (version $Id: fhem.pl 9195 2015-09-03 07:23:40Z rudolfkoenig $, os linux, user fhem, pid 20979)
2015.09.15 17:33:02 0: HourCounter Gasverbrauch Run.598 first run done countsOverall:3729573
2015.09.15 17:33:11 0: HourCounter WW_Gasverbrauch Run.598 first run done countsOverall:0


Mein Problem mit diesen Einträgen ist, dass die WW_Gasverbrauch-Einträge meinen Plot ,,kaputtmachen".


Meine Fragen:
Warum erscheinen die WW_Gasverbrauch-Einträge in diesem Log (Gasverbrauch-2015-09.log)? Ich habe für WW_Gasverbrauch noch gar kein Log definiert. Das wäre doch erst der nächste Schritt. Und ich möchte die Daten in einem separaten Logfile haben.

Was muss ich richtigerweise machen, damit zusätzlich zum Gesamtverbrauch auch der WW_Gasverbrauch ausgewertet werden kann?

Danke für eure Unterstützung
Holger

Nachtrag:
Auch nach jedem Stundenwechsel habe ich einen Eintrag

2015-09-15_18:00:00 WW_Gasverbrauch countsPerDay: 0

Im Log.
Den HourCounter habe ich daher erst einmal wieder gelöscht.
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave

John

Hallo Holger,

die Ursache für dein Problem ist in der Definition des FileLogs zu finden.

define FileLog_Gasverbrauch FileLog ./log/Gasverbrauch-%Y-%m.log Gasverbrauch:countsOverall:.*|Gasverbrauch:countsPerDay:.*|Gasverbrauch:state:.*


Hilfreich zum testen von Regular Expressions ist diese Seite https://regex101.com/

Damit wird schnell klar, daß "'WS_Gasverbrauch" auch mit dem Filter matched, was nun alles erklärt.

Anbei der Screenshot mit deinem Fall.

(http://forum.fhem.de/index.php?action=dlattach;topic=12216.0;attach=37238)

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Omega

Hallo John,

danke für deine schnelle Hilfe (umd für das tolles Modul  :) ).

Ich merke, das mein Verständnis für Regular Expressions maximal rudimentär ist. Gelesen habe ich das bisher immer so, dass z.B. Gasverbrauch:state: konstant ist und durch den Filter ".*" nur das abgefragt wird, was danach kommt (also z.B. on, off, 0 oder 1).

Aber da muss ich wohl durch (den Knoten in meinem Hirn lösen).

Nochmals danke!
Holger
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave