marlar

REST baseret sensor for elpriser baseret på energidataservice.dk

May 10th, 2022 (edited)
1,763
1
Never
3
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 3.21 KB | None | 1 0
  1. sensor:
  2.   - platform: rest
  3.     name: elpriser_raw
  4.     value_template: "{{ value_json.success }}"
  5.     json_attributes_path: "$.result"
  6.     json_attributes:
  7.      - updatetime
  8.       - region
  9.       - records
  10.     resource_template: >
  11.      {% set s = {
  12.         'region': 'DK2',
  13.         'vat': 25,
  14.         'abonnement': 0.00,
  15.         'elafgift': 0.95375,
  16.         'systemydelse': 0.14,
  17.         'transport_lavlast': 0.3754,
  18.         'transport_spidslast': 0.9564,
  19.         } %}
  20.       {% set cdt = now() %}
  21.       {% set transport = s.transport_spidslast if (cdt.month >= 10 or cdt.month <= 3) and cdt.hour >= 17 and cdt.hour < 20 else s.transport_lavlast %}
  22.       {% set additional_cost = s.abonnement + s.elafgift + s.systemydelse + transport %}
  23.       {% set EUR = states('sensor.currency_eur_dkk') | float(7.44060) %}
  24.       https://api.energidataservice.dk/datastore_search_sql?sql=SELECT "SpotPriceEUR"/1000*{{ EUR }} AS "PriceDKK" , ROUND(CAST(FLOAT8 ("SpotPriceEUR"*{{ EUR/1000*(1+s.vat/100) }}%2B{{additional_cost}}) as numeric),2) AS "TotalPriceDKK" ,"HourDK" FROM "elspotprices" WHERE "PriceArea"='{{s.region}}' AND "HourDK" >= '{{ now().date() }}' order by "HourDK"&region={{ s.region }}&updatetime={{ now() }}
  25.     scan_interval: 3600
  26.  
  27.   - platform: template
  28.     sensors:
  29.       elpriser:
  30.         friendly_name: "Elpriser fra energidataservice.dk"
  31.         value_template: "{{ state_attr('sensor.elpriser_raw', 'records')[now().hour + (now().date() | string > state_attr('sensor.elpriser_raw', 'updatetime'))*24].TotalPriceDKK }}"
  32.         device_class: energy
  33.         attribute_templates:
  34.           current_price: "{{ states('sensor.elpriser') }}"
  35.           updatetime: "{{ state_attr('sensor.elpriser_raw', 'updatetime') }}"
  36.           currency: DKK
  37.           country: Denmark
  38.           region: "{{ state_attr('sensor.elpriser_raw', 'region') }}"
  39.           unit: kWh
  40.           min: >
  41.            {% set ns = namespace(value=100) %}
  42.             {% for r in state_attr("sensor.elpriser_raw", "records") %}
  43.             {% set ns.value = min(ns.value, r.TotalPriceDKK | float) %}
  44.             {% endfor %}
  45.             {{ ns.value }}
  46.           max: >
  47.            {% set ns = namespace(value=0) %}
  48.             {% for r in state_attr("sensor.elpriser_raw", "records") %}
  49.             {% set ns.value = max(ns.value, r.TotalPriceDKK | float) %}
  50.             {% endfor %}
  51.             {{ ns.value }}
  52.           priser: "{{ state_attr('sensor.elpriser_raw', 'records') }}"
  53.         unit_of_measurement: "DKK/kWh"
  54.  
  55.   - platform: rest
  56.     name: currency_eur_dkk
  57.     value_template: "{{ value_json.response[0].average_midpoint }}"
  58.     json_attributes_path: "$.response[0]"
  59.     json_attributes:
  60.      - base_currency
  61.       - quote_currency
  62.       - start_time
  63.       - open_time
  64.       - close_time
  65.       - average_bid
  66.       - average_ask
  67.       - average_midpoint
  68.       - high_bid
  69.       - high_ask
  70.       - high_midpoint
  71.       - low_bid
  72.       - low_ask
  73.       - low_midpoint
  74.     resource_template: https://cc-api.oanda.com/cc-api/v1/currencies?base=EUR&quote=DKK&data_type=general_currency_pair&start_date={{ now().date() }}&end_date={{ now().date() }}
  75.     headers:
  76.           Content-Type: application/json
  77.     scan_interval: 3600
  78.  
  79.  
Comments
  • dklarsbach
    1 year
    # text 0.13 KB | 0 0
    1. Hi, Thanks for the great code :-). After updating to the newest HA version, it stopped working. Any changes or is just me?
    2. Thanks.
  • marlar
    1 year
    # text 0.15 KB | 0 0
    1. Unfortunately Energidataservice has taken the API down :-(
    2. https://www.energidataservice.dk/news
    3.  
    4. I hope to get some time soon to implement the new API.
Add Comment
Please, Sign In to add comment