Spot-hinta.fi - Yksinkertainen pörssiohjaus API ja sitä käyttävät automaatioskriptit

Salzi

Jäsen
Home assistantissahan on jo loistava YR valmiina, joten kävisikös tällaiset sensorit. Oli mulla jo valmiina, lisäsin vain tuon ennusteen.
Muistaakseni Yr:ään piti erikseen käydä klikkaamassa tuo ennuste aktiiviseksi, se ei defaulttina tainnut olla päällä. Eli YR ja device info ja ottapi käyttöön sieltä.
EDIT: YR sisältää tuon weather.home_hourly sensorin, kun ottaa sen käyttöön. Defaulttina on pois käytöstä.

YAML:
# MET.no sensorit
- platform: template
  sensors:
    metno_forecast_temperature:
        unique_id: 'metno_ennuste'
        friendly_name: 'metno ennuste'
        value_template: "{{ state_attr('weather.home', 'forecast')[0].temperature }}"
        unit_of_measurement: '°C'
    metno_temperature:
      unique_id: 'metno_lammot'
      friendly_name: 'met.no lämmot'
      unit_of_measurement: "°C"
      value_template: "{{ state_attr('weather.home', 'temperature') }}"
    metno_humidity:
      unique_id: 'metno_kosteus'
      friendly_name: 'met.no kosteus'
      unit_of_measurement: "%"
      value_template: "{{ state_attr('weather.home', 'humidity') }}"
    metno_pressure:
      unique_id: 'metno_ilmanpaine'
      friendly_name: 'met.no ilmanpaine'
      unit_of_measurement: "mbar"
      value_template: "{{ state_attr('weather.home', 'pressure') }}"
    metno_wind_bearing:
      unique_id: 'metno_tuulensuunta'
      friendly_name: 'met.no tuulensuunta'
      unit_of_measurement: "°"
      value_template: "{{ state_attr('weather.home', 'wind_bearing') }}"
    metno_wind_speed_ms:
      unique_id: 'metno_tuulen_voima'
      friendly_name: 'met.no Tuulen voimakkuus'
      unit_of_measurement: "m/s"
      value_template: "{{ state_attr('weather.home', 'wind_speed') }}"
    metno_wind_dir_letter:
      value_template: >
        {% set direction = ['N','NNE','NE','ENE','E','ESE','SE','SSE','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %}
        {% set degree = states('sensor.wind_bearing')|float %}
        {{ direction[((degree+11.25)/22.5)|int] }}
Mutta hakeeko tämä lämpötilan samasta paikasta kuin spot-hinnan scripti?
 

Salzi

Jäsen
Saatko haettua Shelly Smart Control mobiilisovelluksesta timestampit mitä rele on puuhannut?

Eihän tuo 7 asteen max temperature ole pätkinyt lämmitystä?
Ei tästä näe tämän kummempia. 7c rajan olisi varmaankin pitänyt pitää vastus kokonaan pois päältä. Home assistantin puolelta mikään ei ole ohjannut ja varaaja on muutenkin ollut lämmin niin ei ole ollut syytäkään.
1696157174895.png
 

mobbe

Vakionaama
Nämä shellyt on mielestäni hyvin epävakaita laitteita! Automaatio insinöörinä en ottaisi näitä teollisuudessa käyttöön!!
Shellyt ei pysyisi tehtaassa hetkeäkään jumittamatta on sen verran häiriöjännitteitä vaikka kyllä tarve olisi esim. paikallisiin kuormanohjauksiin ja mittauksiin ilman raskaita automaatiojärjestelmiä
 

Mikki

Hyperaktiivi
Varaajan vastus on nyt uuden scriptin aikana käynyt lyhyitä aikoja päällä vähän erikoisina aikoina.

katso liitettä 88755

Näissä ajoissa on erikoisia nuo ajat esim. 04:17 tai 12:37. Skripti ei normaaliajossaan ei tee mitään ohjauksia näihin aikoihin.
Vain tasatuntien nurkalla tuo skripti tekee toimenpiteitä.

Tai sitten jos Shelly on buutannut esim. 04:17 ja skripti on käynnistynyt, niin sitten se 04:18 voisi olla skriptin tekosia että sulki releen kun se oli 03:00 jo suljettu ja luultavasti edelleen skripti sen releen haluaisi pitää kiinni.
 

Mikki

Hyperaktiivi
Shellyt ei pysyisi tehtaassa hetkeäkään jumittamatta on sen verran häiriöjännitteitä vaikka kyllä tarve olisi esim. paikallisiin kuormanohjauksiin ja mittauksiin ilman raskaita automaatiojärjestelmiä

Kyllä pysyisi jos olisi kunnolla häiriösuojattu kontaktori. Vaikka ABB AF sarjan kontaktoreista löytyy järeämpiäkin virtoja kestäviä laitoksia ja releohjaus ei anna mitään takapotkua Shellyn suuntaan.

Olisihan se komeaa ohjata jotain 10 miljoonan euron laitosta 40 euron releellä ja mobiilisoftalla :)
 

mobbe

Vakionaama
Kyllä pysyisi jos olisi kunnolla häiriösuojattu kontaktori. Vaikka ABB AF sarjan kontaktoreista löytyy järeämpiäkin virtoja kestäviä laitoksia ja releohjaus ei anna mitään takapotkua Shellyn suuntaan.

Olisihan se komeaa ohjata jotain 10 miljoonan euron laitosta 40 euron releellä ja mobiilisoftalla :)
Suuri syyllinen shellyjen epävakauteen ovat nämä punaiset PM-mallit kulutusmittauksella itsekin ensin näihin erehdyin kun piti myös tietää paljonko kulutetaan.Jos haluaa kulutusmittauksen siihen on Pro Em -releet virtamuuntajilla mutta teollisuudessa en näitäkään käyttäisi vaikka näillä 400A sallitaan
 

tk-

Aktiivinen jäsen
Suuri syyllinen shellyjen epävakauteen ovat nämä punaiset PM-mallit kulutusmittauksella itsekin ensin näihin erehdyin kun piti myös tietää paljonko kulutetaan.Jos haluaa kulutusmittauksen siihen on Pro Em -releet virtamuuntajilla mutta teollisuudessa en näitäkään käyttäisi vaikka näillä 400A sallitaan
Tuo meidän kokemus uudesta skiptistä nyt jo reilun viikon ajalta ei kyllä tue tätä ajatusta laisinkaan. Ainakaan enää uusimmalla firmiksellä. Kerron kuukauden kohdalla kun saadaan enempi tilastodataa, mutta tuolla on huomattava määrä PM-laitteita jotka toimivat täysin vakaasti ja ongelmitta.
 

mobbe

Vakionaama
Tuo meidän kokemus uudesta skiptistä nyt jo reilun viikon ajalta ei kyllä tue tätä ajatusta laisinkaan. Ainakaan enää uusimmalla firmiksellä. Kerron kuukauden kohdalla kun saadaan enempi tilastodataa, mutta tuolla on huomattava määrä PM-laitteita jotka toimivat täysin vakaasti ja ongelmitta.
Selvä se mutta itse en tule PM-malleja hankkimaan ja ajamaan näistä useita ampeereita läpi muuten shellyt ovat loistavia niin hinnalta ja ominaisuuksilta
 
  • Tykkää
Reactions: tk-

tk-

Aktiivinen jäsen
Selvä se mutta itse en tule PM-malleja hankkimaan ja ajamaan näistä useita ampeereita läpi muuten shellyt ovat loistavia niin hinnalta ja ominaisuuksilta
Joo senverta minäkin ymmärrän sähkötekniikan päälle, että on turha sotkea hienoa virtamittauselektroniikkaa sinne missä sitä ei tarvita, koska siitä ei ole hyötyä ja voi olla haittaa.
 

Mikki

Hyperaktiivi
Pieni tuunaus tuli tähän SmartHeating -rajapintaan. Eli tuolla ehkä oli pieni bugi liittyen "PriceAlwaysAllowed" parametriin, joka nyt pitäisi olla korjattu.

Samoin lisäsin rajapinnan paluuseen selityksen, että miksi tuli 200 tai 400 vastaus. Eli mikä sääntö lopullisesti päätti mitä tapahtuu. Se näyttää suunnilleen tällaiselta nyt konsolissa.

1696165045062.png
 

Sammypiru

Vakionaama
Pieni tuunaus tuli tähän SmartHeating -rajapintaan. Eli tuolla ehkä oli pieni bugi liittyen "PriceAlwaysAllowed" parametriin, joka nyt pitäisi olla korjattu.

Samoin lisäsin rajapinnan paluuseen selityksen, että miksi tuli 200 tai 400 vastaus. Eli mikä sääntö lopullisesti päätti mitä tapahtuu. Se näyttää suunnilleen tällaiselta nyt konsolissa.

katso liitettä 88763
Pittääkö asentaa scripti uudelleen, oliko niin paha bugi?
 

mobbe

Vakionaama
Joo senverta minäkin ymmärrän sähkötekniikan päälle, että on turha sotkea hienoa virtamittauselektroniikkaa sinne missä sitä ei tarvita, koska siitä ei ole hyötyä ja voi olla haittaa.
PM-shellyjä tuli haukuttua niin vastapainoksi täytyy kehua uutta Shelly Pro Em-50 relettä jossa on kaikki shellyn herkut releessä lisäksi dry contact kärki paristovarmennettu säilyttää ajan ilman verkkoyhteyttä mittaukseen 2 kpl virtapihtiä samaa vaihetta käyttäen loistava web UI mm. 30min reaalitrendi.
 
Viimeksi muokattu:

Mikki

Hyperaktiivi
Olikos sinulla mikä Shelly? Ja onko releen ohjaus oikealla relenumerolla? Siinä skriptissä on malliksi 0,1 eli kaksi relettä. Mutta jos ohjaat yhtä niin sitten yksi numero vain.

Mutta en keksi mikä ainakaan skriptissä tekisi mitään 37 minuutilla.
 

Nippis

Tulokas
1696191023776.png

Kun päivitin Shelly plus 2PM uuteen firmwareen niin sinne ilmestyi uusi parametri KVS, key Value Storage.
Osaako joku kertoa mihin tätä on tarkoitus käyttää? Siinä näyttäisi olevan Scriopt-libraryn url-osoite.
Tämä on ainut purkki missä tuo library toimii???
Muissa minulla olevissa purkeissa ei ole tuota KVS:ää vaikka niissä on sama firmware versio.
 

Mikki

Hyperaktiivi
katso liitettä 88783
Kun päivitin Shelly plus 2PM uuteen firmwareen niin sinne ilmestyi uusi parametri KVS, key Value Storage.
Osaako joku kertoa mihin tätä on tarkoitus käyttää? Siinä näyttäisi olevan Scriopt-libraryn url-osoite.
Tämä on ainut purkki missä tuo library toimii???
Muissa minulla olevissa purkeissa ei ole tuota KVS:ää vaikka niissä on sama firmware versio.

Tuo ominaisuus pitäisi kyllä näkyä kaikissa niissä Shellyissä missä on sekä skriptituki että firmware 1.0.2 tai 1.0.3. Tuo "KVS" on paikka mihin periaatteessa voi tallentaa lyhyitä key-value pareja, jotka säilyvät myös bootin yli Shellyssä. Tuo on ollut Shellyissä "aina", mutta nyt vasta tuotu näkyväksi.

Olisikohan firmware päivitys mennyt jotenkin puihin niissä shellyissä, missä tuota ei näy JA library toiminnallisuus ei toimi....
 

Salzi

Jäsen
Olikos sinulla mikä Shelly? Ja onko releen ohjaus oikealla relenumerolla? Siinä skriptissä on malliksi 0,1 eli kaksi relettä. Mutta jos ohjaat yhtä niin sitten yksi numero vain.

Mutta en keksi mikä ainakaan skriptissä tekisi mitään 37 minuutilla.
4pm ja ohjaa vain 0 relettä. Copypastesin uuden koodin vanhan päälle ja monitori scripti seuraa entisillä asetuksilla. Ei ole ennen tehnyt tämmöistä, eikä scriptin pitäisi ylipäänsä kytkeä päälle näillä lämpötiloilla. Mutta mitään muuta ei ole muutettu kuin tuota yhtä scriptiä vanhan päälle.
 

Mikki

Hyperaktiivi
4pm ja ohjaa vain 0 relettä. Copypastesin uuden koodin vanhan päälle ja monitori scripti seuraa entisillä asetuksilla. Ei ole ennen tehnyt tämmöistä, eikä scriptin pitäisi ylipäänsä kytkeä päälle näillä lämpötiloilla. Mutta mitään muuta ei ole muutettu kuin tuota yhtä scriptiä vanhan päälle.
Olikos sinulla Monitor skriptissä Shellyn boottaus käytössä? Jos ei ole yhteyttä Shelly cloudiin niin se saattaa buutata sitten shellyä. Kokeileppas pysäyttää se Monitor skripti ja sitten seurata miten toimii.

Aikomukseni on parannella sitä Monitor skriptiä, kun tuo Shellyn oma cloudi tökkii niin tolkuttoman usein. Siihen ei voi luottaa oikein hyvänä Internet-yhteys mittarina.
 

Salzi

Jäsen
Otin monitorin yöksi pois ja vastus oli lähtenyt lämmittämään 1:37 ja 3:37. Nyt aamulla lämmitysscripti on tippunut pois päältä. Mistä näkisi mikä tuon ohjauksen tekee?
 

Mikki

Hyperaktiivi
Otin monitorin yöksi pois ja vastus oli lähtenyt lämmittämään 1:37 ja 3:37. Nyt aamulla lämmitysscripti on tippunut pois päältä. Mistä näkisi mikä tuon ohjauksen tekee?
Aika mystistä. Tehdas resettiä laitteelle jo harkitsisin jos se noin kummittelee.

Onko skripti asetettu käynnistymään automaattisesti jos Shelly buuttaa? Eli se "liukukytkin" päällä skriptissä.
 

kayttajatunnus

Aktiivinen jäsen
Hyvin on täällä toiminut tuo uusikin skripti ainakin toistaiseksi.

Backlogille mietittäväksi voisiko myös Minimum hours periodiin laittaa erillisen hintarajan :)
 

Mikki

Hyperaktiivi
Hyvin on täällä toiminut tuo uusikin skripti ainakin toistaiseksi. Backlogille mietittäväksi voisiko myös Minimum hours periodiin laittaa erillisen hintarajan :)

Hmm.... voisihan siihen, mutta mietin että jos on -10C pakkasta ja on tämmöinen päivä kuin nyt, niin olisihan se ehkä kuitenkin hyvä jos lämmitettäisiin edes hieman välilläkin, hinnasta riippumatta.

Vaikka toki käyttäjähän asian päättää. Miksei voi välillä vähän kylmästäkin kärsiä jos vaihtoehtona on kärsiä lompakon kautta.
 

kayttajatunnus

Aktiivinen jäsen
Hmm.... voisihan siihen, mutta mietin että jos on -10C pakkasta ja on tämmöinen päivä kuin nyt, niin olisihan se ehkä kuitenkin hyvä jos lämmitettäisiin edes hieman välilläkin, hinnasta riippumatta.

Vaikka toki käyttäjähän asian päättää. Miksei voi välillä vähän kylmästäkin kärsiä jos vaihtoehtona on kärsiä lompakon kautta.
Totta. Mietin tätä oman järjestelmän näkökulmasta missä pitäisi pystyä keräämään lämmitysvelka talteen. Samoin oman järjestelmäni ominaisuus että tuolla -10 asteen paikkeilla lämmitetään jo 19h päivästä, jolloin pitkiä lämmityskatkoja ei enää edes tule.

Tässä ehdotuksena tietysti oletuksena, että jos ei päivällä lämmitetä, sitten lämmitetään kuitenkin edullisina tunteina riittävästi.
 

Mikki

Hyperaktiivi
Totta. Mietin tätä oman järjestelmän näkökulmasta missä pitäisi pystyä keräämään lämmitysvelka talteen. Samoin oman järjestelmäni ominaisuus että tuolla -10 asteen paikkeilla lämmitetään jo 19h päivästä, jolloin pitkiä lämmityskatkoja ei enää edes tule.

Tässä ehdotuksena tietysti oletuksena, että jos ei päivällä lämmitetä, sitten lämmitetään kuitenkin edullisina tunteina riittävästi.

Näin sen ajattelisin:
1696249137299.png


Eli jos hintarajan asettaa, niin se laskee periodilta montako tuntia menee sen alle. Ja jos niitä on vähemmän kuin tuo "NumberOfHours", niin sitten sitä lukemaa pienennetään.

Lopultahan vuorokaudelle siis tulee kuitenkin haluttu määrä tunteja, niitä vain voi sitten osua vähemmän tälle periodille kuin halvempana päivänä. Jos logiikka kelpaa, niin se tulee vielä tänään tarjolle.
 
Päivittelin itselleni sopivan apexchartin.

Halusin ettei ilmainen pörssisähkö aiheuta visuaalista harhaa että sähkö olisi ostettaessa kaikkine kuluineen ilmaista.

1696253491339.png

  • Sisältää 5 sarjaa (entityä), joista
    • 2 kpl Piirretään kuvaajaan
      • Spot-hinta ilman veroja (hinta jonka saa myyntisähköstä)
      • Oma ostohinta, jossa omat siirtomaksut ja sähkövero (n. 8 senttiä / kwh + alvillinen pörssihinta)
    • 3 kpl Lasketaan mutta ei piirretä, lisätään headeriin
      • Pörssihinta 0% nyt (mitä saan myyntisähköstä nyt)
      • pörssihinta 24% nyt (Yleisin ilmoitettu hinta)
      • Ostosähkön hinta nyt (omat siirtokulut + alvillinen pörssihinta)
  • Ylärivillä ostosähkön hinta on punaisella ja myyntisähkön hinta vihreällä
Tätä saapi muokkailla. Toimii apexchart 2.04 versiolla ainakin.
Koodi:
type: custom:apexcharts-card
graph_span: 48h
apex_config:
  stroke:
    width: 2
experimental:
  color_threshold: true
show:
  last_updated: true
header:
  title: sähkön osto vs myynti
  show: true
  show_states: true
  colorize_states: true
span:
  start: day
yaxis:
  - min: -1
    decimals: 2
    apex_config:
      forceNiceScale: true
now:
  show: true
  label: Now
series:
  - entity: sensor.shf_electricity_price
    name: ostohinta veroilla
    show:
      in_header: false
      extremas: false
      legend_value: false
      header_color_threshold: true
      in_chart: true
      name_in_header: false
      datalabels: false
    type: line
    curve: stepline
    color: eecccc
    float_precision: 2
    data_generator: |
      // Päivitä omat siirtomaksut
      const siirtomaksu = 4.821
      const energiavero_luokka_1 = 2.778
      const huoltovarmuusmaksu = 0.01612
      const siirtokulu = siirtomaksu + energiavero_luokka_1 + huoltovarmuusmaksu
      // MUOKATTAVA OSUUS LOPPUU

      return entity.attributes.data.map((d, index) => {
        if (!d) {
          console.error("DEBUGGING: Missing data at index:", index);
          return [null, null];
        }
        let timestamp = new Date(d["DateTime"]).getTime();
        let priceWithTax = d["PriceWithTax"];
      
        let price;
        if (priceWithTax !== undefined && priceWithTax !== null) {
          price = priceWithTax * 100 + siirtokulu;
        } else {
          price = null;
        }
                  
        return [timestamp, price];
      });
  - entity: sensor.shf_electricity_price
    name: pörssihinta alv 0%
    show:
      in_header: false
      extremas: false
      legend_value: false
      header_color_threshold: true
      in_chart: true
      name_in_header: false
      datalabels: false
    type: column
    curve: stepline
    color: darkgreen
    float_precision: 2
    data_generator: |
      return entity.attributes.data.map((d, index) => {
        let timestamp = new Date(d["DateTime"]).getTime();
        let price = entity.attributes.data[index]["PriceNoTax"]*100;
      
        // Debugging
        if (index === entity.attributes.data.length - 1) {
          console.log("Last value for myyntihinta alv 0%:", price);
        }
      
        return [timestamp, price];
      });
    color_threshold:
      - value: 0
        color: 368f39
      - value: 1
        color: a3b34d
      - value: 20
        color: ffd57e
      - value: 30
        color: f18c56
      - value: 40
        color: de425b
  - entity: sensor.shf_electricity_price
    name: Pörssihinta alv 0%
    show:
      in_header: true
      in_chart: false
    color: green
    float_precision: 2
    data_generator: |
      let currentTimestamp = new Date().setMinutes(0, 0, 0);
      let currentValue = entity.attributes.data.find(d => {
        return new Date(d["DateTime"]).getTime() === currentTimestamp;
      });
      if (currentValue) {
        return [[currentTimestamp, currentValue["PriceNoTax"]*100]];
      } else {
        return [];  // Return an empty array if no matching data point is found
      }
  - entity: sensor.shf_electricity_price
    name: Pörssihinta alv 24%
    show:
      in_header: true
      in_chart: false
    color: violet
    float_precision: 2
    data_generator: |
      let currentTimestamp = new Date().setMinutes(0, 0, 0);
      let currentValue = entity.attributes.data.find(d => {
        return new Date(d["DateTime"]).getTime() === currentTimestamp;
      });
      if (currentValue) {
        return [[currentTimestamp, currentValue["PriceWithTax"]*100]];
      } else {
        return [];  // Return an empty array if no matching data point is found
      }         
  - entity: sensor.shf_electricity_price
    name: Sähkön + siirron osto
    show:
      in_header: true
      in_chart: false
    color: red
    float_precision: 2
    data_generator: |
      // Päivitä omat siirtomaksut
      const siirtomaksu = 4.821
      const energiavero_luokka_1 = 2.778
      const huoltovarmuusmaksu = 0.01612
      const siirtokulu = siirtomaksu + energiavero_luokka_1 + huoltovarmuusmaksu
      // MUOKATTAVA OSUUS LOPPUU

      let currentTimestamp = new Date().setMinutes(0, 0, 0);
      let currentValue = entity.attributes.data.find(d => {
        return new Date(d["DateTime"]).getTime() === currentTimestamp;
      });
      if (currentValue) {
        return [[currentTimestamp, currentValue["PriceWithTax"]*100+siirtokulu]];
      } else {
        return [];  // Return an empty array if no matching data point is found
      }
 
Viimeksi muokattu:
En huomannut täältä että onko kysytty, miten voi ohjata lattialämmitystä pörssisähköllä. Kysymys onkin, saanko ohjattua devireg optia jotenkin halvalla sähköllä?

Itsellä vanha tulppakaappi minne hankala mahduttaa ohjauksia kummemmin. Juuri kyllä vaihdettiin LVV ohjautumaan päälle Shelly plus 1 mukaan, kontaktorin vaihtui myös uudempaan. (Kiitoksia sen neuvoista tänne myöskin.)

Voiko tuonne deviregin taakse laittaa vain Shelly plus 1 joka katkoo tuota lämmityksellä menevää sähköä?
 

Mikki

Hyperaktiivi
Voiko tuonne deviregin taakse laittaa vain Shelly plus 1 joka katkoo tuota lämmityksellä menevää sähköä?
Jos 8A riittää niin olethan huomannut tämän? On hyvin pieni kooltaan:


Että kyllähän tuo voisi onnistua.
 
Jos 8A riittää niin olethan huomannut tämän? On hyvin pieni kooltaan:


Että kyllähän tuo voisi onnistua.
Totta, tulikin vasta huomattua. Harmillisesti kerkisin kasan plus1 tilaamaan jo, mitkä löytyy kotoonta. Varmaan toimii tuolla samalla scriptillä mikä on tuossa varaajaa ohjaavassa releessä?

Laittaa vain termostaatilla halutun lämpötilan ja sitte antaa releellä lupaa lämmittää tuosta eteenpäin. Muistaa vain laittaa hieman enemmän lämmitettävä tunteja päivää kohti.
 

Mikki

Hyperaktiivi
Totta, tulikin vasta huomattua. Harmillisesti kerkisin kasan plus1 tilaamaan jo, mitkä löytyy kotoonta. Varmaan toimii tuolla samalla scriptillä mikä on tuossa varaajaa ohjaavassa releessä?
Kyllä sama skripti toimii. Mutta uusi ulkolämpötilaa seuraava lämmitys-skripti voisi olla parempi kun tuntimäärä säätyy automaattisesti.
 

kayttajatunnus

Aktiivinen jäsen
Näin sen ajattelisin:
katso liitettä 88797

Eli jos hintarajan asettaa, niin se laskee periodilta montako tuntia menee sen alle. Ja jos niitä on vähemmän kuin tuo "NumberOfHours", niin sitten sitä lukemaa pienennetään.

Lopultahan vuorokaudelle siis tulee kuitenkin haluttu määrä tunteja, niitä vain voi sitten osua vähemmän tälle periodille kuin halvempana päivänä. Jos logiikka kelpaa, niin se tulee vielä tänään tarjolle.
Tämähän kuulostaa erinomaiselta
 

Salzi

Jäsen
Usein halvimmat tunnit on puolen yön jälkeen. Usein kuitenkin myös ennen 24 on edullista, mutta ei ihan niin edullista kuin yöllä. Scripti huomioi vain kuluvan vuorokauden, mutta olisiko mahdollista huomioida myös seuraavaa jo hieman ennakkoon ennen vuorokauden vaihtumista? Jos yöllä on riittävä määrä halpoja tunteja niin lämmitystä ei useinkaan kannata aloittaa kymmeneltä illalla. Tuleeko mieleen ideoita miten tuota voisi kehittää?
 

kotte

Hyperaktiivi
Tuleeko mieleen ideoita miten tuota voisi kehittää?
Omasta mielestäni vuorokausi ja vastaavat ovat aika keinotekoisia reunaehtosabluunoita sähkön käytön optimoinnille. Ajattelu voisi pikemmin olla sellainen, että annetaan annetaan tarvittava energiamääräarvio kilowattitunteina esimerkiksi seuraaville 3, 6, 12 ja 24 tunnille tms. ja systeemi sitten ehdottaa, miten kyseiset energiamäärät kannattaa hankkia edullisimmin.

Yleensä sähköä voi säästää paremmin muutaman tunnin ajan, mutta luokkaa vuorokauden aikana säästömahdollisuuden tai oikeammin kulutuksen siirron rajat tulevat vastaan. Toki noiden periodien ei tarvitsisi olla kiinteitä, vaan sellaisia voisi asettaa aivan omien tarpeidensa perusteella tai miksei myös keskimääräisenä tuntitehona osittain. Kovin paljon vuorokautta pitempään ei hintojakaan ole yleensä saatavilla ja keskimäärinkään ei aivan vuorokautta.

Tuollaisilla lähtökohdilla kulutus olisi kuitenkin aivan tarkasti optimoitavissa ajanjakson osalta. Systeemin ei edes tarvitse yrittää ratkaista sellaisia energia- tai tehovaatimusten ajoitusta, joihin ei vielä optimointipyyntöä jätettäessä ole saatavissa lähtötietoja sähkön hintojen osalta. Kyselyitähän voi päivittää, jolloin sekä tarve että lähtötiedot ovat tyypillisesti tarkentuneet ajan myötä.
 

Mikki

Hyperaktiivi
Tätähän voi tietenkin kehittää aivan loputtomasti. Mutta rajahyöty karkaa todella herkästi kauas taivaanrantaan kun päästää sisäisen insinöörin valloilleen.

Loppujenlopuksi suurimmat hyödyt saa lämmitykseen kun vain ohittaa 6 kalleinta tuntia. Periaatteessa suurimmassa osassa taloja tuo sääntö pätee kaikille pakkasille, kun talo ei jäähdy noin nopeasti. Ja lämmitysjärjestelmä riittää kirimään tappion takaisin.

Kaikki optimoinnit sen jälkeen alkaa pienentymään todella vauhdilla. Kunnes jossain sadannen ohjausparametrin kohdalla hyöty on enää 0,01 senttiä vuositasolla. Ja silti insinööri miettii miten voisi vielä parantaa :)
 

Mikki

Hyperaktiivi
Usein halvimmat tunnit on puolen yön jälkeen. Usein kuitenkin myös ennen 24 on edullista, mutta ei ihan niin edullista kuin yöllä. Scripti huomioi vain kuluvan vuorokauden, mutta olisiko mahdollista huomioida myös seuraavaa jo hieman ennakkoon ennen vuorokauden vaihtumista? Jos yöllä on riittävä määrä halpoja tunteja niin lämmitystä ei useinkaan kannata aloittaa kymmeneltä illalla. Tuleeko mieleen ideoita miten tuota voisi kehittää?

Näin voi todellakin joskus käydä. Tuossa minimal_heating.js skriptissä on se ominaisuus yölämmitykseen tuotukkin.

Tähän lämmitysskriptiin sen soveltaminen on loppujenlopuksi huomattavasti vaikeampaa. Pitäisi varmaan ihan laskea jollain excelillä, että mitä tuolla optimoinilla voisi saavuttaa, kun kyse todellakin on yleensä vain siitä aloitetaanko lämmitys 23:00 vai 01:00 ja hintaeroa sentti tai sentin osia. Ja tämä tapahtuu sitten todella harvoin.
 

Mikki

Hyperaktiivi
Tämähän kuulostaa erinomaiselta

No nyt se "MinimumHoursPeriod_PriceAllowed" -parametri sitten skriptiin lisätty ja palvelinpääkin pitäisi toimia. Eiköhän tämä nyt ala olemaan tasolla, että laitan pian "masteriin", että pääsen eroon siitä vanhasta skriptistä.

Eli ensimmäisen BETA-version jälkeen palautteiden perusteella on lisätty parametrit:

- PriceAlwaysAllowed (aina sallittu hintaraja)
- HeatingHours_MinTemperature (lämpötila, jossa mennään 24h lämmitykseen)
- MinimumHoursPeriod_PriceAllowed (tuntijoukolle, jolle halutaan tietty määrä tunteja, voi kuitenkin antaa hintarajan lämpötilarajan lisäksi)

Versio siis löytyy täältä: https://github.com/Spot-hinta-fi/Shelly/blob/SmartHeating/Scripts/Shelly-SmartHeating.js
 

kayttajatunnus

Aktiivinen jäsen
En ehtinyt vielä tuota uusinta versiota laittaa, joten en tiedä johtuuko ongelma siitä mutta nyt oli klo 10 liipaistu lämmitys päälle näillä parametreilla kun olisi pitänyt mennä vasta joskus klo 13-16 välillä.

Koodi:
    // Heating hours per temperature point.
    // NOTE! Number of hours must increase(or stay the same) when going from warmer to colder.
    HeatingHours_MaxTemperature: 50,  // Stop heating at this temperature (zero hours in all degrees above this)
    HeatingHours_Plus30: 3,      // Number of heating hours at +30C
    HeatingHours_Plus20: 5,      // Number of heating hours at +20C
    HeatingHours_Plus10: 6,      // Number of heating hours at +10C
    HeatingHours_Zero: 14,          // Number of heating hours at 0C
    HeatingHours_Minus10: 19,     // Number of heating hours at -10C
    HeatingHours_Minus20: 24,     // Number of heating hours at -20C
    HeatingHours_Minus30: 24,     // Number of heating hours at -30C
    HeatingHours_MinTemperature: -18, // Temperature where heating is always on (24 hours in all degrees below this)

    // Minimum hours period (mainly for a daytime to avoid too long heating pauses)
    MinimumHoursPeriod_IsActive: true, // Set to true, if you want to define minimum hours period
    MinimumHoursPeriod_TemperatureStart: 12,  // Minimum hours are active only below this temperature
    MinimumHoursPeriod_Hours: [9, 10, 11, 12, 13, 14, 15, 16],  // List hours for minimum hours period.
    MinimumHoursPeriod_NumberOfHours: 1,  // How many hours at minimum must be put to this period

    // Limitations and backup hours
    AllowedDays: [1, 2, 3, 4, 5, 6, 7],  // Execution days: 1=Monday to 7=Sunday.
    AllowedMonths: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],  // Execution months: 1=January to 12=December.
    BackupHours: [1, 2, 3, 4, 12, 13, 16, 17, 21, 22],  // Backup hours if internet connection is down or spot-hinta.fi server is not responding
    MaximumPrice: 999, // Maximum allowed price in Euro cents. This can be used to f.ex. stop heating with electricity and switch to wood/oil/gas.
    PriceAlwaysAllowed: -999, // At what price the relay can ALWAYS be on (or off, if inverted)? Use "-999" if you don't want to use this.

    // Price modification (f.ex. electricity transfer cost difference between night/day or seasonal price differences)
    PriceModifier_IsActive: false,  // Change to true if price modification is wanted
    PriceModifier_Sum: -2.30, // How much the price is modified in euro cents? Can be positive or negative amount.
    PriceModifier_Months: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],  // Modify if price modification is valid only during certain months
    PriceModifier_Days: [1, 2, 3, 4, 5, 6, 7], // Modify if the price modification is valid only during certain days
    PriceModifier_Hours: [22, 23, 0, 1, 2, 3, 4, 5, 6, 7], // List here the hours which price is modified for rank calculation
 
Back
Ylös Bottom