HomeAssistant ja sähköpörssiohjaus

dillon

Jäsen
Tämä hieno koodi, joka ilmoittelee vuorokauden tunneille onko vilp vai öljy kannattavampaa, lakkasi toimimasta jo keväällä, kun lämmityskauden jälkeen latailin HA:n päivityksiä. Onkohan @Temez vielä linjoilla? Olitko omissa systeemeissä tätä käyttänyt ja mahdollisesti jo korjannut? Koitin jo tuota tutkailla ja testailla mutta ei vaan taidot tahdo riittää.

Joka tapauksessa tuohon Weather data systeemin muutokseen ongelma liittyy ja vaikka esim Met.no sääennusteessa näkee tunneittain hinnat, niin se ei pysty tuota enään hyödyntämään.
Tuo liittynee siihen että uudessa weather-palvelussa ei enää löydy automaattisesti sensoria jossa olisi tuntiennuste attribuuttina. Se pitää itse tehdä templatella. Alla esimerkki. Eli tässä se tuntiennuste löytyy sensor.weather_koti_hourly:n attribuutista forecast joka pitää laittaa tuohon koodiisi weather.kotipaikka tilalle.

YAML:
template:
  - trigger:
      - platform: time_pattern
        minutes: /30
      - platform: homeassistant
        event: start
    action:
      - service: weather.get_forecasts
        data:
          type: hourly
        target:
          entity_id: weather.kotipaikka
        response_variable: forecast_data
    sensor:
      - name: Weather koti hourly
        unique_id: weather_koti_hourly
        state: '{{ forecast_data["weather.kotipaikka"].forecast[0].condition }}'
        attributes:
          temperature: '{{ state_attr("weather.kotipaikka", "temperature") }}'
          humidity: '{{ state_attr("weather.kotipaikka", "humidity") }}'
          pressure: '{{ state_attr("weather.kotipaikka", "pressure") }}'
          wind_bearing: '{{ state_attr("weather.kotipaikka", "wind_bearing") }}'
          wind_speed: '{{ state_attr("weather.kotipaikka", "wind_speed") }}'
          condition: '{{ forecast_data["weather.kotipaikka"].forecast[0].condition }}'
          forecast: '{{ forecast_data["weather.kotipaikka"]["forecast"] }}'
 

jämä67

Aktiivinen jäsen
Kiitokset vinkeistä! Jatketaan harjoitteluja ja testailuja heti kun taas ehtii. Pääsi kanssa eilen illalla jo hiukan käyrryille videoiden avustuksella ja developer toolsin Actions ja template osissa sain jo jotain onnistumaankin. Varsinaista koodia en vielä saanut pelittämään.
edit: Hienosti menee jo sääennusteet uuteen sensoriin ja koodi tekee jo listan jo template editorissa. Jotain pientä kipua vielä omissa koodeissa listan tuonnissa varsinaiseen sensoriin, mutta eiköhän se täsä selviä ennen lämmityskauden alkua.
 
Viimeksi muokattu:

Martta

Tulokas
Morjesta, ensimmäistä kertaa kirjoittamassa tälle foorumille. :)

Otin nyt omaan Mitsubishi ILP:in ohjaukseen tuon blueprintin (click), joka säätää jatkuvasti pyyntilämpötilaa sähkön hinnan mukaan. Sain pienellä ähräyksella ja mistään mitään ymmärtämättä homman pelittämään, mutta nyt haluaisin muokata tuota blueprintin toimintaa erilaiseksi.

Tuo blueprint (click) sanoo tekevänsä seuraavaa:
... continuously control for example a thermostat temperature during the day based on relative difference to the max price of today
Eli pyyntiä säädetään suhteessa maksimihintaan. Tuo on minusta vähän huono, koska yksittäisen tunnin hinta voi heilauttaa koko päivän lämmityksen aivan toisenlaiseksi.
esim:
Tilanne 1)
Jos koko vuorokauden hinta on suunnilleen sama, mutta yksi tunti onkin todella kallis, niin ILP pöhöttää lähes koko päivän maksimilämmöillä.
Tilanne 2) jos tuota yhtä kallista tuntia ei ole, niin pyyntilämpötila heiluu asetettujen maksimiarvojen välillä pitkin päivää.

Haluaisinkin mielummin systeemin, jossa kyseisen tunnin "Rank" mäppäytyisi suoraan pyyntilämpötilaan esim. 18 - 23 Celsiuksen välillä. Mitenkähän tuon saisi tehtyä? Jotenkin kauhean vaikeaselkoiselta tuntuu nuo HomeAssistantin "koodaaminen".
 

haraldh

Vakionaama
Minulla on pari automaatiota jotka ohjaavat ilmalämpöpumppujen termostaattia niin että mikäli "SHF Price acceptable" on kyllä tai "SHF Rank acceptable" on kyllä niin silloin asetan termostaatin 2 astetta korkeammalle. Jos on kallis hinta tai tunnin rank on yli asetetun rajan niin 2 astetta matalemmalle lämpötilapyynnille. Muoks, käytän itse asiassa tuota "SHF Price or Rank acceptable" kilkettä.


Screenshot at 2024-09-26 17-54-24.png
 

Luukku

Vakionaama
Morjesta, ensimmäistä kertaa kirjoittamassa tälle foorumille. :)

Otin nyt omaan Mitsubishi ILP:in ohjaukseen tuon blueprintin (click), joka säätää jatkuvasti pyyntilämpötilaa sähkön hinnan mukaan. Sain pienellä ähräyksella ja mistään mitään ymmärtämättä homman pelittämään, mutta nyt haluaisin muokata tuota blueprintin toimintaa erilaiseksi.

Tuo blueprint (click) sanoo tekevänsä seuraavaa:

Eli pyyntiä säädetään suhteessa maksimihintaan. Tuo on minusta vähän huono, koska yksittäisen tunnin hinta voi heilauttaa koko päivän lämmityksen aivan toisenlaiseksi.
esim:
Tilanne 1)
Jos koko vuorokauden hinta on suunnilleen sama, mutta yksi tunti onkin todella kallis, niin ILP pöhöttää lähes koko päivän maksimilämmöillä.
Tilanne 2) jos tuota yhtä kallista tuntia ei ole, niin pyyntilämpötila heiluu asetettujen maksimiarvojen välillä pitkin päivää.

Haluaisinkin mielummin systeemin, jossa kyseisen tunnin "Rank" mäppäytyisi suoraan pyyntilämpötilaan esim. 18 - 23 Celsiuksen välillä. Mitenkähän tuon saisi tehtyä? Jotenkin kauhean vaikeaselkoiselta tuntuu nuo HomeAssistantin "koodaaminen".
Kynnysarvosensorit on myös käteviä säätötyökaluja. Kannattaa tutustua. Jos esim sähkönhinta pysyy tiettyjen arvojen sisällä niin normi lämpö, mutta jos ylittää jonkun rajan niin sitten muuttaa lämpöpyyntiä.
Ensin pitää tehdä se sensori ja sitten automaatio seuraa sitä.
Apureista löytyy.
 

Liitteet

  • IMG_4393.png
    IMG_4393.png
    122,1 KB · Katsottu: 45

Tekniikkatulitaloon

Aktiivinen jäsen
Morjesta, ensimmäistä kertaa kirjoittamassa tälle foorumille. :)

Otin nyt omaan Mitsubishi ILP:in ohjaukseen tuon blueprintin (click), joka säätää jatkuvasti pyyntilämpötilaa sähkön hinnan mukaan. Sain pienellä ähräyksella ja mistään mitään ymmärtämättä homman pelittämään, mutta nyt haluaisin muokata tuota blueprintin toimintaa erilaiseksi.

Tuo blueprint (click) sanoo tekevänsä seuraavaa:

Eli pyyntiä säädetään suhteessa maksimihintaan. Tuo on minusta vähän huono, koska yksittäisen tunnin hinta voi heilauttaa koko päivän lämmityksen aivan toisenlaiseksi.
esim:
Tilanne 1)
Jos koko vuorokauden hinta on suunnilleen sama, mutta yksi tunti onkin todella kallis, niin ILP pöhöttää lähes koko päivän maksimilämmöillä.
Tilanne 2) jos tuota yhtä kallista tuntia ei ole, niin pyyntilämpötila heiluu asetettujen maksimiarvojen välillä pitkin päivää.

Haluaisinkin mielummin systeemin, jossa kyseisen tunnin "Rank" mäppäytyisi suoraan pyyntilämpötilaan esim. 18 - 23 Celsiuksen välillä. Mitenkähän tuon saisi tehtyä? Jotenkin kauhean vaikeaselkoiselta tuntuu nuo HomeAssistantin "koodaaminen".
Ymmärrän kysymyksen hyvin, mutta vasta viikko sitten aloin itsekin HA:lla leikkimään joten täydellistä vastausta en pysty antamaan. Tuota nykyistä automaatiota voisi modata esim vähentämällä pyyntölämpötilasta RANK/10 ja säätämällä alkuperäisen vaihteluvälin hieman pienemmäksi. Eli itse tekisin tuolla rank säädölle oman sensorin jonka sitten vähentäsin asetusarvosta.

Yritin nyt turata vähän jotain konkreettistakin ja lisäsin vielä että ottaa huonelämpötilankin (sensor.1_temperature_humidity_sensor_temperature) mukaan tuohon säätöön eli tämmöinen koodin pätkä /homeassistant/configuration.yaml tiedostoon:

Koodi:
template:
  - sensor:
        name: "lampotilan_pudotus"
        unit_of_measurement: "°C"
        state: >
          {% set rank = states('sensor.shf_rank_now') | float %}
          {% set lampotila = states('sensor.1_temperature_humidity_sensor_temperature') | float %}
          {{  ((rank / 10 + (lampotila-22)) /2 ) | round(1, default=0) }}

ja tämän näköiseksi /homeassistant/blueprints/automation/T3m3z/continuous-control.yaml tiedosto:

Koodi:
blueprint:
  name: 'SHF: Adjust Climate entity target temperature based on SHF Control Factor.'
  domain: automation
  source_url: https://github.com/T3m3z/spotprices2ha/blob/main/blueprints/automation/shf-spotprices2ha/continuous-control.yaml
  author: shf-spotprices2ha
  input:
    min_value:
      name: Minimum value
      description: Minimum value that is going to be set. For example 22 Celsius for
        heatpump temperature.
      default: 22
      selector:
        number:
          min: -1000000000.0
          max: 1000000000.0
          step: any
          mode: box
    max_raise:
      name: Maximum raise from minimum value.
      description: If minimum value is 22 and maximum raise is 2, then control values
        will be between 22 and 24.
      default: 2
      selector:
        number:
          min: -1000000000.0
          max: 1000000000.0
          step: any
          mode: box
    entity:
      name: Entity
      description: Only used if trigger type is Entity Trigger. Select random entity
        if using Time Trigger.
      selector:
        entity:
          filter:
          - domain:
            - climate
            - input_number
          multiple: false
variables:
  min_value: !input min_value
  max_raise: !input max_raise
  entity: !input entity
trigger:
- platform: state
  entity_id: sensor.shf_control_factor_0_1
action:
- if:
  - condition: template
    value_template: '{{ ''input_number.'' in entity }}'
  then:
  - service: input_number.set_value
    entity_id: !input entity
    data:
      value: '{{ min_value + states(''sensor.shf_control_factor_0_1'') | float * max_raise - states(''sensor.lampotilan_pudotus'') | float
        }}'
  else:
  - service: climate.set_temperature
    entity_id: !input entity
    data:
      temperature: '{{ min_value + states(''sensor.shf_control_factor_0_1'') | float
        * max_raise - states(''sensor.lampotilan_pudotus'') | float
         }}'

Ja vielä muistutus lopuksi että omalla vastuulla koska itsekin ihan amatööri.
 
Viimeksi muokattu:

Luukku

Vakionaama
Tässä ympättynä samaan automaatioon kynnyssensori rank yli 10 muuttaa ilpin asetusta ja jos "rank 10" sensori on pois päältä niin tekee eri toiminnon.
 

Liitteet

  • IMG_4394.png
    IMG_4394.png
    144 KB · Katsottu: 46
  • IMG_4395.png
    IMG_4395.png
    85,9 KB · Katsottu: 48

Luukku

Vakionaama
Koodi:
description: ""
mode: single
trigger:
  - platform: state
    entity_id:
      - binary_sensor.rank_10_kynnys
    to: "on"
condition: []
action:
  - device_id: oma kone
    domain: climate
    entity_id: b09f28c400b59997cc345133d5a37c50
    type: set_preset_mode
    preset_mode: eco
  - if:
      - condition: state
        entity_id: binary_sensor.rank_10_kynnys
        state: "off"
      - condition: numeric_state
        entity_id: sensor.shf_electricity_price_now
        below: 0.13
    then:
      - device_id: oma kone
        domain: climate
        entity_id: b09f28c400b59997cc345133d5a37c50
        type: set_preset_mode
        preset_mode: none
 

Martta

Tulokas
Ymmärrän kysymyksen hyvin, mutta vasta viikko sitten aloin itsekin HA:lla leikkimään joten täydellistä vastausta en pysty antamaan. Tuota nykyistä automaatiota voisi modata esim vähentämällä pyyntölämpötilasta RANK/10 ja säätämällä alkuperäisen vaihteluvälin hieman pienemmäksi. Eli itse tekisin tuolla rank säädölle oman sensorin jonka sitten vähentäsin asetusarvosta.
Rankin jakolasku onkin nerokkaan yksinkertainen ratkaisu tähän! En tajunnutkaan, että rank on ihan tavallinen kokonaisluku siinä missä muutkin muuttujat ja sitä voisi suoraan hyödyntää yksinkertaisilla jako ja kertolaskuilla. Tuosta alkuperäisestä blueprintistä oikeastaan kun vain korvaan tuon laskukaavan olemaan RANK/24, niin saan suoraan "normalisoitua" rankin 0.0 - 1.0 välille. Kaava olisi siis pseudokoodina MINIMI_PYYNTI + ( RANK/24 ) * MAX_NOSTO, missä minimipyynti olisi esim. 18 astetta ja MAX_NOSTO 3 astetta, niin säätelis sitten 18 - 23 asteen välillä lämpötilaa.

Kun käytän RANKkia laskennan perusteena sähkön suhteellisen hinnan sijasta, pysyy lämmityksen määrä vuorokauden aikana "vakiona". Näin yhden tunnin korkea piikki ei saa koko muuta päivää näyttämään algoritmin silmissä halvalta. Ja muutenkin pelkästään RANK huomioimalla on hieman helpompi ennakoida paljonko asuntoon pumpataan lämpöä päivän aikana.
 

Temez

Aktiivinen jäsen
Miten tuo varttitase ja tämä integraatio? Muuttuuko rank niin että se on 0 - 96?
Joo, näin se taitaa olla. Heti kun datalähteeseen ilmestyy enemmän hinta-arvoja eli mennään siihen varttiaikatauluun, niin sensori "SHF Rank now" alkaa näyttää sitten suurempia lukuja.

En kokeillut, mutta koodia pienessä univajeessa koetin tulkkailla.
 

haraldh

Vakionaama
Pitäisikö tässä olla joku /4 vipu softassa, ja sitten kun käyttäjä on säätänyt rajansa uusiksi voisi laittaa varttitaseen päälle omassa HA:ssa?
 

Mikki

Hyperaktiivi
Pitäisikö tässä olla joku /4 vipu softassa, ja sitten kun käyttäjä on säätänyt rajansa uusiksi voisi laittaa varttitaseen päälle omassa HA:ssa?
Ajatus on APIn suhteen että nykyinen toimii kuten nykyäänkin, eli 24h ja tunneille varteista lasketut keskihinnat. Ihan vain etei riko mitään. Varttihommat on sitten API päässäkin joku uusi parametri tai url.
 
Viimeksi muokattu:
Back
Ylös Bottom