Hauptmenü

Tibber & Tibber Pulse

Begonnen von hyper2910, 20 November 2022, 10:27:31

Vorheriges Thema - Nächstes Thema

hyper2910

Hallo zusammen,

Bei dem Stromanbieter Tibber gibt eine API um z.b. Strompreise, Verbrauch etc. abzufragen.  Das ganze geht per Graphql.

Irgendwie verstehe ich das ganze nicht.

Unter https://developer.tibber.com/ Kann man Demodaten abrufen und das Query generieren.

Nur bekomme ich das ganze nicht hin.

Ich würde gerne die Realtimesubscription als Reading haben.

Könnte mir jemand helfen?
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

hyper2910

Schade das keiner der Programmierer ein Modul dafür macht. Openhab, in roter oder homebridge bieten schon was
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

ch.eick

#2
Zitat von: hyper2910 am 21 November 2022, 21:23:45
Schade das keiner der Programmierer ein Modul dafür macht. Openhab, in roter oder homebridge bieten schon was
Hallo

Wenn Du ein Login hast könntest Du das über die API mit HTTPMOD in FHEM einbinden.
Es muss nicht immer ein Modul sein.
Bei aWATTar wird es ebenfalls mit HTTPMOD abgefragt.

VG   Christian

EDIT:
Ich habe jetzt mal einen Versuch über das Developer Portal gestartet, jedoch fehlt mit da eine gültige homeid
Das ganze wurde hier ja schon mal bearbeitet.


httpbody
{"errors":[{"message":"Home with id \"c70dcbe5-4485-4821-933d-a8a86452737b\" does not exist or does not have matching owner or grid contract owner dcc2355e-6f55-45c2-beb9-274241fe450c.","locations":[{"line":1,"column":10}],"path":["viewer","home"],"extensions":{"code":"HOME_NOT_FOUND"}}],"data":null}


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

hyper2910

Hi,   

Die Preise bekomme ich, aber die Tibber Pulse Daten einfach nicht.

Über die API kannst du ja Demo Daten abfragen

https://developer.tibber.com/explorer

Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

ch.eick

Zitat von: hyper2910 am 12 Dezember 2022, 22:51:59
Die Preise bekomme ich, aber die Tibber Pulse Daten einfach nicht.
Über die API kannst du ja Demo Daten abfragen
https://developer.tibber.com/explorer
Genau da fehlt mir die homeid, das Token kann man generieren.

Stellst Du mal bitte Deine Definition hier rein? Natürlich das Token und die homeid ausblenden!
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

hyper2910

Hi,

Die HomeID kann auch ausgelesen werden


Demo Token 5K4MVS-OjfWhK_4yrjOlFe1F6kJXPVf7eQYggo8ebAE
homeId:"96a14971-525a-4420-aae9-e5aedaa129ff"

subscription{
  liveMeasurement(homeId:"96a14971-525a-4420-aae9-e5aedaa129ff"){
    timestamp
    power
    accumulatedConsumption
    accumulatedCost
    currency
    minPower
    averagePower
    maxPower
  }
}


Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

ch.eick

#6
Zitat von: hyper2910 am 15 Dezember 2022, 07:33:37
Die HomeID kann auch ausgelesen werden
Ich habe ja keinen Account bei Tibber, wo kann ich die homeid für den Testzugang auslesen?

{"errors":[{"message":"Home with id \"96a14971-525a-4420-aae9-e5aedaa129ffb\" does not exist or does not have matching owner or grid contract owner dcc2355e-6f55-45c2-beb9-274241fe450c.","locations":[{"line":1,"column":10}],"path":["viewer","home"],"extensions":{"code":"HOME_NOT_FOUND"}}],"data":null}

Schickst Du mir noch die FHEM Device definition?

EDIT: Durch copy/past hatte ich am Ende der HomeID noch ein "b" zuviel, jetzt kommt auch eine Antwort :-)


{"data":{"viewer":{"home":{"currentSubscription":{"priceInfo":{"current":{"total":5.6907,"energy":4.4651,"tax":1.2256,"startsAt":"2022-12-15T12:00:00.000+01:00"}}}}}}}
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

#7
Mir ist der Syntax zwischen der Web page und dem Aufruf der API noch nicht wirklich klar.

{ "query": "{viewer {home(id:\"%%homeID%%\") {currentSubscription {priceInfo {current {total energy tax startsAt }}}}}}" }

EDIT: In der API Dokumentation findet man dazu auch etwas, womit die Syntax Frage geklärt wäre.

{
  viewer {
    homes {          <<<<< hier ist nur ein "homes", oben jedoch ein "home" mit der id Angabe.
      currentSubscription{
        priceInfo{
< snip >
            tax
            startsAt
          }
        }
      }
    }
  }
}


EDIT: Wenn man den Syntax angepasst überträgt kommt auch eine Rückmeldung, die jedoch Umfangreicher ist als im WEB Interface

{ "query": "{viewer {home(id:\"%%homeID%%\") {currentSubscription {priceInfo{current {total energy tax startsAt} today {total energy tax startsAt} tomorrow {total energy tax startsAt}}}}}}" }


{"data":{"viewer":{"home":{"currentSubscription":{"priceInfo":{"current":{"total":5.5049,"energy":4.3164,"tax":1.1885,"startsAt":"2022-12-15T13:00:00.000+01:00"},"today":[{"total":4.1914,"energy":3.2656,"tax":0.9258,"startsAt":"2022-12-15T00:00:00.000+01:00"},{"total":4.0654,"energy":3.1648,"tax":0.9006,"startsAt":"2022-12-15T01:00:00.000+01:00"},{"total":3.9119,"energy":3.042,"tax":0.8699,"startsAt":"2022-12-15T02:00:00.000+01:00"},{"total":3.7858,"energy":2.9411,"tax":0.8447,"startsAt":"2022-12-15T03:00:00.000+01:00"},
< snip >
{"total":6.095,"energy":4.7885,"tax":1.3065,"startsAt":"2022-12-15T20:00:00.000+01:00"},{"total":5.1129,"energy":4.0028,"tax":1.1101,"startsAt":"2022-12-15T21:00:00.000+01:00"},{"total":4.6942,"energy":3.6678,"tax":1.0264,"startsAt":"2022-12-15T22:00:00.000+01:00"},{"total":4.2648,"energy":3.3243,"tax":0.9405,"startsAt":"2022-12-15T23:00:00.000+01:00"}],"tomorrow":[{"total":4.1461,"energy":3.2294,"tax":0.9167,"startsAt":"2022-12-16T00:00:00.000+01:00"},{"total":4.0346,"energy":3.1402,"tax":0.8944,"startsAt":"2022-12-16T01:00:00.000+01:00"},{"total":3.9266,"energy":3.0538,"tax":0.8728,"startsAt":"2022-12-16T02:00:00.000+01:00"},{"total":3.7923,"energy":2.9463,"tax":0.846,"startsAt":"2022-12-16T03:00:00.000+01:00"},
< snip >
{"total":6.629,"energy":5.2157,"tax":1.4133,"startsAt":"2022-12-16T16:00:00.000+01:00"},{"total":6.9894,"energy":5.504,"tax":1.4854,"startsAt":"2022-12-16T17:00:00.000+01:00"},{"total":6.7873,"energy":5.3424,"tax":1.4449,"startsAt":"2022-12-16T18:00:00.000+01:00"},{"total":6.4826,"energy":5.0986,"tax":1.384,"startsAt":"2022-12-16T19:00:00.000+01:00"},{"total":5.3034,"energy":4.1552,"tax":1.1482,"startsAt":"2022-12-16T20:00:00.000+01:00"},{"total":4.6654,"energy":3.6448,"tax":1.0206,"startsAt":"2022-12-16T21:00:00.000+01:00"},{"total":4.1786,"energy":3.2554,"tax":0.9232,"startsAt":"2022-12-16T22:00:00.000+01:00"},{"total":3.802,"energy":2.9541,"tax":0.8479,"startsAt":"2022-12-16T23:00:00.000+01:00"}]}}}}}}

Das geht dann soweit...
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

Zitat von: hyper2910 am 20 November 2022, 10:27:31
Nur bekomme ich das ganze nicht hin.

Ich würde gerne die Realtimesubscription als Reading haben.
Alle Daten, bis auf die Realtimesubscription werden per HTTPMod abgefragt. Das funktioniert auch soweit.
Wenn Du jedoch live Daten haben möchtest, geht das nur über einen web socket, über den man dann die Daten Streamen kann.
Auf der Developer Seite läuft Java, was den web socket offen hält und darüber die Live Daten anzeigt. Das geht so mit der HTTP API nicht.
Zitat
Subscribing to data with websockets

While queries and mutations are typically handled over HTTP some data are better suited to handled as streams over a persistent connection (web socket). Subscriptions follows the same semantics as queries and mutations - the shape of what is returned/sent from the server is determined by the client when invoking the api:

subscription{
  liveMeasurement(homeId:"96a14971-525a-4420-aae9-e5aedaa129ff") {
    timestamp
    power
    maxPower
  }
}

Since subscriptions are handled over web sockets they can be a bit more challenging to handle from the client's perspective. Many GraphQL client libraries provide good abstractions for this though. Note that the maximum number of open websockets is limited to two.

Jetzt ist die Frage, warum möchtest Du zuerst die Daten zu Tibber senden, was über den Zähler läuft und sie dann anschließend live über das Internet bei Tibber wieder streamen lassen.
Es wäre besser und auch schneller das direkt lokal über ein Smart Meter zu machen, wie es von Wechselrichtern verwendet wird.
Sollte ansonsten mal die Internetverbindung weg sein, würde eine Eigenverbrauchssteuerung zu dem Zeitpunkt keine Werte mehr bekommen.

Für eine tarifliche Steuerung reichen eigentlich die Preise pro Stunde aus, nach denen Du dann die Verbraucher ein/aus schaltest.

Bei der API habe ich nun diese Abfragen identifiziert, die man auch miteinander kombinieren kann, also z.B. nur address oder auch address mit owner zusammen.

{ "query": "{viewer {home(id:\"%%homeID%%\") {consumption(resolution: HOURLY, last: 100) {nodes {from to cost unitPrice unitPriceVAT consumption consumptionUnit}}}}}" }


{ "query": "{viewer {home(id:\"%%homeID%%\") {currentSubscription {priceInfo {current {total energy tax startsAt} today {total energy tax startsAt} tomorrow {total energy tax startsAt}}}}}}" }
{ "query": "{viewer {home(id:\"%%homeID%%\") {currentSubscription {priceInfo {current {total energy tax startsAt}}}}}}" }

{ "query": "{viewer {home(id:\"%%homeID%%\") {address {address1 address2 address3 postalCode city country latitude longitude} owner {firstName lastName contactInfo {email mobile}}}}}" }


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

haneub

Hallo,
ich verwende im Moment einen eigenen USB IR-Kopf um meinen Stromzähler ca alle 30s auszulesen und damit die Leistung der go-e Wallbox an die Photovoltaikleistung anzupassen.
Funktioniert subba.
Nun möchte ich zu Tibber wechseln um in den energiereichen Zeiten im Winter auch zu laden. Bei Tibber wird der Tibber Kopf aber an die Stelle gesetzt, wo jetzt mein IR Lesekopf ist.

Wie bekomme ich die aktuelle Leistung alle ca. 30s in fhem wenn ein Tibber Pulse installiert ist?

Im Demo Modus von https://developer.tibber.com/explorer sehe ich einen ca. sekündlich aktualisierten "power" Wert. Kann ich den alle 30s bekommen?
Wie? Gibts ein fhem tibber modul?

Herzlichen Dank, Harald

hyper2910

Das hätte ich auch gerne. Habe es aber noch nicht geschafft
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

xerion

Um den Tibber Pulse nutze ich NodeRed und die offiziellen Tibber  +Nodes. Die Daten sende ich einfach per MQTT an FHEM. Aus Erfahrung aber würde ich den Pulse nicht für eine Regelung nutzen, denn Abbrüche kommen gelegentlich vor. Das ist eher nur zum "gucken" und tracken gedacht. Wer sicher ein Wert für eine Regelung benötigt, sollte sich lieber ein Smart Meter einbauen und das dann per Modbus abfragen.
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

hyper2910

 Kannst du erklären wie,du das mit NodeRed machst?
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

xerion

Zitat von: hyper2910 am 02 Februar 2023, 20:48:06
Kannst du erklären wie,du das mit NodeRed machst?

Wie NodeRed funktioniert kann man über diverse Tutorials in Erfahrung bringen.
Für Tibber nimmst du dann das hier:
https://github.com/bisand/node-red-contrib-tibber-api
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

haneub

Zitat von: xerion am 02 Februar 2023, 20:41:12
Um den Tibber Pulse nutze ich NodeRed und die offiziellen Tibber  +Nodes. Die Daten sende ich einfach per MQTT an FHEM. Aus Erfahrung aber würde ich den Pulse nicht für eine Regelung nutzen, denn Abbrüche kommen gelegentlich vor. Das ist eher nur zum "gucken" und tracken gedacht. Wer sicher ein Wert für eine Regelung benötigt, sollte sich lieber ein Smart Meter einbauen und das dann per Modbus abfragen.
Herzlichen Dank, werde ich dann probieren. Wie viele / häufig sind die Abbrüche? Wenns nur ab und zu nicht geht wäre das egal (ist ja nur ein optimieren der Auto-Ladung anhand des Überschusses) Wenns mal nicht klappt ist das nicht sehr schlimm. Wird dann halt entweder a weng zu viel oder zu wenig vom Netz bezogen.
Aber erst mal herzlichen Dank!