Tibber - Rule zum Laden der Batterie wenn Strom am günstigsten

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
oschwabe
Beiträge: 9
Registriert: 18. Aug 2022 08:08
Answers: 0
Wohnort: Biberach

Tibber - Rule zum Laden der Batterie wenn Strom am günstigsten

Beitrag von oschwabe »

ich kämpfe gerade mit einer Regel welche mir meinen Huawei Stromspeicher Nachts zu einem gewissen Grad lädt wenn es am günstigsten ist.
Aus dem Tibber Binding erhalte ich ein Array mit den Zeit/Preis Daten und ich finde mit einer ersten Regeln um 0:30am den Zeitpunkt wann der Strom am günstigsten ist. Der Zeitpunkt wird in ein Item geschrieben und der Inhalt hat heute so ausgesehen :
ITEM: Tibber_Cheapest_Time
VALUE: 2025-01-07T03:00:00.000+0100

Meine Regeln sieht so aus:

Code: Alles auswählen

rule "Load Battery at cheapest time to level"
when
    Time is Tibber_Cheapest_Time
then 
   logInfo("MyRule", "Die Zielzeit wurde erreicht und Laden wird begonnen!")
   if (Luna_night_load.state == "ON")  //prüfen ob die Funktion für Nachtladen aktiv ist 
   {
   luna_forcible_charge_discharge_setting_mode.sendCommand(1)
   luna_force_charge_target_soc.sendCommand((Luna_night_load_target.state as DecimalType) * 10)
   luna_force_charge_discharge.sendCommand(1)
   }
end
Jemand einen Tipp warum die Rule heute morgen um 3 Uhr wieder nicht angesprungen ist?

OPENHAB 4.3.1
Raspberry 5 mit SSD
Pi5/8GB/SSD 120GB - OH4.3.3 openhabian 64bit

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Tibber - Rule zum Laden der Batterie wenn Strom am günstigsten

Beitrag von peter-pan »

Hast du schon versucht nur über die Zeit zu triggern ?

Code: Alles auswählen

Time is Tibber_Cheapest_Time timeOnly
In etwa so wie im Tutorial beschrieben ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
udo1toni
Beiträge: 15242
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Tibber - Rule zum Laden der Batterie wenn Strom am günstigsten

Beitrag von udo1toni »

Wobei das Datum ja eigentlich passen sollte...

Andere Frage/Idee: Handelt es sich bei Tibber_Cheapest_Time auch um ein DateTime Item?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

oschwabe
Beiträge: 9
Registriert: 18. Aug 2022 08:08
Answers: 0
Wohnort: Biberach

Re: Tibber - Rule zum Laden der Batterie wenn Strom am günstigsten

Beitrag von oschwabe »

habe heute Nacht das timeOnly ergänzt und auch die Definition des Items geprüft:
ITEM Value war heute Nacht: 2025-01-08T03:00:00.000+0100 bei 26,5 CENTS/kWh

Code: Alles auswählen

DateTime    Tibber_Cheapest_Time                                     "Tibber low price hour"                  {stateDescription=""[pattern="%1$td.%1$tm.%1$tY %1$tH:%1$tM"]}

Code: Alles auswählen

rule "load battery to predefined value when cheap"
when 
    Time is Tibber_Cheapest_Time timeOnly
then 
   logInfo("MyRule", "Die Zielzeit wurde erreicht und Laden wird begonnen!")
   if (Luna_night_load.state == "ON")  //prüfen ob die Funktion für Nachtladen aktiv ist 
   {
   luna_forcible_charge_discharge_setting_mode.sendCommand(1)
   luna_force_charge_target_soc.sendCommand((Luna_night_load_target.state as DecimalType) * 10)
   luna_force_charge_discharge.sendCommand(1)
   }
end
Darf vielleicht das stateDescription da nicht stehen und muss weg?

Auf jeden Fall wurde um 3 Uhr nicht geladen :-(
Pi5/8GB/SSD 120GB - OH4.3.3 openhabian 64bit

Benutzeravatar
udo1toni
Beiträge: 15242
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Tibber - Rule zum Laden der Batterie wenn Strom am günstigsten

Beitrag von udo1toni »

Nein, stateDescription betrifft nur .displayState, aber nicht .state.
Time is wertet .state aus.
Abgesehen davon steht .displayState in der DSL (leider bisher) nicht zur Verfügung.

Andere Frage: bist Du sicher, dass die Rule nicht getriggert hat?
Steht das Logging für org.openhab.core.model.script.MyRule auf INFO oder DEBUG (falls nicht gesetzt, wie sind die Eltern-Logger gesetzt, also org.openhab.core.model.script, org.openhab.core.model usw.)?
Taucht die Zeile, die von logInfo ausgegeben werden soll tatsächlich nicht zur passenden Uhrzeit in openhab.log auf?
Weil, die Anweisung if(Luna_night_load.state == "ON") wird eventuell immer false liefern, der Code wird also nicht ausgeführt.
Hintergrund: Ein .state ist ein Status. Du vergleichst hier aber mit einem String. also korrekt entweder

Code: Alles auswählen

if(Luna_night_load.state.toString == "ON")
oder

Code: Alles auswählen

if(Luna_night_load.state == ON)
Wobei ich davon ausgehe, dass es sich um ein Switch Item handelt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Tibber - Rule zum Laden der Batterie wenn Strom am günstigsten

Beitrag von peter-pan »

Ich hatte zwar auch, wie Udo, an einen anderen Item-Type gedacht,diese Theorie aber wieder verworfen.

Jetzt muss ich aber doch noch mal fragen; war der Wert in dem DateTime-Item wirklich

Code: Alles auswählen

2025-01-08T03:00:00.000+0100 bei 26,5 CENTS/kWh
Wenn ja, dann kann das m.E. nicht funktionieren.

Edit: Vergiss das. Dadurch wird nur eineFehlermeldung erzeugt:

Code: Alles auswählen

2025-01-08 17:15:06.500 [WARN ] [b.core.model.script.actions.BusEvent] - Cannot convert '2025-01-08T03:00:00.000+0100 bei 26,5 CENTS/kWh' to a state type which item 'testTime' accepts: [DateTimeType, UnDefType].

Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Tibber - Rule zum Laden der Batterie wenn Strom am günstigsten

Beitrag von peter-pan »

Ich hab das Ganze nochmal getestet. Dazu hab ich mir schnell zwei Regeln (eigentlich nur eine) angelegt:

Code: Alles auswählen

rule "ItemTrigger-Rule"

  when
    Time is testTime1 timeOnly
  then
    // dein Code - z. B. Alexa benutzen
    //   Show_TextToSpeechVolume.sendCommand(40)
    //   Show_TextToSpeech.sendCommand("Hallo Langschläfer, aber jetzt aufstehen")  
    //   Show_TextToSpeechVolume.sendCommand(0)
    logInfo("testTime1","testTime1 Zeit-Trigger ist {}",testTime1)

end

rule "test Datum"
 when 
   Item Dummy_3 changed to ON
  then 
    testTime1.postUpdate("2025-01-08T17:19:00.000+0100")
end    
.items

Code: Alles auswählen

DateTime  testTime1   "Zeit-Item für Tests, mit pattern"      { stateDescription="pattern"  [pattern="%1$tH:%1$tM"] } // Text-Rule 
Mit der zweiten Regel hab ich das Datum gesetzt und das Ergebnis der ersten Regel (log) war:

Code: Alles auswählen

2025-01-08 17:19:00.458 [INFO ] [.openhab.core.model.script.testTime1] - testTime1 Zeit-Trigger ist testTime1 (Type=DateTimeItem, State=2025-01-08T17:19:00.000+0100, Label=Zeit-Item für Tests, mit pattern, Category=null)
Sicherheitshalber hab ich es auch noch mit - ohne timOnly - probiert ;) (also mit komplettem Datum) und auch das hat funktioniert, wie Udo es bereits vorhergesagt hat.

Code: Alles auswählen

2025-01-08 17:24:00.129 [INFO ] [.openhab.core.model.script.testTime1] - testTime1 Zeit-Trigger ist testTime1 (Type=DateTimeItem, State=2025-01-08T17:24:00.000+0100, Label=Zeit-Item für Tests, mit pattern, Category=null)
Der Grund muss also woanders liegen.
1) Ist die Regel auch wirklich im Ordner "openhab/rules" und ist der Name auch wirklich "xxxx.rules" ?
2) Hast du schon mal versucht die Regel mit einem "Dummy-Item" anzustossen ?
3) Hat die Datei auch das richtige Textformat ?
Mit welchem Editor arbeitest du denn ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

oschwabe
Beiträge: 9
Registriert: 18. Aug 2022 08:08
Answers: 0
Wohnort: Biberach

Re: Tibber - Rule zum Laden der Batterie wenn Strom am günstigsten

Beitrag von oschwabe »

Hallo zusammen,
der Wert des ITEMS war natürlich : '2025-01-08T03:00:00.000+0100' (ohne '). Die Cents habe ich nur zur Info hinzugefügt.
Udo hatte Recht, dass das Problem an der IF Abfrage liegt.
Ich habe wie von Peter-Pan beschrieben einmal nachgestellt - vielen Dank für den Denkanstoß - und sobald ich die " bei ON in der IF Anfrage entfernt habe ist die Rule durch gelaufen.
Da ich über 250 Things in meinem System habe, ist das Logging etwas schwierig und vor allem dann Nachts.

Ich lasse meine Scripts heute Nacht jetzt nochmals laufen und kann morgen früh dann berichten.
Pi5/8GB/SSD 120GB - OH4.3.3 openhabian 64bit

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Tibber - Rule zum Laden der Batterie wenn Strom am günstigsten

Beitrag von peter-pan »

Super.
Allerdings bin ich davon ausgegangen, dass die Regel überhaupt nicht triggert. Weil du geschrieben hast:
oschwabe hat geschrieben: 7. Jan 2025 16:47 Jemand einen Tipp warum die Rule heute morgen um 3 Uhr wieder nicht angesprungen ist?
Da müsste dann aber mindestens die "logInfo" erschienen sein, oder ? ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten