(gelöst) HourCounter / Aktivierung 99_UtilsHourCounter klappt nicht

Begonnen von Frank Steinhauer, 14 Januar 2015, 21:30:51

Vorheriges Thema - Nächstes Thema

Frank Steinhauer

Hallo,
eine echte Anfängerfrage ;-) :
Nachdem mein Gaszähler dankt HourCounter fleißig Werte liefert wollte ich den jeweiligen Tageswert loggen.
Wenn ich das richtig verstehe sollte das mit 99_UtilsHourCounter kein Problem sein.
Im Wiki steht das dieser so aktiviert werden kann:
Zitatdefine 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.
Wie muss ich den Code anpassen wenn mein HourCounter so definiert ist:?
define Gasverbrauch HourCounter GPIOGaszaehler:on GPIOGaszaehler:off
Bisher konnte ich durch keine Kombination dieses app* Readings erzeugen.

Der Wikiartikel richtet sich eher an den fortgeschrittenen Anfänger...

Gruß
Frank

John

Hallo Frank,

im Wiki steht auch, in welchem Forum der HourCounter behandelt wird.
http://forum.fhem.de/index.php/topic,12216.msg72596.html#msg72596

Einen notify zu verstehen ist wenn nicht der erste, so doch der zweite Schritt als Anfänger in FHEM.
Es läuft einfach alles über Events ab.

Um deine Frage zu beantworten, muß ich wissen wie du deinen Hourcounter definiert hast,
vor allem der Name ist wichtig.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Frank Steinhauer

Hallo John,
schön das der Erfinder persönlich hilft :-)
Um das Konzept des notify und der events bin ich bisher gut herumgekommen. Ich nutze FHEM eher wie eine komplexe Eieruhr die die Rolladen steuert und nebenbei noch schöne Plots von meiner Wetterstation erstellt. Erst der Wunsch Messwerte in bestimmten Zeitabständen kumuliert darstellen zu wollen (Gaszähler) bringt mich zum notify.
Aber nun zum Thema, du fragst wie ich Hourcounter definiert habe (nach dieser Anleitung:http://voizchat.de/gaszaehler-verbrauch-erfassen-mit-fhem-und-raspberry-gpio).
Ich dachte das hätte ich erklärt mit:
define Gasverbrauch HourCounter GPIOGaszaehler:on GPIOGaszaehler:off

Das nutzt dann ein Notify "GasverbrauchStdNoti" um den Verbrauch pro Stunde zu loggen:
Gasverbrauch {

my $GasUmlaufzeit=ReadingsVal("Gasverbrauch","pauseTimeEdge","0")+ReadingsVal("Gasverbrauch","pulseTimeEdge","0");
my $GasProStd=36/$GasUmlaufzeit;
my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;

fhem("set GasverbrauchStd $GasProStdRounded");;
fhem("delete tmp_time_gas");;
fhem("define tmp_time_gas at +00:02:00 set GasverbrauchStd 0");;
}


Nun möchte ich aber noch einen Plot der mir den Verbrauch pro Tag über das gesamte Jahr darstellt. Kann ja eigentlich nicht so schwierig sein...
Ich habe in deinem Wikieintrag Probleme damit zu erkennen was ist eine Name und was ist Syntax. Du springst da von CN.Test zu CN.Notify. Sicher für jeden der Perl Erfahrung hat rudimentär, für jemand der auf Code Schnipsel angewiesen ist verwirrend.
Aber wer nicht fragt bleibt dumm :-)

Grüsse
Frank

John

Hallo Frank,

das sollte funktionieren

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

Hierbei kannst du den Namen des notify "CN.EVENT" beliebig verändern.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

majorshark

Hallo ins Forum.

Wobei ich anmerken möchte, dass es schon ziemlich Clever ist das Notify so zu definieren.
CN\..*:tick.*
Egal wieviele Counter man hat, die Erweiterung ist immer gleich definiert. Man muss die Counter halt nur in der Form "CN.Namen" definieren.

Bei Deiner Definition bräuchtest Du dann neben dem Gasverbrauch eine weitere Definition im Notify für zum Beispiel Stromverbrauch oder Wasserverbrauch oder, oder ...
Und wenn Dir der Name "CN.Name" nicht gefällt kannst Du Ihn ja über das Attribut " Alias" umbenennen.

Grüße Frank
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

Frank Steinhauer

Danke! Mit der Definition hat es geklappt!

Gruß
Frank

SmartFan

Hallo Allerseits,

ich benutze auch den HC und auch das kleine Perl script für die Berechnungen.

Gasverbrauch {

my $GasUmlaufzeit=ReadingsVal("Gasverbrauch","pauseTimeEdge","0")+ReadingsVal("Gasverbrauch","pulseTimeEdge","0");
my $GasProStd=36/$GasUmlaufzeit;
my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;

fhem("set GasverbrauchStd $GasProStdRounded");;
fhem("delete tmp_time_gas");;
fhem("define tmp_time_gas at +00:02:00 set GasverbrauchStd 0");;
}

Blöd ist aber, dass das Define und das Delete jedesmal auch geloggt werden.
Gibt es eine Möglichkeit dieses zu unterbinden, ggf mit DbLogExclude und wo müßte ich das einbauen.

Danke und Beste Grüße Michael
2x Raspberry Pi2 B+
Enocean Pi
8x Thermokon SR04, SR04PT, SR04PST, 3x SAB02, 1xMD15
dblog

awe

Hallo,

da ich selber auf der Suche nach einer Lösung zu dem von SmartFan im letzten Posting zitierten Problem war und jetzt eine Lösung gefunden habe, möchte ich diese auch hier mit Euch teilen:

Und zwar hat Michael (http://voizchat.de/gaszaehler-verbrauch-erfassen-mit-fhem-und-raspberry-gpio/comment-page-3/#comment-75427) folgende Idee:

Gasverbrauch:value.* {
my $GasUmlaufzeit=ReadingsVal(,,Gasverbrauch","pauseTimeEdge","0″)+ReadingsVal(,,Gasverbrauch","pulseTimeEdge","0″);
my $GasProStd=36/$GasUmlaufzeit;
my $GasProStdRounded=int(100 * $GasProStd + 0.5) / 100;
fhem(,,set GasverbrauchStd $GasProStdRounded");;
if(defined($defs{'tmp_time_gas'})) { fhem ,,modify tmp_time_gas +00:02:00" } else
{ fhem ,,define tmp_time_gas at +00:02:00 set GasverbrauchStd 0" };;
}

Habe ich selber so geändert und scheint jetzt keine weiteren LOG-Einträge mehr zu generieren! :)

Gruß,
Axel