Pientä hiljaiseloa taas hetki tullut. Meille tuli perheenlisäystä, joten aktiivinen kirjoittelu jäänyt vähemmälle. Varmaan aktiivisuustaso vaihtelee tässä lähiviikkoina kovastikin.
Tästä taisitkin aiemmin jo puhua. Voisin lisäillä peruspakettiinkin tuon, koska sen lisääminen on todella nopea homma. Tilausta tälle ehkä on?
Juurikin näin. Ajatuksena oli tuoda jokin aloittelijan helposti käyttöönotettava systeemi, jolla saa halvoilla tunneilla nostettua lämpöä ja/tai laskettua kalliilla.
Tämmöinen avustava graafi tuon tutkimiseen tuli joskus tehtyä. Eli kun sähkö oli yöllä halvimmillaan, niin "SHF Control Factor 0-1" -sensorin arvo on 1. Kalleimmailla tunnilla sen arvo on 0. Näin voi ilmalämpöpumpulle käskeä, että pyyntilämpötila on (22 °C + 2°C*"SHF Control Factor 0-1") pyöristettynä haluttuun tarkkuuteen (templatena esim {{ (22 + states('sensor.shf_control_factor_0_1') | float * 2) | round(0) }} ). Silloin ILPin lämpötilapyynti vaihtelisi 22°C ja 24°C välillä riippuen kuluvan ajanhetken kalleudesta.
Näytä liitetiedosto 89647
Koodi:
type: custom:apexcharts-card
experimental:
color_threshold: true
now:
show: true
color: '#ff0000'
apex_config:
forceNiceScale: true
chart:
height: 165%
yaxis:
- id: pyynti
show: true
decimals: 2
align_to: 1
apex_config:
tickAmount: 4
seriesName: pyynti
- id: hinta
show: true
opposite: true
min: 0
max: ~25
decimals: 2
align_to: 1
apex_config:
tickAmount: 4
show:
last_updated: false
header:
standard_format: false
show: true
show_states: true
colorize_states: true
title: Ohjaus vs. pörssisähkö.
span:
start: day
offset: +0h
update_delay: 2s
series:
- entity: sensor.shf_electricity_price
yaxis_id: hinta
name: Pörssisähkö c/kWh
extend_to: now
type: area
curve: stepline
opacity: 0.02
group_by:
func: last
duration: 60m
stroke_width: 1
data_generator: |
return entity.attributes.data.map((d, index) => {
return [new Date(d["DateTime"]).getTime(), d["PriceWithTax"]*100];
});
show:
header_color_threshold: true
legend_value: false
in_header: false
name_in_header: false
extremas: true
- entity: sensor.shf_control_factor_0_1
yaxis_id: pyynti
name: Ohjaus
unit: C
type: area
curve: stepline
opacity: 0.02
stroke_width: 1
data_generator: |
return entity.attributes.today_values.map((d, index) => {
return [start.getTime()+index*3600000, d];
});
show:
header_color_threshold: true
legend_value: false
in_header: false
name_in_header: false
extremas: true
Tähän taidettiinkin jo vastailla, mutta tosiaan tämä on HomeAssistantissa "sensori", jonka arvo oli tarkasteluhetkellä 13. Ja kuvaaja näyttää HomeAssistantin tietokantaansa tallentamaa historia-arvoa eli mitä Rank on ollut joskus aiemmin.
Rank-tiedot ovat kuitenkin HomeAssistantissa olemassa jo kyllä "tulevaisuuteen". Sensorit vain näyttävät arvoja nykyhetkestä. Tässä apex-chart-koodi, jolla saat hinnan ja Rankin näkymään myös tulevaisuuteen graafina:
Näytä liitetiedosto 89656
Koodi:
type: custom:apexcharts-card
now:
show: true
color: '#ff0000'
apex_config:
xaxis:
tooltip:
enabled: false
yaxis:
- id: rank
show: true
decimals: 0
apex_config:
forceNiceScale: true
title:
text: Rank
- id: price
show: true
opposite: true
decimals: 2
apex_config:
forceNiceScale: true
title:
text: c/kWh
show:
last_updated: false
header:
standard_format: false
show: true
show_states: true
colorize_states: true
title: Price and Rank without extra fees
span:
start: day
offset: +0h
update_delay: 2s
series:
- entity: sensor.shf_electricity_price
yaxis_id: price
name: Electricity price c/kWh
extend_to: now
type: area
curve: stepline
opacity: 0.02
group_by:
func: last
duration: 60m
stroke_width: 1
data_generator: |
return entity.attributes.data.map((d, index) => {
return [new Date(d["DateTime"]).getTime(), d["PriceWithTax"]*100];
});
show:
header_color_threshold: true
legend_value: false
in_header: true
name_in_header: true
extremas: true
- entity: sensor.shf_electricity_price
yaxis_id: rank
name: Rank now (current day)
extend_to: now
type: area
curve: stepline
opacity: 0.02
group_by:
func: last
duration: 60m
stroke_width: 1
data_generator: |
return entity.attributes.data.map((d, index) => {
return [new Date(d["DateTime"]).getTime(), d["Rank"]];
});
show:
header_color_threshold: true
legend_value: false
in_header: true
name_in_header: true
extremas: false