Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Nordpool sensor for Home Assistant


hellowlol

Anbefalte innlegg

1 minute ago, Tander said:

Var i samme båt som deg, skiftet fra Homey til Home Assistant for 3/4 år siden. Bratt lærekurve, men langt flere muligheter i HA.

 

Du kan vise både i dag og i morgen i samme Apex graf. Gi beskjed om jeg skal legge ut koden jeg bruker til det.

Ja det er det, men jeg har for mye zigbee og z-wave så selv om jeg har striglede nettverk så er det for ustabilt.

Og selvsagt frister det med alt det ekstra HA tilbyr, så når valget stod mellom den nye Homey eller HA så tok jeg skrittet ut. Jeg får se over sommeren om jeg går tilbake eller ikke. Akkurat nå har jeg ikke kontroll i det hele tatt og forstår vel omtrent 11% så kan ikke bedømme noe. Jeg gikk jo i sin tid fra smartthings til homey fordi jeg var lei av tukling osv, så nå er jeg jo gått enda lengre enn ST 🤣

Men ja, legg gjerne ut kode som kan copy/paste, jeg tror kanskje jeg lærer endel av det. Gjorde i alle fall det i ST

Lenke til kommentar
Del på andre sider

type: custom:apexcharts-card
header:
  show: true
  title: Strømpriser
  show_states: true
  colorize_states: false
now:
  show: true
  label: Nå
  color: red
graph_span: 48h
span:
  start: day
  offset: '-00h'
apex_config:
  xaxis:
    labels:
      format: HH
      show: true
  chart:
    height: 173px
    zoom:
      enabled: false
    toolbar:
      show: false
      tools:
        zoom: false
        zoomin: false
        zoomout: false
        pan: false
        reset: true
  tooltip:
    fixed:
      enabled: false
      position: topLeft
yaxis:
  - id: first
    apex_config:
      min: 0
      max: auto
      opposite: true
      forceNiceScale: true
      decimalsInFloat: 2
      labels:
        show: true
all_series_config:
  stroke_width: 4
series:
  - entity: sensor.nordpool_kwh_krsand_nok_2_10_025
    yaxis_id: first
    name: Pris i dag
    type: area
    curve: stepline
    extend_to: now
    float_precision: 3
    stroke_width: 3
    opacity: 0.3
    color: goldenrod
    show:
      in_header: false
      legend_value: false
    data_generator: |
      return entity.attributes.raw_today.map((p) => {
        return [new Date(p.start), p.value];
      });
  - entity: sensor.nordpool_kwh_krsand_nok_2_10_025
    yaxis_id: first
    name: Pris i morgen
    type: area
    curve: stepline
    extend_to: now
    float_precision: 3
    stroke_width: 3
    opacity: 0.3
    color: orange
    show:
      in_header: false
      legend_value: false
    data_generator: |
      return entity.attributes.raw_tomorrow.map((p) => {
        return [new Date(p.start), p.value];
        });
  - entity: sensor.nordpool_kwh_krsand_nok_2_10_025
    yaxis_id: first
    name: Pris nå
    float_precision: 2
    stroke_width: 0
    opacity: 0.09
    color: red
    show:
      in_header: true
      legend_value: false

 

Lenke til kommentar
Del på andre sider

  • 7 måneder senere...

Jeg har lekt litt med denne nordpool sensoren, og jeg har heller ikke klart å få inn noen måte å bruke workday sensoren, så det er manuelt for nå. Men det jeg ikke skjønner er at jeg bommer på prisen med ca 1 øre her og der. Det har jo ingenting å si, men jeg skjønner ikke helt hvorfor. Elvia har alle priser inkludert i på slaget sitt ifm deres dokumentasjon (se her https://www.elvia.no/nettleie/alt-om-nettleiepriser/nettleiepriser-for-privatkunder/). Så langt ser dette ut å være 99% riktig men om noen skjønner hvorfor den noen ganger bommer så tar jeg gjerne imot tips. 


 

  - platform: nordpool
    VAT: true
    currency: "NOK"
    low_price_cutoff: 0.95
    region: "Oslo"
    precision: 4
    price_type: kWh
    friendly_name: "Nordpool med Elvia"
    additional_costs: >-
        {% set s = {
          "winter_day": 0.3959,
          "winter_night": 0.3209,
          "summer_day": 0.4825,
          "summer_night": 0.4075,
          "other": 0.01
        } %}
        {% set helligdager = ["0101",
                              "0328",
                              "0329",
                              "0401",
                              "0501",
                              "0509",
                              "0517",
                              "0520",
                              "1225",
                              "1226"] %}
        {# Strømstøtte på 90% på priser over 91,25 øre (ink. mva) trekkes ifra #}
        {% set pb = max((current_price - 0.9125) * 0.9, 0.0) %}
        {# Er i dag en ukedag, og ikke helligdag? #}
        {% if now().isoweekday() <= 5 and now().strftime("%m%d") not in helligdager %}
            {# Sommerpriser fra april til og med desember #}
            {% if now().month >= 4 and now().month <= 12 %}
                {% if now().hour >= 6 and now().hour <= 22 %} {# dagtid mellom 5 og 22 #}
                    {{ (s.summer_day + s.hourly_fixed_cost + s.other - pb) | float }}
                {% else %} {# ellers er det natt #}
                    {{ (s.summer_night + s.hourly_fixed_cost + s.other - pb) | float }}
                {% endif %}
            {% else %} {# ellers er det vinter #}
                {% if now().hour >= 6 and now().hour <= 22 %}
                    {{ (s.winter_day + s.hourly_fixed_cost + s.other - pb) | float }}
                {% else %}
                    {{ (s.winter_night + s.hourly_fixed_cost + s.other - pb) | float }}
                {% endif %}
            {% endif %}
        {% else %} {# ellers er det helg eller helligdag #}
            {% if now().month >= 4 and now().month <= 12 %}
                {{ (s.summer_night + s.hourly_fixed_cost + s.other - pb) | float }}
            {% else %}
                {{ (s.winter_night + s.hourly_fixed_cost + s.other - pb) | float }}
            {% endif %}
        {% endif %}

 

Har lurt på om det kan være MVA kanskje. At jeg burde regne alt før moms og legge på moms til slutt. Men her _skal_ jo alt være inkludert MVA. Jeg har også prøvd litt forskjellig på precision, men jeg tror alt over 3 gir ganske gode resultater. 

Lenke til kommentar
Del på andre sider

Hvorfor legger du da til påslag selv på 1 øre hvis Elvia har alle påslag inkludert, som du skriver?


Og hvor setter du s.hourly_fixed_cost til en fornuftig verdi?

Lenke til kommentar
Del på andre sider

Dette er helt feil paste 😛 Klassisk copy/paste error. Sorry!

 

  - platform: nordpool
    VAT: true
    currency: "NOK"
    low_price_cutoff: 0.95
    region: "Oslo"
    precision: 3
    price_type: kWh
    friendly_name: "Nordpool med Elvia"
    additional_costs: >-
        {% set s = {
          "winter_day": 0.3959,
          "winter_night": 0.3209,
          "summer_day": 0.4825,
          "summer_night": 0.4075,
          "hourly_fixed_cost": 0.01
        } %}
        {% set helligdager = ["0101",
                              "0328",
                              "0329",
                              "0401",
                              "0501",
                              "0509",
                              "0517",
                              "0520",
                              "1225",
                              "1226"] %}
        {# Strømstøtte på 90% på priser over 91,25 øre (ink. mva) trekkes ifra #}
        {% set pb = max((current_price - 0.9125) * 0.9, 0.0) %}
        {# Er i dag en ukedag, og ikke helligdag? #}
        {% if now().isoweekday() <= 5 and now().strftime("%m%d") not in helligdager %}
            {# Sommerpriser fra april til og med desember #}
            {% if now().month >= 4 and now().month <= 12 %}
                {% if now().hour >= 6 and now().hour <= 22 %} {# dagtid mellom 5 og 22 #}
                    {{ (s.summer_day + s.hourly_fixed_cost - pb) | float }}
                {% else %} {# ellers er det natt #}
                    {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
                {% endif %}
            {% else %} {# ellers er det vinter #}
                {% if now().hour >= 6 and now().hour <= 22 %}
                    {{ (s.winter_day + s.hourly_fixed_cost - pb) | float }}
                {% else %}
                    {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
                {% endif %}
            {% endif %}
        {% else %} {# ellers er det helg eller helligdag #}
            {% if now().month >= 4 and now().month <= 12 %}
                {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
            {% else %}
                {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
            {% endif %}
        {% endif %}

 

Jeg lekte litt med "other" og "hourly_fixed_cost" (basert på din versjon @stigvi, og fra dokumentasjonen for nordpool på HACS). Denne er den jeg for øyeblikket kjører. hourly_fixed_cost brukes kun fordi jeg ser at jeg får et resultat som typisk er ca 1 øre for lavt. Noen ganger 2 øre. Så derfor er den lagt til, men i praksis skal den ikke være nødvendig. 

Eksempel akkurat nå, her fra sensorens attribute:

 

- start: '2024-07-25T11:00:00+02:00'
  end: '2024-07-25T12:00:00+02:00'
  value: 0.8661

 

Mens strømprisen akkurat nå er:

image.thumb.png.a3ecef9b835dcf930076b6eafac37a24.png

Lenke til kommentar
Del på andre sider

For meg er det uklart hvilken pris du mener er feil. Elvia er vel en netteier. Er det deres pris som er feil? Eller den du får i fra Nordpool sammenlignet med det du betaler hos din strømleverandør. Du nevner ikke hvem det er.

Jeg bruker selv Vibb og jeg mistenker at de bruker en annen vekslingskurs fra euro til kroner enn det Nordpool gjør.

Lenke til kommentar
Del på andre sider

God poeng! Jeg bruker Tibber, de har vel et påslag per kWt ... jeg glemmer at de har en rolle å spille her. Basert på rask research ser det ut til at Tibber legger til 2,95 øre pr. kWt så da er fast påslag 0.0295 om jeg skjønner det rett. 

Med påslag på 0.0295 (hourly_fixed_cost) ble prisen min for samme timen:
 

- start: '2024-07-25T11:00:00+02:00'
  end: '2024-07-25T12:00:00+02:00'
  value: 0.8756

 

som er det samme som 87,6 øre som Tibber sier det koster i appen. 🙂 Da tror jeg vi er på rett spor. 

  • Like 1
Lenke til kommentar
Del på andre sider

  • 2 uker senere...

Bare en liten oppdatering. Jeg bruker nå workday sensor og det ser ut som det fungerer så langt. Skal følge med for å trippelt-sjekke men her er koden om noen andre vil prøve. 

 

For å få dette til må du har workday integrasjonen satt opp og den må hete binary_sensor.arbiedsdag_sensor (eller endre koden under). Jeg har testet både i configuration.yaml og med integrasjonen direkte i GUI i HA. Sistenevnte betyr at man bare limer inn denne delen i "mal for tilleggskostnader".
image.png.262803c1c12f75dd4a2f18f825c7a317.png
Den går ikke å redigere etterpå men du kan bare slette den og legg til en ny når du vil. Jeg har lagt hele configen i configuration.yaml for safekeeping og fremtidige justeringer og så bare limte jeg den inn i GUI. 

 

    {% set s = {
      "winter_day": 0.3959,
      "winter_night": 0.3209,
      "summer_day": 0.4825,
      "summer_night": 0.4075,
      "hourly_fixed_cost": 0.0295
    } %}
    {# Strømstøtte på 90% på priser over 91,25 øre (ink. mva) trekkes ifra #}
    {% set pb = max((current_price - 0.9125) * 0.9, 0.0) %}
    {# Er det arbeidsdag? #}
    {% if is_state('binary_sensor.arbeidsdag_sensor', 'on') %}
        {# Sommerpriser fra april til og med desember #}
        {% if now().month >= 4 and now().month <= 12 %}
            {% if now().hour >= 6 and now().hour <= 22 %} {# dagtid mellom 6 og 22 #}
                {{ (s.summer_day + s.hourly_fixed_cost - pb) | float }}
            {% else %} {# ellers er det natt #}
                {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
            {% endif %}
        {% else %} {# ellers er det vinter #}
            {% if now().hour >= 6 and now().hour <= 22 %}
                {{ (s.winter_day + s.hourly_fixed_cost - pb) | float }}
            {% else %}
                {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
            {% endif %}
        {% endif %}
    {% else %} {# ellers er det helg eller fridag (helligdag) #}
        {% if now().month >= 4 and now().month <= 12 %}
            {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
        {% else %}
            {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
        {% endif %}
    {% endif %}


Jeg har nå testet gjennom flere arbeidsdager og helgedager og det fungerer knirkefritt. 🙂 

Husk å sjekke alle kostnadene i s.array øverst. Dette er Elvia eller hva enn du har som nettleverandør, hourly additional cost er Tibber sitt faste påslag i mitt tilfelle. 

Lenke til kommentar
Del på andre sider

sbarmen skrev (3 timer siden):

Bare en liten oppdatering. Jeg bruker nå workday sensor og det ser ut som det fungerer så langt. Skal følge med for å trippelt-sjekke men her er koden om noen andre vil prøve. 

 

For å få dette til må du har workday integrasjonen satt opp og den må hete binary_sensor.arbiedsdag_sensor (eller endre koden under). Jeg har testet både i configuration.yaml og med integrasjonen direkte i GUI i HA. Sistenevnte betyr at man bare limer inn denne delen i "mal for tilleggskostnader".
image.png.262803c1c12f75dd4a2f18f825c7a317.png
Den går ikke å redigere etterpå men du kan bare slette den og legg til en ny når du vil. Jeg har lagt hele configen i configuration.yaml for safekeeping og fremtidige justeringer og så bare limte jeg den inn i GUI. 

 

    {% set s = {
      "winter_day": 0.3959,
      "winter_night": 0.3209,
      "summer_day": 0.4825,
      "summer_night": 0.4075,
      "hourly_fixed_cost": 0.0295
    } %}
    {# Strømstøtte på 90% på priser over 91,25 øre (ink. mva) trekkes ifra #}
    {% set pb = max((current_price - 0.9125) * 0.9, 0.0) %}
    {# Er det arbeidsdag? #}
    {% if is_state('binary_sensor.arbeidsdag_sensor', 'on') %}
        {# Sommerpriser fra april til og med desember #}
        {% if now().month >= 4 and now().month <= 12 %}
            {% if now().hour >= 6 and now().hour <= 22 %} {# dagtid mellom 6 og 22 #}
                {{ (s.summer_day + s.hourly_fixed_cost - pb) | float }}
            {% else %} {# ellers er det natt #}
                {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
            {% endif %}
        {% else %} {# ellers er det vinter #}
            {% if now().hour >= 6 and now().hour <= 22 %}
                {{ (s.winter_day + s.hourly_fixed_cost - pb) | float }}
            {% else %}
                {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
            {% endif %}
        {% endif %}
    {% else %} {# ellers er det helg eller fridag (helligdag) #}
        {% if now().month >= 4 and now().month <= 12 %}
            {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
        {% else %}
            {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
        {% endif %}
    {% endif %}


Jeg har nå testet gjennom flere arbeidsdager og helgedager og det fungerer knirkefritt. 🙂 

Husk å sjekke alle kostnadene i s.array øverst. Dette er Elvia eller hva enn du har som nettleverandør, hourly additional cost er Tibber sitt faste påslag i mitt tilfelle. 



Når prisene kommer klokken 1400 på en fredag ettermiddag, hvordan vet du at prisen på lørdag ikke er for en arbeidsdag?

Eller for å spørre annerledes - du er altså ikke opptatt av at prisene i tomorrow attributtene skal ha riktig pris?

Endret av stigvi
Lenke til kommentar
Del på andre sider

Good point 🙂 Det har jeg helt glemt, godt du er djevelens advokat her! 

 

Jeg kan lage en workday med 1 dag offset for å håndtere morgendagens priser mer korrekt. 

 

Burde ikke noe slikt virke? Jeg tester!

 

{% set s = {
  "winter_day": 0.3959,
  "winter_night": 0.3209,
  "summer_day": 0.4825,
  "summer_night": 0.4075,
  "hourly_fixed_cost": 0.0295
} %}

{# Strømstøtte på 90% på priser over 91,25 øre (ink. mva) trekkes ifra #}
{% set pb = max((current_price - 0.9125) * 0.9, 0.0) %}

{# Sjekk om vi ser på dagens dato eller morgendagens dato #}
{% set today = now().date() %}
{% set tomorrow = (now().date() + timedelta(days=1)) %}

{# Bruk arbeidsdag-sensoren for i dag eller i morgen avhengig av dato #}
{% if now().date() == today %}
  {% set arbeidsdag_status = is_state('binary_sensor.arbeidsdag_sensor', 'on') %}
{% elif now().date() == tomorrow %}
  {% set arbeidsdag_status = is_state('binary_sensor.arbeidsdag_i_morgen', 'on') %}
{% endif %}

{# Er det arbeidsdag? #}
{% if arbeidsdag_status %}
    {# Sommerpriser fra april til og med desember #}
    {% if now().month >= 4 and now().month <= 12 %}
        {% if now().hour >= 6 and now().hour <= 22 %} {# dagtid mellom 6 og 22 #}
            {{ (s.summer_day + s.hourly_fixed_cost - pb) | float }}
        {% else %} {# ellers er det natt #}
            {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
        {% endif %}
    {% else %} {# ellers er det vinter #}
        {% if now().hour >= 6 and now().hour <= 22 %}
            {{ (s.winter_day + s.hourly_fixed_cost - pb) | float }}
        {% else %}
            {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
        {% endif %}
    {% endif %}
{% else %} {# ellers er det helg eller fridag (helligdag) #}
    {% if now().month >= 4 and now().month <= 12 %}
        {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
    {% else %}
        {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
    {% endif %}
{% endif %}

 

Lenke til kommentar
Del på andre sider

sbarmen skrev (2 minutter siden):

Good point 🙂 Det har jeg helt glemt, godt du er djevelens advokat her! 

 

Jeg kan lage en workday med 1 dag offset for å håndtere morgendagens priser mer korrekt. 

 

Burde ikke noe slikt virke? Jeg tester!

 

{% set s = {
  "winter_day": 0.3959,
  "winter_night": 0.3209,
  "summer_day": 0.4825,
  "summer_night": 0.4075,
  "hourly_fixed_cost": 0.0295
} %}

{# Strømstøtte på 90% på priser over 91,25 øre (ink. mva) trekkes ifra #}
{% set pb = max((current_price - 0.9125) * 0.9, 0.0) %}

{# Sjekk om vi ser på dagens dato eller morgendagens dato #}
{% set today = now().date() %}
{% set tomorrow = (now().date() + timedelta(days=1)) %}

{# Bruk arbeidsdag-sensoren for i dag eller i morgen avhengig av dato #}
{% if now().date() == today %}
  {% set arbeidsdag_status = is_state('binary_sensor.arbeidsdag_sensor', 'on') %}
{% elif now().date() == tomorrow %}
  {% set arbeidsdag_status = is_state('binary_sensor.arbeidsdag_i_morgen', 'on') %}
{% endif %}

{# Er det arbeidsdag? #}
{% if arbeidsdag_status %}
    {# Sommerpriser fra april til og med desember #}
    {% if now().month >= 4 and now().month <= 12 %}
        {% if now().hour >= 6 and now().hour <= 22 %} {# dagtid mellom 6 og 22 #}
            {{ (s.summer_day + s.hourly_fixed_cost - pb) | float }}
        {% else %} {# ellers er det natt #}
            {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
        {% endif %}
    {% else %} {# ellers er det vinter #}
        {% if now().hour >= 6 and now().hour <= 22 %}
            {{ (s.winter_day + s.hourly_fixed_cost - pb) | float }}
        {% else %}
            {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
        {% endif %}
    {% endif %}
{% else %} {# ellers er det helg eller fridag (helligdag) #}
    {% if now().month >= 4 and now().month <= 12 %}
        {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
    {% else %}
        {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
    {% endif %}
{% endif %}

 


Det vil heller ikke virke. Det du glemmer er at now() er overstyrt i Nordpool integrasjonen. Malen kjøres 48 ganger der now() returnerer 48 forskjellige tidspunkt. 

set today = now().date() vil altså gi deg alle 24 timene på fredag og alle 24 timene på lørdag.
set tomorrow = (now().date() + timedelta(days=1)) vil tilsvarende gi deg alle 24 timene på lørdag og alle 24 timene på søndag.

if now().date() == today vil dessuten alltid være sann

Lenke til kommentar
Del på andre sider

Jeg henter bare spotpris i fra Nordpool og Entso-e integrasjonene og så har jeg et pyscript som legger til nettleie ut i fra tid på døgn, helligdag og helgedag. Der håndterer jeg også problemet med at en av disse to integrasjonen ikke virker / ikke henter ned pris. Det skjer overraskende ofte.

Lenke til kommentar
Del på andre sider

Workday integrasjonen som er innebygd i HA gir deg en kalender. Denne har attributter for neste hendelse. Så da kan du sjekke der om "i dag" eller "i morgen" er neste hendelse. Lørdager og søndager håndterer du jo lett på andre måter.

Men du vil ha samme problem når det er mange helligdager på rad, ser jeg nå....... Da kan du vite at i dag er en helligdag, men du får ikke vite hva i morgen er.

Edit: Det finnes et service call for å hente ut hendelser fra en kalender i et tidsrom. Du kan ha en template trigger sensor som hver romjul henter alle helligdager 1 år fram i tid og lagre dette i en mal-sensor som du kan bruke i Nordpool.

 

Endret av stigvi
  • Like 1
Lenke til kommentar
Del på andre sider

Her er et eksempel på en trigger sensor som kjører et service call og behandler data. Noe tilsvarende kan altså gjøres med å hente ut fra en kalender og lagre helligdager i en attributt som en liste.

 

- trigger:
    - platform: state
      entity_id: weather.orstad_utsyn
  #      - platform: time_pattern
  #        hours: /1
  action:
    - service: weather.get_forecasts
      data:
        type: hourly
      target:
        entity_id: weather.orstad_utsyn
      response_variable: wh
    - service: weather.get_forecasts
      data:
        type: daily
      target:
        entity_id: weather.orstad_utsyn
      response_variable: wd
  sensor:
    - unique_id: timer_med_sol
      name: "Timer med sol"
      unit_of_measurement: "h"
      device_class: duration
      state: >-
        {% set vars = namespace(count=0) %}
        {% set vars = namespace(found=true) %}
        {% set vars.count = 0 %}
        {% set l = wh['weather.orstad_utsyn'].forecast|map(attribute='condition')|list %}
        {% for item in l %}
        {% if vars.found == true and item == 'sunny' %}
        {% set vars.count = loop.index %}
        {% else %}
        {% set vars.found = false %}
        {% endif %}
        {% endfor %}
        {{ vars.count }}
    - unique_id: timer_med_opphold
      name: "Timer med opphold"
      unit_of_measurement: "h"
      device_class: duration
      state: >-
        {% set vars = namespace(count=0) %}
        {% set vars = namespace(found=true) %}
        {% set vars.count = 0 %}
        {% set l = wh['weather.orstad_utsyn'].forecast|map(attribute='precipitation_probability')|list %}
        {% for item in l %}
        {% if vars.found == true and item|float(0) <= 2 %}
        {% set vars.count = loop.index %}
        {% else %}
        {% set vars.found = false %}
        {% endif %}
        {% endfor %}
        {{ vars.count }}
    - unique_id: vindstyrke_i_morgen
      name: "Vindstyrke i morgen"
      unit_of_measurement: "m/s"
      state: "{{ [state_attr('weather.orstad_utsyn', 'wind_gust_speed')|float(0), (wd['weather.orstad_utsyn'].forecast | rejectattr('wind_gust_speed', 'undefined') | map(attribute='wind_gust_speed')|list|max)]|max|round(1) }}"

 

Lenke til kommentar
Del på andre sider

Jeg har nå laget en input_text.helligdager hjelper: 

image.png.eef4205c31fc87a5843a6d65f5e71bd1.png

 

Denne oppdateres via workday med følgende automasjon:

alias: Arbeidsdag i dag, eller i morgen?
description: >-
  Vi sjekker om det er arbeidsdag i dag eller i morgen, og så lagrer vi det i et
  array for å hjelpe med å sette prisen riktig i Nordpool-integrasjonen.
trigger:
  - platform: time
    at: "00:00:00"
  - platform: homeassistant
    event: start
condition: []
action:
  - service: input_text.set_value
    data:
      entity_id: input_text.helligdager
      value: ""
  - if:
      - condition: state
        entity_id: binary_sensor.arbeidsdag_sensor
        state: "off"
    then:
      - service: input_text.set_value
        data:
          entity_id: input_text.helligdager
          value: "{{ now().strftime('%d%m') }}"
  - if:
      - condition: state
        entity_id: binary_sensor.arbeidsdag_i_morgen
        state: "off"
    then:
      - if:
          - condition: template
            value_template: >-
              {# Sjekk om i dag var helligdag (da er ikke array tomt), i
              tilfelle må begge dager legges til i arrayet. #}

              {{ states('input_text.helligdager') != '' }}
        then:
          - service: input_text.set_value
            data:
              entity_id: input_text.helligdager
              value: >
                {% set current_value = states('input_text.helligdager') %} {%
                set aditional_value = (now() +
                timedelta(days=1)).strftime('%d%m') %} {{ current_value + ',' +
                aditional_value }}
        else:
          - service: input_text.set_value
            data:
              entity_id: input_text.helligdager
              value: "{{ (now() + timedelta(days=1)).strftime('%d%m') }}"
mode: single



Så har jeg oppdatert templaten slik:
 

{% set s = {
  "winter_day": 0.3959,
  "winter_night": 0.3209,
  "summer_day": 0.4825,
  "summer_night": 0.4075,
  "hourly_fixed_cost": 0.0295
} %}

{# Strømstøtte på 90% på priser over 91,25 øre (ink. mva) trekkes ifra #}
{% set pb = max((current_price - 0.9125) * 0.9, 0.0) %}

{% set helligdager = states('input_text.helligdager').split(',') %}
{% set today = now().strftime('%d%m') %}

{# Er det arbeidsdag? #}
{% if today not in helligdager %}
    {# Sommerpriser fra april til og med desember #}
    {% if now().month >= 4 and now().month <= 12 %}
        {% if now().hour >= 6 and now().hour <= 22 %} {# dagtid mellom 6 og 22 #}
            {{ (s.summer_day + s.hourly_fixed_cost - pb) | float }}
        {% else %} {# ellers er det natt #}
            {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
        {% endif %}
    {% else %} {# ellers er det vinter #}
        {% if now().hour >= 6 and now().hour <= 22 %}
            {{ (s.winter_day + s.hourly_fixed_cost - pb) | float }}
        {% else %}
            {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
        {% endif %}
    {% endif %}
{% else %} {# ellers er det helg eller fridag (helligdag) #}
    {% if now().month >= 4 and now().month <= 12 %}
        {{ (s.summer_night + s.hourly_fixed_cost - pb) | float }}
    {% else %}
        {{ (s.winter_night + s.hourly_fixed_cost - pb) | float }}
    {% endif %}
{% endif %}

 

Dette burde fungere. Ser ut til å gjøre det i alle fall. Litt hack å få til men da vil workday med to integrasjoner, den ene med offset 1 for i morgen kunne brukes videre. Ved å gjøre det på denne måten ble isoweekday() overflødig da workday tar med alle uansett. 

 

Viktig å kategorisere automasjoner og hjelpere nå så man holder oversikt 😛 Og gode kommentarer på toppen så man husker tilbake. 

Endret av sbarmen
Lenke til kommentar
Del på andre sider

1 hour ago, stigvi said:

Workday integrasjonen som er innebygd i HA gir deg en kalender. Denne har attributter for neste hendelse. Så da kan du sjekke der om "i dag" eller "i morgen" er neste hendelse. Lørdager og søndager håndterer du jo lett på andre måter.

Men du vil ha samme problem når det er mange helligdager på rad, ser jeg nå....... Da kan du vite at i dag er en helligdag, men du får ikke vite hva i morgen er.

Edit: Det finnes et service call for å hente ut hendelser fra en kalender i et tidsrom. Du kan ha en template trigger sensor som hver romjul henter alle helligdager 1 år fram i tid og lagre dette i en mal-sensor som du kan bruke i Nordpool.

 

Det siste forslaget er ikke dumt. Da kan man lagre den i et array og ha den liggende. Den jeg har nå kjører hver dag, bør være like robust men jeg liker tanken. 

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.