FHEM > Automatisierung

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

(1/2) > >>

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

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.

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:


--- Code: ---# 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');
 }
}

--- Ende Code ---

Und hier das dummy Gerät:


--- Code: ---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) ) }

--- Ende Code ---

Das ganze wird dann noch im Logfile gespeichert:


--- Code: ---define FileLog_WaermepumpeEnergy FileLog ./log/Heizung_%Y_%m.log WaermepumpeEnergy:DataLog:.*
attr FileLog_WaermepumpeEnergy logtype text
attr FileLog_WaermepumpeEnergy room 21_Heizung

--- Ende Code ---

Besten Dank für die Hilfe!

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.

roedert:

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

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.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln