Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type: custom:apexcharts-card
- header:
- show: true
- title: Electricity price and wind power
- show_states: true
- colorize_states: true
- standard_format: true
- disable_actions: true
- graph_span: 96h
- update_interval: 15min
- experimental:
- color_threshold: true
- apex_config:
- chart:
- height: 360
- toolbar:
- show: true
- grid:
- strokeDashArray: 3
- xaxis:
- lines:
- show: false
- legend:
- show: false
- xaxis:
- tickAmount: 6
- labels:
- style:
- fontWeight: 100
- fontSize: 12px
- format: ddd H:mm
- tooltip:
- enabled: true
- tooltip:
- x:
- format: HH. mm
- span:
- start: hour
- offset: "-24h"
- now:
- show: true
- label: Now
- series:
- - entity: sensor.nordpool_predict_fi_windpower
- name: Tuulivoima
- type: area
- yaxis_id: wind
- float_precision: 0
- opacity: 0.2
- extend_to: now
- stroke_width: 0.2
- curve: stepline
- data_generator: |
- const data = entity.attributes.windpower_forecast || [];
- return data.map((item) => [item.timestamp, item.value / 1000]);
- color: skyblue
- color_threshold:
- - value: 0
- color: darkblue
- - value: 3
- color: dodgerblue
- - value: 5
- color: skyblue
- show:
- in_chart: true
- in_header: false
- in_legend: true
- legend_value: false
- - entity: sensor.powersaver
- data_generator: |
- return entity.attributes.minutes.map((entry) => {
- return [new Date(entry.start), entry.onOff];
- });
- yaxis_id: powersaver
- name: Boiler schedule
- type: area
- color: goldenrod
- opacity: 0.3
- stroke_width: 0
- curve: stepline
- show:
- legend_value: false
- in_header: false
- name_in_header: false
- datalabels: false
- extend_to: false
- - entity: sensor.nordpool
- name: current price ¢/kWh
- yaxis_id: price
- type: area
- extend_to: now
- float_precision: 3
- stroke_width: 0.2
- opacity: 0.6
- fill_raw: "null"
- unit: ¢/kWh
- show:
- in_header: true
- legend_value: false
- extremas: false
- header_color_threshold: true
- color: "#aaaaaa"
- color_threshold:
- - value: -10
- color: dodgerblue
- - value: 0
- color: darkgreen
- - value: 5
- color: green
- - value: 10
- color: orange
- - value: 15
- color: red
- - value: 20
- color: darkred
- - value: 50
- color: black
- - entity: sensor.nordpool
- name: coming prices ¢/kWh
- yaxis_id: price
- type: area
- float_precision: 3
- stroke_width: 0.2
- opacity: 0.4
- fill_raw: "null"
- unit: ¢/kWh
- show:
- in_header: false
- legend_value: false
- extremas: false
- data_generator: >
- const now = new Date();
- const output =
- entity.attributes.raw_today.concat(entity.attributes.raw_tomorrow);
- return output
- .filter((entry) => new Date(entry.start) >= now)
- .map((entry) => [new Date(entry.start), entry.value]);
- color: "#aaaaaa"
- color_threshold:
- - value: -10
- color: dodgerblue
- - value: 0
- color: darkgreen
- - value: 5
- color: green
- - value: 10
- color: orange
- - value: 15
- color: red
- - value: 20
- color: darkred
- - value: 30
- color: black
- extend_to: false
- - entity: sensor.nordpool_predict_fi_price
- type: area
- yaxis_id: price
- extend_to: now
- curve: stepline
- stroke_width: 0
- float_precision: 1
- color: limegreen
- opacity: 0.16
- data_generator: |
- const fs = entity.attributes.forecast_start;
- const forecastStartTime = fs ? Date.parse(fs) - 3600000 : null; // -1h
- const data = entity.attributes.forecast || [];
- if (!forecastStartTime) return [];
- return data
- .filter((item) => Date.parse(item.timestamp) >= forecastStartTime)
- .map((item) => [item.timestamp, item.value]);
- show:
- in_chart: true
- in_header: false
- in_legend: false
- legend_value: false
- - entity: sensor.nordpool_predict_fi_price
- name: Pediction
- type: line
- yaxis_id: price
- curve: straight
- stroke_width: 2
- stroke_dash: 3
- color: red
- opacity: 1
- extend_to: false
- data_generator: >
- const fs =
- hass.states['sensor.nordpool_predict_fi_price']?.attributes?.forecast_start;
- const x = fs ? Date.parse(fs) - 3600000 : NaN; // -1h
- if (!Number.isFinite(x)) return [];
- const data = entity.attributes.forecast || [];
- let min = Infinity, max = -Infinity;
- for (const i of data) {
- const v = Number(i.value);
- if (Number.isFinite(v)) { if (v < min) min = v; if (v > max) max = v; }
- }
- if (!Number.isFinite(min) || !Number.isFinite(max)) { min = 0; max = 1; }
- return [[x, min], [x, max], [x + 1, null]];
- show:
- in_chart: true
- in_header: false
- in_legend: false
- legend_value: false
- - entity: sensor.nordpool_predict_fi_windpower_now
- name: Wind power
- float_precision: 0
- color: skyblue
- show:
- in_chart: false
- in_header: true
- in_legend: true
- legend_value: false
- - entity: sensor.pro3em_total_active_power
- name: Consumption
- unit: W
- show:
- in_chart: false
- in_header: true
- in_legend: true
- legend_value: false
- header_color_threshold: true
- color: "#aaaaaa"
- color_threshold:
- - value: 0
- color: dodgerblue
- opacity: 0.6
- - value: 1000
- color: dodgerblue
- opacity: 0.8
- - value: 5000
- color: skyblue
- opacity: 0.8
- - value: 10000
- color: red
- opacity: 0.8
- - value: 15000
- color: darkred
- opacity: 0.8
- - value: 30000
- color: black
- opacity: 0.8
- yaxis:
- - id: price
- min: ~0
- max: "|+3|"
- decimals: 2
- apex_config:
- tickAmount: 10
- forceNiceScale: true
- title:
- text: Price (¢/kWh)
- labels:
- formatter: |
- EVAL:v => `¢ ${v.toFixed(2)}`
- - id: wind
- opposite: true
- min: ~0
- max: "|+1|"
- decimals: 2
- apex_config:
- tickAmount: 10
- forceNiceScale: true
- title:
- text: Windpower (GW)
- labels:
- formatter: |
- EVAL:v => `${v.toFixed(2)} GW`
- - id: consumption
- min: 0
- max: "|+1|"
- decimals: 2
- opposite: true
- apex_config:
- tickAmount: 10
- forceNiceScale: true
- title:
- text: Consumption (kW)
- labels:
- formatter: |
- EVAL:v => `${v.toFixed(2)} kW`
- - id: powersaver
- show: false
- min: 0
- max: 1
- show:
- last_updated: true
Advertisement
Add Comment
Please, Sign In to add comment