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

Nordpool sensor for Home Assistant


hellowlol

Anbefalte innlegg

janfrode skrev (5 minutter siden):

Det fungerte bedre ja. Tusen takk!

Så bra! Siden du la det inn i dag vil du sikkert legge til data fra 01-06. oktober manuelt.

 

Du kan legge inn noe sånt for hver dag du mangler denne måneden, lagre, og ta det bort igjen:

pyscript.electricity_monthly_average_price.stored_values['2022-10-01'] = [1.053, 0.875, 0.69, 0.302, 0.24, 0.228, 0.223, 0.334, 0.621, 1.005, 1.505, 1.463, 1.235, 1.017, 0.91, 0.92, 0.96, 1.885, 2.314, 2.674, 2.463, 1.982, 1.511, 1.064]

 

Endret av RVM
Lenke til kommentar
Del på andre sider

Jeg fant at snitt prisen i oktober har være 145 øre/kvh inkl. moms, så jeg la inn:

 

    pyscript.electricity_monthly_average_price.stored_values['2022-10-01'] = [1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450]
    pyscript.electricity_monthly_average_price.stored_values['2022-10-02'] = [1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450]
    pyscript.electricity_monthly_average_price.stored_values['2022-10-03'] = [1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450]
    pyscript.electricity_monthly_average_price.stored_values['2022-10-04'] = [1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450]
    pyscript.electricity_monthly_average_price.stored_values['2022-10-05'] = [1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450]
    pyscript.electricity_monthly_average_price.stored_values['2022-10-06'] = [1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450, 1.450]

 

og da har jeg grafen under. Får korrigere 2022-10-07 i morgen. 

 

image.png.0bce96e9525fcc5241f641f7e1c49e0c.png

 

 

Hmm.. det ble nok ikke helt rett... støtten er jo bare 90% på det over 70 øre.. 

Endret av janfrode
Lenke til kommentar
Del på andre sider

  • 1 måned senere...
  • 2 uker senere...
Thomas skrev (På 14.11.2022 den 23.15):

Kom over denne i dag. i json fila finner man gjennomsnitt hittil denne måned. Man finner også kalkuler og estimer strømstøtte.
https://github.com/martinju/stromstotte

Tusen takk for denne (og til han som har laget det)! Jeg kan ingenting om R, men siden han automatisk publiserer csv/json daglig er det lett å hente inn forecast for månedspris og strømstøtte fra modellen hans med f.eks. pandas og pyscript:

 

 

import pandas as pd

@pyscript_compile 
def read_csv():
    # Separate function for blocking I/O, using @pyscript_compile 
    url = "https://raw.githubusercontent.com/martinju/stromstotte/master/data/current_estimated_compensation.csv"
    try:
        df = pd.read_csv(url)
        df = df[df["area"] == "NO2"]  # Only look at region NO2
        df = df.set_index("type")
        
        out = {}
        out["mean"] = df.loc["mean"]["mean_price"]
        out["quantile_0.025"] = df.loc["quantile_0.025"]["mean_price"]
        out["quantile_0.975"] = df.loc["quantile_0.975"]["mean_price"]
        
        return out, None
    except Exception as exc:
        return None, exc

@time_trigger("cron(@daily)")
def get_forecast():
    result, exception = task.executor(read_csv)
    if exception:
        raise exception
    else:
        pyscript.forecast_monthly_electricity_price_mean = round(result["mean"], 3)
        pyscript.forecast_monthly_electricity_price_quantile_0_025 = round(result["quantile_0.025"], 3)
        pyscript.forecast_monthly_electricity_price_quantile_0_975 = round(result["quantile_0.975"], 3)

 

image.png.8c7d3236d124f32ad3f7984b6b69e1d7.png

Endret av RVM
Litt rydding i kode
  • Like 1
Lenke til kommentar
Del på andre sider

RVM skrev (47 minutter siden):

Tusen takk for denne (og til han som har laget det)! Jeg kan ingenting om R, men siden han automatisk publiserer csv/json daglig er det lett å hente inn forecast for månedspris og strømstøtte fra modellen hans med f.eks. pandas og pyscript:

 

 

import pandas as pd

@pyscript_compile 
def read_csv():
    # Separate function for blocking I/O, using @pyscript_compile 
    url = "https://raw.githubusercontent.com/martinju/stromstotte/master/data/current_estimated_compensation.csv"
    try:
        df = pd.read_csv(url)
        df = df.drop(df[df["area"] != "NO2"].index)     # Drop regions not NO2
        df = df.set_index("type")
        
        out = {}
        out["mean"] = df.loc["mean"]["mean_price"]
        out["quantile_0_05"] = df.loc["quantile_0.05"]["mean_price"]
        out["quantile_0_95"] = df.loc["quantile_0.95"]["mean_price"]
        
        return out, None
    except Exception as exc:
        return None, exc

@time_trigger("cron(@daily)")
def get_forecast():
    result, exception = task.executor(read_csv)
    if exception:
        raise exception
    else:
        pyscript.forecast_monthly_electricity_price_mean = result["mean"]
        pyscript.forecast_monthly_electricity_price_quantile_0_05 = result["quantile_0_05"]
        pyscript.forecast_monthly_electricity_price_quantile_0_95 = result["quantile_0_95"]

 

 



Kan også anbefale å legge dette inn øverst i skriptet like under import

 

state.persist('pyscript.forecast_monthly_electricity_price_mean', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"})
state.persist('pyscript.forecast_monthly_electricity_price_quantile_0_05', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"})
state.persist('pyscript.forecast_monthly_electricity_price_quantile_0_95', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"})

 

  • Like 1
Lenke til kommentar
Del på andre sider

Her var det mange gode ideer som jeg tror jeg vil låne.

Har aldri brukt, eller hørt om, pyscript.. Men det gikk jo greit i legge inn ved å følge bruksanvisningen som ligger her i tråden.

 

Kan jeg spørre om hvordan du får denne visningen:

RVM skrev (På 25.11.2022 den 12.06):

image.png.8c7d3236d124f32ad3f7984b6b69e1d7.png

 

Lenke til kommentar
Del på andre sider

Kardemomme skrev (23 minutter siden):

Her var det mange gode ideer som jeg tror jeg vil låne.

Har aldri brukt, eller hørt om, pyscript.. Men det gikk jo greit i legge inn ved å følge bruksanvisningen som ligger her i tråden.

 

Kan jeg spørre om hvordan du får denne visningen:

 

 

Visningen er multiple-entity-row.

Endret av RVM
  • Thanks 1
Lenke til kommentar
Del på andre sider

Er det mulig å unngå overlappingen som gjør at gjennomsiktigheten blir litt feil her?

image.thumb.png.68994b41ea66513a60cfa10256189330.png

Har slått sammen today/tomorrow for å slippe å ha egen serie med I dag og i morgen, som bare heiter strømpris.

    data_generator: |
      return [].concat(
        entity.attributes.raw_today.map((p) => { return [new Date(p.start), p.value];}), 
        entity.attributes.raw_tomorrow.map((p) => {return [new Date(p.start), p.value];}))

Men får ikkje heilt til å slå sammen med strømprisene som kommer fra serien uten data_generator, og legger eg til en ekstra serie så overlapper det på dagen i dag. Har nokken inspill her?

 

Eg kan alltids fjerne gjenommsiktigheten, men er det da mulig å skjule navnet på serien som nå heter "(skjul meg?)" 

Endret av bearer
Lenke til kommentar
Del på andre sider

Endra like godt området til grafen til å kun være 48h og justert mot slutten av neste dag, da vil det det ikkje være behov for å fylle med med gårsdagens pris og kan beholde gjennomsiktigheten. Men om noen finner en måte å kombinere serier på lytter eg gjerne. En av grunnene til eg ville beholde 72h var at eg da fikk ticks på midnatt; tidlighere ignorerte grafen tickAmount for X, som nå plutselig virker.

graph_span: 48h
span:
  end: day
  offset: +24h
apex_config:
  xaxis:
    tickAmount: 2

 

Screenshot 2022-11-29 at 22.06.50.png

 

edit: .. ved midnatt var det kanskje ikkje en like god ide, null historikk, 24h strømpris og 24h blank graf.

Endret av bearer
Lenke til kommentar
Del på andre sider

  • 3 uker senere...
RVM skrev (På 25.11.2022 den 12.06):

Tusen takk for denne (og til han som har laget det)! Jeg kan ingenting om R, men siden han automatisk publiserer csv/json daglig er det lett å hente inn forecast for månedspris og strømstøtte fra modellen hans med f.eks. pandas og pyscript:

 

 

import pandas as pd

@pyscript_compile 
def read_csv():
    # Separate function for blocking I/O, using @pyscript_compile 
    url = "https://raw.githubusercontent.com/martinju/stromstotte/master/data/current_estimated_compensation.csv"
    try:
        df = pd.read_csv(url)
        df = df[df["area"] == "NO2"]  # Only look at region NO2
        df = df.set_index("type")
        
        out = {}
        out["mean"] = df.loc["mean"]["mean_price"]
        out["quantile_0.025"] = df.loc["quantile_0.025"]["mean_price"]
        out["quantile_0.975"] = df.loc["quantile_0.975"]["mean_price"]
        
        return out, None
    except Exception as exc:
        return None, exc

@time_trigger("cron(@daily)")
def get_forecast():
    result, exception = task.executor(read_csv)
    if exception:
        raise exception
    else:
        pyscript.forecast_monthly_electricity_price_mean = round(result["mean"], 3)
        pyscript.forecast_monthly_electricity_price_quantile_0_025 = round(result["quantile_0.025"], 3)
        pyscript.forecast_monthly_electricity_price_quantile_0_975 = round(result["quantile_0.975"], 3)

 

image.png.8c7d3236d124f32ad3f7984b6b69e1d7.png

Veldig nyttig script!

Noen ide om hvordan man installerer pandas for pyscript i Home Assistant OS?

Lenke til kommentar
Del på andre sider

Jepsh skrev (9 timer siden):

Veldig nyttig script!

Noen ide om hvordan man installerer pandas for pyscript i Home Assistant OS?

Har du prøvd å legge det til i requirements.txt?

 

Sitat

If your pyscript code requires particular Python packages that are not already installed by HASS, add a requirements.txt file the <config>/pyscript directory.

 

Lenke til kommentar
Del på andre sider

RVM skrev (1 time siden):

Har du prøvd å legge det til i requirements.txt?

 

 

Forsøkte dette i går, men fikk fortsatt ikke verdier ut. Ser ut til at den har kommet seg i dag morges, så fungerte tydeligvis uansett.

Men endte med å benytte dette

rest:
    scan_interval: 86400
    resource: https://raw.githubusercontent.com/martinju/stromstotte/master/data/current_estimated_compensation.json
    sensor:
      - name: "Mean price"
        json_attributes_path: "$.16"
        value_template: "{{ value_json.16.mean_price | round (2)}}"
        unit_of_measurement: "kr"
        json_attributes:
          - "estimation_date"
          - "computation_year" 
          - "computation_month"
      - name: "Quantile 0.025"
        json_attributes_path: "$.19"
        value_template: "{{ value_json.19.mean_price | round (2)}}"
        unit_of_measurement: "kr"
        json_attributes:
          - "estimation_date"
          - "computation_year" 
          - "computation_month"
      - name: "Quantile 0.975"
        json_attributes_path: "$.26"
        value_template: "{{ value_json.26.mean_price | round (2)}}"
        unit_of_measurement: "kr"
        json_attributes:
          - "estimation_date"
          - "computation_year" 
          - "computation_month"

 

Endret av Jepsh
  • Like 3
Lenke til kommentar
Del på andre sider

RVM skrev (På 25.11.2022 den 12.06):

Tusen takk for denne (og til han som har laget det)! Jeg kan ingenting om R, men siden han automatisk publiserer csv/json daglig er det lett å hente inn forecast for månedspris og strømstøtte fra modellen hans med f.eks. pandas og pyscript:

 

 

import pandas as pd

@pyscript_compile 
def read_csv():
    # Separate function for blocking I/O, using @pyscript_compile 
    url = "https://raw.githubusercontent.com/martinju/stromstotte/master/data/current_estimated_compensation.csv"
    try:
        df = pd.read_csv(url)
        df = df[df["area"] == "NO2"]  # Only look at region NO2
        df = df.set_index("type")
        
        out = {}
        out["mean"] = df.loc["mean"]["mean_price"]
        out["quantile_0.025"] = df.loc["quantile_0.025"]["mean_price"]
        out["quantile_0.975"] = df.loc["quantile_0.975"]["mean_price"]
        
        return out, None
    except Exception as exc:
        return None, exc

@time_trigger("cron(@daily)")
def get_forecast():
    result, exception = task.executor(read_csv)
    if exception:
        raise exception
    else:
        pyscript.forecast_monthly_electricity_price_mean = round(result["mean"], 3)
        pyscript.forecast_monthly_electricity_price_quantile_0_025 = round(result["quantile_0.025"], 3)
        pyscript.forecast_monthly_electricity_price_quantile_0_975 = round(result["quantile_0.975"], 3)

 

image.png.8c7d3236d124f32ad3f7984b6b69e1d7.png

 

Hei, har forsøkt å få til dette uten hell. Har gjort følgende:

 

I configuration.yaml:

pyscript:
  allow_all_imports: true

 

I requirements.txt

pandas

 

Får følgende feilmelding i core logs:

Failed to send request, {"errorCode":3012,"error":"request timeout","timeIdentification":0}

 

Noen tips?

 

- JT -

Lenke til kommentar
Del på andre sider

Autoper skrev (På 25.12.2022 den 13.46):

 

Får følgende feilmelding i core logs:

Failed to send request, {"errorCode":3012,"error":"request timeout","timeIdentification":0}

 

Noen tips?

Ingen kjempegode tips nei, men klarer du å feilsøke hvor problemet oppstår? Forstår jeg det riktig at du får importert pandas, men at det feiler på pd.read_csv fordi den ikke får sendt requesten?

Lenke til kommentar
Del på andre sider

RVM skrev (På 27.12.2022 den 9.04):

Ingen kjempegode tips nei, men klarer du å feilsøke hvor problemet oppstår? Forstår jeg det riktig at du får importert pandas, men at det feiler på pd.read_csv fordi den ikke får sendt requesten?

Har ingen aning hva som feilet, men nå virker alt (uten at jeg har gjort noe)...

Lenke til kommentar
Del på andre sider

  • 2 uker senere...

Hei, Tibber har tatt kvelden for meg, så jeg har installert nordpool.

Prøver å få sammenlignet nåværende pris mot gjennomsnittlig ved å bruke templates. Har ikke hatt suksess. Har til og med sett den samme koden i denne tråden, men det fungerer ikke for meg.

 

Denne koden gir False uansett hva man gjør

 

value_template: "{{ state_attr('nordpool_kwh_oslo_nok_3_10_025','Current price')|float(0) >
                state_attr('nordpool_kwh_oslo_nok_3_10_025','average')|float(0) }}"

 

Lenke til kommentar
Del på andre sider

sensoren har vel et navn som starter med "sensor." ?

Min nordpool sensor har ikke en attributt som heter "Current price". Hvor har du funnet det?

Prøv heller med 

states('sensor.nordpool_kwh_oslo_nok_3_10_025')|float(0)
  • Like 1
Lenke til kommentar
Del på andre sider

Altså, så enkelt var det, med sensor.nordpool.... så viser den true og false. Takk skal du ha.

 

 

Jeg var litt rask i avtrekkeren. Viser seg det at den viser True og False invertert i forhold til hva som er riktig

 

"{{ state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025','Current price')|float(0) < state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025','average')|float(0) }}"

 

Hvis jeg tar bort den ene halvdelen så får jeg 0 og det er det som står i parantesen etter float . Burde akkurat nå vært 138 øre

Lenke til kommentar
Del på andre sider

stigvi skrev (26 minutter siden):

sensoren har vel et navn som starter med "sensor." ?

Min nordpool sensor har ikke en attributt som heter "Current price". Hvor har du funnet det?

Prøv heller med 

states('sensor.nordpool_kwh_oslo_nok_3_10_025')|float(0)

 

Med denne får jeg riktig nåverdi, men jeg skulle gjerne sammenlignet med gjennomsnitt. Attributtene fant jeg i HA på det kortet jeg har laget for den i lovelace. Det er en nedtrekksmeny der med alle attributtene slik jeg har forstått det

 

image.png.6a4e316f61226f96dd32d2139825eb06.png

 

image.thumb.png.d53b78e82979526d3ba8848a97746aaa.png

image.thumb.png.c1e1e4fbe7ab2682e900e465e23eb39a.png

Endret av dagern
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.