Hauptmenü

DOIF für Batterieladung

Begonnen von Basti-K, 01 Dezember 2023, 14:29:05

Vorheriges Thema - Nächstes Thema

Basti-K

Hallo zusammen,

Ich stehe mal wieder an dem Punkt, wo ich den Wald vor lauter Bäumen nicht mehr sehe. Ich bin seit einiger Zeit bei Tibber (dynamischer Tarif) und möchte das Laden meines Heimspeichers optimieren. Bei den ersten Versuchen habe ich nur mit Zeitfenstern gearbeitet, die ich immer manuell nachjustieren musste. Besser als nichts, aber nicht optimal.

Jetzt wollte ich das Ganze automatisieren. Die Preise hole ich mir über diesen Weg:
[Link zu https://www.juergenstechnikwelt.de/smarthome-2/tibber-in-fhem-einbinden-beste-zeiten-fuer-niedrige-strompreise-ermitteln/]

Die Readings sind also vorhanden und werden stündlich aktualisiert. Ob der Aufruf der Shell-Skripte so richtig sauber ist, kann ich nicht beurteilen, aber grundsätzlich funktioniert es. "Load" lädt den Akku auf 100%, "load70" auf 70%, und "auto" unterbricht das Laden bzw. schaltet auf das Standard-Endladeverhalten.
in der Zeit zwischen 0 und 5 sind am Akku Harte Endladesperren eingestellt. in der Zeit würde das Auto geladen werden. von Akku in Akku laden wäre Unsinn. jedenfalls im Winter. 

Das Problem ist nur, der Akku wurde heute nicht geladen, obwohl die Bedingungen erfüllt waren. Was übersehe ich?

defmod E3DC_Charge DOIF DOIF ([myTibber:Strompreis] < 20) \
    {system('/opt/e3dcset/load.sh &');;}\
    (set sbot send @Basti 🔋 Achtung: Der Hausakku wird auf 100% geladen!)\
 DOELSEIF ([myTibber:Strompreis] == [myTibber:TodayMin] and [S10E:Batterieladezustand] <= 60) \
    {system('/opt/e3dcset/load70.sh &');;}\
    (set sbot send @Basti 🔋 Achtung: Der Hausakku wird geladen!)\
 DOELSE \
    {system('/opt/e3dcset/auto.sh &');;}\
\

attr E3DC_Charge event-on-change-reading .*
attr E3DC_Charge icon batterie
attr E3DC_Charge room Energie

setstate E3DC_Charge initialized
setstate E3DC_Charge 2023-12-01 14:15:47 mode enabled
setstate E3DC_Charge 2023-12-01 14:15:47 state initialized


Basti-K

#1
diese neue Version macht mehr Sinn:

defmod E3DC_Charge DOIF ([myTibber:Strompreis] < 20) \
    {
      my $lowestPrice = ReadingsVal('[myTibber:TodayMin]', 'value', 0);
      if ($lowestPrice < 20) {
          system('/opt/e3dcset/load.sh &');;\
          set sbot send @Basti 🔋 Achtung: Der Hausakku wird auf 100% geladen!;
      } else {
          set sbot send @Basti 🔋 Achtung: Niedrigster Tagespreis über 20 Cent. Der Hausakku wird nicht auf 100% geladen!;
      }
    }\
 DOELSEIF ([myTibber:Strompreis] == [myTibber:TodayMin] and [S10E:Batterieladezustand] <= 60) \
    { system('/opt/e3dcset/load70.sh &');;\
      set sbot send @Basti 🔋 Achtung: Der Hausakku wird auf 70% geladen! }\
 DOELSE \
    { system('/opt/e3dcset/auto.sh &');;\
      set sbot send @Basti 🔋 Der Hausakku wird nicht geladen. Standardverhalten. }\
\

attr E3DC_Charge event-on-change-reading .*
attr E3DC_Charge icon batterie
attr E3DC_Charge room Energie

setstate E3DC_Charge initialized
setstate E3DC_Charge 2023-12-01 14:15:47 mode enabled
setstate E3DC_Charge 2023-12-01 14:15:47 state initialized

ch.eick

Moin,
Hast Du Dir mal mein EVU_Tibber und EVU_Tibber_connect mal angeschaut?
Da gibt es einen Thread hier im Forum.
Bin gerade unterwegs
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick