Jump to content
  • Sign Up
Støtt hjemmeautomasjon! 🥇🥈🥉

Recommended Posts

Posted
thoralex skrev (3 timer siden):

Da går jeg potensielt glipp av de to billigste timene ved store prisøkninger om natten. Har noen forslag til kode som løser dette?

Hovedproblemet til dette er at nordpool integrasjonen helt unødvendig splitter prisene opp i to lister for i dag og i morgen. Det er unødvendig fordi hvert listeelement inneholder start og stopp for når prisen er gyldig.

En løsning er å lage en ny liste som oppdateres når det er nye priser midt på dagen og ikke ved midnatt.

Det er sikkert mange måter å gjøre det på. Jeg prøvde meg med en mal-sensor, men den insisterte på å gjøre om datatyper til noe annet enn det jeg ville. Med pyscript kan dette være en metode:

 

@state_trigger("sensor.nordpool")
def strompris():
    pyscript.strompris2 = float(sensor.nordpool)
    
    if (sensor.nordpool.raw_tomorrow is not None
        and len(sensor.nordpool.raw_tomorrow) > 0
        and sensor.nordpool.raw_tomorrow[0]['value'] is not None):
        pyscript.strompris2.raw_price = sensor.nordpool.raw_today + sensor.nordpool.raw_tomorrow



 

Posted
stigvi skrev (47 minutter siden):

Hovedproblemet til dette er at nordpool integrasjonen helt unødvendig splitter prisene opp i to lister for i dag og i morgen. Det er unødvendig fordi hvert listeelement inneholder start og stopp for når prisen er gyldig.


Takk, da får det bare være sånn enn så lenge. Komplisert nok å lære seg yaml når man ikke kan noe koding fra før!

Posted (edited)

Eksperimentene fortsetter... I dag var plutselig strømprisen høyest i de timene den normalt et lavest, så da må det gjøres litt mer avansert for å takle det. Dette er en videreutvikling av den samme koden som tidligere, men men her er intensjonen å plukke de seks billigste timene i døgnet, unntatt de to periodene hvor forbruket mitt vanligvis er høyest (av hensyn til effektprisingen i nettleia).

Jeg laget denne i går ettermiddag. I natt slo den inn fra midnatt til 0600, som er de dyreste timene dette døgnet... Det var jo ikke helt etter planen. Mulig den bare registrer den første tidsperioden og ignorer de andre? Jeg har også prøvd med 8 timer men ved alt over 6 blir sensoren unavailable, som jeg tror støtter teorien om at den bare "ser" den første perioden. Jeg har eksperimentert litt med tegnsetting og slikt, men har ikke nok forståelse av hvordan slik koding fungerer enda så det har bare laget trøbbel.

 

#plukke billigste 6 timer 0000-0600, 0900-1500, 2000-0000
    - platform: template
      sensors:
        billigste_6_timer_offpeak:
          value_template: >-
            {% set x = states("sensor.time") %}
             {% set l=state_attr('sensor.nordpool_kwh_trheim_nok_3_095_025', 'raw_today')
              |selectattr('start', '>=', now().replace(hour=0,minute=0,second=0,microsecond=0))
              |selectattr('start', '<', now().replace(hour=6,minute=0,second=0,microsecond=0))
              |selectattr('start', '<', now().replace(hour=9,minute=0,second=0,microsecond=0))
              |selectattr('start', '<', now().replace(hour=15,minute=0,second=0,microsecond=0))
              |selectattr('start', '<', now().replace(hour=20,minute=0,second=0,microsecond=0))
              |sort(attribute='value') %}
              {{ (now() >= l[0].start and now() <= l[0].end)
              or (now() >= l[1].start and now() <= l[1].end)
              or (now() >= l[2].start and now() <= l[2].end)
              or (now() >= l[3].start and now() <= l[3].end)
              or (now() >= l[4].start and now() <= l[4].end)
              or (now() >= l[5].start and now() <= l[5].end) }}


Noen som har forslag til løsning?

Edited by thoralex
Posted
thoralex skrev (24 minutter siden):

Noen som har forslag til løsning?

 

Hva om du bytter ut:

 

{% set l=state_attr('sensor.nordpool_kwh_trheim_nok_3_095_025', 'raw_today')
              |selectattr('start', '>=', now().replace(hour=0,minute=0,second=0,microsecond=0))
              |selectattr('start', '<', now().replace(hour=6,minute=0,second=0,microsecond=0))
              |selectattr('start', '<', now().replace(hour=9,minute=0,second=0,microsecond=0))
              |selectattr('start', '<', now().replace(hour=15,minute=0,second=0,microsecond=0))
              |selectattr('start', '<', now().replace(hour=20,minute=0,second=0,microsecond=0))
              |sort(attribute='value') %}

 

...med:

 

{% set l =  
    (state_attr('sensor.nordpool_kwh_trheim_nok_3_095_025', 'raw_today')
              |selectattr('start', '<', now().replace(hour=6,minute=0,second=0,microsecond=0))
              |list
  + state_attr('sensor.nordpool_kwh_trheim_nok_3_095_025', 'raw_today')
              |selectattr('start', '>=', now().replace(hour=9,minute=0,second=0,microsecond=0))
              |selectattr('start', '<', now().replace(hour=15,minute=0,second=0,microsecond=0))
              | list
  + state_attr('sensor.nordpool_kwh_trheim_nok_3_095_025', 'raw_today')
              |selectattr('start', '>=', now().replace(hour=20,minute=0,second=0,microsecond=0))
              | list)
  | sort(attribute='value')
%}

 

Hjelper det?

Posted
RVM skrev (8 minutter siden):

 

Hva om du bytter ut:

 

...med:

 

Hjelper det?

 Takk, jeg prøver det så får vi se hva som skjer.

Er det mulig å "simulere" koden i home assistant på noen måte, uten å måtte vente vente flere dager for å se hva som skjer? Ville gjort det mye enklere å eksperimentere med slikt...

Posted
thoralex skrev (1 minutt siden):

Er det mulig å "simulere" koden i home assistant på noen måte, uten å måtte vente vente flere dager for å se hva som skjer? Ville gjort det mye enklere å eksperimentere med slikt...

 

Ja, i "developer tools" i venstre marg ("utviklerverktøy" på norsk?), jeg "simulerte" det jeg kopierte over, for å sjekke at jeg får en liste som er sortert på pris for de timene du hadde valgt ut:

 

image.thumb.png.2e34a77496e1c93a70d211362506e72e.png

Posted

Nå som vi kan styre laster basert på dette (billader og varmtvannsbereder for min del), er det noen som vet hvordan man kan lage sensorer med forbruk?

 

Det jeg ønsker meg:

- Totalkostnad pr døgn, pr uke og pr måned, basert på strømpris

- Snittpris for strømmen som er brukt til hhv VVB og billader i løpet av siste døgn, uke og måned

 

Mulig det er mye å be om, men det hadde vært hyggelig med slik info også.

 

Jeg har fått på plass totalkostnad basert på input fra en eller annen post et eller annet sted (beklager til opprinnelsen!! Jeg burde ha dokumentert selv hvor jeg hentet det fra):

 

sensor:

  - platform: template

      easee_charge_cost_now:                                                                                                                                 
        friendly_name: "Easee ladekostnad"                                                                                                                   
        unit_of_measurement: "NOK"                                                                                                                           
        value_template: "{{ states('sensor.nordpool_kwh_krsand_nok_3_10_025') | float * states('sensor.easee_home_13599_power') | float }}"                  
 

Og jeg har gjort tilsvarende for VVB.

Med en Reimann sum integral får jeg opp en løpende "totalkostnad" for forbruk strøm. Men jeg vet ikke hvordan jeg kan få en slik til å rullere pr døgn, pr uke eller pr måned. Ei heller hvordan en slik kan utvides for å beregne snittprisen som er forbrukt.

Posted
jorno skrev (36 minutter siden):

Med en Reimann sum integral får jeg opp en løpende "totalkostnad" for forbruk strøm. Men jeg vet ikke hvordan jeg kan få en slik til å rullere pr døgn, pr uke eller pr måned. Ei heller hvordan en slik kan utvides for å beregne snittprisen som er forbrukt.

Du kan bruke utility integrasjonen i home assistant

Jeg bruker et easee service kall i integrasjonen for å sette strømpris. Da kan jeg i easee appen følge med på kostnader. Men integrasjonen tilbyr ikke noen tellere som teller opp kostnad. Da får jeg det ikke inn i HA.

Posted

Takk for svar, @stigvi . Forsøker å ta i bruk Utility-integrasjonen mot sensorene jeg har laget, for å se om det blir riktig. Tror kanskje jeg må knytte den opp mot Reimann sum-sensoren i stedet, siden den summerer opp. Er litt forvirra rundt hva som gjør hva, så det blir litt prøving og feiling, men får det sikkert til etter noen forsøk :-)

Posted

Hei, 

 

Kan noen hjelpe å modifisere template sensor? Jeg vil ha input_number entity og velge hvor mange 'billig timer' jeg vil ha dynamisk på card.. 

Posted
Darius skrev (2 timer siden):

Hei, 

 

Kan noen hjelpe å modifisere template sensor? Jeg vil ha input_number entity og velge hvor mange 'billig timer' jeg vil ha dynamisk på card.. 

 

Noe sånt kanskje?

 

{% set l=state_attr('sensor.nordpool_xxx_xxx_xxx_x_xxx_xxx', 'raw_today')|sort(attribute='value') %}
{% set ns = namespace(out=false) %}
{% set n = states('input_number.xxx')|int %}
{% for i in range(n) %}
  {% if (now() >= l[i].start and now() <= l[i].end) %}
    {% set ns.out = true %}
  {% endif %}
{% endfor %}
{{ns.out}}

 

Husk å legge inn din egen Nordpool-sensor og input_number.

  • Like 2
Posted
RVM skrev (22 timer siden):

 

Noe sånt kanskje?

 

{% set l=state_attr('sensor.nordpool_xxx_xxx_xxx_x_xxx_xxx', 'raw_today')|sort(attribute='value') %}
{% set ns = namespace(out=false) %}
{% set n = states('input_number.xxx')|int %}
{% for i in range(n) %}
  {% if (now() >= l[i].start and now() <= l[i].end) %}
    {% set ns.out = true %}
  {% endif %}
{% endfor %}
{{ns.out}}

 

Husk å legge inn din egen Nordpool-sensor og input_number.

 Tusen takk ! 

O jeg bruker "|sort(attribute='value', reverse=true" for dyreste priser.

 

 

 

Posted

Noen som har tips til hvordan jeg kan sette opp en template sensor som viser true/false on/off for inneværende time.

Jeg prøver å få til en liste som inneholder alle timer fra now() til et gitt tidspunkt definert i input_datetime.finish_charging_by sortere den fra billigst til dyrest og så en loop x antall ganger avhengig av hva som er definert i sensor.hours_of_charging_needed

Å gjøre dette direkte i python ville vært lett men jinja sliter jeg med

Posted
Andreas Noteng skrev (1 time siden):

Noen som har tips til hvordan jeg kan sette opp en template sensor som viser true/false on/off for inneværende time.

Jeg prøver å få til en liste som inneholder alle timer fra now() til et gitt tidspunkt definert i input_datetime.finish_charging_by sortere den fra billigst til dyrest og så en loop x antall ganger avhengig av hva som er definert i sensor.hours_of_charging_needed

Å gjøre dette direkte i python ville vært lett men jinja sliter jeg med

Jeg er på mobilen så jeg orker ikke lage det ferdig for deg, men jeg ville ha brukt selectsattr etter du har samlet raw_today og raw_tomorrow. På denne måten kan du fjerne alle timer som ikke har en verdi.

Lag en tom liste, loop over resultatene fra skrittet over. Sammenlikne end time med inputen og legg det som er true over i den tomme listen. Etter dette sorter du listen fra billigst til dyrest

 

 

Posted
Andreas Noteng skrev (12 timer siden):

Å gjøre dette direkte i python ville vært lett men jinja sliter jeg med

Det er derfor vi har integrasjonene Python Scripts, AppDaemon, og pyscript. Jeg bruker sistnevnte hele tida, men de andre er sikkert brukandes de også :)

  • 2 months later...
Posted
RVM skrev (På 25.9.2022 den 12.00):

 

Ja, i "developer tools" i venstre marg ("utviklerverktøy" på norsk?), jeg "simulerte" det jeg kopierte over, for å sjekke at jeg får en liste som er sortert på pris for de timene du hadde valgt ut:

 

image.thumb.png.2e34a77496e1c93a70d211362506e72e.png

Kopierte denne koden og får result type: number og 1. Noe jeg misser her..

{% set l =  
    (state_attr('sensor.nordpool_kwh_bergen_nok_3_10_025', 'raw_today')
              |selectattr('start', '<', now().replace(hour=6,minute=0,second=0,microsecond=0))
              |list
    + state_attr('sensor.nordpool_kwh_bergen_nok_3_10_025', 'raw_today')
              |selectattr('start', '>=', now().replace(hour=9,minute=0,second=0,microsecond=0))
              |selectattr('start', '<', now().replace(hour=15,minute=0,second=0,microsecond=0))
              | list
    + state_attr('sensor.nordpool_kwh_bergen_nok_3_10_025', 'raw_today')
              |selectattr('start', '>=', now().replace(hour=20,minute=0,second=0,microsecond=0))
              | list)
    | sort(attribute='value')
%}

 

Posted
hjemmedude skrev (3 timer siden):

Kopierte denne koden og får result type: number og 1. Noe jeg misser her..

 

Tør jeg gjette på at du prøvde å kopiere {{ l }} fra skjermbildet mitt og endte opp med {{ 1 }} istedenfor? 😀

 

{{ l }} var bare for å vise hva variabelen l inneholdt, men hvis du skriver {{ 1 }} i developer tools får du helt riktig en output som er et number med verdi 1.

Posted
RVM skrev (21 minutter siden):

Tør jeg gjette på at du prøvde å kopiere {{ l }} fra skjermbildet mitt og endte opp med {{ 1 }} istedenfor? 😀

 

{{ l }} var bare for å vise hva variabelen l inneholdt, men hvis du skriver {{ 1 }} i developer tools får du helt riktig en output som er et number med verdi 1.

Hehe helt rett :D Takk for info! 🙂

 

 

  • 3 weeks later...
Posted

Er Nordpool-data via HA-integrasjonen egentlig gratis å bruke? Ikke så lett å skjønne ut fra nordpoolgroup.com, hvis det er der integrasjonen henter prisene.

Posted
Gunnar-K skrev (9 timer siden):

Er Nordpool-data via HA-integrasjonen egentlig gratis å bruke? Ikke så lett å skjønne ut fra nordpoolgroup.com, hvis det er der integrasjonen henter prisene.

Den er gratis å bruke, men den henter data som i flg Nordpool ikke er tillatt å bruke. Vi får neppe en faktura i posten. Jeg har installert entso-e integrasjonen og tibber-data integrasjonen som begge gir meg priser "lovlig". Entso-e integrasjonen er den beste av disse. Den er laget slik at den ikke sletter priser ved midnatt slik de andre to merkelig nok er laget. Det betyr at det er langt lettere å bruke entso-e integrasjonen i forbindelse med automasjoner som går natten gjennom.

Posted
stigvi skrev (18 minutter siden):

Den er gratis å bruke, men den henter data som i flg Nordpool ikke er tillatt å bruke. Vi får neppe en faktura i posten. Jeg har installert entso-e integrasjonen og tibber-data integrasjonen som begge gir meg priser "lovlig". Entso-e integrasjonen er den beste av disse. Den er laget slik at den ikke sletter priser ved midnatt slik de andre to merkelig nok er laget. Det betyr at det er langt lettere å bruke entso-e integrasjonen i forbindelse med automasjoner som går natten gjennom.

Takker! Jeg har installert ENTSO-E integrasjonen, og den virker, men får ikke akkurat samme priser som fra Nordpool. Muligens fingertrøbbel, evt at det ligger noe mere enn mva i prisene fra Nordpool.

Posted
Gunnar-K skrev (44 minutter siden):

Takker! Jeg har installert ENTSO-E integrasjonen, og den virker, men får ikke akkurat samme priser som fra Nordpool. Muligens fingertrøbbel, evt at det ligger noe mere enn mva i prisene fra Nordpool.

Jeg bruker denne malen på entso-e
 

{% set s = {
    "day": 0.4176,
    "night": 0.2926,
    "cert": 0.01,
    "vat": 1.25,
    "eur": float(states("sensor.kurs_eur"), 10.5)
}
%}
{% if now().isoweekday() >= 1 and now().isoweekday() <= 5 %}
  {% if now().hour >= 6 and now().hour < 22 %}
    {{(current_price * s.eur * s.vat + s.day + s.cert) | float}}
  {% else %}
    {{(current_price * s.eur * s.vat + s.night + s.cert) | float}}
  {% endif %}
{% else %}
  {{(current_price * s.eur * s.vat + s.night + s.cert) | float}}
{% endif %}


og denne på Nordpool
 

{% set s = {
        "hourly_fixed_cost": 0.0,
        "night": 0.2926,
        "day": 0.4176,
        "cert": 0.01
        }
      %}
        {% if now().isoweekday() >= 1 and now().isoweekday() <= 5 %}
          {% if now().hour >=6 and now().hour <22 %}
            {{(s.day+s.hourly_fixed_cost+s.cert)|float(0)}}
          {% else %}
            {{(s.night+s.hourly_fixed_cost+s.cert)|float(0)}}
          {% endif %}
        {% else %}
          {{(s.night+s.hourly_fixed_cost+s.cert)|float(0)}}
        {% endif %}


Nå er differansen mellom de kun 1/1000 øre. (2,2384 vs 2,2385)

  • Like 1
Posted
Gunnar-K skrev (19 minutter siden):

Takker! Ligger nok litt over mitt nivå dette. Er dette komplett template sensor, eller er det noe mere, et navn feks?

Har du ikke brukt maler på Nordpool eller entso-e sensoren?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.