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

Damian

Da der Status vom HTTPMOD-Beispiel so langweilig mit den Fragezeichen aussah, dachte ich mir da könnte man paar Informationen unterbringen ;)

Ergebnis seit gestern Abend, siehe Anhang.

siehe auch: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#card_im_Status_des_Originaldevices
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

betateilchen

Zitat von: Reinhard.M am 14 Februar 2023, 18:03:40
auf Basis der Preisinformation die großen Haushaltsgeräte (Trockner, Waschmaschine, Spülmaschine)

Popcornmaschinen...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Reinhard.M

Zitat von: Damian am 15 Februar 2023, 10:20:51
Da der Status vom HTTPMOD-Beispiel so langweilig mit den Fragezeichen aussah, dachte ich mir da könnte man paar Informationen unterbringen ;)

Ergebnis seit gestern Abend, siehe Anhang.

siehe auch: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#card_im_Status_des_Originaldevices

Das gefällt mir, schaue ich mir bei nächster Gelegenheit an  :D
Bin gerade dabei meinen neuen Rechner aufzusetzen und hatte noch keine Zeit, komme ich mit deinem Beispiel schnell zu diesem Ergebnis? Mein Auge liebt Popcorn ;)

Damian

Zitat von: Reinhard.M am 15 Februar 2023, 21:09:11
Das gefällt mir, schaue ich mir bei nächster Gelegenheit an  :D
Bin gerade dabei meinen neuen Rechner aufzusetzen und hatte noch keine Zeit, komme ich mit deinem Beispiel schnell zu diesem Ergebnis? Mein Auge liebt Popcorn ;)

Es kommt darauf an. Es sind mehr oder weniger zwei Zeilen. Wenn du nicht selber drauf kommst, dann musst du dich hier noch mal melden.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

NewRasPi

Hallo Ihr Spezialisten,
darf ich mal die unqualifizierte Frage stellen, warum Ihr nicht den Umrechnungsfaktor der Schwedischen Kronen in Euro als "irgendwas" in das Demo einbaut?
Ich habe natürlich keine Ahnung ob das einfach so geht. Aber da die Netzstrompreise überhaupt keinen Spass mehr machen, wäre die Ebnung des Weges vielleicht für viele ein Anreiz zum wechseln des Stromanbieter.
Die Möglichkeiten die hier immer wieder zu sehen sind begeistern mich immer wieder, was da für ein Können dahinter steckt.
Schöne Grüße
Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;

Reinhard.M

#20
Zitat von: NewRasPi am 10 März 2023, 10:42:22
Hallo Ihr Spezialisten,
darf ich mal die unqualifizierte Frage stellen, warum Ihr nicht den Umrechnungsfaktor der Schwedischen Kronen in Euro als "irgendwas" in das Demo einbaut?
Na ja,
ich denke mal das macht nicht wirklich Sinn da der schwedische Strommarkt sich sicherlich anders darstellt als der deutsche. Wie weiter oben schon erwähnt machen ja bereits die örtlichen Zulagen in Deutschland einen beträchtlichen Unterschied. Wenn ich mich recht erinnere kann man bei Tibber auch einen Account anlegen wenn man kein Kunde ist. Oder "noch nicht". Ich konnte jedenfalls schon Daten auslesen bevor mein Zähler umgestellt wurde. Ausprobieren :)

Gruß Reinhard

Edit:
Ich habe mal die letzten 100 Stundenwerte miteinander verglichen. Bei meinen "total" Werten geht die Spanne für SEK/€ von etwa 3,5 bis 7, müsste aber aktuell über 11 sein. Du kannst aber den aktuellen €/SEK Wert von 0,088 gerne selber einbauen:
attr ti2r reading1OExpr $val*0.088*100

Reinhard.M

Zitat von: Damian am 15 Februar 2023, 21:13:35
Es kommt darauf an. Es sind mehr oder weniger zwei Zeilen. Wenn du nicht selber drauf kommst, dann musst du dich hier noch mal melden.

Guten Morgen Damian,
ich bin gerade dabei mich in uiTable und allem was dazu gehört einzuarbeiten. Aktuell plane ich meine Visualisierung darauf umzustellen. Sieht einfach cooler aus und lässt sich im Gesatz zu f18 viel besser konfigurieren (zumindest entsprechend dem was ich bislang gelesen und ausprobiert habe :)).
Ich bin allerdings dabei über einen Fehler in dem zugehörigen "DOIF/uiTable" Wicki gestolpert:
Zitat
## Die Tabelle wird im Raum info ausgeblendet\

$SHOWNOUITABLE = "^info$";;\

In dieser Form führt $ immer zu Fehlern (bei mir). Ich muss entweder '^info$' oder "^info\$" verwenden. Anscheinend wird das $-Zeichen in deinem Fall als Beginn einer Variable interpretiert. Ich habe aber im Grunde kaum bis keine Ahnung von Perl, das weißt du sicherlich viel besser.

Nur mal so als Feedback, da wird sicherlich der ein oder andere Anfänger wie ich auch drüber stolpern.

Schönen Tag
Reinhard

Damian

Danke für den Tipp. Ich habe es korrigiert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: Reinhard.M am 12 März 2023, 09:00:00
ich bin gerade dabei mich in uiTable und allem was dazu gehört einzuarbeiten. Aktuell plane ich meine Visualisierung darauf umzustellen. Sieht einfach cooler aus und lässt sich im Gesatz zu f18 viel besser konfigurieren (zumindest entsprechend dem was ich bislang gelesen und ausprobiert habe :)).

Naja, ich benutze auch f18. Das eine schließt das andere nicht aus - im Gegenteil, das eine baut auf dem anderen auf. Man kann sagen, uiTable benutzt das Standard-FHEMWEB und dazu gehört insb. f18.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Reinhard.M

Zitat von: Damian am 12 März 2023, 12:09:31
Naja, ich benutze auch f18. Das eine schließt das andere nicht aus - im Gegenteil, das eine baut auf dem anderen auf. Man kann sagen, uiTable benutzt das Standard-FHEMWEB und dazu gehört insb. f18.
Da bin ich ja komplett bei dir. Allerdings zerlegt es einem gerne mal die Anordnung in Räumen, insbesondere wenn man diese mit Gruppen befüllt. Oder neue Elemente hinzufügt. Dann geht erst einmal das manuelle Aufräumen los. Und da gehen einem auch schon mal die Header flöten die man zum Verschieben braucht. Ich will da versuchen Bedienung von Setting zu trennen und für die Bedienung uiTable & Co verwenden. Mal sehen ob es so klappt wie ich es mir vorstelle.
Ich habe auch (gerade eben erst wieder) "flex" ausprobiert. Hat in vielen Bereichen Vorteile, in einigen aber auch gravierende Nachteile. Und der Maintainer hat gerade wichtigeres zu tun: Familie :) Das geht für mich ganz klar vor. Ich freue mich aber über eure Basisarbeit und weiß diese auch sehr zu schätzen. Ohne euer Engagement wäre ich komplett verloren. CSS, HTML, Perl fange ich gerade erst an zu lernen.

TimoD

Zitat von: Damian am 15 Februar 2023, 21:13:35
Zitat von: Reinhard.M am 15 Februar 2023, 21:09:11Das gefällt mir, schaue ich mir bei nächster Gelegenheit an  :D
Bin gerade dabei meinen neuen Rechner aufzusetzen und hatte noch keine Zeit, komme ich mit deinem Beispiel schnell zu diesem Ergebnis? Mein Auge liebt Popcorn ;)

Es kommt darauf an. Es sind mehr oder weniger zwei Zeilen. Wenn du nicht selber drauf kommst, dann musst du dich hier noch mal melden.

Kannst du deinen Code mal sparen, wie du die Anzeige des Strompreises hinbekommen hast. Stehe auf dem Schlauch, bzw. habe dies noch nie mit "cards" gemacht :-(

Habe Tibber über die Hilfe von ch.eick konfiguriert:
https://forum.fhem.de/index.php?topic=130407.0

Danke :-)

Damian

Zitat von: TimoD am 27 März 2023, 16:24:41
Zitat von: Damian am 15 Februar 2023, 21:13:35
Zitat von: Reinhard.M am 15 Februar 2023, 21:09:11Das gefällt mir, schaue ich mir bei nächster Gelegenheit an  :D
Bin gerade dabei meinen neuen Rechner aufzusetzen und hatte noch keine Zeit, komme ich mit deinem Beispiel schnell zu diesem Ergebnis? Mein Auge liebt Popcorn ;)

Es kommt darauf an. Es sind mehr oder weniger zwei Zeilen. Wenn du nicht selber drauf kommst, dann musst du dich hier noch mal melden.

Kannst du deinen Code mal sparen, wie du die Anzeige des Strompreises hinbekommen hast. Stehe auf dem Schlauch, bzw. habe dies noch nie mit "cards" gemacht :-(

Habe Tibber über die Hilfe von ch.eick konfiguriert:
https://forum.fhem.de/index.php?topic=130407.0

Danke :-)


defmod ti2r HTTPMOD https://api.tibber.com/v1-beta/gql 3600
attr ti2r devStateIcon {ui_Table::card(ReadingsVal("di_collect","Strompreis",""),undef,"",0,200,90,0,"SEK",undef,"1",",fixedscaling,,,,halfring")}\
...


defmod di_collect DOIF ##
attr di_collect event_Readings Strompreis:[ti2r:Strompreis:bar2day]

Der Preis steht bei mit im Reading Strompreis des Devices ti2r.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

TimoD

Zitat von: Damian am 27 März 2023, 17:53:53
Zitat von: TimoD am 27 März 2023, 16:24:41
Zitat von: Damian am 15 Februar 2023, 21:13:35
Zitat von: Reinhard.M am 15 Februar 2023, 21:09:11Das gefällt mir, schaue ich mir bei nächster Gelegenheit an  :D
Bin gerade dabei meinen neuen Rechner aufzusetzen und hatte noch keine Zeit, komme ich mit deinem Beispiel schnell zu diesem Ergebnis? Mein Auge liebt Popcorn ;)

Es kommt darauf an. Es sind mehr oder weniger zwei Zeilen. Wenn du nicht selber drauf kommst, dann musst du dich hier noch mal melden.

Kannst du deinen Code mal sparen, wie du die Anzeige des Strompreises hinbekommen hast. Stehe auf dem Schlauch, bzw. habe dies noch nie mit "cards" gemacht :-(

Habe Tibber über die Hilfe von ch.eick konfiguriert:
https://forum.fhem.de/index.php?topic=130407.0

Danke :-)


defmod ti2r HTTPMOD https://api.tibber.com/v1-beta/gql 3600
attr ti2r devStateIcon {ui_Table::card(ReadingsVal("di_collect","Strompreis",""),undef,"",0,200,90,0,"SEK",undef,"1",",fixedscaling,,,,halfring")}\
...


defmod di_collect DOIF ##
attr di_collect event_Readings Strompreis:[ti2r:Strompreis:bar2day]

Der Preis steht bei mit im Reading Strompreis des Devices ti2r.

Vielen Dank für deine schnelle Antwort, wo es bei mir noch hackt, ist wie die Werte Strompreis-1, Strompreis-2,... zerlegt werden. Könntest du vielleicht deine komplette Definition deines Tibber Devices posten - vielleicht bekomme ich es dann per reverseengieering gebacken :-)

DANKE

TimoD

Ich sehe gerade, deine Werte zeigen ja auch nur die Vergangenheit an. Hast du eine Möglichkeit gefunden auch die Veränderung des Strompreises in der Zukunft zu plotten?

Grüße Timo

Damian

Zitat von: TimoD am 27 März 2023, 19:53:38Ich sehe gerade, deine Werte zeigen ja auch nur die Vergangenheit an. Hast du eine Möglichkeit gefunden auch die Veränderung des Strompreises in der Zukunft zu plotten?

Grüße Timo

Zukunft mit bar ist nicht vorgesehen. Man kann zwar ein Reading in die Zukunft verschieben, aber wenn du am Ende des Tages bist, dann wirst du den Wert in der Zukunft nicht mehr sehen. Die Darstellung orientiert sich immer am aktuellen Zeitpunkt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Das Beispiel aus dem ersten Post liest den aktuellen Strompreis der Stunde aus. Kann man über die HTTPMOD-Schnittstelle auch den voraussichtlichen Strompreis der Stunde von morgen auslesen?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Reinhard.M

Ja, gewöhnlich werden um ca. 13:00 Uhr die Stundenpreise des Folgetages veröffentlicht. Wenn man die Werte um 13:300 abruft dürften sie sicher da sein. Werde ich auch noch aufsetzen, bin aber noch nicht dazu gekommen.

Damian

Ich habe etwas rumexperimentiert. Man kann jetzt eine tägliche Prognose in die Zukunft bis zum Ende des Tages darstellen (neue DOIF-Version wurde eingecheckt).

Dazu habe ich diese Definition genommen: https://forum.fhem.de/index.php?topic=130407.msg1264625#msg1264625

Und in einem DOIF um Mitternacht die prognostizierten Werte (total) des Tages ausgelesen und ins Diagramm geschoben:

   
defmod di_collect DOIF { [00:01];;\
my $out;;\
for (my $i=0;;$i<=23;;$i++){\
  $out.=ReadingsVal("EVU_Tibber",sprintf("fc0_%02d_startsAt",$i),"")." ".ReadingsVal("EVU_Tibber",sprintf("fc0_%02d_total",$i),"")."\n";;\
}\
::DOIF_modify_card_data ("di_collect","EVU_Tibber","total","bar1day",0,$out);;\
}
attr di_collect event_Readings total:[EVU_Tibber:total:bar1day]

und mit

devStateIcon {ui_Table::card(ReadingsVal("di_collect","total",""),undef,undef,0,2,90,0,"SEK",undef,"3",",fixedscaling,,,,")}
in Device EVU_Tibber visualisiert - siehe Anhang.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

xerion

Hallo Damian,

ich bekomme beim ausführen des Blocks folgenden Fehler.
FHEM Update ist aktuelle von heute (16.04.23)

block_01


condition c01: Can't use string ("") as a HASH ref while "strict refs" in use at ./FHEM/98_DOIF.pm line 1489.
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

Damian

Zitat von: xerion am 16 April 2023, 21:01:49Hallo Damian,

ich bekomme beim ausführen des Blocks folgenden Fehler.
FHEM Update ist aktuelle von heute (16.04.23)

block_01


condition c01: Can't use string ("") as a HASH ref while "strict refs" in use at ./FHEM/98_DOIF.pm line 1489.


Vermutlich, weil das Reading total in EVU_Tibber nicht existiert. Setz einfach setreading EVU_Tibber total 0 und schaue, ob im di_collect unter total ein Hash angezeigt wird.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

#35
Moin,
ich bekomme auch den HASH Fehler.    <<< Updates sind weiter unten im Post

Beide readings sind vorhanden.
fc0_00_startsAt 2023-04-17 00:00:00
fc0_00_total 0.2873
fc0_01_startsAt 2023-04-17 01:00:00
fc0_01_total 0.283

{ [00:01];
my $out;
for (my $i=0;$i<=23;$i++){
  $out.=ReadingsVal("EVU_Tibber",sprintf("fc0_%02d_startsAt",$i),"")." ".ReadingsVal("EVU_Tibber",sprintf("fc0_%02d_total",$i),"")."\n";
  print($out."\n");    <<< das habe ich mal eingefügt
}
::DOIF_modify_card_data ("EVU_Tibber_ctl","EVU_Tibber","total","bar1day",0,$out);
}

Im Log baut sich dann das $out langsam auf:
2023-04-17 00:00:00 0.2873

2023-04-17 00:00:00 0.2873
2023-04-17 01:00:00 0.283

2023-04-17 00:00:00 0.2873
2023-04-17 01:00:00 0.283
2023-04-17 02:00:00 0.2804

bis dann alle Einträge für das Diagramm da sind.

UPDATE 20230417 08:45
Nach dem "setreading EVU_Tibber total 0" kommt dann
condition c01: Argument "23:00:00" isn't numeric in addition (+) at ./FHEM/98_DOIF.pm line 1723.
UPDATE 20230417 09:33
Das Problem lag an TIMESTAMP, der wegen MySQL ohne "_" gespeichert wurde.
Es muss für das Diagramm "2023-04-17_09:00:00" geschrieben werden.
{ [00:01];
my $out;
my $timestamp;

for (my $i=0;$i<=23;$i++){
  $timestamp = ReadingsVal("EVU_Tibber",sprintf("fc0_%02d_startsAt",$i),"");
  $timestamp =~ s/ /_/g;
  $out.=$timestamp." ".ReadingsVal("EVU_Tibber",sprintf("fc0_%02d_total",$i),"")."\n";
}
::DOIF_modify_card_data("EVU_Tibber_ctl","EVU_Tibber","total","bar1day",0,$out);
}

Für meine Anwendung habe ich das DevstateIcon ins DOIF geschrieben. Dort kommen dann auch noch andere Schedulings und Steuerungen für das EVU_Tibber mit rein. Fortsetzung folgt...

Nun bleiben für mich noch zwei Fragen:

1. Kann ich das DevStateIcon mit meiner uiTable Status Tabelle kombinieren?
2. Bei mir bekomme ich das Diagramm nur bis zur aktuell laufenden Stunde angezeigt, kann ich den ganzen tag im voraus darstellen lassen?


VG 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

Damian

#36
Da EVU_Tibber sich nicht alleine aktualisiert, könnte man noch im Block nach der Zeitangabe get EVU_Tibber 02_priceAll aufrufen, damit die Preise aktuell sind.

Auch das fehlende Reading könnte man mit setreading EVU_Tibber total 0 im Block erzeugen.

Ich habe ja zwei verschiedene Tibber-Darstellunge hier im Forum dargestellt, die erste bezieht sich auf den aktuellen Strompreis, dort werden die Balken bis zum aktuellen Zeitpunkt dargestellt aufgrund der Events vom Strompreis, der stündlich aktualisiert wurde.

Die Prognose baut dagegen auf deiner ursprünglichen Definition zum Auslesen der Prognosedaten auf, hier gibt es keine Events, deswegen das einmalige Auslesen der Definition um Mitternacht für den ganzen Tag.

Bei mir hat bisher alles funktioniert. Mit bar2day hat man auch den Vergleich zum Vortag.

Was bisher noch nicht geht, ist die Prognose von morgen, dazu müsste ich noch das DOIF anpassen, um weiter in die Zukunft zu schauen.

Im Anhang die Daten von gestern und von heute.
 
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Zitat von: Damian am 17 April 2023, 11:09:05Da EVU_Tibber sich nicht alleine aktualisiert, könnte man noch im Block nach der Zeitangabe get EVU_Tibber 02_priceAll aufrufen, damit die Preise aktuell sind.

Auch das fehlende Reading könnte man mit setreading EVU_Tibber total 0 im Block erzeugen.

Ich habe ja zwei verschiedene Tibber-Darstellunge hier im Forum dargestellt, die erste bezieht sich auf den aktuellen Strompreis, dort werden die Balken bis zum aktuellen Zeitpunkt dargestellt aufgrund der Events vom Strompreis, der stündlich aktualisiert wurde.

Die Prognose baut dagegen auf deiner ursprünglichen Definition zum Auslesen der Prognosedaten auf, hier gibt es keine Events, deswegen das einmalige Auslesen der Definition um Mitternacht für den ganzen Tag.

Bei mir hat bisher alles funktioniert. Mit bar2day hat man auch den Vergleich zum Vortag.

Was bisher noch nicht geht, ist die Prognose von morgen, dazu müsste ich noch das DOIF anpassen, um weiter in die Zukunft zu schauen.

Im Anhang die Daten von gestern und von heute.
 

Ich werde auch das DOIF für die Visualisierung direkt verwenden und auch das Scheduling dort machen.
Das EVU_Tibber dient dann nur noch dem Datensammeln.

Momentan verzweifle ich leider an dem Diagramm und verstehe auch nicht das reading total 0. Wofür wird das verwendet oder ist das der HASH mit der Liste?

Die Prognose von morgen würde ich einfach als zweites Diagramm haben wollen. Da würde ich dann in einer zweiten For Schleife durch fc[0|1] laufen. Da ich aber noch nicht verstanden habe, wie die daten ins card kommen und was dort das reading mit den Daten ist, klappt das noch nicht.

Über/unter den Diagrammen möchte ich dann mein stateFormat als uiTable haben.
Da sollen dann die Diagramme auch größer sein, was ich auch noch nicht im Wiki bei den Beispielen gefunden habe.

Es ist noch viel zu lernen :-)
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

ch.eick

Hier mal ein erster Entwurf für mein EVU_Tibber_Status Device mit DOIF

Die stateFormat Tabelle transferiere ich noch ins uiTable.
Dort möchte ich dann das Diagramm einbinden.

Das EVU_Tibber Scheduling ist bereits ein eigener Block.
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

Damian

Du kannst statt dem Attribut uiTable das DOIF-Attribut uiState nehmen, wenn du die Tabelle im Status statt darunter im DOIF-Device haben willst. Die Syntax ist identisch.

Zum Thema Reading total:

Der Card-Aufruf erfolgt normalerweise innerhalb der uiTable mit der Triggerangabe des Readings [<device>:<reading>:<collect-Angaben>]. Damit weiß das DOIF-Device welches Reading in welchem Diagramm dargestellt werden soll und sammelt bei jedem Event des Reading intern die darzustellenden Daten und visualisiert diese.

Bei zukünftigen Daten zu einem Reading gibt es keine Events zum Sammeln. Daher habe ich die card_data-Funktion "missbraucht" (mit einer DOIF-Anpassung) Daten der Zukunft ins Diagramm zu laden.

Das DOIF braucht aber immer ein Reading, weil es eigentlich selbstständig Daten des Readings für die Darstellung sammeln will.

Man könnte auch das Reading Strompreis statt total nehmen, dann würde man um Mitternacht die Daten zum Strompreis laden statt zu total. Im Laufe des Tages würden sie falls es Events zum Reading Strompreis gibt (HTTMPOD mit Intervall, wie im Beispiel von Reinhard im ersten Post) überschrieben werden. Wenn die Prognose des Tages und die tatsächlichen Daten übereinstimmen, dann merkt man keinen Unterschied - nur das Reading "Strompreis" wäre auf jeden Fall da. 
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

#40
Momentan sieht es dann jetzt schon mal so aus...

In dem Pull Down kann man auf den FHEMWEB einzelne Blöcke direkt manuell ausführen.
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

Damian

#41
So sieht bei mir eine reine DOIF-Definition mit uiTable aus, angesetzt auf das Device EVU_Tibber:

defmod di_tibber DOIF { [00:01];;\
my $out;;\
fhem("get EVU_Tibber 02_priceAll");;\
for (my $i=0;;$i<=23;;$i++){\
  $out.=ReadingsVal("EVU_Tibber",sprintf("fc0_%02d_startsAt",$i),"")." ".(ReadingsVal("EVU_Tibber",sprintf("fc0_%02d_total",$i),"")*100*0.088)."\n";;\
}\
::DOIF_modify_card_data ("$SELF","EVU_Tibber","Strompreis","bar2day",0,$out);;\
}\
{[:01];\
fhem("get EVU_Tibber 01_priceInfo");\
}
attr di_tibber uiTable {package ui_Table;;}\
card([EVU_Tibber:Strompreis:bar2day],undef,"",0,40,90,0,"Cent",undef,"1",",fixedscaling,,,,halfring")


Ich habe den total-Preis auf Cent umgerechnet. Allerdings fand ich eine stündliche Aktualisierung des Strompreises per Intervall im HTTPMOD, wie bei Reinhard, besser. In deiner Definition von EVU_Tipper muss man es wohl, wie ich es sehe, extern per get anstoßen.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Tueftler1983

Hilfe ich bekomme die Dahrstellung in Fhem einfach nicht hin!!

das ist mein Tibber Device das die Daten ausliest
define myTibber HTTPMOD https://api.tibber.com/v1-beta/gql 3600
attr myTibber alignTime 00:05
attr myTibber devStateIcon {ui_Table::card(ReadingsVal("di_collect","total",""),undef,undef,0,2,90,0,"SEK",undef,"3",",fixedscaling,,,,")}
attr myTibber reading1JSON data_viewer_homes_01_currentSubscription_priceInfo_current_total
attr myTibber reading1Name Strompreis
attr myTibber reading1OExpr $val*100
attr myTibber reading2-1Name Datum
attr myTibber reading2-2Name Uhrzeit
attr myTibber reading2JSON data_viewer_homes_01_currentSubscription_priceInfo_current_startsAt
attr myTibber reading2Regex startsAt":"([\d+-]+)T(\d\d:\d\d)
attr myTibber replacement1Mode text
attr myTibber replacement1Regex %%Token%%
attr myTibber replacement1Value meiner
attr myTibber requestData { "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt} today {total energy tax startsAt } tomorrow {total energy tax startsAt }}}}}}" }
attr myTibber requestHeader1 Content-Type: application/json
attr myTibber requestHeader2 Authorization: Bearer %%Token%%
attr myTibber room Strom
attr myTibber showBody 1
attr myTibber showError 1
attr myTibber userReadings TodayAverage {use List::Util qw(sum);;;;\
my @Preise = split /\|/, ReadingsVal("myTibber","TodayTotal",0.25);;;; return (100 * sum(@Preise) / @Preise);;;; },\
TomorrowAverage {use List::Util qw(sum);;;;\
my @Preise = split /\|/, ReadingsVal("myTibber","TomorrowTotal",0.25);;;; return $Preise[0] eq "NV" ? "NV" : (100 * sum(@Preise) / @Preise);;;; },\
TodayMin {use List::Util qw(min);;;; my @Preise = split /\|/, ReadingsVal("myTibber","TodayTotal",0.25);;;; return (min @Preise);;;;}
#   BUSY       0
#   CFGFN     
#   DEF        https://api.tibber.com/v1-beta/gql 3600
#   FUUID      66de0c5f-f33f-91a4-8a5a-33643964e7a8679e
#   Interval   3600
#   MainURL    https://api.tibber.com/v1-beta/gql
#   ModuleVersion 4.2.0 - 11.8.2023
#   NAME       myTibber
#   NOTIFYDEV  global
#   NR         66028
#   NTFY_ORDER 50-myTibber
#   STATE      ???
#   TYPE       HTTPMOD
#   eventCount 408
#   httpbody   {"data":{"viewer":{"homes":[{"currentSubscription":{"priceInfo":{"current":{"total":0.2739,"energy":0.067,"tax":0.2069,"startsAt":"2024-09-13T14:00:00.000+02:00"},"today":[{"total":0.3132,"energy":0.1,"tax":0.2132,"startsAt":"2024-09-13T00:00:00.000+02:00"},{"total":0.3031,"energy":0.0915,"tax":0.2116,"startsAt":"2024-09-13T01:00:00.000+02:00"},{"total":0.2981,"energy":0.0873,"tax":0.2108,"startsAt":"2024-09-13T02:00:00.000+02:00"},{"total":0.2975,"energy":0.0868,"tax":0.2107,"startsAt":"2024-09-13T03:00:00.000+02:00"},{"total":0.2949,"energy":0.0846,"tax":0.2103,"startsAt":"2024-09-13T04:00:00.000+02:00"},{"total":0.2988,"energy":0.0879,"tax":0.2109,"startsAt":"2024-09-13T05:00:00.000+02:00"},{"total":0.3138,"energy":0.1005,"tax":0.2133,"startsAt":"2024-09-13T06:00:00.000+02:00"},{"total":0.337,"energy":0.12,"tax":0.217,"startsAt":"2024-09-13T07:00:00.000+02:00"},{"total":0.3516,"energy":0.1322,"tax":0.2194,"startsAt":"2024-09-13T08:00:00.000+02:00"},{"total":0.3325,"energy":0.1162,"tax":0.2163,"startsAt":"2024-09-13T09:00:00.000+02:00"},{"total":0.3162,"energy":0.1025,"tax":0.2137,"startsAt":"2024-09-13T10:00:00.000+02:00"},{"total":0.3073,"energy":0.095,"tax":0.2123,"startsAt":"2024-09-13T11:00:00.000+02:00"},{"total":0.2996,"energy":0.0886,"tax":0.211,"startsAt":"2024-09-13T12:00:00.000+02:00"},{"total":0.2864,"energy":0.0775,"tax":0.2089,"startsAt":"2024-09-13T13:00:00.000+02:00"},{"total":0.2739,"energy":0.067,"tax":0.2069,"startsAt":"2024-09-13T14:00:00.000+02:00"},{"total":0.2801,"energy":0.0722,"tax":0.2079,"startsAt":"2024-09-13T15:00:00.000+02:00"},{"total":0.2826,"energy":0.0743,"tax":0.2083,"startsAt":"2024-09-13T16:00:00.000+02:00"},{"total":0.2892,"energy":0.0798,"tax":0.2094,"startsAt":"2024-09-13T17:00:00.000+02:00"},{"total":0.309,"energy":0.0965,"tax":0.2125,"startsAt":"2024-09-13T18:00:00.000+02:00"},{"total":0.3132,"energy":0.1,"tax":0.2132,"startsAt":"2024-09-13T19:00:00.000+02:00"},{"total":0.3064,"energy":0.0942,"tax":0.2122,"startsAt":"2024-09-13T20:00:00.000+02:00"},{"total":0.2949,"energy":0.0846,"tax":0.2103,"startsAt":"2024-09-13T21:00:00.000+02:00"},{"total":0.2886,"energy":0.0793,"tax":0.2093,"startsAt":"2024-09-13T22:00:00.000+02:00"},{"total":0.2668,"energy":0.061,"tax":0.2058,"startsAt":"2024-09-13T23:00:00.000+02:00"}],"tomorrow":[{"total":0.2604,"energy":0.0556,"tax":0.2048,"startsAt":"2024-09-14T00:00:00.000+02:00"},{"total":0.2537,"energy":0.05,"tax":0.2037,"startsAt":"2024-09-14T01:00:00.000+02:00"},{"total":0.2458,"energy":0.0433,"tax":0.2025,"startsAt":"2024-09-14T02:00:00.000+02:00"},{"total":0.248,"energy":0.0452,"tax":0.2028,"startsAt":"2024-09-14T03:00:00.000+02:00"},{"total":0.2498,"energy":0.0467,"tax":0.2031,"startsAt":"2024-09-14T04:00:00.000+02:00"},{"total":0.2469,"energy":0.0443,"tax":0.2026,"startsAt":"2024-09-14T05:00:00.000+02:00"},{"total":0.2601,"energy":0.0554,"tax":0.2047,"startsAt":"2024-09-14T06:00:00.000+02:00"},{"total":0.2716,"energy":0.065,"tax":0.2066,"startsAt":"2024-09-14T07:00:00.000+02:00"},{"total":0.2841,"energy":0.0755,"tax":0.2086,"startsAt":"2024-09-14T08:00:00.000+02:00"},{"total":0.2735,"energy":0.0666,"tax":0.2069,"startsAt":"2024-09-14T09:00:00.000+02:00"},{"total":0.243,"energy":0.041,"tax":0.202,"startsAt":"2024-09-14T10:00:00.000+02:00"},{"total":0.2038,"energy":0.0081,"tax":0.1957,"startsAt":"2024-09-14T11:00:00.000+02:00"},{"total":0.1952,"energy":0.0009,"tax":0.1943,"startsAt":"2024-09-14T12:00:00.000+02:00"},{"total":0.1941,"energy":-0.0001,"tax":0.1942,"startsAt":"2024-09-14T13:00:00.000+02:00"},{"total":0.1937,"energy":-0.0005,"tax":0.1942,"startsAt":"2024-09-14T14:00:00.000+02:00"},{"total":0.1941,"energy":-0.0001,"tax":0.1942,"startsAt":"2024-09-14T15:00:00.000+02:00"},{"total":0.2056,"energy":0.0095,"tax":0.1961,"startsAt":"2024-09-14T16:00:00.000+02:00"},{"total":0.2717,"energy":0.0651,"tax":0.2066,"startsAt":"2024-09-14T17:00:00.000+02:00"},{"total":0.3065,"energy":0.0944,"tax":0.2121,"startsAt":"2024-09-14T18:00:00.000+02:00"},{"total":0.3449,"energy":0.1266,"tax":0.2183,"startsAt":"2024-09-14T19:00:00.000+02:00"},{"total":0.3345,"energy":0.1178,"tax":0.2167,"startsAt":"2024-09-14T20:00:00.000+02:00"},{"total":0.3169,"energy":0.1031,"tax":0.2138,"startsAt":"2024-09-14T21:00:00.000+02:00"},{"total":0.3058,"energy":0.0938,"tax":0.212,"startsAt":"2024-09-14T22:00:00.000+02:00"},{"total":0.2951,"energy":0.0848,"tax":0.2103,"startsAt":"2024-09-14T23:00:00.000+02:00"}]}}}]}}}
#
#   value     
#   CompiledRegexes:
#   HttpUtils:
#     NAME       
#     addr       https://api.tibber.com:443
#     auth       0
#     code       200
#     compress   1
#     conn       
#     data       { "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt} today {total energy tax startsAt } tomorrow {total energy tax startsAt }}}}}}" }
#     displayurl https://api.tibber.com/v1-beta/gql
#     header     Content-Type: application/json
#Authorization: Bearer S5TCMCSfQtnEk9kRnP9LDwluySi4QEru-Adlzcid-Ls
#     host       api.tibber.com
#     httpheader HTTP/1.1 200 OK
#Date: Fri, 13 Sep 2024 12:32:23 GMT
#Content-Type: application/json; charset=utf-8
#Connection: close
#X-Powered-By: Express
#Access-Control-Allow-Origin: *
#ETag: W/"115d-F/rHtRClFC/oXtozf7aljaPmCkc"
#Vary: Accept-Encoding
#Content-Encoding: gzip
#     httpversion 1.0
#     hu_blocking 0
#     hu_filecount 1
#     hu_port    443
#     hu_portSfx
#     ignoreredirects 1
#     loglevel   4
#     path       /v1-beta/gql
#     protocol   https
#     redirects  0
#     timeout    2
#     url        https://api.tibber.com/v1-beta/gql
#     sslargs:
#   QUEUE:
#   READINGS:
#     2024-09-13 14:32:23   Datum           2024-09-13
#     2024-09-13 14:32:23   Strompreis      27.39
#     2024-09-13 14:32:23   TodayAverage    30.2279166666667
#     2024-09-13 13:10:00   TodayEnergy     0.1|0.0915|0.0873|0.0868|0.0846|0.0879|0.1005|0.12|0.1322|0.1162|0.1025|0.095|0.0886|0.0775|0.067|0.0722|0.0743|0.0798|0.0965|0.1|0.0942|0.0846|0.0793|0.061|
#     2024-09-13 14:32:23   TodayMin        0.2668
#     2024-09-13 13:10:00   TodayTax        0.2132|0.2116|0.2108|0.2107|0.2103|0.2109|0.2133|0.217|0.2194|0.2163|0.2137|0.2123|0.211|0.2089|0.2069|0.2079|0.2083|0.2094|0.2125|0.2132|0.2122|0.2103|0.2093|0.2058|
#     2024-09-13 13:10:00   TodayTotal      0.3132|0.3031|0.2981|0.2975|0.2949|0.2988|0.3138|0.337|0.3516|0.3325|0.3162|0.3073|0.2996|0.2864|0.2739|0.2801|0.2826|0.2892|0.309|0.3132|0.3064|0.2949|0.2886|0.2668|
#     2024-09-13 14:32:23   TomorrowAverage 25.8283333333333
#     2024-09-13 13:10:00   TomorrowEnergy  0.0556|0.05|0.0433|0.0452|0.0467|0.0443|0.0554|0.065|0.0755|0.0666|0.041|0.0081|0.0009|-0.0001|-0.0005|-0.0001|0.0095|0.0651|0.0944|0.1266|0.1178|0.1031|0.0938|0.0848|
#     2024-09-13 13:10:00   TomorrowTax     0.2048|0.2037|0.2025|0.2028|0.2031|0.2026|0.2047|0.2066|0.2086|0.2069|0.202|0.1957|0.1943|0.1942|0.1942|0.1942|0.1961|0.2066|0.2121|0.2183|0.2167|0.2138|0.212|0.2103|
#     2024-09-13 13:10:00   TomorrowTotal   0.2604|0.2537|0.2458|0.248|0.2498|0.2469|0.2601|0.2716|0.2841|0.2735|0.243|0.2038|0.1952|0.1941|0.1937|0.1941|0.2056|0.2717|0.3065|0.3449|0.3345|0.3169|0.3058|0.2951|
#     2024-09-13 14:32:23   Uhrzeit         14:00
#     2024-09-13 14:25:11   total           0
#   REQUEST:
#     context    reading
#     data       { "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt} today {total energy tax startsAt } tomorrow {total energy tax startsAt }}}}}}" }
#     header     Content-Type: application/json
#Authorization: Bearer %%Token%%
#     ignoreredirects 0
#     num        unknown
#     retryCount 0
#     type       update
#     url        https://api.tibber.com/v1-beta/gql
#   defptr:
#     readingBase:
#       Datum      reading
#       Strompreis reading
#       Uhrzeit    reading
#     readingNum:
#       Datum      2
#       Strompreis 1
#       Uhrzeit    2
#     readingOutdated:
#     requestReadings:
#       update:
#         Datum      reading 2-1
#         Strompreis reading 1
#         Uhrzeit    reading 2-2
#
setstate myTibber 2024-09-13 14:32:23 Datum 2024-09-13
setstate myTibber 2024-09-13 14:32:23 Strompreis 27.39
setstate myTibber 2024-09-13 14:32:23 TodayAverage 30.2279166666667
setstate myTibber 2024-09-13 13:10:00 TodayEnergy 0.1|0.0915|0.0873|0.0868|0.0846|0.0879|0.1005|0.12|0.1322|0.1162|0.1025|0.095|0.0886|0.0775|0.067|0.0722|0.0743|0.0798|0.0965|0.1|0.0942|0.0846|0.0793|0.061|
setstate myTibber 2024-09-13 14:32:23 TodayMin 0.2668
setstate myTibber 2024-09-13 13:10:00 TodayTax 0.2132|0.2116|0.2108|0.2107|0.2103|0.2109|0.2133|0.217|0.2194|0.2163|0.2137|0.2123|0.211|0.2089|0.2069|0.2079|0.2083|0.2094|0.2125|0.2132|0.2122|0.2103|0.2093|0.2058|
setstate myTibber 2024-09-13 13:10:00 TodayTotal 0.3132|0.3031|0.2981|0.2975|0.2949|0.2988|0.3138|0.337|0.3516|0.3325|0.3162|0.3073|0.2996|0.2864|0.2739|0.2801|0.2826|0.2892|0.309|0.3132|0.3064|0.2949|0.2886|0.2668|
setstate myTibber 2024-09-13 14:32:23 TomorrowAverage 25.8283333333333
setstate myTibber 2024-09-13 13:10:00 TomorrowEnergy 0.0556|0.05|0.0433|0.0452|0.0467|0.0443|0.0554|0.065|0.0755|0.0666|0.041|0.0081|0.0009|-0.0001|-0.0005|-0.0001|0.0095|0.0651|0.0944|0.1266|0.1178|0.1031|0.0938|0.0848|
setstate myTibber 2024-09-13 13:10:00 TomorrowTax 0.2048|0.2037|0.2025|0.2028|0.2031|0.2026|0.2047|0.2066|0.2086|0.2069|0.202|0.1957|0.1943|0.1942|0.1942|0.1942|0.1961|0.2066|0.2121|0.2183|0.2167|0.2138|0.212|0.2103|
setstate myTibber 2024-09-13 13:10:00 TomorrowTotal 0.2604|0.2537|0.2458|0.248|0.2498|0.2469|0.2601|0.2716|0.2841|0.2735|0.243|0.2038|0.1952|0.1941|0.1937|0.1941|0.2056|0.2717|0.3065|0.3449|0.3345|0.3169|0.3058|0.2951|
setstate myTibber 2024-09-13 14:32:23 Uhrzeit 14:00
setstate myTibber 2024-09-13 14:25:11 total 0


das ist das collect doif
define myTibber HTTPMOD https://api.tibber.com/v1-beta/gql 3600
attr myTibber alignTime 00:05
attr myTibber devStateIcon {ui_Table::card(ReadingsVal("di_collect","total",""),undef,undef,0,2,90,0,"SEK",undef,"3",",fixedscaling,,,,")}
attr myTibber reading1JSON data_viewer_homes_01_currentSubscription_priceInfo_current_total
attr myTibber reading1Name Strompreis
attr myTibber reading1OExpr $val*100
attr myTibber reading2-1Name Datum
attr myTibber reading2-2Name Uhrzeit
attr myTibber reading2JSON data_viewer_homes_01_currentSubscription_priceInfo_current_startsAt
attr myTibber reading2Regex startsAt":"([\d+-]+)T(\d\d:\d\d)
attr myTibber replacement1Mode text
attr myTibber replacement1Regex %%Token%%
attr myTibber replacement1Value S5TCMCSfQtnEk9kRnP9LDwluySi4QEru-Adlzcid-Ls
attr myTibber requestData { "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt} today {total energy tax startsAt } tomorrow {total energy tax startsAt }}}}}}" }
attr myTibber requestHeader1 Content-Type: application/json
attr myTibber requestHeader2 Authorization: Bearer %%Token%%
attr myTibber room Strom
attr myTibber showBody 1
attr myTibber showError 1
attr myTibber userReadings TodayAverage {use List::Util qw(sum);;;;\
my @Preise = split /\|/, ReadingsVal("myTibber","TodayTotal",0.25);;;; return (100 * sum(@Preise) / @Preise);;;; },\
TomorrowAverage {use List::Util qw(sum);;;;\
my @Preise = split /\|/, ReadingsVal("myTibber","TomorrowTotal",0.25);;;; return $Preise[0] eq "NV" ? "NV" : (100 * sum(@Preise) / @Preise);;;; },\
TodayMin {use List::Util qw(min);;;; my @Preise = split /\|/, ReadingsVal("myTibber","TodayTotal",0.25);;;; return (min @Preise);;;;}
#   BUSY       0
#   CFGFN     
#   DEF        https://api.tibber.com/v1-beta/gql 3600
#   FUUID      66de0c5f-f33f-91a4-8a5a-33643964e7a8679e
#   Interval   3600
#   MainURL    https://api.tibber.com/v1-beta/gql
#   ModuleVersion 4.2.0 - 11.8.2023
#   NAME       myTibber
#   NOTIFYDEV  global
#   NR         66028
#   NTFY_ORDER 50-myTibber
#   STATE      ???
#   TYPE       HTTPMOD
#   eventCount 408
#   httpbody   {"data":{"viewer":{"homes":[{"currentSubscription":{"priceInfo":{"current":{"total":0.2739,"energy":0.067,"tax":0.2069,"startsAt":"2024-09-13T14:00:00.000+02:00"},"today":[{"total":0.3132,"energy":0.1,"tax":0.2132,"startsAt":"2024-09-13T00:00:00.000+02:00"},{"total":0.3031,"energy":0.0915,"tax":0.2116,"startsAt":"2024-09-13T01:00:00.000+02:00"},{"total":0.2981,"energy":0.0873,"tax":0.2108,"startsAt":"2024-09-13T02:00:00.000+02:00"},{"total":0.2975,"energy":0.0868,"tax":0.2107,"startsAt":"2024-09-13T03:00:00.000+02:00"},{"total":0.2949,"energy":0.0846,"tax":0.2103,"startsAt":"2024-09-13T04:00:00.000+02:00"},{"total":0.2988,"energy":0.0879,"tax":0.2109,"startsAt":"2024-09-13T05:00:00.000+02:00"},{"total":0.3138,"energy":0.1005,"tax":0.2133,"startsAt":"2024-09-13T06:00:00.000+02:00"},{"total":0.337,"energy":0.12,"tax":0.217,"startsAt":"2024-09-13T07:00:00.000+02:00"},{"total":0.3516,"energy":0.1322,"tax":0.2194,"startsAt":"2024-09-13T08:00:00.000+02:00"},{"total":0.3325,"energy":0.1162,"tax":0.2163,"startsAt":"2024-09-13T09:00:00.000+02:00"},{"total":0.3162,"energy":0.1025,"tax":0.2137,"startsAt":"2024-09-13T10:00:00.000+02:00"},{"total":0.3073,"energy":0.095,"tax":0.2123,"startsAt":"2024-09-13T11:00:00.000+02:00"},{"total":0.2996,"energy":0.0886,"tax":0.211,"startsAt":"2024-09-13T12:00:00.000+02:00"},{"total":0.2864,"energy":0.0775,"tax":0.2089,"startsAt":"2024-09-13T13:00:00.000+02:00"},{"total":0.2739,"energy":0.067,"tax":0.2069,"startsAt":"2024-09-13T14:00:00.000+02:00"},{"total":0.2801,"energy":0.0722,"tax":0.2079,"startsAt":"2024-09-13T15:00:00.000+02:00"},{"total":0.2826,"energy":0.0743,"tax":0.2083,"startsAt":"2024-09-13T16:00:00.000+02:00"},{"total":0.2892,"energy":0.0798,"tax":0.2094,"startsAt":"2024-09-13T17:00:00.000+02:00"},{"total":0.309,"energy":0.0965,"tax":0.2125,"startsAt":"2024-09-13T18:00:00.000+02:00"},{"total":0.3132,"energy":0.1,"tax":0.2132,"startsAt":"2024-09-13T19:00:00.000+02:00"},{"total":0.3064,"energy":0.0942,"tax":0.2122,"startsAt":"2024-09-13T20:00:00.000+02:00"},{"total":0.2949,"energy":0.0846,"tax":0.2103,"startsAt":"2024-09-13T21:00:00.000+02:00"},{"total":0.2886,"energy":0.0793,"tax":0.2093,"startsAt":"2024-09-13T22:00:00.000+02:00"},{"total":0.2668,"energy":0.061,"tax":0.2058,"startsAt":"2024-09-13T23:00:00.000+02:00"}],"tomorrow":[{"total":0.2604,"energy":0.0556,"tax":0.2048,"startsAt":"2024-09-14T00:00:00.000+02:00"},{"total":0.2537,"energy":0.05,"tax":0.2037,"startsAt":"2024-09-14T01:00:00.000+02:00"},{"total":0.2458,"energy":0.0433,"tax":0.2025,"startsAt":"2024-09-14T02:00:00.000+02:00"},{"total":0.248,"energy":0.0452,"tax":0.2028,"startsAt":"2024-09-14T03:00:00.000+02:00"},{"total":0.2498,"energy":0.0467,"tax":0.2031,"startsAt":"2024-09-14T04:00:00.000+02:00"},{"total":0.2469,"energy":0.0443,"tax":0.2026,"startsAt":"2024-09-14T05:00:00.000+02:00"},{"total":0.2601,"energy":0.0554,"tax":0.2047,"startsAt":"2024-09-14T06:00:00.000+02:00"},{"total":0.2716,"energy":0.065,"tax":0.2066,"startsAt":"2024-09-14T07:00:00.000+02:00"},{"total":0.2841,"energy":0.0755,"tax":0.2086,"startsAt":"2024-09-14T08:00:00.000+02:00"},{"total":0.2735,"energy":0.0666,"tax":0.2069,"startsAt":"2024-09-14T09:00:00.000+02:00"},{"total":0.243,"energy":0.041,"tax":0.202,"startsAt":"2024-09-14T10:00:00.000+02:00"},{"total":0.2038,"energy":0.0081,"tax":0.1957,"startsAt":"2024-09-14T11:00:00.000+02:00"},{"total":0.1952,"energy":0.0009,"tax":0.1943,"startsAt":"2024-09-14T12:00:00.000+02:00"},{"total":0.1941,"energy":-0.0001,"tax":0.1942,"startsAt":"2024-09-14T13:00:00.000+02:00"},{"total":0.1937,"energy":-0.0005,"tax":0.1942,"startsAt":"2024-09-14T14:00:00.000+02:00"},{"total":0.1941,"energy":-0.0001,"tax":0.1942,"startsAt":"2024-09-14T15:00:00.000+02:00"},{"total":0.2056,"energy":0.0095,"tax":0.1961,"startsAt":"2024-09-14T16:00:00.000+02:00"},{"total":0.2717,"energy":0.0651,"tax":0.2066,"startsAt":"2024-09-14T17:00:00.000+02:00"},{"total":0.3065,"energy":0.0944,"tax":0.2121,"startsAt":"2024-09-14T18:00:00.000+02:00"},{"total":0.3449,"energy":0.1266,"tax":0.2183,"startsAt":"2024-09-14T19:00:00.000+02:00"},{"total":0.3345,"energy":0.1178,"tax":0.2167,"startsAt":"2024-09-14T20:00:00.000+02:00"},{"total":0.3169,"energy":0.1031,"tax":0.2138,"startsAt":"2024-09-14T21:00:00.000+02:00"},{"total":0.3058,"energy":0.0938,"tax":0.212,"startsAt":"2024-09-14T22:00:00.000+02:00"},{"total":0.2951,"energy":0.0848,"tax":0.2103,"startsAt":"2024-09-14T23:00:00.000+02:00"}]}}}]}}}
#
#   value     
#   CompiledRegexes:
#   HttpUtils:
#     NAME       
#     addr       https://api.tibber.com:443
#     auth       0
#     code       200
#     compress   1
#     conn       
#     data       { "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt} today {total energy tax startsAt } tomorrow {total energy tax startsAt }}}}}}" }
#     displayurl https://api.tibber.com/v1-beta/gql
#     header     Content-Type: application/json
#Authorization: Bearer S5TCMCSfQtnEk9kRnP9LDwluySi4QEru-Adlzcid-Ls
#     host       api.tibber.com
#     httpheader HTTP/1.1 200 OK
#Date: Fri, 13 Sep 2024 12:32:23 GMT
#Content-Type: application/json; charset=utf-8
#Connection: close
#X-Powered-By: Express
#Access-Control-Allow-Origin: *
#ETag: W/"115d-F/rHtRClFC/oXtozf7aljaPmCkc"
#Vary: Accept-Encoding
#Content-Encoding: gzip
#     httpversion 1.0
#     hu_blocking 0
#     hu_filecount 1
#     hu_port    443
#     hu_portSfx
#     ignoreredirects 1
#     loglevel   4
#     path       /v1-beta/gql
#     protocol   https
#     redirects  0
#     timeout    2
#     url        https://api.tibber.com/v1-beta/gql
#     sslargs:
#   QUEUE:
#   READINGS:
#     2024-09-13 14:32:23   Datum           2024-09-13
#     2024-09-13 14:32:23   Strompreis      27.39
#     2024-09-13 14:32:23   TodayAverage    30.2279166666667
#     2024-09-13 13:10:00   TodayEnergy     0.1|0.0915|0.0873|0.0868|0.0846|0.0879|0.1005|0.12|0.1322|0.1162|0.1025|0.095|0.0886|0.0775|0.067|0.0722|0.0743|0.0798|0.0965|0.1|0.0942|0.0846|0.0793|0.061|
#     2024-09-13 14:32:23   TodayMin        0.2668
#     2024-09-13 13:10:00   TodayTax        0.2132|0.2116|0.2108|0.2107|0.2103|0.2109|0.2133|0.217|0.2194|0.2163|0.2137|0.2123|0.211|0.2089|0.2069|0.2079|0.2083|0.2094|0.2125|0.2132|0.2122|0.2103|0.2093|0.2058|
#     2024-09-13 13:10:00   TodayTotal      0.3132|0.3031|0.2981|0.2975|0.2949|0.2988|0.3138|0.337|0.3516|0.3325|0.3162|0.3073|0.2996|0.2864|0.2739|0.2801|0.2826|0.2892|0.309|0.3132|0.3064|0.2949|0.2886|0.2668|
#     2024-09-13 14:32:23   TomorrowAverage 25.8283333333333
#     2024-09-13 13:10:00   TomorrowEnergy  0.0556|0.05|0.0433|0.0452|0.0467|0.0443|0.0554|0.065|0.0755|0.0666|0.041|0.0081|0.0009|-0.0001|-0.0005|-0.0001|0.0095|0.0651|0.0944|0.1266|0.1178|0.1031|0.0938|0.0848|
#     2024-09-13 13:10:00   TomorrowTax     0.2048|0.2037|0.2025|0.2028|0.2031|0.2026|0.2047|0.2066|0.2086|0.2069|0.202|0.1957|0.1943|0.1942|0.1942|0.1942|0.1961|0.2066|0.2121|0.2183|0.2167|0.2138|0.212|0.2103|
#     2024-09-13 13:10:00   TomorrowTotal   0.2604|0.2537|0.2458|0.248|0.2498|0.2469|0.2601|0.2716|0.2841|0.2735|0.243|0.2038|0.1952|0.1941|0.1937|0.1941|0.2056|0.2717|0.3065|0.3449|0.3345|0.3169|0.3058|0.2951|
#     2024-09-13 14:32:23   Uhrzeit         14:00
#     2024-09-13 14:25:11   total           0
#   REQUEST:
#     context    reading
#     data       { "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt} today {total energy tax startsAt } tomorrow {total energy tax startsAt }}}}}}" }
#     header     Content-Type: application/json
#Authorization: Bearer %%Token%%
#     ignoreredirects 0
#     num        unknown
#     retryCount 0
#     type       update
#     url        https://api.tibber.com/v1-beta/gql
#   defptr:
#     readingBase:
#       Datum      reading
#       Strompreis reading
#       Uhrzeit    reading
#     readingNum:
#       Datum      2
#       Strompreis 1
#       Uhrzeit    2
#     readingOutdated:
#     requestReadings:
#       update:
#         Datum      reading 2-1
#         Strompreis reading 1
#         Uhrzeit    reading 2-2
#
setstate myTibber 2024-09-13 14:32:23 Datum 2024-09-13
setstate myTibber 2024-09-13 14:32:23 Strompreis 27.39
setstate myTibber 2024-09-13 14:32:23 TodayAverage 30.2279166666667
setstate myTibber 2024-09-13 13:10:00 TodayEnergy 0.1|0.0915|0.0873|0.0868|0.0846|0.0879|0.1005|0.12|0.1322|0.1162|0.1025|0.095|0.0886|0.0775|0.067|0.0722|0.0743|0.0798|0.0965|0.1|0.0942|0.0846|0.0793|0.061|
setstate myTibber 2024-09-13 14:32:23 TodayMin 0.2668
setstate myTibber 2024-09-13 13:10:00 TodayTax 0.2132|0.2116|0.2108|0.2107|0.2103|0.2109|0.2133|0.217|0.2194|0.2163|0.2137|0.2123|0.211|0.2089|0.2069|0.2079|0.2083|0.2094|0.2125|0.2132|0.2122|0.2103|0.2093|0.2058|
setstate myTibber 2024-09-13 13:10:00 TodayTotal 0.3132|0.3031|0.2981|0.2975|0.2949|0.2988|0.3138|0.337|0.3516|0.3325|0.3162|0.3073|0.2996|0.2864|0.2739|0.2801|0.2826|0.2892|0.309|0.3132|0.3064|0.2949|0.2886|0.2668|
setstate myTibber 2024-09-13 14:32:23 TomorrowAverage 25.8283333333333
setstate myTibber 2024-09-13 13:10:00 TomorrowEnergy 0.0556|0.05|0.0433|0.0452|0.0467|0.0443|0.0554|0.065|0.0755|0.0666|0.041|0.0081|0.0009|-0.0001|-0.0005|-0.0001|0.0095|0.0651|0.0944|0.1266|0.1178|0.1031|0.0938|0.0848|
setstate myTibber 2024-09-13 13:10:00 TomorrowTax 0.2048|0.2037|0.2025|0.2028|0.2031|0.2026|0.2047|0.2066|0.2086|0.2069|0.202|0.1957|0.1943|0.1942|0.1942|0.1942|0.1961|0.2066|0.2121|0.2183|0.2167|0.2138|0.212|0.2103|
setstate myTibber 2024-09-13 13:10:00 TomorrowTotal 0.2604|0.2537|0.2458|0.248|0.2498|0.2469|0.2601|0.2716|0.2841|0.2735|0.243|0.2038|0.1952|0.1941|0.1937|0.1941|0.2056|0.2717|0.3065|0.3449|0.3345|0.3169|0.3058|0.2951|
setstate myTibber 2024-09-13 14:32:23 Uhrzeit 14:00
setstate myTibber 2024-09-13 14:25:11 total 0


Gisbert

Zitat von: Reinhard.M am 13 Februar 2023, 09:41:16Liebe 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 alignTime 00:01
attr ti2r reading1JSON data_viewer_homes_01_currentSubscription_priceInfo_current_total
attr ti2r reading1Name Strompreis
attr ti2r reading1OExpr $val*100
attr ti2r reading2-1Name Datum
attr ti2r reading2-2Name Uhrzeit
attr ti2r reading2JSON data_viewer_homes_01_currentSubscription_priceInfo_current_startsAt
attr ti2r reading2Regex startsAt":"([\d+-]+)T(\d\d:\d\d)
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}}}}}}" }
attr ti2r requestHeader1 Content-Type: application/json
attr ti2r requestHeader2 Authorization: Bearer %%Token%%
attr ti2r room Zentrale
attr ti2r showBody 1
attr ti2r showError 1
attr ti2r stateFormat {sprintf("Kosten ab %s Uhr => %.2f ct/kWh", ReadingsVal($name,"Uhrzeit",0),ReadingsVal($name,"Strompreis",0))}

setstate ti2r Kosten ab 09:00 Uhr => 95.52 ct/kWh
setstate ti2r 2023-02-13 09:12:01 Datum 2023-02-13
setstate ti2r 2023-02-13 09:12:01 Strompreis 95.52
setstate ti2r 2023-02-13 09:12:01 Uhrzeit 09:00


Hallo Reinhard,

ich hab deine Definition aus dem 1. Post verwendet.
Es scheint zu funktionieren, jedoch sehe ich eine Differenz zum Wert in Fhem und dem Wert auf der Tibberseite:
13.9.2024, 16:00, PLZ 51375
Fhem: 24.26 Cent/kWh
Tibber: 26.92 Cent/kWh, 9.17+17.75 Cent/kWh

An was muss ich mich denn halten? Der Wert auf der Tibberseite sollte doch der maßgebliche Wert sein.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

isy

Moin zusammen,
ich habe zum weiteren Testen einen Tibber Account angelegt und über die Developer Seite ein eigenes Token generiert, aber keine Subskription angemeldet.

Mit dem Demo Token wird der Preis (in SEK) ausgelesen, mit dem privaten Token kommen keine Daten.

Auf der Developer Seite kann man im API-Explorer Queries generieren, die liefern Daten mit meinem Token, aber nicht für "Current energy price", da bleibt das Ergebnis ohne Daten.

Geht die httpmod Abfrage mit dem privaten Token nur mit einer Subskription?

VG Helmut

Ein Weg wird erst zu einem Weg, wenn man ihn geht

Reinhard.M

Zitat von: Gisbert am 13 September 2024, 16:21:27Hallo Reinhard,

ich hab deine Definition aus dem 1. Post verwendet.
Es scheint zu funktionieren, jedoch sehe ich eine Differenz zum Wert in Fhem und dem Wert auf der Tibberseite:
13.9.2024, 16:00, PLZ 51375
Fhem: 24.26 Cent/kWh
Tibber: 26.92 Cent/kWh, 9.17+17.75 Cent/kWh

An was muss ich mich denn halten? Der Wert auf der Tibberseite sollte doch der maßgebliche Wert sein.

Viele Grüße Gisbert

Hallo Gisbert,
ich komme gerade nicht dazu, schaue es mir aber zeitnahe an und melde mich wieder.

Gruß Reinhard

Reinhard.M

Hallo Gisbert,
ich habe den ursprünglichen Ansatz von ti2r vor längerer Zeit überarbeitet. Diese neue Version findest du jetzt im ersten Post zusammen mit einer graphischen Auswertung des Tagesverlauf. Eventuell liegt dein Problem ja daran. Ab und zu kann es passieren, dass der Datenupdate nicht funktioniert, eventuell hast du den vorhergehenden Wert gesehen. Bei mir decken sich jedenfalls die Werte.

Gruß Reinhard

Gisbert

Hallo Reinhard,

es liegen immer noch Welten zwischen den Werten auf tibber.com/de für meine PLZ und den Daten in deiner Definition.

Jetzt aktuell 11.00-12.00 liegt der Wert bei deiner Definition bei 30.89 Cent/kWh und bei Tibber bei 17.43 Cent/kWh inkl. Steuern und Abgaben. Meinst du, dass du Differenz irgendwie eingrenzen kannst?

Desweiteren gab es mit dem DOIF ein Problem(chen) in Form eines Perl Warnings im Logfile, vermutlich nur einmal nach der Erzeugung des DOIFs.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Reinhard.M

Da kann ich dir leider nicht weiterhelfen, liegt irgendwie in deiner Installation. Bei mir passt es jedenfalls immer.