Modul HourCounter - Betriebsstundenzähler mit einem Fensterkontakt

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

Vorheriges Thema - Nächstes Thema

John

@the-tom

schick bitte die definition deines Hourcounters.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

the-tom

@ John:
define Pelletheizung HourCounter BrennerKontakt:onoff:.1 BrennerKontakt:onoff:.0

hab schon verschiedene Varianten ausprobiert.

Muss ich einen Dummy verwenden?
Da mein Schalter nur diese Infos ins Log schreibt:
2015-02-01_11:20:19 BrennerKontakt light: on
2015-02-01_11:20:19 BrennerKontakt on
2015-02-01_11:20:24 BrennerKontakt light: off
2015-02-01_11:20:24 BrennerKontakt off

John


@the-tom
versuch das
define Pelletheizung HourCounter BrennerKontakt:on BrennerKontakt:off

passend zu
2015-02-01_11:20:19 BrennerKontakt on
2015-02-01_11:20:24 BrennerKontakt off

Der Doppelpunkt in der Definition ist ein Separator zwischen <regexp zu device>:<regexp zu nachfolgenter Teil im Eventlog>

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

the-tom

Hi John,
vielen Dank für die schnelle Antwort: So funktioniert es  :)

Fritz Muster

#394
Hallo in die Runde,

irgendwie will es mir nicht gelingen, die 99_UtilsHourCounter.pm um die Funktion "Tankinhalt" zu erweitern. Vielleicht gehe ich das Ganze zu "hemdsärmlig" an. Die Standardreadings sind alle vorhaden. Habe dann einfach die 99_UtilsHourCounter.pm um die Zeilen

my $appTankinhalt = ReadingsVal ($name,'appTankinhalt',0 )-$pulseTimePerDay*0.000722222222222;
readingsBulkUpdate ($hash, 'appTankinhalt' , $appTankinhalt);   


unter der Rubrik #dayly tasks erweitert.

Nach Shutdown und Triggern des Counters erscheint das reading aber nicht. Kann mir bitte jemand weiterhelfen?

Danke und Grüße
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

Icinger

Hast du ein "reload 99_UtilsHourCounter" oder ein "shutdown restart" gemacht, damit das Modul neu geladen wird?
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Fritz Muster

zuerst habe ich ein Shutdown restart gemacht, hat aber nichts gebracht. Danach ein reload 99_UtilsHourCounter  ( wieder was gelernt  ;)), hat aber auch nichts gebracht.

Ich Frage mich, ob es grundsätzlich der richtige Weg ist, einfach die Zeilen in die 99_UtilsHourCounter einzutragen. Oder muss noch an anderer Stelle was entsprechendes ergänzt/eimgetragen werden.

Fritz
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

John

@Fritz Muster
schick mal die ganze Subroutine, die du geändert hast.
John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

daschauher

Hallo John,

ich habe eine Frage zu deinem Modul. Ich habe einen Lüfter im Bad mit 2 Geschwindigkeiten.
Wenn der Lüfter läuft um die Geschwindigkeit umgeschaltet wird, also quasi ein ON Befehl kommt obwohl noch ein anderer aktiv ist, zählt der Zähler eins weiter. Und das möchte ich in diesem Fall vermeiden.
Hier meine Konfig:

OG_Luefter_BAD_langsam:on|OG_Luefter_BAD_schnell:on OG_Luefter_BAD_langsam:off|OG_Luefter_BAD_schnell:off

Ich würde das jetzt über ein Dummy lösen, welches den Zähler auslöst.
Die frage die ich an dich habe ist ob das auch anders geht, wie z.B. einfach nur ein attribut setzen oder so.
Oder ob du das auch mit einem Dummy lösen würdest?

Grüsse
Markus

John

Hallo Markus,
bei welchen Ereignissen wird welcher Event gefeuert ?

Welche Transitionen sind möglich ?

AUS--> Langsam
AUS--> Schnell
Langsam -> Schnell
Schnell - langsam
Langsam -> AUS
Schnell -> AUS

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

daschauher

Ich habe so ein UP Modul mit 2 Relais Ausgängen. Davon wird ein Kontakt für die Spule der langsamen und der andere für die schnelle Geschwindigkeit benutzt.
Es gibt 4 Erreignisse:
langsam:on, schnell:on, langsam:off, schnell:off
möglich ist folgendes:
AUS--> Langsam (-> Zählen)
AUS--> Schnell (-> Zählen)
Langsam -> Schnell  (-> NICHT Zählen)
Schnell -> langsam (-> NICHT Zählen)
Langsam -> AUS (Schnell noch an, da Langsam -> Schnell) (-> NICHT Zählen)
Langsam -> AUS (Schnell ist aus) (-> Zählen)
Schnell -> AUS (Langsam noch an, da Schnell-> Langsam ) (-> NICHT Zählen)
Schnell -> AUS (Langsam ist aus) (-> Zählen)

Aber wie gesagt wenn sowas im Modul nicht vorhanden ist und auch keinen sinn macht, leg ich mir ein dummy  und ein par if anweisungen an. wollte nur wissen ob es bereits einen eleganteren weg gibt.

John

Zitat..leg ich mir ein dummy  und ein par if anweisungen an..
Halte ich auch für den besten Weg.
John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

daschauher


Fritz Muster

@John

hier der Auszug aus meiner Subroutine

# --------------------------------------------------
# dayly tasks
sub appHC_OnDay($$$)
{
   my ($name,$part0,$part1) = @_;  # name objects, name des parameters, wert des parameters
   $part0='' if (!defined($part0));
   my $hash = $defs{$name};
   return undef if (!defined ($hash));
   
   my $appCountsPerDay = ReadingsVal($name, 'countsPerDay',0);
   my $pulseTimePerDay = ReadingsVal($name, 'pulseTimePerDay',0);
   
   #HourCounter_Log $hash, 2, "pulseTimePerDay:$pulseTimePerDay";   
       
   my $appOpHoursPerDay  = $pulseTimePerDay/3600;
   my $appOpHoursPerWeekTemp = ReadingsVal ($name,'appOpHoursPerWeekTemp',0 )+$appOpHoursPerDay;
   my $appOpHoursPerMonthTemp =ReadingsVal ($name,'appOpHoursPerMonthTemp',0 )+$appOpHoursPerDay;
   my $appOpHoursPerYearTemp  =ReadingsVal ($name,'appOpHoursPerYearTemp',0 )+$appOpHoursPerDay;
   my $appTankinhalt = ReadingsVal ($name,'appTankinhalt',0 )-$pulseTimePerDay*0.000722222222222;
   my $appUtilizationTempOld = ReadingsVal ($name,'appUtilizationTempOld',0 );
     
   readingsBeginUpdate($hash);
   
   readingsBulkUpdate ($hash, 'appCountsPerDay'       , $appCountsPerDay);
   readingsBulkUpdate ($hash, 'appOpHoursPerDay'      , $appOpHoursPerDay);
   readingsBulkUpdate ($hash, 'appOpHoursPerDayTemp'  , 0);
   
   readingsBulkUpdate ($hash, 'appOpHoursPerWeekTemp' , $appOpHoursPerWeekTemp);
   readingsBulkUpdate ($hash, 'appOpHoursPerMonthTemp', $appOpHoursPerMonthTemp);
   readingsBulkUpdate ($hash, 'appOpHoursPerYearTemp' , $appOpHoursPerYearTemp);
   readingsBulkUpdate ($hash, 'appTankinhalt' , $appTankinhalt);
   readingsBulkUpdate ($hash, 'appUtilization', $appUtilizationTempOld);   
   
   readingsEndUpdate( $hash, 1 );   
}


Grüße Fritz
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

Fritz Muster

@John

Kommando zurück, es funktioniert. Weiß zwar nicht warum, aber erstmal egal. Ich vermute allerdings, das es mit der Dauer des Triggerns zusammenhängt. In meiner Testumgebung habe ich den Trigger immer nur sehr kurz betätigt, <1sek. Jetzt habe ich den Trigger mehrere Minuten betätigt und schwubs war das reading da.

An Alle mit gleicher Fragestellung wie ich sie hatte: JA, um die 99_UtilsHourCounter.pm zu erweitern muss lediglich in der Datei selbst die Erweiterung gemacht werden.

Danke und Grüße Fritz
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus