HTTPMOD: Stündlich Strompreis bei Tibber auslesen

Begonnen von Reinhard.M, 13 Februar 2023, 09:41:16

Vorheriges Thema - Nächstes Thema

Reinhard.M

Update 2024-09-21:
Ich habe "ti2r" auf meinen aktuellen Stand gebracht und eine card Auswertung "di_energie" der Daten hinzugefügt. Damit zeige ich bei mir den aktuellen Tagesverlauf der Stromkosten an. Beide zusammen arbeiten bei mir absolut problemlos.

Achtung: Der eingefügte Token ist ein Demo-Token und muss noch durch den eigenen Token ersetzt werden!

Gruß Reinhard

Liebe Community,
HTTPMOD ist bekanntlich ein wenig sperrig und nicht unbedingt intuitive. Ich habe mich jetzt eine ganze Weile im Forum gesucht und mich damit beschäftigt um den stündlich sich ändernden Stromtarif von Tibber auszulesen. Mein Ergebnis möchte ich gerne mit euch als Beispiel (einfach kopieren, ist sofort lauffähig) teilen. Der im Beispiel verwendetet Token ist der Tibber Demo Token und kann von jedem für Testzwecke verwendet werden. Für euren eigenen Token bitte das Attribut "replacement1Value" entsprechend anpassen. Das stündliche Auslesen wird über die '3600' im DEF erreicht und auf 1 Minute nach jeder vollen Stunde ausgerichtet (Attribut 'alignTime'). Die Home_ID habe ich nicht verwendet da ich nur einen Zähler besitze. Der wird in den "readingXJSON" über "homes_01" adressiert. Feedback würde mich freuen, viel Erfolg beim Testen :)

Gruß Reinhard

defmod ti2r HTTPMOD https://api.tibber.com/v1-beta/gql 3600
attr ti2r alias Tibber Kosten
attr ti2r alignTime 00:01
attr ti2r event-on-change-reading .*
attr ti2r event-on-update-reading LAST_ERROR
attr ti2r group Strom
attr ti2r reading1DeleteIfUnmatched 1
attr ti2r reading1Name Preis
attr ti2r reading1OExpr $val*100
attr ti2r reading1RegOpt g
attr ti2r reading1Regex total":([-\d.]+)
attr ti2r reading2DeleteIfUnmatched 1
attr ti2r reading2Name Zeit
attr ti2r reading2RegOpt g
attr ti2r reading2Regex "startsAt":"([\d+-]+T\d\d:\d\d)
attr ti2r readingAutoNumLen 2
attr ti2r replacement1Mode text
attr ti2r replacement1Regex %%Token%%
attr ti2r replacement1Value 5K4MVS-OjfWhK_4yrjOlFe1F6kJXPVf7eQYggo8ebAE
attr ti2r requestData { "query": "{viewer {homes {currentSubscription {priceInfo {current {total startsAt} today {total startsAt} tomorrow {total startsAt}}}}}}" }
attr ti2r requestHeader1 Content-Type: application/json
attr ti2r requestHeader2 Authorization: Bearer %%Token%%
attr ti2r room Maschinenraum
attr ti2r showBody 0
attr ti2r showError 1
attr ti2r sortby 10
attr ti2r stateFormat {sprintf("Kosten seit %s Uhr => %.2f ct/kWh", ReadingsVal($name,"Zeit-01",0) =~ m/.*T(\d+:\d+)/ ? "$1" : "xx:xx",ReadingsVal($name,"Preis-01",0))}

defmod di_energie DOIF {\
  [+[1]:05];;\
  my $out;;\
  my @new;;\
  my $base = 2;;\
  my $i    = 0;;\
  my $min  = 1000000;;\
  my $max  = 0;;\
  my $mid  = 0;;\
  my $Ziel = 0;;\
  $new[$i] = ReadingsVal("ti2r",sprintf("Preis-%02d",$base+$i),12345);;\
  do {\
    $min     = $new[$i] < $min ? $new[$i] : $min;;\
    $mid     = $new[$i] + $mid;;\
    $max     = $new[$i] > $max ? $new[$i] : $max;;\
    $out    .= ReadingsVal("ti2r",sprintf("Zeit-%02d",$base+$i),"")." $new[$i]\n";;\
    $i++;;\
    $new[$i] = ReadingsVal("ti2r",sprintf("Preis-%02d",$base+$i),12345);;\
  } while ($new[$i] < 12345 and $i < 48);;\
  $mid = sprintf("%.2f",$mid/@new);;\
  if ($min <= AttrVal("$SELF",'PreisLimit',0)) {\
    $Ziel = $min+0.2+($mid-$min)/10;;\
  }\
  set_Reading("Ziel",sprintf("%.2f",$Ziel));;\
  set_Reading("mid",sprintf("%.2f",$mid));;\
  set_Reading("min",sprintf("%02d",$min-1));;\
  set_Reading("max",sprintf("%02d",$max+1));;\
  ::DOIF_set_card_data ("$SELF","ti2r","Preis-01","bar1day",0,$out);;\
  set_State("Min: $min ++ Mid: $mid ++ Max: $max ++ Ziel: $Ziel");;\
}
attr di_energie userattr PreisLimit
attr di_energie PreisLimit 30
attr di_energie alias Strom
attr di_energie event-on-change-reading .*
attr di_energie group Strom
attr di_energie room Zentrale
attr di_energie sortby 05
attr di_energie uiTable {\
  package ui_Table;;\
##  $TABLE            = 'width:300px;;text-align:center;;';;\
  $TABLE            = 'text-align:center;;';;\
  $SHOWNODEVICELINE = "Energie";;\
  $SHOWNOSTATE      = 1;;\
  $ATTRIBUTESFIRST  = 1;;\
}\
card([ti2r:Preis-01:bar1day],"HG-On < ".[$SELF:Ziel]."ct,font-size:60%;;;;color:green","mdt-lightning-bolt",[$SELF:min],[$SELF:max],120,0,"ct",undef,"2","140,fixedscaling,,,,halfring")

FHEM-User22

Hallo Reinhard,
ist sehr interessant. Aber zur Zeit ein Strompreis von 166,11 ct pro kWh also 1,66 Euro? Ist da irgendwo ein Fehler?

Beste Grüße
FHEM auf Raspberry Pi und Proxmox und... und.... und....

xerion

Da das ein Demo token ist der verwendet wird  sind das schwedische Krone und keine Eurocent. Wenn du einen eigen Token hast dann wird es richtig angezeigt.
Ich würde mich  freuen, wenn du meinen Einladungscode für Tibber, der Stromanbieter, der dir hilft, deinen Stromverbrauch zu verstehen und zu reduzieren, nutzt: https://invite.tibber.com/5fc08jbs. So bekommen wir beide 50 Euro und 100 % Ökostrom / https://geld-fuer-eauto.de/ref/334561880

Reinhard.M

Ganz richtig, der Demo Account arbeitet mit "SEK", also Schwedische Kronen. Kann man sich recht einfach über den API-Explorer von Tibber anschauen.

Gruß Reinhard

FHEM-User22

Moin,
ok, dankeschön.
Ich wollte es erstmal eine Weile beobachten ehe ich mich zu einem Wechsel entschließe.

Beste Grüße
FHEM auf Raspberry Pi und Proxmox und... und.... und....

lynckmeister

cool, die Kronen kann ich mir ja leicht in € umrechnen... ich nehme an ein eigenes Token bekommt man nur wenn man Kunde ist und zu Tibber gewechselt ist?

Reinhard.M

Ich bin tatsächlich Kunde bei Tibber, kann es also aus der "Nichtkunde" Perspektive gerade nicht beantworten. Man kann sich aber jederzeit einen Account anlegen, auch ohne Kunde zu sein. Mal testen?
Ganz nebenbei, ich habe dazu außerdem ein kleines DOIF geschrieben das mir auf Basis der Preisinformation die großen Haushaltsgeräte (Trockner, Waschmaschine, Spülmaschine) startet. Die Preise werden ein Tag im Voraus bekannt gegeben, auf der Basis bereiten wir dann die entsprechenden Geräte vor, der Rest läuft automatisch.

xerion

Zitat von: lynckmeister am 14 Februar 2023, 17:22:57
cool, die Kronen kann ich mir ja leicht in € umrechnen... ich nehme an ein eigenes Token bekommt man nur wenn man Kunde ist und zu Tibber gewechselt ist?

Ja genau so ist es. Grob kannst du das damit erstmal beobachten, aber das wird nicht ganz deinem Preis entsprechen. Denn die zusätzlichen Kosten wie z.B. Netznutzungs- und Messstellengebühren usw. hängen vom Standort ab. Wie hoch die sind kannst du aber grob sehen, wenn du deine PLZ bei Tibber eingibst und eine Prognose erstellst.

Falls du dich entscheidest nach Tibber zu wechseln, würde ich mich freuen, wenn du meinen Einladungscode aus der Signatur nutzen würdest. Dann bekommen wir beide jeder 50 Euro. So habe ich z.B. meinen Tibber Pulse nur nur 50 Euro gekauft anstelle der 100.
Ich würde mich  freuen, wenn du meinen Einladungscode für Tibber, der Stromanbieter, der dir hilft, deinen Stromverbrauch zu verstehen und zu reduzieren, nutzt: https://invite.tibber.com/5fc08jbs. So bekommen wir beide 50 Euro und 100 % Ökostrom / https://geld-fuer-eauto.de/ref/334561880

xerion

Zitat von: Reinhard.M am 14 Februar 2023, 18:03:40
Ich bin tatsächlich Kunde bei Tibber, kann es also aus der "Nichtkunde" Perspektive gerade nicht beantworten. Man kann sich aber jederzeit einen Account anlegen, auch ohne Kunde zu sein. Mal testen?
Ganz nebenbei, ich habe dazu außerdem ein kleines DOIF geschrieben das mir auf Basis der Preisinformation die großen Haushaltsgeräte (Trockner, Waschmaschine, Spülmaschine) startet. Die Preise werden ein Tag im Voraus bekannt gegeben, auf der Basis bereiten wir dann die entsprechenden Geräte vor, der Rest läuft automatisch.

Genauso machen wir das auch. Ist schon cool wenn man durch Smarte Logiken, die man selber erstellen kann auch noch Strom spart.
Ich würde mich  freuen, wenn du meinen Einladungscode für Tibber, der Stromanbieter, der dir hilft, deinen Stromverbrauch zu verstehen und zu reduzieren, nutzt: https://invite.tibber.com/5fc08jbs. So bekommen wir beide 50 Euro und 100 % Ökostrom / https://geld-fuer-eauto.de/ref/334561880

lynckmeister

ok nur um sicher zu stellen, dass ich hier keinen Fehler drin habe: Der augenblickliche Strompreis ist ca 14,7 €/ct (ab 21 Uhr) ??

xerion

Zitat von: lynckmeister am 14 Februar 2023, 21:11:27
ok nur um sicher zu stellen, dass ich hier keinen Fehler drin habe: Der augenblickliche Strompreis ist ca 14,7 €/ct (ab 21 Uhr) ??

Nein das ist wohl der grob Börsenpreis ohne Steuern/Abgaben. Laut Tibber App ist der Börsenpreis aktuell von 21:00-22:00 bei 16 Cent
Ich würde mich  freuen, wenn du meinen Einladungscode für Tibber, der Stromanbieter, der dir hilft, deinen Stromverbrauch zu verstehen und zu reduzieren, nutzt: https://invite.tibber.com/5fc08jbs. So bekommen wir beide 50 Euro und 100 % Ökostrom / https://geld-fuer-eauto.de/ref/334561880

Reinhard.M

Aktuell sind es 16ct ohne und 33,5ct mit allen Angaben

xerion

Zitat von: Reinhard.M am 14 Februar 2023, 21:19:31
Aktuell sind es 16ct ohne und 33,5ct mit allen Angaben

Bei mir sind es 31 Cent mit Abgabe. Das ist das was ich meinte, das die Abgaben lokal abhängig sind.
Ich würde mich  freuen, wenn du meinen Einladungscode für Tibber, der Stromanbieter, der dir hilft, deinen Stromverbrauch zu verstehen und zu reduzieren, nutzt: https://invite.tibber.com/5fc08jbs. So bekommen wir beide 50 Euro und 100 % Ökostrom / https://geld-fuer-eauto.de/ref/334561880

lynckmeister

ok immer noch besser als meine 50 und bald halt 40 ct ... ich schreibe das jetzt mal ne zeitlang in ein Filelog ...
am lohnt es sich einen 14,4 kWh DIY akku nachts damit voll zu laden ;))

xerion

Zitat von: lynckmeister am 14 Februar 2023, 21:44:44
ok immer noch besser als meine 50 und bald halt 40 ct ... ich schreibe das jetzt mal ne zeitlang in ein Filelog ...
am lohnt es sich einen 14,4 kWh DIY akku nachts damit voll zu laden ;))

Ja stimmt. Ich bin seit Januar bei Tibber und mein Durchschnittspreis mit allen Gebühren (Steuern, Zähler usw.) lag im Januar bei 0,28 Euro bei einem Verbrauch von über 700 kWh.
Ich würde mich  freuen, wenn du meinen Einladungscode für Tibber, der Stromanbieter, der dir hilft, deinen Stromverbrauch zu verstehen und zu reduzieren, nutzt: https://invite.tibber.com/5fc08jbs. So bekommen wir beide 50 Euro und 100 % Ökostrom / https://geld-fuer-eauto.de/ref/334561880