Erhöhung PV Eigenverbrauch

Begonnen von GG33, 05 März 2015, 15:29:16

Vorheriges Thema - Nächstes Thema

GG33

Hallo zusammen

Ich möchte mein Eigenverbrauch weiter erhöhen.
Meine PV und auch der Zweirichtungzähler (D0) wird mittels SolarView geloggt. Die Wärmepumpe mit Luxtronik 2 Steuerung ist im Netzwerk eingebunden.

Was ich bis jetzt mit Hilfe von euch realisiert habe: Warmwasser erwärmen, wenn PV Leistung vorhanden und bevorzugt heizen, wenn PV Leistung vorhanden.

Jetzt möchte ich 3 weitere Geräte mittels FS20 Funk-Schaltstekdose einschalten, wenn Strom in Netz eingespeist wird. Die Geräte sollen zu einer bestimmten Zeit immer freigegeben sein (Niedertarif) oder nacheinander wenn die Einspeiseleistung grösser X ist.

etwa so: wenn Einspeiseleistung > 2000 W schalte GS ein, warte 5 min (wegen der Trägheit der errechneten Einspeiseleistung); wenn Einspeiseleistung immernoch > 2500 W schalte WM ein, warte 5 min; wenn Einspeiseleistung immernoch > 1500 W schalte TU ein.

Mit welchem Modul löse ich dieses Problem am besten? mit einem DOIF?


FHEM 5.6 auf Raspi (Debian Wheezy)

Homematic HMLAN
4 x HM-ES-PMSw1-Pl / HM-WDS40-TH-I-2 / HM-SEC-SCo
LUXTRONIK2 / SolarView

SpenZerX

Also ich glaube du hast ein Probem wenn dein FHEM System nur die aktuellen Leistungsdaten kennt.

Ich habe einen Wechselrichter und S0 Zähler mit eigenen Modulen.
Diese bieten neben der aktuellen Leistung auch folgende readings an:

AvP1,AvP5 und AvP 15.  Average Power1,5,15 min. Damit lässt sich dann ja nach Anwendung prima arbeiten.

Beispiel: Kühltruhe wird mit PV Strom betrieben
Temperatur auf -14 bis -15 Grad eingestellt und Super Frost Taste durch Funkschalter geschaltet. Sicherheitsabschaltung um 22 und 0 Uhr wegen 433Mhz Technologie.

# Notify Kuehltruhensteuerung
define Kuehltruhensteuerung notify SMA.Wechselrichter.AvP05:.* {\
  if ( ( ($hour >= 8 && $hour < 16) && ReadingsVal("SMA.Wechselrichter", "AvP05", "") >= "1200") && ( ReadingsVal("Kuehltruhe_COOL_DOWN", "state", "off") eq "off" ) ) {\
    fhem("set Kuehltruhe_COOL_DOWN on");;\
  }\
  else {\
    if ( ( ($hour >= 16 or $hour < 8) or ReadingsVal("SMA.Wechselrichter", "AvP05", "") < "900" ) && ( ReadingsVal("Kuehltruhe_COOL_DOWN", "state", "on") eq "on" ) ) {\
     fhem("set Kuehltruhe_COOL_DOWN off");;\
   }\
   }\
}
define Kuehltruhe_COOL_DOWN_AUS_2 at *22:00:00 { fhem("set Kuehltruhe_COOL_DOWN off") }
define Kuehltruhe_COOL_DOWN_AUS_3 at *00:00:00 { fhem("set Kuehltruhe_COOL_DOWN off") }

GG33

ZitatAlso ich glaube du hast ein Probem wenn dein FHEM System nur die aktuellen Leistungsdaten kennt.
Warum? das ist doch das einzige was ich wissen muss: Die aktuelle Leistung und die Energierichtung am Einspeisepunkt?


Hier noch was schon läuft, vielleicht kann das ja sonst auch noch jemand gebrauchen:
Warmwasser erwärmen, wenn PV Leistung vorhanden
DOIF([12:00-18:00] and [PVGG33:currentPower] > 4500 and ([Heizung:opModeHotWater] ne "Holiday" or [Heizung:opModeHotWater] ne "Off"))
(set Heizung hotWaterTemperatureTarget 51,set Heizung opModeHotWater Party)
DOELSEIF ([PVGG33:currentPower] < 4000)
  (set Heizung hotWaterTemperatureTarget 47,define auto at +00:20 set Heizung opModeHotWater Auto)


bevorzugt heizen, wenn PV Leistung vorhanden
DOIF ([11:00-20:00] and [PVGG33:currentPower] > 3000)\
(set Heizung returnTemperatureSetBack 2.0)\
DOELSEIF ([PVGG33:currentPower] < 2500)\
  (set Heizung returnTemperatureSetBack 0)
attr wait 0:900
FHEM 5.6 auf Raspi (Debian Wheezy)

Homematic HMLAN
4 x HM-ES-PMSw1-Pl / HM-WDS40-TH-I-2 / HM-SEC-SCo
LUXTRONIK2 / SolarView

SpenZerX

Wenn du nur die aktuelle Leistung und die Energierichtung am Einspeisepunkt betrachtest könnte das zu hohen Schaltfrequenzen führen. Meine Großverbraucher mögen das nicht. Wie willst du das verhindern?

GG33

#4
Ich habe jetzt mal dies gemacht:
define wt_Stromtarif WeekdayTimer Stromtarif Mo-Fr|07:00|HT Mo-Fr|20:00|NT Sa|07:00|HT Sa|13:00|NT

define di_GS DOIF ([wt_Stromtarif] eq "NT")
(set Eigenverbrauch_status 1000)
DOELSEIF ([E350:currentPower] > 2000)
(set Eigenverbrauch_status 1000)
DOELSEIF ([E350:currentPower] < -200 and [wt_Stromtarif] eq "HT" and [di_WM:cmd_3])
(set Eigenverbrauch_status 0)


attr di_GS wait 0:600:600
attr di_GS cmdState GS ein NT|GS ein PV|GS aus


Ich möchte nun weitere Gärate zuscahlten, wenn die Einspeiseleistung immernoch über einem bestimmten Wert liegt. (Ich weiss ja nicht, ob die Waschmaschine die freigegebn wurde auch wirklich gebraucht wird)
Kann dies irgendwie in einem DOIF gelöst werden oder soll ich mehre erstellen?
define di_WM DOIF ([wt_Stromtarif] eq "NT")
(set Eigenverbrauch_status 2000)
DOELSEIF ([E350:currentPower] > 2000 and [di_GS:cmd_2])
(set Eigenverbrauch_status 2000)
DOELSEIF ([E350:currentPower] < -200 and [wt_Stromtarif] eq "HT" and [di_xxxxxxxxx:cmd_3])
(set Eigenverbrauch_status 0)

attr di_WM wait 0:600:600
attr di_WM cmdState WM ein NT|WM ein PV|WM aus
FHEM 5.6 auf Raspi (Debian Wheezy)

Homematic HMLAN
4 x HM-ES-PMSw1-Pl / HM-WDS40-TH-I-2 / HM-SEC-SCo
LUXTRONIK2 / SolarView

brembs

Genau so etwas will ich auch machen! Alle Parameter von PV-Anlage und Batteriestatus kann ich über ein Web-Interface (Senec.IES) abrufen und die Buderus Wärmepumpe über das km200 Modul bedienen:

http://fhem.de/commandref.html#km200

Das funktioniert auch schon recht schön.

Ich nehme an, die PV Parameter lese ich am besten über HTTPMOD aus?

http://fhem.de/commandref.html#HTTPMOD

Das habe ich noch nicht angefangen...

Und dann, je nachdem welche Werte ich setze, kann ich dann Warmwasser machen lassen, bzw. irgendwelche Steckdosen schalten, oder? Gibt es da Grundsätzliches zu beachten, oder funktioniert das im Prinzip schon so, ich muss nur sehen wie ich die Regelung im Detail bei meinen Komponenten umsetze?

Bin ganz neu dabei, erst am vergangen WE einen RaspberryPi mit fhem installiert und alles hat auf Anhieb gefunzt, bin total begeistert! :-)

blitzcom

Moin zusammen. Eigenverbrauch erhöhen ist auch in meinem Interesse und ich verfolge das Thema.
Dazu eine Frage:
Die Einschaltungen zu kaskadieren macht sicher Sinn.
Aber eine andere Geschichte macht mir mind. genauso Kopfzerbrechen.
Ich bin mir nicht sicher, ob es eine Waschmaschine mag, wenn die FS20 Steckdose mitten im Waschvorgang wegschaltet, weil vom Dach keine Mindestleitung kommt.
Wäre eine Verriegelung nicht sinnvoll? Also wenn Leistung über einen Zeitraum von X über einem Wert Y liegt, dann schalte die FS20 für Zeitraum Z ein.
Das könnte zwar bedeuten, das dann die Leistung teilweise nicht mehr vom Dach kommt, die Waschmaschine würde aber durchlaufen. Gleiches gilt auch für eine Klimaanlage, die mag ein takten vermutlich noch viel weniger.
Hat sowas schon mal jemand umgesetzt?

ujaudio

Also die Waschmaschine einschalten, weil gerade mal genug Strom da ist und mittendrin ausschalten? Meine liebe Ehefrau sagt "nein". Wenn ein, dann bitte durchlaufen, also "on-for-timer 3 Stunden" - länger dauert bei uns definitv kein Waschvorgang, die meisten sind sogar deutlich kürzer.
Das "Ein" darf also nur kommen, wenn genügend Einspeiseleistung UND die richtige Wettervorhersage ODER genügend Energie im Batteriespeicher". Eine gute Lösung für das Einbinden des Wetters habe ich derzeit nicht. Bei der Geschirrspülmaschine schaut meine Frau aus dem Fenster, das passt dann fast immer  ;)
Wenn jemand eine gute lokale (!) Wettervorhersge im zeitlichen Nahbereich (3-5 Stunden) kennt, dann sehe ich eine Chance auf sinnvolle Automatisierung der Waschmaschine und des Geschirrspülers. Wobei unsere Waschmaschine dann nicht geeignet wäre, weil sie sich das gewählte Programm nicht merkt. Und die Geschirrspülmaschine müsste Strom haben, um sie zu programmieren, was auch nicht so einfach umsetzbar erscheint. Oder komplett neue Geräte der Luxusklasse mit WLAN-Anschluss??!? Soviel spart man da nie, dass sich der Anschaffungspreis lohnt, oder?
Einen lieben Gruß
Jürgen

blitzcom

Ich hab das in einem anderem Bereich ebenfalls mal zur Diskussion gestellt und da ergeben sich tatsächlich einige äusserst gute Ansätze: http://forum.fhem.de/index.php/topic,27667.0.html

Wo für den einen oder anderen die Vorteile liegen, liegt natürlich auch immer daran, wie weit zu steuernde Komponenten vorhanden sind und wie weit man die Geschichte treiben will. Meine persönliche Meinung ist, wenn sich die Investionskosten im Rahmen halten, die Programierung keine Probleme verursacht und es einem das Leben einfacher macht... MACHEN!

simonberry

Bei mir ist Waschmaschine, Spülmaschine und Getränkekühlschrank mit der PV gekoppelt.

Die Maschinen sind per HM Funkstecker ausgerüstet und in der Regel aktiviert. Haben also Strom, weil sonst z.B. die Waschmaschine nicht aufgeht, bzw. die Spülmaschine nicht sagt, "brauche Salz / Klarspüler"
Wenn wir waschen wollen starten wir das Waschprogramm/Spülprogramm an der Maschine wie gehabt und schalten dannach unmittelbar die Steckdose ab. In der Küche über eine Fernbedienung, im Keller direkt an der Steckdose.
FHEM überwacht die Einspeiseleistung der PV und schaltet bei einer Schwelle die Maschinen ein. Wenn die Maschine mal läuft macht FEHM sie auch nicht mehr aus.
Für Jede Maschine gibt es ein AT für den spätesten Start, falls doch nicht genug PV Leistung da war, das Zeug muss ja am Abend sauber sein. Das funktioniert recht gut und hat auch einen hohen WAF!

Beim Getränkekühlschrank habe ich einen Temperatursensor drinnen, d.h. ich kann mittels FHEM ein Maximale Kühlung einstellen. (also z.B. 4, 8 oder 12 Grad).
Sobald die Einspeiseleistung über 200 Watt liegt bekommt der Kühlschrank Strom, Wird nix mehr eingespeist wird er abgeschaltet, wenn die Soll Temperatur um ein Grad unterschritten ist, wird wieder abgeschaltet. Wenn die Temperatur 1 Grad wärmer als Soll ist wird wieder eingeschaltet.

Zusätzlich gibt es für jeden Verbraucher einen "...solar" Schalter Dummy, mit dem ich den jeweiligen Automatikbetrieb an oder ausschalten kann.
Ich will ja schließlich bei einer Party nicht, dass das Bier warm wird. Also Kühlschrank immer an. Im Winter liegt das Bier im Kellerschacht, da ist der Kühlschrank aus.

Die Spülmaschine soll im Urlaub nicht die ganze Zeit an sein, nachdem wir losgefahren sind. Also wird sie vom Hotel aus ausgeschaltet, wenn sie fertig ist.

Das ganze habe ich in einem recht umfangreichen notify realisiert.:


define notiEinspeispower notify EinspPower {
my $EINSPPOWER;
  ($EINSPPOWER) = ($EVENT             =~ /([0-9]+)/);
  if (($EINSPPOWER> 1700) &&
      (Value("spuelenSolar") eq "on") &&
      (Value("SpuelMaschine") eq "off"))
  {
    fhem ("set SpuelMaschine on");
  }
  elsif (($EINSPPOWER> 1500) &&
      (Value("waschenSolar") eq "on") &&
      (Value("Waschmaschine") eq "off"))
  {
    fhem ("set Waschmaschine on");
  }
  elsif (($EINSPPOWER > 200) &&
      (Value("kuehlensolar") ne "off"))
  {
    if (Value("kuehlensolar") eq "on")
    {
      if (Value("Bierschrank") eq "off")
      {
        fhem ("set Bierschrank on");
      }
    }
    else
    {
      my $KuehlTemp = ReadingsVal("KuehlschrankTemp", "temperature", 5);
      my $Kuehlsoll = ReadingsVal("kuehlensolar", "state", 0);
      my  $MinTemp = $Kuehlsoll - 1;
      my  $MaxTemp = $Kuehlsoll + 1;
      if (($KuehlTemp > $MaxTemp) &&
          (Value("Bierschrank") eq "off"))
      {
        fhem ("set Bierschrank on");
      }
      elsif (($KuehlTemp < $MinTemp) &&
             (Value("Bierschrank") eq "on"))
      {
        fhem ("set Bierschrank off");
      }
    }
  }
  elsif (($EINSPPOWER == 0) &&
      (Value("kuehlensolar") ne "off") &&
      (Value("Bierschrank") eq "on"))
  {
    fhem ("set Bierschrank off");
  }
}


Spätester Beginn fürs Waschen:

define WaschenTime at *11:30 {
if ((Value("Waschmaschine") eq "off") &&
     (Value("waschenSolar") eq "on"))

   fhem("set Waschmaschine on");
}
}


Den Termin kann man Bequem über diesen Dummy / notify einstellen:

define Waschzeit dummy
attr Waschzeit fp_TFP 740,450,7,
attr Waschzeit setList state:time
attr Waschzeit webCmd state

define notiWaschzeit notify Waschzeit {  fhem("modify WaschenTime *%");}


sonnige Grüße

Simonberry
NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

brembs

@simonberry: das ist ja sehr genial, fast genau was ich auch machen will. Tausend Dank für den Code, der wird mir Newb viel Arbeit sparen! Spitzenklasse!

chris1284

#11
Zitat von: simonberry am 24 Juli 2015, 14:13:49
Wird nix mehr eingespeist wird er abgeschaltet, wenn die Soll Temperatur um ein Grad unterschritten ist, wird wieder abgeschaltet. Wenn die Temperatur 1 Grad wärmer als Soll ist wird wieder eingeschaltet.

macht das dinn, der kühlschrank regelt die temp doch eh selbst und ist ständiges ein/aus für das gerät i.O.? spart das wirklich strom, hast du mal gemessen?
gerade bei nur 1°C unter soll (entspräche bei mir allle 1h einschalten ca). wenn ich die plots meines schrankes ansehe (anhand der steigenden fallenden temp kann man sehen wann er kühlt) hühlt der ca alle 3h und dann auf ca 4°C unter soll in 15 minuten. ein vorher abgeschalteter schrank verballert sicher mehr eh er wieder seine normale kühlleistung hat.


simonberry

spart das wirklich strom

Es erhöht auf jeden Fall mal den Eigenverbrauch, und das ist mein Ziel.
Es spart mir also Stromkosten an den Netzbetrieber.
In dem kühlschrank sind auch nur Getränke die man benötigt wenn es heiß ist. An einem verregneten Tag trinke ich lieber einen ungekühlten Rotwein  ;)

macht das dinn, der kühlschrank regelt die temp doch eh selbst
Natürlich regelt der Kühlschrank seine Temperatur selbst, aber so habe ich die Möglichkeit die Soll-Temperatur in FHEM einzustellen. Ich habe den Kühlschrank auf Maximale Kühlung gestellt und der ballert natürlich voll los, sobald er eingeschaltet wird.

ist ständiges ein/aus für das gerät i.O.?
Dem Kompressor ist es glaub ich ziemlich egal wer ihn dauernd ein oder ausschaltet. Das Gerät ist auch nicht das neueste, ich gehe mal davon aus das es keine eingebaute festplatte gibt.  ;)
Und so oft schaltet er jetzt auch wieder nicht, wie man am Plot sieht.

Ich habe auch festgestellt, das je mehr Bier im Kühlschrank ist, er die Temperatur über nacht besser hält.

kühle Grüße

Saimen


NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;