Frage: Zählen von EnergyWerten bei einem Notify/Event (CUL_EM,DBLog,vitoconnect)

Begonnen von rageltus, 03 Dezember 2022, 21:21:19

Vorheriges Thema - Nächstes Thema

rageltus

Hallo zusammen,

ich nutze seit Jahren einen CUL_EM (EM1000) welcher verlässlich die Energiewerte wie bspw. momentan Verbräuche/ Monatsdaten / etc. am Stromzähler mitloggt und im DBLog abspeichert (für 30 Tage). Nun habe ich seit ein paar Monaten eine Wärmepumpe, welche mit dem Modul vitoconnect angebunden ist. Bisher aber keinen getrennten Energiezähler (kommt noch!).

Jetzt hätte ich gern folgendes und benötige einen Denkanstoß/Idee:
- Über vitoconnect bekomme ich mit ob die Wärmepumpe läuft (Verdichter startet) 0 / 1.
- Über CUL_EM geht dann natürlich die kwh/Verbräuche hoch - logisch

Ich würde nun gerne bei jedem Verdichterstart (also WP läuft), dann die kwh solange zählen, bis der Verdichter wieder aus ist. Somit mir also einen "sehr groben!" Energiezähler für die Wärmepumpe selber bauen wollen.

Hat hier jemand eine Idee?

Beste Grüße und vielen Dank!
Benjamin
Raspberry 3,HM-USB, SIGNALDuino 433, nanoCUL 868 SlowRF, Homematic, IKEA Tradfri Beleuchtung, FHEMApp

frober

Ganz grob:

Ein notify auf WP, wenn an aktuellen Zählerstand in ein Reading ( setreading) schreiben, wenn aus (aktuellem Zâhlerstand - gespeicherten Wert) wieder in ein Reading schreiben und loggen.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

rageltus

Danke für die Antwort und den Denkanstoß. Das hab ich gebraucht. Ich habe es folgendermaßen (für die Nachwelt zur Info  ;D )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!
Raspberry 3,HM-USB, SIGNALDuino 433, nanoCUL 868 SlowRF, Homematic, IKEA Tradfri Beleuchtung, FHEMApp

frober

Warum 2 notify?

Wenn du eh in myUtils bist, kannst du auch alles mit einer Sub und einem notify erledigen.

Der Dummy ist auch unnötig.
Das Reading kannst du genauso im notify oder der WP anlegen.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

roedert

Zitat von: rageltus am 03 Dezember 2022, 21:21:19
..Bisher aber keinen getrennten Energiezähler (kommt noch!)...

Was hast da geplant?
ich kann diesen empfehlen - habe ich 2 im Zählerschrank im Einsatz ((geplante) Wärmepumpe und "Rest") um nicht vom Zähler des Energieversorgers abhängig zu sein.
SDM630 https://amzn.eu/d/7GCDUEJ

Angebunden per USB-RS485-Adapter oder auch per LAN hiermit https://amzn.eu/d/9EXM864

Für FHEM gibt auch ein angepasstes Modul SDM630 für.

rageltus

Ich habe von Eltako einen S0-Zähler und würde gerne dann per ArduCounter den auslesen. Den SDM630 hatte ich auch erst im Auge (gerade wegen Modbus), aber da waren in der Bewertung zuviele Bilder von angebrannten Verteilerkasten :-D... Da hab ich lieber zu einem Markengerät gegriffen... aber ohne Wertung ob das wirklich so ist!
Raspberry 3,HM-USB, SIGNALDuino 433, nanoCUL 868 SlowRF, Homematic, IKEA Tradfri Beleuchtung, FHEMApp