Neues Modul EMONITOR - EnergieMonitor

Begonnen von Elektrolurch, 06 Dezember 2014, 17:11:34

Vorheriges Thema - Nächstes Thema

raspklaus

Hier antworted anscheinend keiner mehr

pc1246

Hallo raspklaus
Ich glaube, dass manchmal die Benachrichtigungsfunktion des Forums nicht so ganz funktioniert! Elektrlurch haette Euch sonst bestimmt schon geantwortet.
Versuchs doch mal mit ner PM!?
Gruss Christoph
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

Morrino

Hallo,

benutze das Modul seit gestern um meinen Durchschnittsverbrauch meiner PCA301 Steckdosen zu erzeugen.

Ich habe bis jetzt lediglich folgende Definition vorgenommen:
define EM EMONITOR
attr EM types PCA301


Damit findet er auch alle meine Steckdosen. Allerdings passen die Werte leider nicht wirklich.
Arbeitszimmer-power-daily     0.4     2015-11-24 20:59:47
Arbeitszimmer-power-daily-last        0     2015-11-23 23:59:54
Arbeitszimmer-power-hourly            0     2015-11-24 21:51:08
Arbeitszimmer-power-hourly-last     0.0     2015-11-24 20:59:56
Arbeitszimmer-power-monthly         1.2     2015-11-24 20:59:47
Arbeitszimmer-power-weekly           0.9     2015-11-24 20:59:47
Arbeitszimmer-power-weekly-last    0     2015-11-22 23:59:54
Arbeitszimmer-power-yearly            1.2     2015-11-24 20:59:47


Beim Stundenverbrauch steht immer 0,0 was nicht der Tatsache entspricht. Auch ist der Verbrauch vom Vortag auf 0,0, was ebenfalls nicht sein kann.

Jemand vielleicht eine Idee woran das liegen könnte?

Grüße und danke

Elektrolurch

Hallo,

siehe auch mal weiter oben.
Was sein könnte, ist das die stündliche Berechnung zweimal aufgerufen wird und damit natürlich die Zähler auch teilweise falsch zurückgesetzt werden.
Die Berechnung soll ja immer vor der vollen Stunde abgeschlossen werden. Damit hängt der Start der Berechnung von der Anzahl der devices ab.
Das Modul lief ursprünglich auf einer Fritzbox und die Aktualisierung der ganzen readings hat schon eine Zeitspanne in Anspruch genommen.

Code:
my $devcount = int(keys  %{$hash->{EMdevices}});
# start statistik befor full hour
# so update-events will contain the hour, day etc. of final calculation and not the next period
# EMONITOR_Statistik is called repeatedly, for each dev 1 sek.
my $nexttime = EMONITOR_GetNextHour($devcount * 2) - ($devcount *2)  - 10;
Log3($name,3,"EMONITOR_Statistiks (end): Calc next call - found $devcount devices ".join(' ',localtime($nexttime)));
RemoveInternalTimer($hash);   
InternalTimer($nexttime, "EMONITOR_Statistik", $hash, 0);

return undef;
} # end sub EMONITOR_Statistik

Du kannst mal für den EMonitor verbose auf 3 setzen, dann siehst Du, ob das mehr als einmal je Stunde aufgerufen wird.

Und dann die Zeile ev. so abändern:
my $nexttime = EMONITOR_GetNextHour($devcount ) - ($devcount *2)  - 2;

oder entsprechend ein wenig herumprobieren, so dass das letzte device so um :58 Uhr aktualisiert wird.

Elektrolurch


configDB und Windows befreite Zone!

Morrino

Ok danke,

werde ich das Wochenende mal rumprobieren.

Hört sich so an das das Modul nicht mehr weiter geführt wird?
Schade habe nicht wirklich eine Alternative gefunden.

Lg

Morrino

Hi,

also den Verbrauch der letzten Stunde etc. funktioniert jetzt. Der stündliche Verbrauch ist aber weiterhin auf Null.
Auch wird dieser knapp jede Minute im jeweiligen PCA-Device aktualisiert. Dies wird allerdings nicht im Event-Monitor angezeigt.

Ansich sollte dieser Weret doch nur einmal geändert werden oder? Dies passiert aber auch wenn ich in in der von dir besagten Zeile nichts ändere.


C0mmanda

Moin moin,

Habe das Modul neu für mich entdeckt und bin begeistert. Danke dafür.

Eine Frage habe ich jedoch: Es werden ja offensichtlich die Wh errechnet und ausgegeben.
Besteht die möglichkeit das Modul dazu zu überreden gleich die kWh auszuspucken oder muss ich das manuell umbiegen?

Vielen Dank!

Grtz
C0mmanda

Elektrolurch

Ich würde das über valueFormat in einer / der readingsGroup machen:

valueFormat {($READING =~m/week|month|year/)?sprintf("%d",$VALUE/1000):$VALUE}

oder so ähnlich.
In der Muster rg ist schon ein valueFormat vorhanden, das muss dann analog erweitert werden.

Elektrolurch

configDB und Windows befreite Zone!

SlrG

@Elektrolurch:
Gibt es eine Deinstallations-Funktion, die alle user-readings entfernt? Ich möchte das Modul gerne komplett entfernen.

Elektrolurch

set <EM-device> reset everything
löscht alle zusätzlichen readings bei den aufgezeichneten Geräten.
configDB und Windows befreite Zone!

SlrG

@Elektrolurch:
Vielen Dank! Das hat wunderbar funktioniert. Nun kann ich frisch nochmal neustarten. :)

Helmi55

Hallo
Elektrolurch,

da ich mein System neu aufgesetzt habe, habe ich jetzt auch gleich obige Einstellung verwendet
my $nexttime = EMONITOR_GetNextHour($devcount ) - ($devcount *2)  - 2;

Bekomme aber trotzdem diese Meldungen
2016.02.19 15:59:47 3: EMONITOR_Statistik: tmpdevices abgearbeitet
2016.02.19 15:59:47 3: EMONITOR_Statistiks (end): Calc next call - found 4 devices 50 59 15 19 1 116 5 49 0
2016.02.19 15:59:55 3: EMONITOR_Statistik: tmpdevices abgearbeitet
2016.02.19 15:59:55 3: EMONITOR_Statistiks (end): Calc next call - found 4 devices 50 59 15 19 1 116 5 49 0
2016.02.19 16:00:00 3: EMONITOR_Statistik: tmpdevices abgearbeitet
2016.02.19 16:00:00 3: EMONITOR_Statistiks (end): Calc next call - found 4 devices 50 59 16 19 1 116 5 49 0


Mein Device ist ein Homematic HM-LC-Sw4-DR

Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

binford6000

Hallo Zusammen!
Ich habe das gleiche Verhalten wie mrbreil: Die Sammlung der Energiedaten funktioniert. Aber beim Umschalten in der ReadingsGroup von z.B. "all" auf "groups" oder "rooms" erscheint das im Logfile:

2016.02.21 19:52:05 3: EMONITOR_set EnergieMonitor mode rooms .. begin set
Undefined subroutine &main::RefreshScreen called at ./FHEM/99_myUtilsEMONITOR.pm line 1148.


Und dann stürzt fhem reproduzierbar ab.

@mrbreil: Hast Du mittlerweile eine Lösung gefunden?

VG Sebastian

Helmi55

Ja das kann ich leider auch bestätigen
Gruss Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Elektrolurch

Damit die Änderungen in der readingsGroup auch ohne Drücken von F4 im Browser-Fenster sichtbar werden, gibts die Routine.

sub  RefreshScreen($)
{
my ($room) = @_;
if(!defined($room))
{
fhem("trigger WEB.* JS:location.reload(true)");
}
else
{
if(exists($defs{$room}))
{
# if a device - find rooms
$room = AttrVal($room,'room',undef);
}
foreach my $r (split(',',$room))
{
# Log(1,"RefreshScreen $r");
map { FW_directNotify("FILTER=room=$r", "#FHEMWEB:$_", "location.reload('true')", "") } devspec2array("WEB.*");
} # foreach multiroom

}
return undef;
} # end sub RefreshScreen
#####################

Parameter ist entweder die readingsGroup (das Objekt, was sich geändert hat) oder der Name eines Raums.

also Aufruf im EMonitor beim Wechsel der Ansicht der rg:

RefreshScreen($name_rg);

Eelektrolurch

configDB und Windows befreite Zone!