View difference between Paste ID: YkEb2Tbh and Q2R7t4qN
SHOW: | | - or go back to the newest paste.
1
***************Template sensorer, skall ligga under template: **********
2
3
4
  - trigger:
5
      - trigger: time_pattern
6
        minutes: /10
7
      - trigger: homeassistant
8
        event: start
9
    action:
10
      - action: nordpool.get_prices_for_date
11
        data:
12
          config_entry: 01K6BFF0TVKT3M3RDYTQWVM38D #byt till din config entry!
13
          date: "{{ now().date() + timedelta(days=1) }}"
14
          areas: SE3
15
          currency: SEK
16
        response_variable: tomorrow_price
17
    sensor:
18
      - name: Tomorrow lowest price
19
        unique_id: se3_tomorrow_low_price
20
        state: >
21
          {% set data = namespace(prices=[]) %}
22
          {% for state in tomorrow_price['SE3'] %}
23
            {% set data.prices = data.prices + [(state.price / 1000)] %}
24
          {% endfor %}
25
          {{min(data.prices)}}
26
        attributes:
27
          data: >
28
            {% set data = namespace(prices=[]) %}
29
            {% for state in tomorrow_price['SE3'] %}
30
              {# Denna rad är den enda som är ändrad #}
31
              {% set data.prices = data.prices + [{'start': (state.start | as_datetime | as_local).isoformat(), 'end': (state.end | as_datetime | as_local).isoformat(), 'price': state.price/1000}] %}
32
            {% endfor %}
33
            {{data.prices}}
34
  - trigger:
35
      - trigger: time_pattern
36
        minutes: /10
37
      - trigger: homeassistant
38
        event: start
39
    action:
40
      - action: nordpool.get_prices_for_date
41
        data:
42
          config_entry: 01K6BFF0TVKT3M3RDYTQWVM38D #byt till din config entry!
43
          date: "{{ now().date() }}"
44
          areas: SE3
45
          currency: SEK
46
        response_variable: today_price
47
    sensor:
48
      - name: Today lowest price
49
        unique_id: se3_today_low_price
50
        state: >
51
          {% set data = namespace(prices=[]) %}
52
          {% for state in today_price['SE3'] %}
53
            {% set data.prices = data.prices + [(state.price / 1000)] %}
54
          {% endfor %}
55
          {{min(data.prices)}}
56
        attributes:
57
          data: >
58
            {% set data = namespace(prices=[]) %}
59
            {% for state in today_price['SE3'] %}
60
              {# Denna rad är den enda som är ändrad #}
61
              {% set data.prices = data.prices + [{'start': (state.start | as_datetime | as_local).isoformat(), 'end': (state.end | as_datetime | as_local).isoformat(), 'price': state.price/1000}] %}
62
            {% endfor %}
63
            {{data.prices}}
64
65
66
67
68
69
************* Apex kort*****************
70
71
type: custom:apexcharts-card
72
now:
73
  show: true
74
  label: Nu
75
graph_span: 24h
76
span:
77
  start: day
78
experimental:
79
  color_threshold: true
80
header:
81
  title: Elpriser (spotpris per kWh)
82
  show: true
83
  show_states: true
84
  colorize_states: true
85
apex_config:
86
  chart:
87
    height: 332px
88
  legend:
89
    showForSingleSeries: true
90
  yaxis:
91
    min: -0.2
92
    decimalsInFloat: 2
93
    tickAmount: 10
94
    forceNiceScale: true
95
  xaxis:
96
    labels:
97
      datetimeFormatter:
98
        hour: HH
99
hours_12: false
100
stacked: false
101
all_series_config:
102
  show:
103
    datalabels: false
104
    extremas: true
105
  float_precision: 2
106
  type: area
107
series:
108
  - entity: sensor.today_lowest_price
109
    type: column
110
    name: Idag
111
    unit: SEK/kWh
112
    show:
113
      in_header: false
114
      legend_value: false
115
    data_generator: |
116
      const data = entity.attributes.data;
117
      if (!data || !Array.isArray(data)) { return []; }
118
      return data.map(d => {
119
        return [new Date(d.start).getTime(), d.price];
120
      });
121
    color_threshold:
122
      - value: -1
123
        color: "#00FFFF"
124
      - value: 0.1
125
        color: "#ADD8E6"
126
      - value: 0.2
127
        color: "#90EE90"
128
      - value: 0.4
129
        color: "#008000"
130
      - value: 0.6
131
        color: "#FFFF00"
132
      - value: 0.8
133
        color: "#FFA07A"
134
      - value: 1
135
        color: "#FFA500"
136
      - value: 1.2
137
        color: "#FF8C00"
138
      - value: 1.4
139
        color: "#FF6347"
140
      - value: 1.6
141
        color: "#FF4500"
142
      - value: 1.8
143
        color: "#FF0000"
144
      - value: 2
145
        color: "#B22222"
146
      - value: 2.4
147
        color: "#8B0000"
148
      - value: 2.8
149
        color: "#000000"
150
  - entity: sensor.tomorrow_lowest_price
151
    type: area
152
    color: lightblue
153
    name: Imorgon
154
    unit: SEK/kWh
155
    opacity: 0.4
156
    stroke_width: 2
157
    show:
158
      in_header: false
159
      legend_value: false
160
    data_generator: |
161
      const data = entity.attributes.data;
162
      if (!data || !Array.isArray(data)) { return []; }
163
      return data.map(d => {
164
        const tomorrowDate = new Date(d.start);
165
        const hour = tomorrowDate.getHours();
166
        const minute = tomorrowDate.getMinutes();
167
        const todayTimestamp = new Date().setHours(hour, minute, 0, 0);
168
        return [todayTimestamp, d.price];
169
      });
170
  - entity: sensor.today_lowest_price
171
    name: Nu
172
    unit: SEK/kWh
173
    show:
174
      in_chart: false
175
    data_generator: |
176
      const data = entity.attributes.data;
177
      if (!data || !Array.isArray(data)) { return []; }
178
      const now = new Date();
179
      const currentPriceData = data.find(d => {
180
        const startTime = new Date(d.start);
181
        const endTime = new Date(d.end);
182
        return now >= startTime && now < endTime;
183
      });
184
      return currentPriceData ? [[now, currentPriceData.price]] : [];
185
  - entity: sensor.today_lowest_price
186
    name: Min idag
187
    unit: SEK/kWh
188
    show:
189
      in_chart: false
190
    data_generator: |
191
      const data = entity.attributes.data;
192
      if (!data || !Array.isArray(data) || data.length === 0) { return []; }
193
      const prices = data.map(d => d.price);
194
      return [[new Date(), Math.min(...prices)]];
195
  - entity: sensor.today_lowest_price
196
    name: Max idag
197
    unit: SEK/kWh
198
    show:
199
      in_chart: false
200
    data_generator: |
201
      const data = entity.attributes.data;
202
      if (!data || !Array.isArray(data) || data.length === 0) { return []; }
203
      const prices = data.map(d => d.price);
204
      return [[new Date(), Math.max(...prices)]];
205
  - entity: sensor.today_lowest_price
206
    name: Medel idag
207
    unit: SEK/kWh
208
    show:
209
      in_chart: false
210
    data_generator: |
211
      const data = entity.attributes.data;
212
      if (!data || !Array.isArray(data) || data.length === 0) { return []; }
213
      const prices = data.map(d => d.price);
214
      const sum = prices.reduce((a, b) => a + b, 0);
215
      return [[new Date(), sum / prices.length]];
216