Tibber in Dashboard anzeigen

Hi
Versuche gerade Tibber (aktuellen Strompreise) in homeassistant im Dashboard anzeigen zu lassen.

Ich bin nicht so der Programmierer und github und ich…räuser. nicht so die besten Freunde :frowning:

evtl hättet ihr einen Tip für mich? Das hier hab ich gefunden:

und

aber irgendwie weiß ich nun nicht weiter :frowning:

keiner Tips?

Habe mittlerweile eine Grafik, aber das sieht man nur die Vergangenheit bis zur aktuellen Stunde. Ich hab in der app aber ja auch den Strompreis der nächsten Stunden!?
dieser wird mir hier nicht angezeigt.

Moin,

was hast du denn bisher umgesetzt. Gibts einen Code dazu?

Gruß
Basti

Hi Sunpower,

hast du es jetzt hin bekommen mit der Grafik für den Preis heute und morgen ?

Das vermisse ich auch in HA bei openHAB ging das.

jein.
hinbekommen ja, aber nicht so schön, wie ich es haben wollte… :frowning: irgendwann steck ich nochmal Zeit rein, oder finde wen, der es kann.

Hi,

also ich hab es so gelöst, das ich mir einen REST Sensor angelegt habe und diesen in einer APEX Chart Darstelle, das sieht dann so aus (ab 13 Uhr ist dann der Preis von Morgen da, wie in der App auch):

image

Hier der Sensor, der bei mir in der sensors.yaml sitzt (bei Authorization deinen API Key Eintragen):

- platform: rest
  name: Tibber Prices
  resource: https://api.tibber.com/v1-beta/gql
  method: POST
  payload: '{ "query": "{ viewer { homes { currentSubscription { status priceInfo { current { total } today { total } tomorrow { total } } } } } }" }'
  json_attributes_path: "$.data.viewer.homes[0].currentSubscription.priceInfo"
  json_attributes:
    - today
    - tomorrow
  value_template: "{{ value_json.data.viewer.homes[0].currentSubscription.priceInfo.current.total | float }}"
  scan_interval: 30
  headers:
    Authorization: HIER DEIN API SCHLÜSSEL EINTRAGEN
    Content-Type: application/json
    User-Agent: REST
  unit_of_measurement: EUR/kWh

Und hier die Config für die APEX Chart:

type: custom:apexcharts-card
experimental:
  color_threshold: true
all_series_config:
  unit: Cent/kWh
apex_config:
  grid:
    show: true
    borderColor: '#E0E0E0'
  chart:
    height: 250px
  tooltip:
    enabled: true
    followCursor: false
    x:
      show: false
    fixed:
      enabled: true
header:
  show: true
  title: Strompreis
  show_states: true
  colorize_states: true
  standard_format: false
graph_span: 48h
now:
  show: true
  color: 9E9E9E
span:
  start: day
series:
  - entity: sensor.tibber_prices
    name: Preis
    show:
      in_header: before_now
      name_in_header: false
    color_threshold:
      - value: 0
        color: 4DD0E1
      - value: 10
        color: 26A69A
      - value: 15
        color: 4CAF50
      - value: 20
        color: 7CB342
      - value: 25
        color: FBC02D
      - value: 30
        color: EF6C00
      - value: 40
        color: B71C1C
    type: line
    curve: stepline
    extend_to: false
    stroke_width: 2
    float_precision: 2
    data_generator: |
      const noon = new Date()
      noon.setHours(0, 0, 0, 0)
      const prices = entity.attributes.today.concat(entity.attributes.tomorrow);
      const data = [];
      for(let i = 0; i < prices.length; i++) {
        data.push([noon.getTime() + i * 1000 * 3600, prices[i].total * 100])
      }
      return data;

3 „Gefällt mir“

Sehr cool
Wo bekomme ich den tibber api key her?

https://developer.tibber.com/docs/overview

Hier mit deinem Tibber Account einloggen und dann auf API Explorer klicken bzw. dann steht er schon da unter Access Token

1 „Gefällt mir“

ok hab ich.
auch habe ich eine sensor.yaml erstellt und den Code eingefügt.
doch wenn ich nun den apex chart erstelle, kommt ganz kurz die Grafik (ohne Werte) und dann das hier.


So geht es mir im Moment auch.
Hatte auch keine sensor.yaml, daher hab ich mir eine erstellt. Hab auch schon versucht mir einen Helfer als Sensor anzulegen, das ging auch nicht. Leider bin ich auch noch relativ neu mit HA unterwegs und hab noch nicht so den Durchblick.

@Op3ra7or262 könntest du die Vorgehensweise ein wenig genauer ausführen damit ein Neuling das auch umsetzen kann?

Also, die Yaml sollte sensors.yaml heißen.

Zusätzlich muss in der configuration.yaml auch dieses drinnstehen:

sensor: !include sensors.yaml

Alternativ kann man auch den Restsensor direkt in die configuration.yaml packen, beginnen mit:

sensor:
-plattform……

also dann alles darunter was ich oben gepostet habe.

Und wichtig nachdem anlegen HA neustarten, sonst findet er den Sensor auch nicht

Hier mal was zum Sensor:

So sieht es bei mir aus

:crayon:by HarryP: Zusammenführung Doppelpost

1 „Gefällt mir“

dankeschön
also wenn ich:
sensor: !include sensors.yaml

einfüge in die conf.yaml, dann kommt ein fehler.
duplicated mapping key…437

hab da was drin von meiner Wärmepumpe.
kann ich da das von dir irgendwie dazu schreiben? wenn ja wie?
oder würde das die Zeilen von meiner WP beeinflussen?

Dann lass das einfach raus und schreib unter deinen ganzen sensor: sachen die du schon hast mein kopierten code.

So wie du jetzt schon das mit:
Sensor:
-plattform: template
.
.
.
-plattform: rest
usw.

Alternativ kannst du die ganzen templates auch auslagern in eine template.yaml, aber lass es einfach so, hatte ich am Anfang auch so

also wenn ich das so mache wie ich dich verstanden habe, meckert HA auch.
denke hier stimmt was nicht mit den Leerzeichen oder?
Und dann die sensors.yaml wieder löschen?

# Conversion of numerical returncodes to text
# this is German language, change accordingly. English definitions are found in the Modbus spec: https://lambda-wp.at/wp-content/uploads/2023/04/Modbus-Protokoll-und-Beschreibung.pdf
sensor:
  - platform: template
    sensors:
      eu13l_ambient_operating_state_txt:
        friendly_name: "EU13L_Ambient_Operating_State_txt"
        value_template: >
          {{ ['Off', 'Automatik', 'Manual', 'Error'][states('sensor.eu13l_ambient_operating_state')|int] }}
      eu13l_emgr_operating_state_txt:
        friendly_name: "EU13L_EMgr_Operating_State_txt"
        value_template: >
          {{ ['Off', 'Automatik', 'Manual', 'Error', 'Offline'][states('sensor.eu13l_emgr_operating_state')|int] }}
      eu13l_hp1_error_state_txt:
        friendly_name: "EU13L_Hp1_Error_State_txt"
        value_template: >
          {{ ['OK', 'Message', 'Warnung', 'Alarm', 'Fault'][states('sensor.eu13l_hp1_error_state')|int] }}
      eu13l_hp1_state_txt:
        friendly_name: "EU13L_Hp1_State_txt"
        value_template: >
          {{ ['Init', 'Reference', 'Restart-Block', 'Ready', 'Start Pumps', 'Start Compressor', 'Pre-Regulation', 'Regulation', 'Not Used', 'Cooling', 'Defrosting', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Stopping', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Fault-Lock', 'Alarm-Block', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Not Used', 'Error-Reset'][states('sensor.eu13l_hp1_state')|int] }}
      eu13l_hp1_operating_state_txt:
        friendly_name: "EU13L_Hp1_Operating_State_txt"
        value_template: >
          {{ ['Standby', 'Central Heating', 'Domestic Hot Water', 'Cold Climate', 'Circulate', 'Defrost', 'Off', 'Frost', 'Standby-Frost', 'Not used', 'Summer', 'Holiday', 'Error', 'Warning', 'Info-Message', 'Time-Block', 'Release-Block', 'Mintemp-Block', 'Firmware-Download'][states('sensor.eu13l_hp1_operating_state')|int] }}
      eu13l_hp1_request_type_txt:
        friendly_name: "EU13L_Hp1_Request-Type_txt"
        value_template: >
          {{ ['No Request', 'Flow Pump Circulation', 'Central Heating', 'Central Cooling', 'Domestic Hot Water'][states('sensor.eu13l_hp1_request-type')|int] }}
      eu13l_boil1_operating_state_txt:
        friendly_name: "EU13L_Boil1_Operating_State_txt"
        value_template: >
          {{ ['Standby', 'Domestic Hot Water', 'Legio', 'Summer', 'Frost', 'Holiday', 'Prio-Stop', 'Error', 'Off', 'Prompt-DHW', 'Trailing-Stop', 'Temp-Lock', 'Standby-Frost'][states('sensor.eu13l_boil1_operating_state')|int] }}
      eu13l_buff1_operating_state_txt:
        friendly_name: "EU13L_Buff1_Operating_State_txt"
        value_template: >
          {{ ['Standby', 'Heating', 'Cooling', 'Summer', 'Frost', 'Holiday', 'Prio-Stop', 'Error', 'Off', 'Standby-Frost'][states('sensor.eu13l_buff1_operating_state')|int] }}
      eu13l_hc1_operating_state_txt:
        friendly_name: "EU13L_Hc1_Operating_State_txt"
        value_template: >
          {{ ['Heating', 'Eco', 'Cooling', 'Floor-dry', 'Frost', 'Max-Temp', 'Error', 'Service', 'Holiday', 'Central Heating Summer', 'Central Cooling Winter', 'Prio-Stop', 'Off', 'Release-Off', 'Time-Off', 'Standby', 'Standby-Heating', 'Standby-Eco', 'Standby-Cooling', 'Standby-Frost', 'Standby-Floor-dry'][states('sensor.eu13l_hc1_operating_state')|int] }}
      eu13l_hc1_operating_mode_txt:
        friendly_name: "EU13L_Hc1_Operating_Mode_txt"
        value_template: >
          {{ ['Off', 'Manual', 'Automatik', 'Auto-Heating', 'Auto-Cooling', 'Frost', 'Summer', 'Floor-dry'][states('sensor.eu13l_hc1_operating_mode')|int] }}
  - platform: rest
  name: Tibber Prices
  resource: https://api.tibber.com/v1-beta/gql
  method: POST
  payload: '{ "query": "{ viewer { homes { currentSubscription { status priceInfo { current { total } today { total } tomorrow { total } } } } } }" }'
  json_attributes_path: "$.data.viewer.homes[0].currentSubscription.priceInfo"
  json_attributes:
    - today
    - tomorrow
  value_template: "{{ value_json.data.viewer.homes[0].currentSubscription.priceInfo.current.total | float }}"
  scan_interval: 30
  headers:
    Authorization: HIER DEIN API SCHLÜSSEL EINTRAGEN
    Content-Type: application/json
    User-Agent: REST
  unit_of_measurement: EUR/kWh
          
          

Die sensors.yaml kann dann wieder gelöscht werden.

Genau mit den Leerzeichen passte es nicht.

Muss so sein:

- plattform: rest
  name: …..
  resource: ….

usw.

@Op3ra7or262 besten Dank hat jetzt alles geklappt. :+1: :+1:

Ich habe dein Script 1:1 in die Sensors.yaml kopiert in der config.yaml den sensor: Eintrag hinzugefügt und HA neu gestartet. Das zweite Script auch wieder 1:1 in Apex Karte kopiert und es läuft.

Perfekt, so soll es sein.

du glücklicher :smiley:
bei mir kommt noch diese Meldung. (siehe Bild)

die config.yaml wurde akzeptiert, gespeichert und ha neu gestartet.

wieso sucht er immernoch die tibber_prices entität?

aber wenn ich so in den code schaue…wird diese doch auch nirgends “erzeugt” oder verstehe ich das falsch?

Zeig nochmal wie deine config.yaml jetzt aussieht.

Er legt normal dann ganz einfach einen Sensor an.

1 „Gefällt mir“