Danke für die Antwort und den Denkanstoß. Das hab ich gebraucht. Ich habe es folgendermaßen (für die Nachwelt zur Info

)gelöst:
1. Dummy Device WaermepumpeEnergy angelegt
2. Notify auf den Start der Wärmepumpe (Verdichter an)
3. Notify auf den Stop der Wärmepumpe (Verdichter aus)
4. Strom1_4738 ist mein Energymeter
Mein vitoconnect-device frägt alle 5min die Wärmepumpenwerte ab. Da dann eigentlich alle 5min auch die notifys ausgelöst würden, habe ich noch eine variable gestartet eingebaut, welche dann gesetzt wird, wenn auch wirklich gestartet ist. Ansonsten würde bei jedem vitoconnect-update auch alle readings neu berechnet (was falsch wäre).
In der 99_myutils habe ich folgende 2 subs angelegt, welche bei den jeweiligen notifys hinterlegt sind:
# Notify 1 - start Wärmepumpe
sub SetWPStart() {
my($var) = ReadingsVal("WaermepumpeEnergy", "gestartet", 0);
if($var eq 0) { # nur ausführen wenn wirklich gestartet
fhem('setreading WaermepumpeEnergy kwhbegin [Strom1_4783:energy]'); # aktuelle kwh-Stunden speichern
fhem('setreading WaermepumpeEnergy gestartet 1'); # start setzen
}
}
# Notify 2 - Stop Wärmepumpe
sub SetWPStop() {
my($var) = ReadingsVal("WaermepumpeEnergy", "gestartet", 0);
if($var eq 1) { # nur ausführen wenn auch die Wärmepumpe gestartet wurde und nun gestoppt hat
fhem("setreading WaermepumpeEnergy kwhend [Strom1_4783:energy]"); # aktuelle kwh speichern
my $zaehler1 = ReadingsVal('WaermepumpeEnergy','kwhend',0);
my $zaehler2 = ReadingsVal('WaermepumpeEnergy','kwhbegin',0); # kwh vor dem start lesen
my $sum = $zaehler1 - $zaehler2;
fhem("setreading WaermepumpeEnergy kwh_verbrauch_letzter_start ".$sum);
my $gesamt = ReadingsVal('WaermepumpeEnergy','kwhgesamt',0); # kwh gesamt als variable um den Gesamtverbrauch zu haben - lesen
my $gesamtsum = $gesamt + $sum; # aufaddieren
fhem("setreading WaermepumpeEnergy kwhgesamt ".$gesamtsum);
fhem("set WaermepumpeEnergy ". $gesamtsum);
fhem('setreading WaermepumpeEnergy gestartet 0');
}
}
Und hier das dummy Gerät:
define WaermepumpeEnergy dummy
attr WaermepumpeEnergy room 21_Heizung
attr WaermepumpeEnergy userReadings DataLog {sprintf("kwh lauf: %3.1f kwhbegin: %3.1f kwhend: %3.1f kwhgesamt: %4.1f", ReadingsVal("WaermepumpeEnergy","kwh_verbrauch_letzter_start", 0), ReadingsVal("WaermepumpeEnergy","kwhbegin", 0), ReadingsVal("WaermepumpeEnergy","kwhend", 0), ReadingsVal("WaermepumpeEnergy","kwhgesamt", 0) ) }
Das ganze wird dann noch im Logfile gespeichert:
define FileLog_WaermepumpeEnergy FileLog ./log/Heizung_%Y_%m.log WaermepumpeEnergy:DataLog:.*
attr FileLog_WaermepumpeEnergy logtype text
attr FileLog_WaermepumpeEnergy room 21_Heizung
Besten Dank für die Hilfe!