• The Source
  • Registratie: April 2000
  • Laatst online: 29-10 22:01
Ik zag andere ook hierover posten.

Ik gebruik deye_total_production in entities_solar_production_dc. Echter wordt DC niet meegenomen in de baseload calculatie waardoor ik negatieve waardes krijg in de baseload.

Claude stelde voor om deze van DC naar AC te verhuizen en per aparte string op te nemen (sensor.deye_pvx_power_kwh) omdat die ook een hogere resolutie hebben. Nadeel is dat het converter loss (~5% of 1kWh/dag) ook in de baseload komt.
"entities_solar_production_ac": [
"sensor.solaredge_i1_ac_energy",
"sensor.deye_pv1_power_kwh",
"sensor.deye_pv2_power_kwh"
],
"entities_solar_production_dc": [],
Is dit aan te raden of zie ik iets over het hoofd?

[ Voor 9% gewijzigd door The Source op 06-10-2026 16:48 ]


  • Doopy-X-
  • Registratie: Juli 2001
  • Nu online
DikDikkie schreef op dinsdag 6 oktober 2026 @ 11:05:
[...]

Ziet er goed uit. Ik kom er maar niet aan toe om DAO goed te configureren voor mijn Alpha ESS. Zou je jouw configuratie willen delen? En waar heb je jouw visualisatie in gemaakt? Grafana?
Ik heb mbt tot DAO 2 grafieken gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
type: custom:apexcharts-card
header:
  show: true
  title: Frank prijs + DAO batterij SoC + PV forecast
  show_states: false
graph_span: 24h
span:
  start: day
now:
  show: true
  label: Nu
yaxis:
  - id: price
    min: '|-1|'
    max: '|+1|'
    decimals: 0
    opposite: false
    apex_config:
      offsetX: -45
      tickAmount: 10
      title:
        text: PRIJS
      labels:
        formatter: |
          EVAL:function(value) {
            return value.toFixed(0) + " ct";
          }
  - id: soc
    min: 0
    max: 100
    decimals: 0
    opposite: true
    apex_config:
      title:
        text: SOC
      labels:
        formatter: |
          EVAL:function(value) {
            return value.toFixed(0) + "%";
          }
  - id: zon
    min: 0
    decimals: 1
    opposite: true
    apex_config:
      offsetX: 35
      title:
        text: ZON
      labels:
        formatter: |
          EVAL:function(value) {
            return value.toFixed(1) + " kW";
          }
series:
  - entity: sensor.frank_prices_today
    name: Frank prijs
    yaxis_id: price
    type: line
    curve: stepline
    color: '#00B7FF'
    stroke_width: 2
    opacity: 1
    unit: ct/kWh
    float_precision: 2
    data_generator: |
      return entity.attributes.prices.map(p => [
        new Date(p.from).getTime(),
        p.total_price_eur_kwh * 100
      ]);
    show:
      legend_value: false
  - entity: sensor.dao_battery_soc
    name: DAO SoC
    yaxis_id: soc
    type: line
    curve: stepline
    color: '#A0C770'
    stroke_width: 2
    opacity: 1
    unit: '%'
    float_precision: 0
    data_generator: |
      return entity.attributes.data.map(p => [
        new Date(p.time).getTime(),
        parseFloat(p.value)
      ]);
    show:
      legend_value: false
  - entity: sensor.solcast_pv_forecast_voorspelling_vandaag
    name: Zon voorspelling
    type: line
    yaxis_id: zon
    color: '#FABF00'
    opacity: 0.7
    stroke_width: 2
    curve: stepline
    data_generator: |
      const data = entity.attributes.detailedForecast;
      const result = [];

      data.forEach(p => {
        const t = new Date(p.period_start).getTime();
        const value = Number(p.pv_estimate);

        result.push([t, value]);
        result.push([t + 15 * 60 * 1000, value]);
      });

      return result;
    show:
      legend_value: false
apex_config:
  chart:
    height: 400px
  tooltip:
    shared: true
    intersect: false
grid_options:
  columns: full
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
type: custom:apexcharts-card
update_interval: 30sec
graph_span: 24h
span:
  start: day
now:
  show: true
  color: red
header:
  show: true
  title: Energie vandaag
  show_states: false
  colorize_states: true
apex_config:
  chart:
    height: 600px
  tooltip:
    intersect: false
    custom: |
      EVAL:function({series, seriesIndex, dataPointIndex, w}) {

        const hoverX = w.globals.seriesX[seriesIndex][dataPointIndex];

        function nearestIndex(xValues, target) {
          if (!xValues || xValues.length === 0) {
            return -1;
          }

          let bestIndex = 0;
          let bestDiff = Math.abs(xValues[0] - target);

          for (let i = 1; i < xValues.length; i++) {
            const diff = Math.abs(xValues[i] - target);

            if (diff < bestDiff) {
              bestDiff = diff;
              bestIndex = i;
            }
          }

          return bestIndex;
        }

        function previousIndex(xValues, target) {
          if (!xValues || xValues.length === 0) {
            return -1;
          }

          let index = 0;

          for (let i = 0; i < xValues.length; i++) {
            if (xValues[i] <= target) {
              index = i;
            } else {
              break;
            }
          }

          return index;
        }

        function formatValue(name, value) {
          if (
            value === null ||
            value === undefined ||
            Number.isNaN(Number(value))
          ) {
            return '—';
          }

          if (name === 'Battery') {
            return `${Number(value).toFixed(0)} %`;
          }

          if (name === 'Frank prijs') {
            return `${Number(value).toFixed(2)} ct/kWh`;
          }

          return `${Number(value).toFixed(2)} kW`;
        }

        const rows = [];

        for (let i = 0; i < w.globals.seriesNames.length; i++) {

          const name = w.globals.seriesNames[i];
          const xValues = w.globals.seriesX[i];

          let index;

          if (name === 'Frank prijs') {
            index = previousIndex(xValues, hoverX);
          } else {
            index = nearestIndex(xValues, hoverX);
          }

          const value =
            index >= 0 && w.globals.series[i]
              ? w.globals.series[i][index]
              : null;

          let markerColor = '#999999';

          if (name === 'Battery') {
            markerColor = '#A0C770';
          } else if (name === 'Huis') {
            markerColor = '#9B59B6';
          } else if (name === 'PV') {
            markerColor = '#FABF00';
          } else if (name === 'Netimport') {
            markerColor = '#C18349';
          } else if (name === 'Netexport') {
            markerColor = '#FF5722';
          } else if (name === 'Frank prijs') {
            markerColor = '#00B7FF';
          }

          rows.push(`
            <div style="
              display:flex;
              align-items:center;
              justify-content:space-between;
              gap:18px;
              margin:4px 0;
              white-space:nowrap;
            ">
              <span style="
                display:flex;
                align-items:center;
                gap:6px;
              ">
                <span style="
                  width:9px;
                  height:9px;
                  border-radius:50%;
                  background:${markerColor};
                  display:inline-block;
                "></span>
                ${name}
              </span>

              <strong>
                ${formatValue(name, value)}
              </strong>
            </div>
          `);
        }

        const date = new Date(hoverX);

        const timeText = date.toLocaleString('nl-NL', {
          day: '2-digit',
          month: '2-digit',
          hour: '2-digit',
          minute: '2-digit'
        });

        return `
          <div style="
            padding:10px 12px;
            min-width:210px;
          ">
            <div style="
              font-weight:600;
              margin-bottom:8px;
              border-bottom:1px solid rgba(128,128,128,0.25);
              padding-bottom:6px;
            ">
              ${timeText}
            </div>

            ${rows.join('')}
          </div>
        `;
      }
  grid:
    padding:
      left: 10
      right: 10
      bottom: 20
  stroke:
    width: 2
  dataLabels:
    enabled: false
  legend:
    show: true
    position: bottom
    horizontalAlign: center
    offsetY: 5
  annotations:
    yaxis:
      - 'y': 0
        strokeDashArray: 0
        borderWidth: 2
all_series_config:
  type: area
  stroke_width: 2
  opacity: 0.9
  curve: smooth
series:
  - entity: sensor.alphaess_inverter_battery_state_of_charge
    name: Battery
    yaxis_id: battery
    type: area
    color: '#A0C770'
    extend_to: now
    curve: smooth
    fill_raw: last
    stroke_width: 3
    opacity: 0.18
    group_by:
      func: avg
      duration: 5min
    show:
      legend_value: false
  - entity: sensor.alphaess_inverter_current_house_load
    name: Huis
    yaxis_id: power
    type: area
    color: '#9B59B6'
    unit: kW
    float_precision: 2
    transform: return x / 1000;
    extend_to: now
    curve: smooth
    fill_raw: last
    stroke_width: 2.5
    opacity: 0.15
    group_by:
      func: avg
      duration: 5min
    show:
      legend_value: false
  - entity: sensor.alphaess_inverter_current_pv_production
    name: PV
    yaxis_id: power
    type: area
    color: '#FABF00'
    unit: kW
    float_precision: 2
    transform: return x / 1000;
    extend_to: now
    curve: smooth
    fill_raw: last
    stroke_width: 2.5
    opacity: 0.15
    group_by:
      func: avg
      duration: 5min
    show:
      legend_value: false
  - entity: sensor.alphaess_inverter_grid_power
    name: Netimport
    yaxis_id: power
    type: area
    color: '#C18349'
    unit: kW
    float_precision: 2
    transform: 'return x > 0 ? x / 1000 : 0;'
    extend_to: now
    curve: smooth
    fill_raw: last
    stroke_width: 1.5
    opacity: 0.22
    group_by:
      func: min
      duration: 5min
    show:
      legend_value: false
  - entity: sensor.alphaess_inverter_grid_power
    name: Netexport
    yaxis_id: power
    type: area
    color: '#FF5722'
    unit: kW
    float_precision: 2
    transform: 'return x < 0 ? Math.abs(x) / 1000 : 0;'
    extend_to: now
    curve: smooth
    fill_raw: last
    stroke_width: 1.5
    opacity: 0.22
    group_by:
      func: avg
      duration: 5min
    show:
      legend_value: false
  - entity: sensor.frank_prices_today
    name: Frank prijs
    yaxis_id: price
    type: line
    curve: stepline
    color: '#00B7FF'
    stroke_width: 4
    opacity: 1
    unit: ct/kWh
    float_precision: 2
    data_generator: |
      return entity.attributes.prices.map(p => [
        new Date(p.from).getTime(),
        p.total_price_eur_kwh * 100
      ]);
    show:
      legend_value: false
yaxis:
  - id: power
    min: 0
    max: 15
    decimals: 2
    apex_config:
      tickAmount: 15
      title:
        text: POWER
      labels:
        formatter: |
          EVAL:function(value) {
            return value.toFixed(2) + " kW";
          }
  - id: price
    min: '|-1|'
    max: '|+1|'
    decimals: 0
    opposite: false
    apex_config:
      offsetX: -45
      tickAmount: 10
      title:
        text: PRIJS
      labels:
        formatter: |
          EVAL:function(value) {
            return value.toFixed(0) + " ct";
          }
  - id: battery
    min: 0
    max: 100
    decimals: 0
    opposite: true
    apex_config:
      tickAmount: 10
      title:
        text: BAT
      labels:
        formatter: |
          EVAL:function(value) {
            return value.toFixed(0) + " %";
          }
grid_options:
  columns: full
Rondom de config:

DAO config battery
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  "battery": [
  {
    "name": "AlphaESS SMILE G3-T10",
    "capacity": 18.6,
    "entity actual level": "sensor.alphaess_inverter_battery_state_of_charge",
    "upper limit": 98,
    "lower limit": 15,
    "optimal lower level": 20,
    "charge stages": [
      { "power": 0, "efficiency": 1 },
      { "power": 10000, "efficiency": 0.95 }
    ],
    "discharge stages": [
      { "power": 0, "efficiency": 1 },
      { "power": 10000, "efficiency": 0.95 }
    ],
    "dc_to_bat efficiency": 1.0,
    "bat_to_dc efficiency": 1.0,
    "minimum power": 200,
    "cycle cost": 0.0175,
    "entity set power feedin": "input_number.simulatie_batterij_vermogen",
    "entity set operating mode": "input_select.dao_batterij_operating_mode"
  }
]
2 helpers aangemaakt:
input_number.simulatie_batterij_vermogen
-10000
10000
stapgrootte 1
Meeteenheid W

input_select.dao_batterij_operating_mode
Aan
Uit

Modbus-integratie toegevoegd:
https://github.com/senalse/ha-alphaess-modbus

Deze voegt deze entiteiten toe:
switch.alphaess_inverter_dispatch
select.alphaess_inverter_dispatch_mode
number.alphaess_inverter_dispatch_power
number.alphaess_inverter_dispatch_duration
number.alphaess_inverter_dispatch_stop_at_soc

Entiteiten die meetwaarden opleveren:
sensor.alphaess_inverter_battery_state_of_charge
sensor.alphaess_inverter_battery_power
sensor.alphaess_inverter_grid_power
sensor.alphaess_inverter_current_house_load
sensor.alphaess_inverter_current_pv_production

Automatisering die de batterij aanstuurt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
alias: DAO naar AlphaESS
description: Stuurt DAO operating mode en vermogenssetpoint naar AlphaESS Dispatch
triggers:
  - trigger: state
    entity_id:
      - input_select.dao_batterij_operating_mode
      - input_number.simulatie_batterij_vermogen
conditions: []
actions:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_select.dao_batterij_operating_mode
            state: Uit
        sequence:
          - action: switch.turn_off
            target:
              entity_id: switch.alphaess_inverter_dispatch
      - conditions:
          - condition: state
            entity_id: input_select.dao_batterij_operating_mode
            state: Aan
        sequence:
          - action: number.set_value
            target:
              entity_id: number.alphaess_inverter_dispatch_duration
            data:
              value: 480
          - action: select.select_option
            target:
              entity_id: select.alphaess_inverter_dispatch_mode
            data:
              option: State of Charge Control (2)
          - action: number.set_value
            target:
              entity_id: number.alphaess_inverter_dispatch_power
            data:
              value: >
                {% set dao = states('input_number.simulatie_batterij_vermogen')
                | float(0) %} {% set power = dao * -0.001 %} {{ [10, [-10,
                power] | max] | min }}
          - action: number.set_value
            target:
              entity_id: number.alphaess_inverter_dispatch_stop_at_soc
            data:
              value: >
                {% set dao = states('input_number.simulatie_batterij_vermogen')
                | float(0) %} {% if dao > 0 %}
                  100
                {% else %}
                  15
                {% endif %}
          - action: switch.turn_on
            target:
              entity_id: switch.alphaess_inverter_dispatch
mode: restart
De trigger kijkt naar:
input_select.dao_batterij_operating_mode
input_number.simulatie_batterij_vermogen

en de automatisering zorgt ervoor dat wanneer DAO zijn planning aanpast, de AlphaESS opnieuw wordt aangestuurd.

AlphaESS Self-Consumption setting:
AlphaESS in de Self-Consumption mode gezet, zodat wanneer DAO niet specifiek aan het laden of ontladen is, de batterij gewoon gebruikt wordt voor huisgebruik en opgeladen kan worden via zonnepanelen.

In het kort:
DAO stuurt de 2 helpers aan, de automatisering reageert op de helpers, de automatisering stuurt de batterij aan via modbus

Ik hoop dat je hier iets aan hebt, ik heb deze hele setup samen met AI gedaan en dit voorzichtig aangepakt, bij elke stap enkele testen gedaan om te kijken of een simulatie daadwerkelijk het gewenste resultaat had. Veel succes, het kost wat tijd maar het is écht de moeite waard.

*burp*


  • DikDikkie
  • Registratie: December 2025
  • Laatst online: 13:17
Doopy-X- schreef op dinsdag 6 oktober 2026 @ 19:32:
[...]

In het kort:
DAO stuurt de 2 helpers aan, de automatisering reageert op de helpers, de automatisering stuurt de batterij aan via modbus

Ik hoop dat je hier iets aan hebt, ik heb deze hele setup samen met AI gedaan en dit voorzichtig aangepakt, bij elke stap enkele testen gedaan om te kijken of een simulatie daadwerkelijk het gewenste resultaat had. Veel succes, het kost wat tijd maar het is écht de moeite waard.
Heel erg bedankt! Ik heb de hillview modbus al aan de praat maar ga deze ook eens bekijken.

  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
Doopy-X- schreef op dinsdag 6 oktober 2026 @ 19:32:
[...]


Ik heb mbt tot DAO 2 grafieken gemaakt:

[...]


[...]


Rondom de config:

DAO config battery
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  "battery": [
  {
    "name": "AlphaESS SMILE G3-T10",
    "capacity": 18.6,
    "entity actual level": "sensor.alphaess_inverter_battery_state_of_charge",
    "upper limit": 98,
    "lower limit": 15,
    "optimal lower level": 20,
    "charge stages": [
      { "power": 0, "efficiency": 1 },
      { "power": 10000, "efficiency": 0.95 }
    ],
    "discharge stages": [
      { "power": 0, "efficiency": 1 },
      { "power": 10000, "efficiency": 0.95 }
    ],
    "dc_to_bat efficiency": 1.0,
    "bat_to_dc efficiency": 1.0,
    "minimum power": 200,
    "cycle cost": 0.0175,
    "entity set power feedin": "input_number.simulatie_batterij_vermogen",
    "entity set operating mode": "input_select.dao_batterij_operating_mode"
  }
]
2 helpers aangemaakt:
input_number.simulatie_batterij_vermogen
-10000
10000
stapgrootte 1
Meeteenheid W

input_select.dao_batterij_operating_mode
Aan
Uit

Modbus-integratie toegevoegd:
https://github.com/senalse/ha-alphaess-modbus

Deze voegt deze entiteiten toe:
switch.alphaess_inverter_dispatch
select.alphaess_inverter_dispatch_mode
number.alphaess_inverter_dispatch_power
number.alphaess_inverter_dispatch_duration
number.alphaess_inverter_dispatch_stop_at_soc

Entiteiten die meetwaarden opleveren:
sensor.alphaess_inverter_battery_state_of_charge
sensor.alphaess_inverter_battery_power
sensor.alphaess_inverter_grid_power
sensor.alphaess_inverter_current_house_load
sensor.alphaess_inverter_current_pv_production

Automatisering die de batterij aanstuurt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
alias: DAO naar AlphaESS
description: Stuurt DAO operating mode en vermogenssetpoint naar AlphaESS Dispatch
triggers:
  - trigger: state
    entity_id:
      - input_select.dao_batterij_operating_mode
      - input_number.simulatie_batterij_vermogen
conditions: []
actions:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_select.dao_batterij_operating_mode
            state: Uit
        sequence:
          - action: switch.turn_off
            target:
              entity_id: switch.alphaess_inverter_dispatch
      - conditions:
          - condition: state
            entity_id: input_select.dao_batterij_operating_mode
            state: Aan
        sequence:
          - action: number.set_value
            target:
              entity_id: number.alphaess_inverter_dispatch_duration
            data:
              value: 480
          - action: select.select_option
            target:
              entity_id: select.alphaess_inverter_dispatch_mode
            data:
              option: State of Charge Control (2)
          - action: number.set_value
            target:
              entity_id: number.alphaess_inverter_dispatch_power
            data:
              value: >
                {% set dao = states('input_number.simulatie_batterij_vermogen')
                | float(0) %} {% set power = dao * -0.001 %} {{ [10, [-10,
                power] | max] | min }}
          - action: number.set_value
            target:
              entity_id: number.alphaess_inverter_dispatch_stop_at_soc
            data:
              value: >
                {% set dao = states('input_number.simulatie_batterij_vermogen')
                | float(0) %} {% if dao > 0 %}
                  100
                {% else %}
                  15
                {% endif %}
          - action: switch.turn_on
            target:
              entity_id: switch.alphaess_inverter_dispatch
mode: restart
De trigger kijkt naar:
input_select.dao_batterij_operating_mode
input_number.simulatie_batterij_vermogen

en de automatisering zorgt ervoor dat wanneer DAO zijn planning aanpast, de AlphaESS opnieuw wordt aangestuurd.

AlphaESS Self-Consumption setting:
AlphaESS in de Self-Consumption mode gezet, zodat wanneer DAO niet specifiek aan het laden of ontladen is, de batterij gewoon gebruikt wordt voor huisgebruik en opgeladen kan worden via zonnepanelen.

In het kort:
DAO stuurt de 2 helpers aan, de automatisering reageert op de helpers, de automatisering stuurt de batterij aan via modbus

Ik hoop dat je hier iets aan hebt, ik heb deze hele setup samen met AI gedaan en dit voorzichtig aangepakt, bij elke stap enkele testen gedaan om te kijken of een simulatie daadwerkelijk het gewenste resultaat had. Veel succes, het kost wat tijd maar het is écht de moeite waard.
@Torch1969 heb jij (of iemand anders) tijd om deze setup op te nemen in de Wiki?

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Doopy-X-
  • Registratie: Juli 2001
  • Nu online
DikDikkie schreef op dinsdag 6 oktober 2026 @ 19:53:
[...]


Heel erg bedankt! Ik heb de hillview modbus al aan de praat maar ga deze ook eens bekijken.
Hillview is de bron van veel AlphaESS modbus-integraties, de modbus-aansturing is onder water ook hetzelfde. Senalse heeft deze doorontwikkeld naar een echte HA-integratie die te installeren is via HACS waarbij je out-of-box een grote set aan entiteiten krijgt en deze reageren ook erg snel, wat bijvoorbeeld weer goed is voor de grafieken.

*burp*


  • TheMystery
  • Registratie: Februari 2004
  • Laatst online: 29-10 19:16
Doopy-X- schreef op dinsdag 6 oktober 2026 @ 19:32:
[...]


Ik heb mbt tot DAO 2 grafieken gemaakt:

[...]


[...]


Rondom de config:

DAO config battery
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  "battery": [
  {
    "name": "AlphaESS SMILE G3-T10",
    "capacity": 18.6,
    "entity actual level": "sensor.alphaess_inverter_battery_state_of_charge",
    "upper limit": 98,
    "lower limit": 15,
    "optimal lower level": 20,
    "charge stages": [
      { "power": 0, "efficiency": 1 },
      { "power": 10000, "efficiency": 0.95 }
    ],
    "discharge stages": [
      { "power": 0, "efficiency": 1 },
      { "power": 10000, "efficiency": 0.95 }
    ],
    "dc_to_bat efficiency": 1.0,
    "bat_to_dc efficiency": 1.0,
    "minimum power": 200,
    "cycle cost": 0.0175,
    "entity set power feedin": "input_number.simulatie_batterij_vermogen",
    "entity set operating mode": "input_select.dao_batterij_operating_mode"
  }
]
2 helpers aangemaakt:
input_number.simulatie_batterij_vermogen
-10000
10000
stapgrootte 1
Meeteenheid W

input_select.dao_batterij_operating_mode
Aan
Uit

Modbus-integratie toegevoegd:
https://github.com/senalse/ha-alphaess-modbus

Deze voegt deze entiteiten toe:
switch.alphaess_inverter_dispatch
select.alphaess_inverter_dispatch_mode
number.alphaess_inverter_dispatch_power
number.alphaess_inverter_dispatch_duration
number.alphaess_inverter_dispatch_stop_at_soc

Entiteiten die meetwaarden opleveren:
sensor.alphaess_inverter_battery_state_of_charge
sensor.alphaess_inverter_battery_power
sensor.alphaess_inverter_grid_power
sensor.alphaess_inverter_current_house_load
sensor.alphaess_inverter_current_pv_production

Automatisering die de batterij aanstuurt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
alias: DAO naar AlphaESS
description: Stuurt DAO operating mode en vermogenssetpoint naar AlphaESS Dispatch
triggers:
  - trigger: state
    entity_id:
      - input_select.dao_batterij_operating_mode
      - input_number.simulatie_batterij_vermogen
conditions: []
actions:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_select.dao_batterij_operating_mode
            state: Uit
        sequence:
          - action: switch.turn_off
            target:
              entity_id: switch.alphaess_inverter_dispatch
      - conditions:
          - condition: state
            entity_id: input_select.dao_batterij_operating_mode
            state: Aan
        sequence:
          - action: number.set_value
            target:
              entity_id: number.alphaess_inverter_dispatch_duration
            data:
              value: 480
          - action: select.select_option
            target:
              entity_id: select.alphaess_inverter_dispatch_mode
            data:
              option: State of Charge Control (2)
          - action: number.set_value
            target:
              entity_id: number.alphaess_inverter_dispatch_power
            data:
              value: >
                {% set dao = states('input_number.simulatie_batterij_vermogen')
                | float(0) %} {% set power = dao * -0.001 %} {{ [10, [-10,
                power] | max] | min }}
          - action: number.set_value
            target:
              entity_id: number.alphaess_inverter_dispatch_stop_at_soc
            data:
              value: >
                {% set dao = states('input_number.simulatie_batterij_vermogen')
                | float(0) %} {% if dao > 0 %}
                  100
                {% else %}
                  15
                {% endif %}
          - action: switch.turn_on
            target:
              entity_id: switch.alphaess_inverter_dispatch
mode: restart
De trigger kijkt naar:
input_select.dao_batterij_operating_mode
input_number.simulatie_batterij_vermogen

en de automatisering zorgt ervoor dat wanneer DAO zijn planning aanpast, de AlphaESS opnieuw wordt aangestuurd.

AlphaESS Self-Consumption setting:
AlphaESS in de Self-Consumption mode gezet, zodat wanneer DAO niet specifiek aan het laden of ontladen is, de batterij gewoon gebruikt wordt voor huisgebruik en opgeladen kan worden via zonnepanelen.

In het kort:
DAO stuurt de 2 helpers aan, de automatisering reageert op de helpers, de automatisering stuurt de batterij aan via modbus

Ik hoop dat je hier iets aan hebt, ik heb deze hele setup samen met AI gedaan en dit voorzichtig aangepakt, bij elke stap enkele testen gedaan om te kijken of een simulatie daadwerkelijk het gewenste resultaat had. Veel succes, het kost wat tijd maar het is écht de moeite waard.
Ik zie dat je de alpha aanstuurt via dao via de power feedin (grid) optie, maar de hillview integratie stuurt de inverter aan met laden en ontladen en niet op grid niveau.

Ik stuur hem juist aan met from battery om hem volledig aan de dao planning te kunnen houden.

  • Doopy-X-
  • Registratie: Juli 2001
  • Nu online
TheMystery schreef op dinsdag 6 oktober 2026 @ 20:33:
[...]


Ik zie dat je de alpha aanstuurt via dao via de power feedin (grid) optie, maar de hillview integratie stuurt de inverter aan met laden en ontladen en niet op grid niveau.

Ik stuur hem juist aan met from battery om hem volledig aan de dao planning te kunnen houden.
Check, volgens mij werken beide opties prima. Ik zal als ik ooit zin heb eens jouw optie testen d:)b

*burp*


  • Dogooder
  • Registratie: April 2004
  • Laatst online: 10:40

Dogooder

dus...

Doopy-X- schreef op zondag 4 oktober 2026 @ 19:33:
Ik heb het nu als dashboard opgenomen in Home Assistant:
[Afbeelding]
Is dit geweldige dashboard al ergens open source?

[ Voor 30% gewijzigd door Dogooder op 06-10-2026 22:19 ]


  • TheMystery
  • Registratie: Februari 2004
  • Laatst online: 29-10 19:16
Doopy-X- schreef op dinsdag 6 oktober 2026 @ 21:35:
[...]


Check, volgens mij werken beide opties prima. Ik zal als ik ooit zin heb eens jouw optie testen d:)b
Ik draai nu al maanden met deze configuratie en automations:
JSON:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  "battery": [
    {
      "name": "AlphaEss G3 Smile T10",
      "entity actual level": "sensor.alphaess_soc_battery",
      "capacity": 46.5,
      "upper limit": "input_number.dao_upper_limit",
      "lower limit": "input_number.dao_lower_limit",
      "optimal lower level": "input_number.dao_optimal_lower_level",
      "entity min soc end opt": "input_number.dao_min_soc_einde",
      "entity max soc end opt": "input_number.dao_max_soc_einde",
      "charge stages": [
        {"power": 0,     "efficiency": 1.0},
        {"power": 2500,  "efficiency": 0.945},
        {"power": 5000,  "efficiency": 0.958},
        {"power": 7500,  "efficiency": 0.955},
        {"power": 10000, "efficiency": 0.950}
      ],
      "discharge stages": [
        {"power": 0,     "efficiency": 1.0},
        {"power": 2500,  "efficiency": 0.945},
        {"power": 5000,  "efficiency": 0.958},
        {"power": 7500,  "efficiency": 0.955},
        {"power": 10000, "efficiency": 0.945}
      ],
      "minimum power": 100,
      "dc_to_bat efficiency": 1.0,
        "dc_to_bat max power" : 10000.0,
      "bat_to_dc efficiency": 1.0,
      "bat_to_dc max power" : 10000.0,
      "cycle cost": 0.015,
      "entity set power feedin": "input_number.dao_set_power_feedin",
      "entity set operating mode": "input_select.dao_set_operating_mode",
      "entity stop inverter": "input_datetime.dao_stop_inverter",
      "entity from battery": "input_number.dao_from_battery",
      "entity from ac": "input_number.dao_from_ac",
      "entity from pv": "input_number.dao_from_pv",
      "entity calculated soc": "input_number.dao_calculated_soc"
    }
  ],
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
alias: 'DAO: AlphaESS Mode 2'
description: Elk kwartier DAO planning doorsturen naar Hillview dispatch mode 2
triggers:
  - minutes: /15
    seconds: '15'
    trigger: time_pattern
conditions:
  - condition: template
    value_template: |
      {{ states('input_select.dao_set_operating_mode') != 'Uit' }}
  - condition: template
    value_template: |
      {{ not (states('input_select.dao_set_operating_mode') == 'Aan' 
         and states('input_boolean.dao_balance_switch') == 'on') }}
actions:
  - variables:
      dao_power: '{{ states(''input_number.dao_from_battery'') | float(0) }}'
      stop_time: '{{ states(''input_datetime.dao_stop_inverter'') }}'
      duration: |-
        {% if stop_time == '2000-01-01 00:00:00' %}15 {% else %}
          {% set stop = strptime(stop_time, '%Y-%m-%d %H:%M:%S') | as_local %}
          {% set now_dt = now().replace(second=0, microsecond=0) %}
          {% set diff = (stop - now_dt).total_seconds() / 60 %}
          {% if diff < 1 or diff > 15 %}15
          {% else %}{{ diff | int }}
          {% endif %}
        {% endif %}
      hillview_power: |-
        {% set dur = duration | int(15) %} {% if dur < 15 %}
          {% set power = (dao_power / 1000 * 15 / dur) | round(1) %}
          {{ [[power, 10.0] | min, -10.0] | max }}
        {% else %}
          {{ (dao_power / 1000) | round(1) }}
        {% endif %}
      hillview_soc: >-
        {% set base_soc = states('input_number.dao_calculated_soc') | int(0) %}
        {% set p = hillview_power | float(0) %} {% if p > 0 %}
          {{ [base_soc - 2, 15] | max }}
        {% elif p < 0 %}
          {{ [base_soc + 2, 100] | min }}
        {% else %}
          {{ base_soc }}
        {% endif %}
  - target:
      entity_id: input_number.alphaess_helper_dispatch_duration
    data:
      value: 1
    action: input_number.set_value
  - delay: '00:00:01'
  - target:
      entity_id: number.alphaess_template_dispatch_power
    data:
      value: '{{ hillview_power }}'
    action: number.set_value
  - target:
      entity_id: input_number.alphaess_helper_dispatch_cutoff_soc
    data:
      value: '{{ hillview_soc }}'
    action: input_number.set_value
  - target:
      entity_id: input_select.alphaess_helper_dispatch_mode
    data:
      option: State of Charge Control (2)
    action: input_select.select_option
  - delay: '00:00:01'
  - target:
      entity_id: input_number.alphaess_helper_dispatch_duration
    data:
      value: '{{ duration }}'
    action: input_number.set_value
  - condition: state
    entity_id: input_boolean.alphaess_helper_dispatch
    state: 'off'
  - target:
      entity_id: input_boolean.alphaess_helper_dispatch
    action: input_boolean.turn_on
mode: single
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
alias: 'Dao: Dispatch off'
description: Mode 2 met power 0 als DAO dispatch uit gaat
triggers:
  - trigger: state
    entity_id:
      - input_boolean.alphaess_helper_dispatch
    to:
      - 'off'
conditions:
  - condition: template
    value_template: >-
      {% set trigger_id = trigger.to_state.context.id %} {% set veroorzaker =
      states.automation
         | selectattr('context.id', 'eq', trigger_id)
         | map(attribute='entity_id') | first %}
      {{ veroorzaker != 'automation.dao_alphaess_mode_2_from_ac_and_duration_1'
         and veroorzaker != 'automation.dao_dao_off' }}
  - condition: not
    conditions:
      - condition: state
        entity_id: input_select.dao_set_operating_mode
        state: Uit
  - condition: state
    entity_id: input_boolean.dao_balance_switch
    state: 'off'
actions:
  - target:
      entity_id: number.alphaess_template_dispatch_power
    data:
      value: 0
    action: number.set_value
  - target:
      entity_id: input_number.alphaess_helper_dispatch_duration
    data:
      value: 15
    action: input_number.set_value
  - target:
      entity_id: input_number.alphaess_helper_dispatch_cutoff_soc
    data:
      value: '{{ states(''input_number.dao_calculated_soc'') | int(0) }}'
    action: input_number.set_value
  - target:
      entity_id: input_select.alphaess_helper_dispatch_mode
    data:
      option: State of Charge Control (2)
    action: input_select.select_option
  - target:
      entity_id: input_boolean.alphaess_helper_dispatch
    action: input_boolean.turn_on
mode: single
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
alias: 'Dao: DAO off'
description: Mode 2 met power 0 als DAO uitgeschakeld is
triggers:
  - minutes: /15
    seconds: '15'
    trigger: time_pattern
conditions:
  - condition: template
    value_template: |
      {{ states('input_select.dao_set_operating_mode') == 'Uit' }}
  - condition: template
    value_template: |
      {{ states('input_number.dao_from_pv') | float(0) < 50 }}
actions:
  - target:
      entity_id: input_number.alphaess_helper_dispatch_duration
    data:
      value: 1
    action: input_number.set_value
  - delay: '00:00:01'
  - target:
      entity_id: number.alphaess_template_dispatch_power
    data:
      value: 0
    action: number.set_value
  - target:
      entity_id: input_number.alphaess_helper_dispatch_cutoff_soc
    data:
      value: '{{ states(''input_number.dao_calculated_soc'') | int(0) }}'
    action: input_number.set_value
  - target:
      entity_id: input_select.alphaess_helper_dispatch_mode
    data:
      option: State of Charge Control (2)
    action: input_select.select_option
  - delay: '00:00:01'
  - target:
      entity_id: input_number.alphaess_helper_dispatch_duration
    data:
      value: 15
    action: input_number.set_value
  - condition: state
    entity_id: input_boolean.alphaess_helper_dispatch
    state: 'off'
  - target:
      entity_id: input_boolean.alphaess_helper_dispatch
    action: input_boolean.turn_on
mode: single
uitleg:
DAO → AlphaESS Mode 2 via Hillview — automatiseringstoelichting
Achtergrond

De Day Ahead Optimizer (DAO) berekent elk kwartier een optimaal laad/ontlaadplan voor de batterij op basis van day-ahead stroomprijzen. De AlphaESS wordt aangestuurd via de Hillview integratie in Home Assistant, specifiek Mode 2: State of Charge Control, waarbij je Power, Duration en Cutoff SoC instelt.

Automatisering 1: DAO → Mode 2

Trigger: Elke 15 minuten op :00:15 (15 seconden na het kwartier, zodat DAO zijn berekening heeft afgerond).

Condities:

DAO moet actief zijn (operating_mode != Uit)
Als DAO aan staat én de balance switch aan staat, wordt niks gedaan — de omvormer regelt dan zelf nul-op-de-meter

Vermogen (dao_from_battery):
DAO geeft het gewenste batterijvermogen als kwartiergemiddelde. Bij een korte dispatch (bijv. 8 minuten) wordt dit vermogen omgerekend: vermogen × 15 / duration, zodat de juiste hoeveelheid energie in de kortere tijd wordt geleverd. Begrensd op ±10 kW.

Duration:
Berekend op basis van dao_stop_inverter. Als DAO geen stoptijd heeft ingesteld staat deze op 2000-01-01, dan wordt 15 minuten gebruikt als fallback.

Cutoff SoC:
DAO's berekende SoC ±2% marge, zodat de omvormer iets verder laadt/ontlaadt dan het exacte target. Minimaal 15% bij ontladen.

Dispatch herstart:
De duration wordt eerst op 1 minuut gezet, dan na een korte delay op de echte waarde. Dit forceert altijd een state change waardoor Hillview de dispatch herstart — ook als de duration niet verandert. De boolean wordt alleen aangezet als hij uit staat.

Automatisering 2: Dispatch off → batterij stilzetten

Trigger: Als alphaess_helper_dispatch op off gaat.

Doel: Als de dispatch afloopt (target SoC bereikt of timer verlopen) valt de omvormer terug naar zijn standaard modus. Als de balance switch uit staat betekent dit vrij laden/ontladen zonder sturing. Door Mode 2 opnieuw in te stellen met power 0 blijft de batterij stil totdat de volgende DAO-berekening op het kwartier een nieuwe opdracht geeft.

Conditie: Alleen als de dispatch niet door de DAO-automatisering zelf of de DAO off-automatisering werd uitgeschakeld, DAO actief is, en de balance switch uit staat — als de balance switch aan staat regelt de omvormer zelf nul-op-de-meter en hoeft er niets te gebeuren.

Automatisering 3: DAO uit → batterij stilzetten

Trigger: Elke 15 minuten.

Doel: Als DAO uitgeschakeld is wil je voorkomen dat de omvormer de batterij vrij laadt of ontlaadt. Power 0 houdt de batterij stil zodat PV ongestoord naar het net of huis gaat.

Conditie op PV: dao_from_pv < 50W — bij hoge PV-productie op DC-installaties kan dit anders interfereren.

  • thomvh
  • Registratie: September 2013
  • Laatst online: 12:36
The Source schreef op dinsdag 6 oktober 2026 @ 16:45:
Ik zag andere ook hierover posten.

Ik gebruik deye_total_production in entities_solar_production_dc. Echter wordt DC niet meegenomen in de baseload calculatie waardoor ik negatieve waardes krijg in de baseload.

Claude stelde voor om deze van DC naar AC te verhuizen en per aparte string op te nemen (sensor.deye_pvx_power_kwh) omdat die ook een hogere resolutie hebben. Nadeel is dat het converter loss (~5% of 1kWh/dag) ook in de baseload komt.


[...]


Is dit aan te raden of zie ik iets over het hoofd?
Ik heb bij mij de DC aan de battery production toegevoegd. Toen was het ook gefixt. Maar ik heb inderdaad hetzelfde probleem.

  • Doopy-X-
  • Registratie: Juli 2001
  • Nu online
Dogooder schreef op dinsdag 6 oktober 2026 @ 22:19:
[...]

Is dit geweldige dashboard al ergens open source?
Volgens mij nog niet. Hij wordt binnenkort aan de wiki toegevoegd geloof ik.

*burp*


  • konehead
  • Registratie: Januari 2005
  • Laatst online: 13:24
Dogooder schreef op dinsdag 6 oktober 2026 @ 22:19:
[...]

Is dit geweldige dashboard al ergens open source?
Ik ga hem WIKI ready maken, working on it. Met @Torch1969 afgesproken dat het dashboard netjes gedocumenteerd moet worden. Als je echt niet kan wachten, stuur mij even een DM. Dan stuur ik de ruwe code

  • Lasoul
  • Registratie: November 2001
  • Laatst online: 29-10 13:18
konehead schreef op woensdag 7 oktober 2026 @ 09:55:
[...]

Ik ga hem WIKI ready maken, working on it. Met @Torch1969 afgesproken dat het dashboard netjes gedocumenteerd moet worden. Als je echt niet kan wachten, stuur mij even een DM. Dan stuur ik de ruwe code
Op basis van het voorbeeld heb ik nu dit draaien in mijn Home Assistant instantie.
Je kunt de prognoses er ook bij aanzetten zodat je kunt vergelijken met wat voorspeld was.
Alleen op MariaDB is dit erg traag (SQLite is gewoon snel) dus daarom ben ik bezig met een PR zodat de gebruikte report queries van 4+ seconden naar de 100ms gaan op MariaDB.


Afbeeldingslocatie: https://tweakers.net/i/Ej9rakmXzzG80nhr-LUL9YMppIE=/800x/filters:strip_exif()/f/image/zSNXhXIZlwjlicX8OwDCWoNI.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/E9qAam49HnR85ReSnPh7RRjnRBA=/800x/filters:strip_exif()/f/image/4hnjiI9lNc4yszBAO5l8xq9w.png?f=fotoalbum_large

  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-10 10:34
KC27 schreef op maandag 5 oktober 2026 @ 22:43:
[...]

Nee nog niet echt, staat wel op mijn todo-lijst

[...]

Ja maar waarschijnlijk niet zo gedetailleerd met een warmteverliesberekening.

[...]

Lijkt mij meer iets voor een automation in HA

[...]

Als het verbruik (niet het vermogen) bij de wp-sensoren hebt staan (onder kopje "reports") dan wordt het wp-verbruik van de basislast afgetrokken.

[...]

Je stelt in K/%
Dus als je 2 ingeeft dan betekent dat 2 K/% dus 20 K bij 10% afwijking.

[...]

DAO kan de grenzen van de schuifregelaar (nog) niet uitlezen.
Je kunt deze beter zelf ruim instellen en met een automation in HA deze begrenzen voordat je hem doorzet naar de wp.

[...]
Dankjewel hier kan ik mee vooruit
Levert ook weer een paar aanvullende vragen op

In "
code:
1
heating curve
"-modus: is de geplande pompvermogen (c_hp) alleen een onderdeel van de energiebalans, terwijl de stooklijnverschuiving puur op prijs gaat (prijs ten opzichte van het daggemiddelde)? Dat leid ik uit de code af; wil je dat bevestigen?

Kunnen de
code:
1
cop
en
code:
1
max_power
van de stages een HA-entiteit worden (zoals bij de boiler), of een COP-tabel per buitentemperatuur? De handleiding laat zien dat bij koud weer het vermogen gelijk blijft terwijl de COP daalt.

Is er een instelling voor de maximale stooklijnverschuiving, zodat DAO nooit buiten het bereik van de HA-schuifregelaar schrijft (nu breekt een waarde buiten bereik de hele run af)?

Komt er een versie met de energiebelasting 2027 (afname) in de tarieftabel, en wanneer?
code:
1
entity hp heat produced
: moet dit de thermische kWh van vandaag zijn (zoals in de docs) en hoe gebruikt get_heatpump_run_hours die waarde?

(y)

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


  • oscaarbasgitaar
  • Registratie: Januari 2026
  • Laatst online: 11:45
is er een mogelijkheid om een lopende warmwaterrun ook mee te nemen in de optimalisatie?
Mijn warmtepomp was aan het draaien, midden in de run denkt DAO dat het water voldoende warm is en plant het de rest van de run in op de dag erna terwijl hij nog 30 minuten blijft doordraaien...

  • KVan
  • Registratie: April 2015
  • Laatst online: 29-10 22:55
Ik heb net een EV besteld en moet dus een laadpaal gaan installeren.
Ik heb een 40A 1 fase hoofdaansluiting, een deye 12K en 2 x 18 kWh accu.

Vraag 1: welke laadpaal?
- Hij moet een lokaal protocol zoals ocpp ondersteunen zodat hij met HA kan communiceren zonder cloud
- Geen sturing van stroom met P1 meter of stroomsensoren gezien dat al door de Deye op 8kW gelimiteerd wordt,
Mogelijke laadpalen: EV Charger Ratio Solar MID of Zaptec Go 2. Deze hebben beide een ocpp interface en mogelijkheid van een 7m vaste kabel plus MID meter ingebouwd.

Zijn er (goede) ervaringen met deze laadstations en zijn mijn uitgangspunten correct?

Nog een overdenking:
De deye kan niet veel doen als de lader 7.4kW trekt en in huis nog eens meerdere kW verbruikt worden terwijl de accu's leeg zijn. Een functie in home assistant is dan niet snel genoeg om de lader omlaag te sturen, dus misschien toch stroomsensoren installeren die iets lager afgesteld worden dan de deye zodat het huis voorrang heeft (daar wordt toch nooit erg lang veel vermogen getrokken en dat is beperkt snel te sturen).

  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-10 10:34
welke laadpaal: 1 die voorzien is van een MID-meter tbv de ERE-certificaten

bv de Zaptec Go 2

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


  • Impossibl3
  • Registratie: November 2012
  • Laatst online: 10:28
@KVan kijk ook naar Peblar Business palen. Lokale API, MID, NL bedrijf.

PV 5.590 Wp Enphase, 2.700 Wp Growatt - Easee laadpaal - Itho Amber 95 WP


  • Isdatzo
  • Registratie: November 2005
  • Laatst online: 12:32
Dit lijkt me allemaal weinig betrekking op DAO hebben en kan je allicht beter bespreken in een daarvoor beter geschikt topic.

  • konehead
  • Registratie: Januari 2005
  • Laatst online: 13:24
Update DAO Planning-popup: Gisteren, Verschil-weergave en een community-versie

Vandaag flink doorgebouwd aan mijn Planning-popup voor de Day Ahead Optimizer. Een deel van de ideeën komt uit de versie van een mede-tweaker hier, dank daarvoor!

Wat er nieuw is:

Weergave
  • Gisteren | Vandaag | Morgen: naast vandaag en de forecast voor morgen kun je nu ook de afgeronde dag van gisteren bekijken, met plan tegenover werkelijk over alle 24 uur. Zodra de oktober versie van DAO beschikbaar is zal ik de meerdagen vooruit optie inbouwen.
  • Werkelijk | Plan | Verschil: de nieuwe Verschil-weergave toont per uur werkelijk − plan. Bij de kosten betekent groen goedkoper dan gepland en amber duurder. Zo zie je in één oogopslag welke uren het verschil maakten.
  • SoC-lijn: doorgetrokken = gemeten laadtoestand van de accu, gestippeld = DAO-plan. Over de afgelopen uren zie je dus direct of de accu deed wat gepland was.
  • Huidig uur als subtiele band over de volle hoogte, in plaats van losse omlijnde cellen.
  • "—" voor ontbrekende data: "0" betekent nu echt nul, en een gat in de data is zichtbaar als gat.
Interactie
  • Tik op een cel voor details: exacte waarde, bron (gemeten of DAO-plan), prijs en bij afgelopen uren het verschil met het plan.
  • Modus-chip "Zelfconsumptie · plan is scenario" als de DAO de accu niet aanstuurt.
  • Bijgewerkt hh:mm + ververs-knop onderaan.
  • De scrollpositie blijft staan bij tikken en verversen.
Controle
Alle totalen heb ik los nagerekend uit de HA-statistieken en ze kloppen. De kosten van gisteren komen tot op de cent overeen met wat mijn automation uit de DAO vastlegt.

Community-versie
Omdat een paar mensen erom vroegen, is er nu een configureerbare versie:
  • Eén kaart (alleen button-card nodig), of als popup met Bubble Card.
  • Je past alleen een blok variables bovenaan aan: DAO-sensoren (standaardnamen staan al ingevuld), je eigen kWh-meters (meerdere per soort mag, bijv. tarief 1 en 2) en optionele onderdelen.
  • Auto/laadpaal is optioneel: laat je hem leeg, dan verdwijnt de Auto-rij en klopt de energiebalans nog steeds.
  • Prijzen voor morgen via Nord Pool of ENTSO-e (wordt automatisch herkend).
  • Ingebouwde controle: klopt een sensornaam niet, dan zie je een gele balk met precies welke.
  • Inclusief een korte handleiding (installatie in 5 stappen, uitleg van alle instellingen, probleemoplossing).
De YAML en de handleiding heb ik naar @Torch1969 gestuurd om te uploaden, en @Doopy-X- heb ik gevraagd om hem te testen. Zodra dat gebeurd is volgt de link. Feedback is uiteraard welkom!

Nota bene:
A) ontworpen voor een donker thema, gebruik één Planning-kaart per dashboard, en Gisteren werkt zolang de recorder die dag nog bewaart (standaard 10 dagen).
B) Ik ben geen ontwikkelaar, ik doe dit puur om de community te helpen en mijn steentje bij te dragen aan dit geweldige project. Samen maken we het beter.


Afbeeldingslocatie: https://tweakers.net/i/R4fNAwsDHnkVoPyBYHtvOB5lSAw=/800x/filters:strip_exif()/f/image/kkXs2CB2JrN8PknBeNzpTGsu.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/DmdzAhMN0PIi3t3u7F16CDs_0LU=/800x/filters:strip_exif()/f/image/xTUOaiMS5G19TGOe7Rgkcfy8.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/fhdkeDFQcy7mVRPjnlEbnA92Ubo=/800x/filters:strip_exif()/f/image/Mm5RL6mQFIxLkwbcLbIlBuwg.png?f=fotoalbum_large

  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-10 10:34
Hoi konehead,

mooi werk, vooral de Verschil-weergave en de SoC-lijn (gemeten tegenover plan).

Ik heb je bericht en je screenshots door Claude (AI) laten analyseren; hieronder zijn opmerkingen.
Claude heeft alleen je bericht en afbeeldingen gezien, niet je YAML, dus een deel staat als vraag.
De cijfers komen uit je screenshots en zijn nagerekend: Kosten = Net x prijs klopt (19:00: -3,9 x ,34 = -1,33) en de som van de Kosten-rij komt op de kop "opbrengst €2,29" uit.

1. Wijs de afwijking toe aan een oorzaak
Gisteren staat er +€10,54 t.o.v. plan. De uren 02 t/m 05 geven samen +€10,01 (2,64 + 2,59 + 2,58 + 2,20), en dat is de auto (Net daar 11,1 + 11,1 + 11,2 + 9,1 = 42,5 kWh = Actual Auto, geen planwaarde). Een regel "t.o.v. plan excl. auto" laat zien dat de rest ongeveer +€0,5 is.

2. De auto als eigen kostenpost, met een tegenvoorbeeld
De auto laadde 02-05 uur tegen €0,23-,€024; gisteren waren 12-16 uur goedkoper (€0,19-€0,21). Grove schatting uit de afbeelding: 42,5 kWh x (gemiddeld €0,235 min €0,204) is circa €1,3.
"Wat had dit in de goedkoopste uren gekost?" is leerzaam.

3. Forecast = eerste plan van de dag
Onder de popup staat dat Forecast het eerste plan van vandaag (00:09) is.
Daardoor tellen herplannen en voorspelfouten door elkaar: Thuisaccu forecast -0,6 tegenover actual +4,0 is vooral een gewijzigd plan. Een tweede vergelijking met het laatste plan voor het uur (rollend) scheidt die twee.
Vraag: welk plan gebruikt de Verschil-weergave?

4. Voorspelfout per invoer
Uit je totalen:
Huis forecast 7,4 tegenover 4,8 gisteren en 8,5 tegenover 4,4 vandaag (tot 13:00); Zon -0,4 tegenover -1,0 gisteren en -5,0 tegenover -4,0 vandaag.
Twee dagen op rij zit Huis ver te hoog.
Een foutregel per invoer (PV, huis, prijs) laat zien wat bijgesteld moet worden.
Vraag: bevat de Huis-forecast ook auto of warmtepomp?

5. Een vraag over de accucapaciteit
Uit SoC-lijn en Thuisaccu-rij komt ongeveer 9 tot 13 kWh per 100%: 19:00 tot 20:00 gaat de SoC van 83% naar 46% bij -4,5 kWh, en 20:00 tot 21:00 van 46% naar 10% bij -4,5 kWh. In je overzicht staat 32 kWh. Is dat een instelling in DAO (accugrootte) of een schaalverschil tussen de rijen? (Aanname in deze berekening: de uurlabels zijn begin-van-uur.)

6. Teken van "t.o.v. plan"
Vandaag staat "opbrengst €2,29" met "t.o.v. plan +€0,22" in amber.
Dat is dubbelzinnig: meer of minder opbrengst dan gepland?
"€0,22 minder opbrengst dan plan" is duidelijker.

7. Waarde van DAO en "waarom doet de accu niets?"
Gisteren stond de SoC de hele dag op 11% terwijl de prijs tussen €0,19 en €0,32 liep.
Een regel met het netto prijsverschil na verliezen en cycluskosten ("geen actie: spread ,xx < drempel ,yy") maakt zichtbaar waarom.
En naast plan tegenover werkelijk een derde vergelijking: het scenario zonder accu tegen de werkelijke prijs; dat zegt wat DAO opleverde (de "plan is scenario"-chip laat zien dat dit scenario al bestaat).

8. Twee vragen
  • Je toont uren en een prijs ("incl. belasting"). Plant jouw DAO per kwartier? Dan kan tik-op-cel de kwartieren tonen. Wordt de terugleverprijs apart getoond?
  • In je Nota bene staat dat Gisteren werkt zolang de recorder de dag bewaart (10 dagen), terwijl onder de popup staat dat het verleden uit HA-statistieken komt. Welke bron beperkt het dan?
Gegroet, samen maken we het beter. _/-\o_

Hemertje

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


  • Frankvbr
  • Registratie: November 2004
  • Laatst online: 26-10 23:30
Ik zit er er anders in.

Dashboards zijn leuk om af en toe naar te kijken. Dat snap ik, meer hele doel van DAO is dat het op zichzelf draait.

Zou zelf veel meer focussen up signaleringen van afwijkingen. Dus standaard checks die melden dat voorspellingen meer dan X procent afwijken. Bijvoorbeeld je base verbruik wijkt structureel X% af om zo laat. Of je zonnepanelen wekken structureel 4% minder op dan gepland.

Doel: o.b.v. je signalen kan je dan perfectioneren. I.p.v. zelf naar een dashboard te gaan staren.

Zodra ik dao goed heb ingeregeld per 1 januari zal ik daar eens wat automations voor testen.

  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-10 10:34
Frankvbr schreef op zaterdag 10 oktober 2026 @ 16:18:
Ik zit er er anders in.

Dashboards zijn leuk om af en toe naar te kijken. Dat snap ik, meer hele doel van DAO is dat het op zichzelf draait.

Zou zelf veel meer focussen up signaleringen van afwijkingen. Dus standaard checks die melden dat voorspellingen meer dan X procent afwijken. Bijvoorbeeld je base verbruik wijkt structureel X% af om zo laat. Of je zonnepanelen wekken structureel 4% minder op dan gepland.

Doel: o.b.v. je signalen kan je dan perfectioneren. I.p.v. zelf naar een dashboard te gaan staren.

Zodra ik dao goed heb ingeregeld per 1 januari zal ik daar eens wat automations voor testen.
mee eens, dashboards zijn de basis om afwijkingen te signaleren en daarop te reageren en bij te sturen

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


  • Knielen
  • Registratie: December 2009
  • Laatst online: 12:54
hemertje schreef op zaterdag 10 oktober 2026 @ 14:38:
Hoi konehead,

mooi werk, vooral de Verschil-weergave en de SoC-lijn (gemeten tegenover plan).

Ik heb je bericht en je screenshots door Claude (AI) laten analyseren; hieronder zijn opmerkingen.
Claude heeft alleen je bericht en afbeeldingen gezien, niet je YAML, dus een deel staat als vraag.
De cijfers komen uit je screenshots en zijn nagerekend: Kosten = Net x prijs klopt (19:00: -3,9 x ,34 = -1,33) en de som van de Kosten-rij komt op de kop "opbrengst €2,29" uit.

1. Wijs de afwijking toe aan een oorzaak
Gisteren staat er +€10,54 t.o.v. plan. De uren 02 t/m 05 geven samen +€10,01 (2,64 + 2,59 + 2,58 + 2,20), en dat is de auto (Net daar 11,1 + 11,1 + 11,2 + 9,1 = 42,5 kWh = Actual Auto, geen planwaarde). Een regel "t.o.v. plan excl. auto" laat zien dat de rest ongeveer +€0,5 is.

2. De auto als eigen kostenpost, met een tegenvoorbeeld
De auto laadde 02-05 uur tegen €0,23-,€024; gisteren waren 12-16 uur goedkoper (€0,19-€0,21). Grove schatting uit de afbeelding: 42,5 kWh x (gemiddeld €0,235 min €0,204) is circa €1,3.
"Wat had dit in de goedkoopste uren gekost?" is leerzaam.

3. Forecast = eerste plan van de dag
Onder de popup staat dat Forecast het eerste plan van vandaag (00:09) is.
Daardoor tellen herplannen en voorspelfouten door elkaar: Thuisaccu forecast -0,6 tegenover actual +4,0 is vooral een gewijzigd plan. Een tweede vergelijking met het laatste plan voor het uur (rollend) scheidt die twee.
Vraag: welk plan gebruikt de Verschil-weergave?

4. Voorspelfout per invoer
Uit je totalen:
Huis forecast 7,4 tegenover 4,8 gisteren en 8,5 tegenover 4,4 vandaag (tot 13:00); Zon -0,4 tegenover -1,0 gisteren en -5,0 tegenover -4,0 vandaag.
Twee dagen op rij zit Huis ver te hoog.
Een foutregel per invoer (PV, huis, prijs) laat zien wat bijgesteld moet worden.
Vraag: bevat de Huis-forecast ook auto of warmtepomp?

5. Een vraag over de accucapaciteit
Uit SoC-lijn en Thuisaccu-rij komt ongeveer 9 tot 13 kWh per 100%: 19:00 tot 20:00 gaat de SoC van 83% naar 46% bij -4,5 kWh, en 20:00 tot 21:00 van 46% naar 10% bij -4,5 kWh. In je overzicht staat 32 kWh. Is dat een instelling in DAO (accugrootte) of een schaalverschil tussen de rijen? (Aanname in deze berekening: de uurlabels zijn begin-van-uur.)

6. Teken van "t.o.v. plan"
Vandaag staat "opbrengst €2,29" met "t.o.v. plan +€0,22" in amber.
Dat is dubbelzinnig: meer of minder opbrengst dan gepland?
"€0,22 minder opbrengst dan plan" is duidelijker.

7. Waarde van DAO en "waarom doet de accu niets?"
Gisteren stond de SoC de hele dag op 11% terwijl de prijs tussen €0,19 en €0,32 liep.
Een regel met het netto prijsverschil na verliezen en cycluskosten ("geen actie: spread ,xx < drempel ,yy") maakt zichtbaar waarom.
En naast plan tegenover werkelijk een derde vergelijking: het scenario zonder accu tegen de werkelijke prijs; dat zegt wat DAO opleverde (de "plan is scenario"-chip laat zien dat dit scenario al bestaat).

8. Twee vragen
  • Je toont uren en een prijs ("incl. belasting"). Plant jouw DAO per kwartier? Dan kan tik-op-cel de kwartieren tonen. Wordt de terugleverprijs apart getoond?
  • In je Nota bene staat dat Gisteren werkt zolang de recorder de dag bewaart (10 dagen), terwijl onder de popup staat dat het verleden uit HA-statistieken komt. Welke bron beperkt het dan?
Gegroet, samen maken we het beter. _/-\o_

Hemertje
Weet je nou zelf wat je in je post hebt gezet? Volgens mij is het al vaker tegen je verteld, maar dit soort AI overzichtjes zijn zo vervuilend en dragen niks bij aan een topic als dit.

Loop je zelf tegen een probleem aan? Geef dat dan aan en doe eventueel zelf een voorstel.

  • Doopy-X-
  • Registratie: Juli 2001
  • Nu online
konehead schreef op zaterdag 10 oktober 2026 @ 13:21:
Update DAO Planning-popup: Gisteren, Verschil-weergave en een community-versie

Vandaag flink doorgebouwd aan mijn Planning-popup voor de Day Ahead Optimizer. Een deel van de ideeën komt uit de versie van een mede-tweaker hier, dank daarvoor!


De YAML en de handleiding heb ik naar @Torch1969 gestuurd om te uploaden, en @Doopy-X- heb ik gevraagd om hem te testen. Zodra dat gebeurd is volgt de link. Feedback is uiteraard welkom!
Getest, nog wat bugjes eruit gehaald en teruggemeld.
Wat een gaaf dashboard _/-\o_Afbeeldingslocatie: https://tweakers.net/i/jbBMbNhId2sDs0vW2IJo60A-wgI=/800x/filters:strip_exif()/f/image/HdUfx8HabRLrUb5u6gS2Xjnd.png?f=fotoalbum_large

*burp*


  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-10 10:34
Knielen schreef op zaterdag 10 oktober 2026 @ 17:31:
[...]

Weet je nou zelf wat je in je post hebt gezet? Volgens mij is het al vaker tegen je verteld, maar dit soort AI overzichtjes zijn zo vervuilend en dragen niks bij aan een topic als dit.

Loop je zelf tegen een probleem aan? Geef dat dan aan en doe eventueel zelf een voorstel.
@Knielen , ik snap wat ik gepost heb... :P

Volgens mij willen we allemaal code zonder fouten of foute aannames. Daar helpt mijns inziens een tweede paar ogen bij, ook als dat een AI is. Claude maakt zelf ook fouten, daarom controleer ik de uitkomsten zelf voordat ik ze gebruik of plaats.

Ik gebruik Claude als verlengstuk, niet als vervanging:
om te analyseren en dingen te doorgronden die mij als hobby programmeur niet opvallen.

Een voorbeeld uit mijn eigen HA:
een ventilator-automation die nooit uitging door een TypeError (272 keer in het log) en een DAO-watchdog met een verkeerde entiteitsnaam. Dat zag ik zelf niet.

Zal voortaan proberen het kort te houden, in mijn eigen woorden en vanuit een eigen probleem of vraag.

(y)

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


  • Frankvbr
  • Registratie: November 2004
  • Laatst online: 26-10 23:30
Twee vragen:
  1. Balanceren vs forced charge/discharge
Als DAO balanceren aan heeft staan + accu laden/ontladen met een bepaald vermogen. Is het dan eigenlijk de bedoeling qua berekening dat je beide doet? Dus stel waarde is -100 watt, en op dat moment verbruik ik 300watt, dat ik dus accu op -400 zet (dus 400 teruglever?). Zoja hoe regelen jullie dat in praktijk? Automation op P1 meter met een opslag? Accu wil ook niet teveel wijzigingen, max 1 per minuut had ik begrepen, dus dan moet ik met gemiddelden gaan werken.

2.
Qua energie wil ik dat DAO rekening houdt met een bepaald verbruik die ik niet kan inplannen qua tijdstip. Vaatwasser stel ik nu standaard in dat DAO uit gaat van verbruik om 23.00 en dat wordt gecorrigeerd naar het werkelijke tijdstip.

Hoe gaan jullie hier mee om? Sommige verbruik is moeilijk te plannen met zeer wisselend ritme in huishouden, maar wil wel dat DAO dat meeneemt in totaal verwachte verbruik om bijv vrij te houden in een accu. Ik zat te denken aan een helper waar ik verwacht verbruik in stop en daar van bepaalde apparaten het verbruik aftrek. Resterende moet dan steeds in de planning worden meegenomen voor resterende dag. Maar weet niet hoe ik dat in DAO kan mee berekenen. Apparaten volgen een cyclus.

  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

Ik heb vanmiddag de Day Ahead Optimizer geïnstalleerd, een account bij meteoserver aangemaakt en de API-key ingevuld bij de instellingen.

Daarna heb ik in DAO een meer de gegevens opgevraagd en een minuutje of zo later stonden die op het scherm.
HACS Nordpool had ik al draaien en in DAO de komende kwartierdata opgevraagd. Dat werkte ook.

Maar nu opeens wil DAO niet meer starten. Als ik op “Open Web UI” tik, dan krijg ik een popup “The app seems to not be ready, it might still be starting.
Do you want to try again?”
Maar dat werkt niet.

Wat doe ik verkeerd?

Afbeeldingslocatie: https://tweakers.net/i/X32hrgi7oPri5DyQgr_1vKVSRuU=/800x/filters:strip_icc():strip_exif()/f/image/goW3TcXbuwovMb2ZA1qr3DTL.jpg?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/1EPGN4kgrcST5b5MJuiBzHls5_o=/800x/filters:strip_icc():strip_exif()/f/image/LW0LXetxSUYvJiQNdKY3MjrR.jpg?f=fotoalbum_large

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
Hippe Lip schreef op zaterdag 10 oktober 2026 @ 22:59:
Ik heb vanmiddag de Day Ahead Optimizer geïnstalleerd, een account bij meteoserver aangemaakt en de API-key ingevuld bij de instellingen.

Daarna heb ik in DAO een meer de gegevens opgevraagd en een minuutje of zo later stonden die op het scherm.
HACS Nordpool had ik al draaien en in DAO de komende kwartierdata opgevraagd. Dat werkte ook.

Maar nu opeens wil DAO niet meer starten. Als ik op “Open Web UI” tik, dan krijg ik een popup “The app seems to not be ready, it might still be starting.
Do you want to try again?”
Maar dat werkt niet.

Wat doe ik verkeerd?

[Afbeelding]

[Afbeelding]
Je kunt in de log van DAO of in de HA-log van DAO kijken, waarschijnlijk krijg je daar meer info.
log van DAO: ga in HA naar Instellingen/Apps, kies DAO en dan het tabblad "Logboek"
HA-log van DAO: ga in HA naar Instellingen, Systeem logboeken en kies (rechtsboven) DAO

Als je daar niks vindt kun je ook kijken of de DAO-poort in je configuratie goed staat:
ga in HA naar Instellingen/Apps, kies DAO en dan het tabblad Configuratie. Staat daar 5000 en is deze poort in je HA-machine niet ergens anders aan toegekend?

Tenslotte kun je testen of DAO werkelijk luistert/schrijft naar poort 5000 door dit in je browser in te typen:
http://homeassistant.local:5000
Als je netwerk-dns "homeassistant.local" niet kent kun je die vervangen door het ip-adres van je ha-machine.

[ Voor 7% gewijzigd door KC27 op 11-10-2026 00:15 ]

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

KC27 schreef op zondag 11 oktober 2026 @ 00:10:
[...]

Je kunt in de log van DAO of in de HA-log van DAO kijken, waarschijnlijk krijg je daar meer info.
log van DAO: ga in HA naar Instellingen/Apps, kies DAO en dan het tabblad "Logboek"
HA-log van DAO: ga in HA naar Instellingen, Systeem logboeken en kies (rechtsboven) DAO

Als je daar niks vindt kun je ook kijken of de DAO-poort in je configuratie goed staat:
ga in HA naar Instellingen/Apps, kies DAO en dan het tabblad Configuratie. Staat daar 5000 en is deze poort in je HA-machine niet ergens anders aan toegekend?

Tenslotte kun je testen of DAO werkelijk luistert/schrijft naar poort 5000 door dit in je browser in te typen:
http://homeassistant.local:5000
Als je netwerk-dns "homeassistant.local" niet kent kun je die vervangen door het ip-adres van je ha-machine.
Dank voor je uitgebreide antwoord.
, @KC27

Het enige dat ik kan uitlezen is de log, die continu de regel “Scheduler crashed with exit code 1” uitspuugt.
Helaas kan ik die foutcode nergens vinden en weet dus niet wat die zegt.

DAO stoppen en opnieuw starten helpt niet.
HA herstarten ook niet.

[ Voor 6% gewijzigd door Hippe Lip op 11-10-2026 00:54 ]

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
Waarschijnlijk zit er dan een format foutje in het instellingen bestand (options.json of secrets.json).
Kopieer het en zet het in een online programma dat die fouten opspoort. Bijvoorbeeld https://jsonchecker.com/

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

KC27 schreef op zondag 11 oktober 2026 @ 08:09:
Waarschijnlijk zit er dan een format foutje in het instellingen bestand (options.json of secrets.json).
Kopieer het en zet het in een online programma dat die fouten opspoort. Bijvoorbeeld https://jsonchecker.com/
Ik kan die bestanden niet vinden. Sterker nog: ik kan de hele map met DAO niet vinden. Waar wordt dat geïnstalleerd?

De meeste toevoegingen staan bij mij in homeassistant/custom_components, in homeassistant/www of in homeassistant/www/community maar op geen van die drie plekken vind ik iets dat op DAO (of voluit) lijkt. Zoek ik op de verkeerde plek of kijk ik er overheen?

Op github kon ik ook niet vinden op welke plek het geïnstalleerd wordt. Goed verstopt, lijkt het :+

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

KC27 schreef op zondag 11 oktober 2026 @ 08:09:
Waarschijnlijk zit er dan een format foutje in het instellingen bestand (options.json of secrets.json).
Suggestie voor verbetering: laat DAO bij het opslaan een check doen voordat het wérkelijk opgeslagen wordt. Zoiets doet HA zelf ook om te voorkomen dat je iets maakt waardoor een herstart onmogelijk wordt. Ja, dat werkt een beetje anders, maar het voorkomt problemen bij herstart.

[ Voor 8% gewijzigd door Hippe Lip op 11-10-2026 10:55 ]

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • konehead
  • Registratie: Januari 2005
  • Laatst online: 13:24
Hippe Lip schreef op zondag 11 oktober 2026 @ 10:52:
[...]

Ik kan die bestanden niet vinden. Sterker nog: ik kan de hele map met DAO niet vinden. Waar wordt dat geïnstalleerd?

De meeste toevoegingen staan bij mij in homeassistant/custom_components, in homeassistant/www of in homeassistant/www/community maar op geen van die drie plekken vind ik iets dat op DAO (of voluit) lijkt. Zoek ik op de verkeerde plek of kijk ik er overheen?

Op github kon ik ook niet vinden op welke plek het geïnstalleerd wordt. Goed verstopt, lijkt het :+
Check deze is (en dan de options.json)
smb://homeassistant/addon_configs/1f491d2b_day_ahead_opt/dao_data

  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
Hippe Lip schreef op zondag 11 oktober 2026 @ 10:54:
[...]

Suggestie voor verbetering: laat DAO bij het opslaan een check doen voordat het wérkelijk opgeslagen wordt. Zoiets doet HA zelf ook om te voorkomen dat je iets maakt waardoor een herstart onmogelijk wordt. Ja, dat werkt een beetje anders, maar het voorkomt problemen bij herstart.
Goede suggestie.
Deze check is ingebouwd in de komende (test)versie.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

konehead schreef op zondag 11 oktober 2026 @ 11:06:
[...]

Check deze is (en dan de options.json)
smb://homeassistant/addon_configs/1f491d2b_day_ahead_opt/dao_data
Ik heb geen map homeassistant/addon_configs

Het staat dus kennelijk ergens anders.

Afbeeldingslocatie: https://tweakers.net/i/WJVt_7cx6DcpR4yPO82ICLT2jiI=/x800/filters:strip_icc():strip_exif()/f/image/nnqnklLo9sZ57BalHyKaOyHC.jpg?f=fotoalbum_large

[ Voor 38% gewijzigd door Hippe Lip op 11-10-2026 11:45 ]

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • konehead
  • Registratie: Januari 2005
  • Laatst online: 13:24
Hippe Lip schreef op zondag 11 oktober 2026 @ 11:26:
[...]

Ik heb geen map homeassistant/addon_configs

Het staat dus kennelijk ergens anders.

[Afbeelding]
Die heb je wel, maar niet via de file browser van HA. Zorg dat je via je computer bij de directory structuur van HA kan (ik heb zelf SAMBA file share als app geïnstalleerd, exact voor dit soort klusjes :) )

  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

konehead schreef op zondag 11 oktober 2026 @ 11:30:
Die heb je wel, maar niet via de file browser van HA.
Oh?

1. Waarom geeft de file browser van HA die map niet weer? Is dat een bug?

2. @KC27 Waarom wordt DAO geïnstalleerd in een afwijkende map en niet op een gebruikelijke plek, die dan ook nog eens zodanig verstopt is dat je extra moeite moet doen om erbij te kunnen?
Zorg dat je via je computer bij de directory structuur van HA kan (ik heb zelf SAMBA file share als app geïnstalleerd, exact voor dit soort klusjes :) )
Die SAMBA heb ik ook, maar ik kan nu even niet bij mijn computer en werk op een iPad. Die kan ws niet bij die SAMBA-toegang?

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
Hippe Lip schreef op zondag 11 oktober 2026 @ 11:51:

2. @KC27 Waarom wordt DAO geïnstalleerd in een afwijkende map en niet op een gebruikelijke plek, die dan ook nog eens zodanig verstopt is dat je extra moeite moet doen om erbij te kunnen?
DAO is geen (custom) component of integratie, maar een app (heette vroeger "add-on"). Deze draait net als alle andere app's in een Docker container.
Het is net zoveel verstopt als alle andere app's.

[ Voor 8% gewijzigd door KC27 op 11-10-2026 12:23 ]

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

konehead schreef op zondag 11 oktober 2026 @ 11:06:
[...]

Check deze is (en dan de options.json)
smb://homeassistant/addon_configs/1f491d2b_day_ahead_opt/dao_data
Dank! Daar stond het inderdaad.
Weer wat wijzer geworden.

Nu nog kijken of ik die SAMBA ook vanaf mijn iPad kan bereiken.

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

KC27 schreef op zondag 11 oktober 2026 @ 08:09:
Waarschijnlijk zit er dan een format foutje in het instellingen bestand (options.json of secrets.json).
Kopieer het en zet het in een online programma dat die fouten opspoort. Bijvoorbeeld https://jsonchecker.com/
Het was inderdaad een foutje in options.json. Ik had het interval gewijzigd naar 15 min en dan ook "15 min" ingevoerd in plaats van "15min". En daar kon die niet tegen. :X
En dank voor de hulp.

Fijn dat de volgende versie wat robuuster gemaakt wordt voor fouten. d:)b

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

Nu zit ik nog wel met een optisch probleempje. In het menu bovenaan staan op mijn iPad (HA-app, Safari en Chrome) lichtblauwe tekst op een iets donkerder blauwe achtergrond. Das nagenoeg onleesbaar.
Is dat een instelling of is dat altijd op een iPad?

Afbeeldingslocatie: https://tweakers.net/i/iMfd5J5SVmhhbYOhZVEiGM0cKOk=/800x/filters:strip_icc():strip_exif()/f/image/F0fMOqmLdXMsCprH3hyZpA0w.jpg?f=fotoalbum_large

[ Voor 45% gewijzigd door Hippe Lip op 11-10-2026 13:54 ]

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • anboni
  • Registratie: Maart 2004
  • Laatst online: 12:23
Hippe Lip schreef op zondag 11 oktober 2026 @ 13:41:
Nu zit ik nog wel met een optisch probleempje. In het menu bovenaan staan op mijn iPad (HA-app, Safari en Chrome) lichtblauwe tekst op een iets donkerder blauwe achtergrond. Das nagenoeg onleesbaar.
Is dat een instelling of is dat altijd op een iPad?

[Afbeelding]
Probeer de UI v2 knop 'ns?

  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

Nog een punt waar ik tegenaan loop: in de web-UI bij Config kan ik wel links-rechts scrollen, maar niet omhoog of omlaag. Dat is op zowel de iPhone als de iPad. En zowel in de HA-app als in Safari.

Is dat een bekend issue?

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

anboni schreef op zondag 11 oktober 2026 @ 14:39:
[...]

Probeer de UI v2 knop 'ns?
Wat bedoel je? Want dan krijg ik iets heel anders te zien en niet dezelfde pagina/menu’s in beter contrast.

Edit
Door de totaal andere lay-out had ik niet in de gaten dat hier hetzelfde kan.
Daar is ook het scrolprobleem opgelost.

Thnx (y)

[ Voor 21% gewijzigd door Hippe Lip op 11-10-2026 14:45 ]

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • tomvandepoel3
  • Registratie: Januari 2026
  • Laatst online: 11:12
Hippe Lip schreef op zondag 11 oktober 2026 @ 14:40:
Nog een punt waar ik tegenaan loop: in de web-UI bij Config kan ik wel links-rechts scrollen, maar niet omhoog of omlaag. Dat is op zowel de iPhone als de iPad. En zowel in de HA-app als in Safari.

Is dat een bekend issue?
Ja dat ken ik. Omhoog en omlaag lukt wel als je even je vinger in de smalle blauwe baan rechts naast de configuratie text zet en omhoog/omlaag beweegt. Dan verschijnt de scrollbar. Het is wat behelpen maar het werkt wel.

De UI V2 (Admin - Config) werkt wel direct zoals je verwacht op iPhone en iPad.

  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
tomvandepoel3 schreef op zondag 11 oktober 2026 @ 17:08:
[...]

Ja dat ken ik. Omhoog en omlaag lukt wel als je even je vinger in de smalle blauwe baan rechts naast de configuratie text zet en omhoog/omlaag beweegt. Dan verschijnt de scrollbar. Het is wat behelpen maar het werkt wel.

De UI V2 (Admin - Config) werkt wel direct zoals je verwacht op iPhone en iPad.
UI V2 wordt bij de volgende (test)versie ook het default dashboard.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 01:41

Hippe Lip

Er valt altijd wat te leren

Is er ergens een config file waar allen opties in staan uitgewerkt? Als beginneling duizelt het me nogal van de mogelijkheden, maar vooral van de complexiteit van dat config-bestand.

Voorbeeld: ik zie
"graphical_backend": "",
"graphics": {
"style": "Solarize_Light2",
"battery_balance": true,
"prices_consumption": true,
"prices_production": false,
"prices_spot": true,
"average_consumption": true,
"show": "true"
},
Dan neem ik aan dat dit over het uiterlijk van het dashboard gaat en dan zoek ik dat op in het overzicht van alle instellingen. Maar doe ik een Ctrl-F op ‘graphical_backend’, dan is dat niet te vinden. Zelfs ‘graphical’ zonder de rest niet.

Dan wil ik mijn TB en PV erin zetten,
"battery": [],
"solar": [],
maar wat er nou tussen die blokhaken moet staan en hoe dat zit met indents, comma’s, accolades, quotes en wat al niet meer, dat is totaal onduidelijk. Er is geen voorbeeld, zelfs niet van een klein stukje.

Onder “prices” staat ondermeer
"regular high": 0.5,
"regular low": 0.4,
"switch to low": 23
Maar waar gaat dat over? Dat kan ik niet in het overzicht van alle instellingen vinden.

En dan heeft de Wiki een hoofdstuk Voorbeelden, maar daarin staan helemaal geen voorbeelden.
Dat zou een grote verbetering zijn om daar neer te zetten. En als er ergens anders voorbeelden staan, zet dan in dat hoofdstuk op z’n minst een link naar die voorbeelden. Dan dekt de titel de lading tenminste.

Kortom: ik heb als beginneling sterke behoefte aan uitgewerkte voorbeelden. Parameters toevoegen zal wel lukken, maar de structuur is voor mij nog abracadabra.
En ik kan me voorstellen dat ik niet de enige ben.

[ Voor 13% gewijzigd door Hippe Lip op 11-10-2026 22:22 ]

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • oscaarbasgitaar
  • Registratie: Januari 2026
  • Laatst online: 11:45
Hier even zoeken: de uitgewerkte voorbeelden staan hier wel tussen...

Klopt wel dat het wat puzzelwerk vraagt

Ik ben er bv ook nog niet helemaal hoe alle parameters van een warmtepomp werken. Als ik de heating degree days factor uitbreken volgens de uitleg had ik de afgelopen dagen al meer kWh nodig dan ik werkelijk gebruik tijdens de koudste winterdagen...

  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
De nieuwe testversie 2016.10.0.rc1 is gepubliceerd.
Dit staat in de changelog:
Changes
  • The new V2 UI from @storeman is now the default user interface
  • @Dogooder has build new CI-testsuite which runs on GitHub. This prevents that during the development old errors return or most of new introduced errors are detected and repaired.
  • We started with the expansing of the calculation horizon.
    In this release we make a first step in the realization of that expansion.
    In this version you can:
    • retrieve predicted prices up to 96 hours beyound the epex-spot horizon
    • retrieve the needed meteo-data from meteoserver (model gfs)
    • perform a calculation up to 96 hours beyound the epx-spot horizon
    Be aware that in this release the following parts are not adjusted yet and don't give the expected results:
    • the planning of the boiler: only one heating session is planned in. We are working on a new boiler-model with more heating-sessions in the planning period.
    • the planning of the ev: still "old style". This will become more sofisticated with the possibility to configure a minimum SoC (with datetime) and planning will be allowed when "away" or "unplugged"
    • the planning of the hp: there wil become a rolling window (the length will be configurable, depending on the cooling rate and your comfort demands)
    • there is the possibility to encounter errors in the calculation results. We encourage you to find and report these errors.
    There is seperate configuration topic about this new feature available in the Wiki: https://github.com/cornee...keningshorizon-uitbreiden
  • Added option to config an offset (in seconds, default 10) to start tasks in the scheduler earlier (because of the timeoverhead of starting tasks)
  • You can get the EV planning as text in ha (thanks @jeroenribbink )
Fixes
  • Improve MariaDB HA statistics query performance with portable filtering (thanks @Lasoul )
  • Fix/keep changes on saving configuration with json format errors
  • Get day-ahead prices from nordpool/tibber through loop and moved arguments to correct place
  • Fix battery graph crash with more than one battery
  • Extra clearification of the use of "cost_supplier_production" (reported by @dingo35)
  • Fixed error in config of CO2-intensity sensor and the calculations with it (reported by @steynovich)
  • update of several python-modules
Nog een korte verdere toelichting:
  • Ook de api kan nog niet overweg met de "predicted prices"
  • Omdat voor epex-spotprijzen wordt gerekend met interval "1hour" werkte de x-as (tijd) niet meer. Deze is omgezet naar een echte tijd-as, maar nog belangrijker de staven van de y-as klopten niet meer (alle kWh waren verhoogd met een factor 4). Daarom is de Y-as van de grafieken omgezet naar kW.
  • Je kunt de offset van de scheduler aanpassen naar wat bij jou past door deze regel op te nemen onder "scheduler":
    code:
    1
    2
    3
    4
    
        "offset": 8,
        "schedule": [
    ....
    ]

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
Tegen alle adviezen in heb ik de nieuwe versie met "expansie" (48 uur) toch als "productie" draaien:
Afbeeldingslocatie: https://tweakers.net/i/_x9EhUYmMxDtrARzzQiMUAs9prA=/x800/filters:strip_exif()/f/image/11B9L32PxPJ5ycna6MRv1c6y.png?f=fotoalbum_large

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • wmc
  • Registratie: November 2012
  • Laatst online: 08:00

wmc

Wat is het format van de prijzen voorbij de normale horizon? Is dit 1 prijs of zit hier een onzerheidsmarge op? Afhankelijk van de aanwezigheid van de marge zou je meer of minder waarde aan de prijs kunnen geven in de optimalisatie.

@KC27 ik zie dat je de eind SOC op 20% hebt staan, waarom heb je die keuze gemaakt?

  • oscaarbasgitaar
  • Registratie: Januari 2026
  • Laatst online: 11:45
nog iemand (belgië) die momenteel geen nordpool-prijzen doorkrijgt?

2026-10-12 11:43:36 INFO: Loaded 6 secrets from ../data/secrets.json
2026-10-12 11:43:36 INFO: Validating configuration with ConfigurationV2
2026-10-12 11:43:38 info: Day Ahead Optimalisering versie: 2026.9.1
2026-10-12 11:43:38 info: Day Ahead Optimalisering gestart op: 12-10-2026 11:43:38
2026-10-12 11:43:38 info: Day Ahead Optimalisatie gestart: 12-10-2026 11:43:38 taak: calc_optimum
2026-10-12 11:43:38 info: Debug = False
2026-10-12 11:43:38 fout: Er ontbreken kwartier- of uurwaarden van de day-ahead tarieven, de berekening wordt afgebroken

  • Lasoul
  • Registratie: November 2001
  • Laatst online: 29-10 13:18
konehead schreef op zaterdag 10 oktober 2026 @ 13:21:
Update DAO Planning-popup: Gisteren, Verschil-weergave en een community-versie

Vandaag flink doorgebouwd aan mijn Planning-popup voor de Day Ahead Optimizer. Een deel van de ideeën komt uit de versie van een mede-tweaker hier, dank daarvoor!

Wat er nieuw is:

Weergave
  • Gisteren | Vandaag | Morgen: naast vandaag en de forecast voor morgen kun je nu ook de afgeronde dag van gisteren bekijken, met plan tegenover werkelijk over alle 24 uur. Zodra de oktober versie van DAO beschikbaar is zal ik de meerdagen vooruit optie inbouwen.
  • Werkelijk | Plan | Verschil: de nieuwe Verschil-weergave toont per uur werkelijk − plan. Bij de kosten betekent groen goedkoper dan gepland en amber duurder. Zo zie je in één oogopslag welke uren het verschil maakten.
  • SoC-lijn: doorgetrokken = gemeten laadtoestand van de accu, gestippeld = DAO-plan. Over de afgelopen uren zie je dus direct of de accu deed wat gepland was.
  • Huidig uur als subtiele band over de volle hoogte, in plaats van losse omlijnde cellen.
  • "—" voor ontbrekende data: "0" betekent nu echt nul, en een gat in de data is zichtbaar als gat.
Interactie
  • Tik op een cel voor details: exacte waarde, bron (gemeten of DAO-plan), prijs en bij afgelopen uren het verschil met het plan.
  • Modus-chip "Zelfconsumptie · plan is scenario" als de DAO de accu niet aanstuurt.
  • Bijgewerkt hh:mm + ververs-knop onderaan.
  • De scrollpositie blijft staan bij tikken en verversen.
Controle
Alle totalen heb ik los nagerekend uit de HA-statistieken en ze kloppen. De kosten van gisteren komen tot op de cent overeen met wat mijn automation uit de DAO vastlegt.

Community-versie
Omdat een paar mensen erom vroegen, is er nu een configureerbare versie:
  • Eén kaart (alleen button-card nodig), of als popup met Bubble Card.
  • Je past alleen een blok variables bovenaan aan: DAO-sensoren (standaardnamen staan al ingevuld), je eigen kWh-meters (meerdere per soort mag, bijv. tarief 1 en 2) en optionele onderdelen.
  • Auto/laadpaal is optioneel: laat je hem leeg, dan verdwijnt de Auto-rij en klopt de energiebalans nog steeds.
  • Prijzen voor morgen via Nord Pool of ENTSO-e (wordt automatisch herkend).
  • Ingebouwde controle: klopt een sensornaam niet, dan zie je een gele balk met precies welke.
  • Inclusief een korte handleiding (installatie in 5 stappen, uitleg van alle instellingen, probleemoplossing).
De YAML en de handleiding heb ik naar @Torch1969 gestuurd om te uploaden, en @Doopy-X- heb ik gevraagd om hem te testen. Zodra dat gebeurd is volgt de link. Feedback is uiteraard welkom!

Nota bene:
A) ontworpen voor een donker thema, gebruik één Planning-kaart per dashboard, en Gisteren werkt zolang de recorder die dag nog bewaart (standaard 10 dagen).
B) Ik ben geen ontwikkelaar, ik doe dit puur om de community te helpen en mijn steentje bij te dragen aan dit geweldige project. Samen maken we het beter.


[Afbeelding]

[Afbeelding]

[Afbeelding]
Ben ook zelf weer verder gegaan met het ontwikkelen van mijn dashboard en heb een tab toegevoegd waarbij je een periode kunt kiezen en dan wordt berekend wat je gerealiseerde besparing is geweest:
  • Zonder zonnepanelen en zonder accu (baseline)
  • Met zonnepanelen, dus de zelfconsumptie
  • Met zonnepanelen en accu
De module kijkt naar de historische markttarieven en je consumptie en/of productie en berekent hoeveel een kWh op dat moment kost/opbrengt. Hiervoor gebruikt het de instellingen van DAO. De periode is zelf te kiezen: vandaag, deze week, maand, jaar etc.

Ik moet het nog narekenen maar zo op het eerste gezicht lijkt het wel te kloppen.

Afbeeldingslocatie: https://tweakers.net/i/mHXwDFPvhzg13XH0-XsSch310hw=/800x/filters:strip_exif()/f/image/LKbKKa6DDn53wQo4jz5jA0KM.png?f=fotoalbum_large

  • pimNH
  • Registratie: Mei 2011
  • Laatst online: 26-10 19:42
oscaarbasgitaar schreef op maandag 12 oktober 2026 @ 11:47:
nog iemand (belgië) die momenteel geen nordpool-prijzen doorkrijgt?

2026-10-12 11:43:36 INFO: Loaded 6 secrets from ../data/secrets.json
2026-10-12 11:43:36 INFO: Validating configuration with ConfigurationV2
2026-10-12 11:43:38 info: Day Ahead Optimalisering versie: 2026.9.1
2026-10-12 11:43:38 info: Day Ahead Optimalisering gestart op: 12-10-2026 11:43:38
2026-10-12 11:43:38 info: Day Ahead Optimalisatie gestart: 12-10-2026 11:43:38 taak: calc_optimum

2026-10-12 11:43:38 info: Debug = False
2026-10-12 11:43:38 fout: Er ontbreken kwartier- of uurwaarden van de day-ahead tarieven, de berekening wordt afgebroken
Ik woon in nederland maar had gisteren/eergisteren ook wat problemen, heeft zichzelf opgelost.

[ Voor 12% gewijzigd door pimNH op 12-10-2026 12:58 ]


  • oscaarbasgitaar
  • Registratie: Januari 2026
  • Laatst online: 11:45
Heb bizarre is dat ik volgende log krijg als ik bij run de day ahead prijzen opvraag:

2026-10-12 14:49:13 info: Day ahead data already present

Maar als ik de optimalisatie doe hij zegt dat er geen day ahead prijs gekend is...

Was dat bij jou ook het geval @pimNH ?

  • storeman
  • Registratie: April 2004
  • Laatst online: 25-10 18:40
@pimNH @oscaarbasgitaar Welke epex provider gebruiken jullie? En welke versie van DAO? Ik zie 2026.9.1, klopt?

[ Voor 27% gewijzigd door storeman op 12-10-2026 15:15 ]

"Chaos kan niet uit de hand lopen"


  • oscaarbasgitaar
  • Registratie: Januari 2026
  • Laatst online: 11:45
@storeman : versie klopt inderdaad
mijn config:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
{
  "config_version": 2,
  "homeassistant": {},
  "database ha": {
    "engine": "mysql",
    "port": 3306,
    "database": "homeassistant",
    "username": "homeassistant",
    "password": "!secret db_ha_password"
  },
  "database da": {
    "engine" : "mysql",
    "database": "day_ahead",
    "username": "day_ahead",
    "password": "!secret db_da_password"
},
  "meteoserver_key": "!secret meteoserver-key",
  "meteoserver_model": "harmonie",
  "meteoserver_attemps": 2,
  "prices": {
    "source_day_ahead": "nordpool",
    "energy_taxes_consumption": {
      "2025-01-01": 0.1212
    },
    "energy_taxes_production": {
      "2025-01-01": -0.015
    },
    "cost_supplier_consumption": {
      "2025-01-01": 0.0
    },
    "cost_supplier_production": {
      "2025-01-01": 0.0
    },
    "vat_consumption": {
      "2025-01-01": 6.0
    },
    "vat_production": {
      "2025-01-01": 0.0
    },
    "multiplier_consumption": {
      "2025-01-01": 1.02
    },
    "multiplier_production": {
      "2025-01-01": 0.98
    },
    "last_invoice": "2026-09-01",
    "tax_refund": true,
    "regular high": 0.3,
    "regular low": 0.2,
    "switch to low": 23
  },
  "logging_level": "info",
  "use_calc_baseload": false,
  "baseload_calc_periode": 56,
  "baseload": [
    0.25,
    0.20,
    0.16,
    0.16,
    0.16,
    0.16,
    0.16,
    0.3,
    0.36,
    0.36,
    0.4,
    0.4,
    0.4,
    0.4,
    0.4,
    0.4,
    0.4,
    0.5,
    0.6,
    0.7,
    0.7,
    0.4,
    0.4,
    0.3
  ],
  "graphical_backend": "",
  "graphics": {
    "style": "bmh",
    "battery_balance": true,
    "prices_consumption": true,
    "prices_production": true,
    "prices_spot": false,
    "average_consumption": true,
    "show": "true"
  },
  "interval": "15min",
  "strategy": "minimize cost",
  "max_gap": 0.01,
  "notifications": {
    "opstarten": false,
    "berekening": false
  },
  "grid": {
    "max_power": 11.0
  },
  "history": {
    "save_days": 5
  },
  "dashboard": {
    "port": 5000
  },
  "battery": [
    {
      "name": "Pylontech",
      "entity actual level": "sensor.solis_rhi_3p_battery_soc",
      "capacity": 7.1,
      "upper limit": 100,
      "lower limit": 20,
      "optimal_lower_level": 15,
      "penalty_low_soc": 0.0025,
      "charge stages": [
        {
          "power": 0.0,
          "efficiency": 1.0
        },
        {
          "power": 250.0,
          "efficiency": 0.89
        },
        {
          "power": 500.0,
          "efficiency": 0.89
        },
        {
          "power": 750.0,
          "efficiency": 0.89
        },
        {
          "power": 1000.0,
          "efficiency": 0.89
        },
        {
          "power": 1500.0,
          "efficiency": 0.89
        },
        {
          "power": 2000.0,
          "efficiency": 0.89
        },
        {
          "power": 2500.0,
          "efficiency": 0.89
        },
        {
          "power": 3300.0,
          "efficiency": 0.89
        }
      ],
      "discharge_stages": [
        {
          "power": 0.0,
          "efficiency": 1.0
        },
        {
          "power": 250.0,
          "efficiency": 0.98
        },
        {
          "power": 500.0,
          "efficiency": 0.98
        },
        {
          "power": 750.0,
          "efficiency": 0.98
        },
        {
          "power": 1000.0,
          "efficiency": 0.98
        },
        {
          "power": 1500.0,
          "efficiency": 0.98
        },
        {
          "power": 2000.0,
          "efficiency": 0.98
        },
        {
          "power": 2500.0,
          "efficiency": 0.98
        },
        {
          "power": 3300.0,
          "efficiency": 0.98
        }
      ],
      "reduce_power_high_soc": [
        { "soc": 90, "power": 3500},
        { "soc": 99, "power": 1500},
        { "soc": 100, "power": 400}
      ],
      "dc_to_bat efficiency": 0.94,
      "dc_to_bat max power": 3500,
      "bat_to_dc efficiency": 0.94,
      "bat_to_dc max power": 3500,
      "cycle cost": 0.038,
      "entity_set_power_feedin": "input_number.dao_batt_feed_in",
      "entity_set_operating_mode": "input_select.dao_batt_operating_mode",
        "entity_set_operating_mode_on": "Aan",
        "entity_set_operating_mode_off": "Uit",
      "entity_stop_inverter": "input_datetime.dao_batt_stop_inverter",
      "entity_from_battery": "input_number.dao_batt_from_battery",
      "entity_from_pv": "input_number.dao_batt_from_pv",
      "entity_from_ac": "input_number.dao_batt_from_ac",
      "entity_calculated_soc": "input_number.dao_batt_soc",
      "entity_balance_switch": "input_boolean.dao_batt_balance_switch",
      "solar": [
      {
          "name": "PV panelen",
          "entity_pv_switch": "input_boolean.dao_pv_switch",
          "ml_prediction": false,
          "ml_training_start_date": "2000-01-01",
          "entities_sensors": ["sensor.solis_rhi_3p_totaal_pv"],
          "max power": 5.5,
          "strings": [
            {
              "tilt": 11,
              "orientation": -45,
              "capacity": 3.32,
              "yield": 0.0076
            },
            {
              "tilt": 11,
              "orientation": 45,
              "capacity": 3.32,
              "yield": 0.0076
            }
         ]
       }
     ]
    }
  ],
  "solar": [],
  "electric_vehicle": [],
  "machines": [],
  "boiler": {
    "boiler_present": true,
    "boiler heated by heatpump": true,
    "entity actual temp.": "sensor.utility_room_ecogeo_1_6_kw_ww_temperature",
    "entity setpoint": "sensor.utility_room_ecogeo_1_6_kw_ww_temperature_configured",
    "entity hysterese": "input_number.delta_t_ww",
    "cop": 2.65,
    "cooling rate": 0.25,
    "volume": 300,
    "heating allowed below": 50.5,
    "elec. power": 2000,
    "activate service": "turn_on",
    "activate entity": "input_boolean.dao_ww"
  },
  "heating": {
    "heater present": false,
    "entity hp enabled": "binary_sensor.utility_room_ecogeo_1_6_kw_current_heating_pump_state",
    "entity hp heat demand": "binary_sensor.utility_room_ecogeo_1_6_kw_direct_outlet_dg1",
    "entity hp heat produced": "sensor.geleverde_warmte_vandaag",
    "adjustment": "heating curve",
    "degree days factor": 2.6,
    "stages": [
    { "max_power": 210,  "cop": 2.8 },
    { "max_power": 400,  "cop": 3.3 },
    { "max_power": 700,  "cop": 4.1 },
    { "max_power": 1100, "cop": 4.0 },
    { "max_power": 1600, "cop": 3.8 },
    { "max_power": 2000, "cop": 3.4 }
    ],
  "entity hp power": "input_number.dao_wp_vermogen",
  "entity adjust heating curve": "input_number.dao_stooklijn",
  "adjustment factor": 0.04 
  },
  "tibber": {
    "api_token": "!secret tibber_api_token",
    "api_url": "https://api.tibber.com/v1-beta/gql"
  },
  "xgboost": {
    "tune_hyperparameters": true
  },
  "report": {
    "entities grid consumption": ["sensor.p1_meter_energie_import"],
    "entities grid production": ["sensor.p1_meter_energie_export"],
    "entities solar production ac": [],
    "entities solar production dc": ["sensor.solis_rhi_3p_pv_today_energy_generation"],
    "entities ev consumption": [],
    "entities wp consumption": [],
    "entities boiler consumption": ["sensor.energy_socket_energy_import"],
    "entities machine consumption": [],
    "entities battery consumption": ["sensor.plat_dak_solis_rhi_3p_total_battery_charged"],
    "entities battery production": ["sensor.plat_dak_solis_rhi_3p_total_battery_discharged"]
  },
  "scheduler": {
    "active": true,
    "schedule": [
      {
        "time": "0120",
        "action": "get_meteo_data"
      },
      {
        "time": "0420",
        "action": "get_meteo_data"
      },
      {
        "time": "0720",
        "action": "get_meteo_data"
      },
      {
        "time": "1020",
        "action": "get_meteo_data"
      },
      {
        "time": "1320",
        "action": "get_meteo_data"
      },
      {
        "time": "1620",
        "action": "get_meteo_data"
      },
      {
        "time": "1920",
        "action": "get_meteo_data"
      },
      {
        "time": "2220",
        "action": "get_meteo_data"
      },
      {
        "time": "1255",
        "action": "get_day_ahead_prices"
      },
      {
        "time": "1325",
        "action": "get_day_ahead_prices"
      },
      {
        "time": "1355",
        "action": "get_day_ahead_prices"
      },
      {
        "time": "1425",
        "action": "get_day_ahead_prices"
      },
      {
        "time": "1455",
        "action": "get_day_ahead_prices"
      },
      {
        "time": "1525",
        "action": "get_day_ahead_prices"
      },
      {
        "time": "xx58",
        "action": "calc_optimum"
      },
      {
        "time": "xx13",
        "action": "calc_optimum"
      },
      {
        "time": "xx28",
        "action": "calc_optimum"
      },
      {
        "time": "xx43",
        "action": "calc_optimum"
      },
      {
        "time": "2350",
        "action": "clean_data"
      }
    ]
  },
  "meteoserver_attempts": 2
}
update: ook eens in de log van maria DB gekeken en daar stond:
code:
1
2
2026-10-12 19:13:39 35 [Warning] Aborted connection 35 to db: 'homeassistant' user: 'homeassistant' host: 'fd0c:ac1e:2100::b' (Got an error reading communication packets)
2026-10-12 19:13:39 33 [Warning] Aborted connection 33 to db: 'day_ahead' user: 'day_ahead' host: 'fd0c:ac1e:2100::b' (Got an error reading communication packets)
dan eens met debug gerund:
code:
1
2
3
4
5
6
7
8
2026-10-12 19:58:38 debug: Connection status Pool size: 5  Connections in pool: 1 Current Overflow: -4 Current Checked out connections: 0 at line 234 in /root/dao/prog/da_base.py
2026-10-12 19:58:38 debug: query get column data da:
 SELECT date_format(from_unixtime(`values`.time), %(date_format_1)s) AS uur, `values`.time AS time, `values`.time AS utc, `values`.value AS value 
FROM `values`, variabel 
WHERE variabel.code = %(code_1)s AND `values`.variabel = variabel.id AND `values`.time >= unix_timestamp(%(unix_timestamp_1)s) ORDER BY time
2026-10-12 19:58:39 fout: Er ontbreken kwartierwaarden van de day-ahead tarieven, de berekening wordt afgebroken
2026-10-12 19:58:39 debug: Connection status Pool size: 5  Connections in pool: 1 Current Overflow: -4 Current Checked out connections: 0 at line 730 in /root/dao/prog/da_base.py
2026-10-12 19:58:39 debug: Connection status Pool size: 5  Connections in pool: 1 Current Overflow: -4 Current Checked out connections: 0 at line 5146 in /root/dao/prog/../prog/day_ahead.py
voor zover ik het begrijp is er dus iets mis met de DA database, ik ga die eens deleten en opnieuw inladen.

[ Voor 11% gewijzigd door oscaarbasgitaar op 12-10-2026 20:00 ]


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 29-10 13:29
KC27 schreef op zondag 11 oktober 2026 @ 23:05:
Tegen alle adviezen in heb ik de nieuwe versie met "expansie" (48 uur) toch als "productie" draaien:
Ik nog niet zo te zien, al werkt de predictor wel en zijn de grafiek X-assen iets anders met die data eronder. Moet ik nog iets extra aanzetten?
2026-10-12 19:29:06 info: Day Ahead Optimalisering versie: 2026.10.0.rc1
2026-10-12 19:29:06 info: Day Ahead Optimalisering gestart op: 12-10-2026 19:29:06
2026-10-12 19:29:06 info: Day Ahead Optimalisatie gestart: 12-10-2026 19:29:06 taak: get_day_ahead_predicted_prices
2026-10-12 19:29:07 info: Day ahead prediction prijzen (source: dap, db-records): 
                   time_dt       time    value code
2026-10-14 00:00:00+02:00 1791928800 0.155008   da
2026-10-14 01:00:00+02:00 1791932400 0.151418   da
2026-10-14 02:00:00+02:00 1791936000 0.159610   da
2026-10-14 03:00:00+02:00 1791939600 0.158425   da
2026-10-14 04:00:00+02:00 1791943200 0.160590   da
..
Afbeeldingslocatie: https://tweakers.net/i/tqz_SQ5QpxtFiTDj12j07AyoFO8=/x800/filters:strip_exif()/f/image/hSXtPlqZKlu2glcrXEeyXpjE.png?f=fotoalbum_large

Waar komen die voorspelde prijzen nu vandaan? Hoe verhouden die zich tot bijvoorbeeld wattwanneer?

  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
DaBit schreef op maandag 12 oktober 2026 @ 19:40:
[...]

Ik nog niet zo te zien, al werkt de predictor wel en zijn de grafiek X-assen iets anders met die data eronder. Moet ik nog iets extra aanzetten?


[...]


[Afbeelding]

Waar komen die voorspelde prijzen nu vandaan? Hoe verhouden die zich tot bijvoorbeeld wattwanneer?
In the changelog staat:
There is seperate configuration topic about this new feature available in the Wiki: https://github.com/cornee...keningshorizon-uitbreiden

De api van wattwanneer is alleen te gebruiken met een abo. Voorlopig alleen gratis en opensource.
Als er behoefte is aan andere providers horen we het graag.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • itavero
  • Registratie: Oktober 2004
  • Laatst online: 29-10 11:43
Vandaag kreeg ik een mailtje dat Jeroen.nl voortaan ook een API heeft met voorspellingen (ook gratis als je een account aanmaakt):
Zo haal je de gratis data op

Log in op jeroen.nl/account/data/stroomprijzen en kies bij Voorspellingen json, csv of xls. Je eigen sleutel zit al in de link.
Mocht niemand mij voor zijn, zal ik kijken of ik deze als provider kan toevoegen (ook voor de “definitieve” prijzen).

[ Voor 14% gewijzigd door itavero op 12-10-2026 21:58 ]


  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
itavero schreef op maandag 12 oktober 2026 @ 21:52:
Vandaag kreeg ik een mailtje dat Jeroen.nl voortaan ook een API heeft met voorspellingen (ook gratis als je een account aanmaakt):


[...]


Mocht niemand mij voor zijn, zal ik kijken of ik deze als provider kan toevoegen (ook voor de “definitieve” prijzen).
Ook voor jeroen geldt: alleen met een betaalde key kun je via de api data ophalen.
Als meer mensen dat willen hoorik het graag.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
wmc schreef op maandag 12 oktober 2026 @ 10:58:
Wat is het format van de prijzen voorbij de normale horizon? Is dit 1 prijs of zit hier een onzerheidsmarge op? Afhankelijk van de aanwezigheid van de marge zou je meer of minder waarde aan de prijs kunnen geven in de optimalisatie.

@KC27 ik zie dat je de eind SOC op 20% hebt staan, waarom heb je die keuze gemaakt?
Ja ik heb oudere cellen in 2022 gekocht van niet bar goede kwaliteit.
Bij het ontladen beginnen enkele onder de 18% snel uit de pas te lopen.
Mijn grens staat op 18%.
Netto heb ik toch nog 82% van de bruto capaciteit ter beschikking. Voor mij ruim voldoende: 28 kWh. Daarmee kan ik de gemiddelde dagproductie van mijn pv opslaan en na 1-1-2027 in de winter goedkoop inkopen om mijn verbruik (baseload + warmtepomp) te dekken. Verbruik gemiddelde winterdag: 15-20 kWh.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 29-10 13:29
@KC27 : sorry voor het niet goed lezen...

Hopelijk is deze niet ook voorbarig: in het voorspelde deel word de accu-ontlading gepland tot 0%. Mijn minimum-SoC staat momenteel op 25%.

Afbeeldingslocatie: https://tweakers.net/i/izoMd2E6arju6lGtz_H4jmkz8uA=/x800/filters:strip_exif()/f/image/gXP5qjDRQIENYIGLjjYtahmH.png?f=fotoalbum_large

Deze is wel voorbarig maar ik geef het alvast door: het start_dao_calc REST commando lijkt niet meer te werken in 2026.10.0.rc1; /api/run/calc_zonder_debug geeft 'Onbekende bewerking: calc_zonder_debug'.
Maar ik lees eerst nog wel even de documentatie om te kijken of ik zelf schuldig ben.

  • itavero
  • Registratie: Oktober 2004
  • Laatst online: 29-10 11:43
KC27 schreef op dinsdag 13 oktober 2026 @ 08:58:
[...]

Ook voor jeroen geldt: alleen met een betaalde key kun je via de api data ophalen.
Als meer mensen dat willen hoorik het graag.
Ik kan mij niet herinneren dat ik ooit betaald heb voor mijn account bij Jeroen.nl
Waar vind je dat het betaald zou zijn?

Je kunt wel FutureBuddy worden om het financieel te steunen, maar dit is geen vereiste.
Sterker nog op de pagina met data feeds staat "Alles op Jeroen.nl is gratis".

  • pimNH
  • Registratie: Mei 2011
  • Laatst online: 26-10 19:42
oscaarbasgitaar schreef op maandag 12 oktober 2026 @ 14:54:
Heb bizarre is dat ik volgende log krijg als ik bij run de day ahead prijzen opvraag:

2026-10-12 14:49:13 info: Day ahead data already present

Maar als ik de optimalisatie doe hij zegt dat er geen day ahead prijs gekend is...

Was dat bij jou ook het geval @pimNH ?
Ja zoiets had ik ook volgensmij. Volgensmij moet je met handmatig prijzen opvragen enkel bij van de datum van vandaag invullen en bij tot niks, dat wil nog wel eens werken.

Ik gebruik nordpool voor de prijzen.

  • itavero
  • Registratie: Oktober 2004
  • Laatst online: 29-10 11:43
itavero schreef op maandag 12 oktober 2026 @ 21:52:
Mocht niemand mij voor zijn, zal ik kijken of ik deze als provider kan toevoegen (ook voor de “definitieve” prijzen).
Ik had nog wat Copilot credits over, dus de pull request voor Jeroen.nl support is bijna klaar. Vanavond nog wat meer fine-tunen/reviewen en even kijken hoe ik lokaal een test build kan deployen.

  • tomvandepoel3
  • Registratie: Januari 2026
  • Laatst online: 11:12
De nieuwe uitbreiding van de berekeningshorizon werkt mooi. Dank daarvoor !!

Klein vraagje. Voor energypriceforecast_eu zijn, zoals beschreven, enkel de eerste 24 uur gratis zonder API key beschikbaar. Stel ik heb zo'n key, hoe kan ik dan die API key in de config.json/secrets.json meegeven ?
code:
1
2
3
4
5
6
    "prediction": {
      "extension": 96,
      "source": "energypriceforecast_eu",
      "api": "https://api.energypriceforecast.eu/api/v1/dao/prices?country=<region>&hours=<hours>", 
      "api_key": "!secret energypriceforecast_api_key"
    },

  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
tomvandepoel3 schreef op dinsdag 13 oktober 2026 @ 13:52:
De nieuwe uitbreiding van de berekeningshorizon werkt mooi. Dank daarvoor !!

Klein vraagje. Voor energypriceforecast_eu zijn, zoals beschreven, enkel de eerste 24 uur gratis zonder API key beschikbaar. Stel ik heb zo'n key, hoe kan ik dan die API key in de config.json/secrets.json meegeven ?
code:
1
2
3
4
5
6
    "prediction": {
      "extension": 96,
      "source": "energypriceforecast_eu",
      "api": "https://api.energypriceforecast.eu/api/v1/dao/prices?country=<region>&hours=<hours>", 
      "api_key": "!secret energypriceforecast_api_key"
    },
Deze moet bij energypriceforecast_eu in de header worden opgenomen.
Als jij dat graag wil kan ik daar wel een uitbreiding voor maken.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
itavero schreef op dinsdag 13 oktober 2026 @ 12:56:
[...]


Ik had nog wat Copilot credits over, dus de pull request voor Jeroen.nl support is bijna klaar. Vanavond nog wat meer fine-tunen/reviewen en even kijken hoe ik lokaal een test build kan deployen.
Laten we het proberen.
Ik zal een extra instelling maken met de key, die je dan bij de secrets kunt invullen.
Voor de rest is het peanuts, daar heb je geen ai-tokens voor nodig.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • tomvandepoel3
  • Registratie: Januari 2026
  • Laatst online: 11:12
KC27 schreef op dinsdag 13 oktober 2026 @ 13:58:
[...]

Deze moet bij energypriceforecast_eu in de header worden opgenomen.
Als jij dat graag wil kan ik daar wel een uitbreiding voor maken.
Was maar een vraagje. Eerste ervaringen met "epexpredictor" en "dap" zijn prima. Dus dit heeft zeker geen prioriteit voor mij.

  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
Er zit nog een foutje in de scheduler, waardoor "action": "predicted_prices" niet werkt in de laatste testversie (2026.10.0.rc1).
Dit wordt gerepareerd in de volgende testversie.
Dus voorlopig "met de hand" (via tasks in het dashboard) ophalen.
Excuses voor het ongemak.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • domoor
  • Registratie: Mei 2011
  • Laatst online: 28-10 18:33
Ik wilde ook eens kijken naar deze integratie, ziet er veelbelovend uit.

Echter na installatie start de addon niet. Ik zie dit in de logfile
code:
1
[18:39:04] INFO: => directory dao_data made, files copied
[18:39:04] INFO: => /root/dao/data doesn't exist, made

[18:39:04] INFO: => /root/dao/webserver/app/static/data exist

2026-10-13 18:39:07 INFO: Configuration needs migration from unversioned to v2

2026-10-13 18:39:07 INFO: Saved backup configuration to ../data/options_unversioned.json

2026-10-13 18:39:07 INFO: Migrating unversioned configuration to v0

2026-10-13 18:39:07 INFO: Added config_version=0 to unversioned configuration

2026-10-13 18:39:07 INFO: Migrated scheduler: active=False, 11 schedule entries

2026-10-13 18:39:07 INFO: Migrating from v0 to v1

2026-10-13 18:39:07 INFO: Migrated configuration from v0 to v1

2026-10-13 18:39:07 INFO: Migrating from v1 to v2

2026-10-13 18:39:07 INFO: Migrated configuration from v1 to v2

2026-10-13 18:39:07 INFO: Configuration at version 2

2026-10-13 18:39:07 INFO: Saved migrated configuration to ../data/options.json

2026-10-13 18:39:07 INFO: Loaded 6 secrets from ../data/secrets.json

2026-10-13 18:39:07 INFO: Validating configuration with ConfigurationV2

Table "variabel" met inhoud gecreeerd.

Table "values" gecreeerd.

Table "prognoses" gecreeerd.

Table "variabel" geupdated.

Table "variabel" geupdated.

Table "variabel" geupdated met windsnelheid.

Table "variabel" geupdated met neerslag.

Meteo-data verhuizen van "values" naar "prognoses"

Moved Globale straling data

Moved Temperatuur data

Moved PV radiation data

Moved Windsnelheid data

Moved Neerslag data

Index 'ix_prognoses_time' toegevoegd aan tabel 'prognoses'.

Index 'ix_values_time' toegevoegd aan tabel 'values'.

Starting scheduler...

Scheduler PID: 33

Starting gunicorn...

Gunicorn PID: 34

[2026-10-13 18:39:08 +0200] [34] [INFO] Starting gunicorn 26.2.0

[2026-10-13 18:39:08 +0200] [34] [INFO] Listening at: http://0.0.0.0:5000 (34)

[2026-10-13 18:39:08 +0200] [34] [INFO] Using worker: sync

[2026-10-13 18:39:08 +0200] [40] [INFO] Booting worker with pid: 40

[2026-10-13 18:39:08 +0200] [41] [INFO] Booting worker with pid: 41

[2026-10-13 18:39:08 +0200] [34] [INFO] Control socket listening at /root/.gunicorn/gunicorn.ctl

2026-10-13 18:39:13 INFO: Loaded 6 secrets from ../data/secrets.json

2026-10-13 18:39:13 INFO: Validating configuration with ConfigurationV2

2026-10-13 18:39:13 ERROR: Home Assistant database not found: /homeassistant/home-assistant_v2.db

Traceback (most recent call last):

File "/root/dao/prog/da_scheduler.py", line 74, in <module>

main()

~~~~^^

File "/root/dao/prog/da_scheduler.py", line 69, in main

da_sched = DaScheduler("../data/options.json")

File "/root/dao/prog/da_scheduler.py", line 10, in __init__

super().__init__(file_name)

~~~~~~~~~~~~~~~~^^^^^^^^^^^

File "/root/dao/prog/da_base.py", line 118, in __init__

raise RuntimeError('No database connection for Home Assistant')

RuntimeError: No database connection for Home Assistant

Scheduler crashed with exit code 1

Stopping gunicorn...

[2026-10-13 18:39:16 +0200] [34] [INFO] Handling signal: term

[2026-10-13 18:39:16 +0200] [40] [INFO] Worker exiting (pid: 40)

[2026-10-13 18:39:16 +0200] [41] [INFO] Worker exiting (pid: 41)

[2026-10-13 18:39:17 +0200] [34] [INFO] Shutting down: Master

Scheduler crashed with exit code 1

Scheduler crashed with exit code 1

NB. IK gebruik MariaDB ipv. SQLlite als database.

Iemand een idee hoe ik verder kan komen?

  • konehead
  • Registratie: Januari 2005
  • Laatst online: 13:24
domoor schreef op dinsdag 13 oktober 2026 @ 18:44:
Ik wilde ook eens kijken naar deze integratie, ziet er veelbelovend uit.

Echter na installatie start de addon niet. Ik zie dit in de logfile
code:
1
[18:39:04] INFO: => directory dao_data made, files copied
[18:39:04] INFO: => /root/dao/data doesn't exist, made

[18:39:04] INFO: => /root/dao/webserver/app/static/data exist

2026-10-13 18:39:07 INFO: Configuration needs migration from unversioned to v2

2026-10-13 18:39:07 INFO: Saved backup configuration to ../data/options_unversioned.json

2026-10-13 18:39:07 INFO: Migrating unversioned configuration to v0

2026-10-13 18:39:07 INFO: Added config_version=0 to unversioned configuration

2026-10-13 18:39:07 INFO: Migrated scheduler: active=False, 11 schedule entries

2026-10-13 18:39:07 INFO: Migrating from v0 to v1

2026-10-13 18:39:07 INFO: Migrated configuration from v0 to v1

2026-10-13 18:39:07 INFO: Migrating from v1 to v2

2026-10-13 18:39:07 INFO: Migrated configuration from v1 to v2

2026-10-13 18:39:07 INFO: Configuration at version 2

2026-10-13 18:39:07 INFO: Saved migrated configuration to ../data/options.json

2026-10-13 18:39:07 INFO: Loaded 6 secrets from ../data/secrets.json

2026-10-13 18:39:07 INFO: Validating configuration with ConfigurationV2

Table "variabel" met inhoud gecreeerd.

Table "values" gecreeerd.

Table "prognoses" gecreeerd.

Table "variabel" geupdated.

Table "variabel" geupdated.

Table "variabel" geupdated met windsnelheid.

Table "variabel" geupdated met neerslag.

Meteo-data verhuizen van "values" naar "prognoses"

Moved Globale straling data

Moved Temperatuur data

Moved PV radiation data

Moved Windsnelheid data

Moved Neerslag data

Index 'ix_prognoses_time' toegevoegd aan tabel 'prognoses'.

Index 'ix_values_time' toegevoegd aan tabel 'values'.

Starting scheduler...

Scheduler PID: 33

Starting gunicorn...

Gunicorn PID: 34

[2026-10-13 18:39:08 +0200] [34] [INFO] Starting gunicorn 26.2.0

[2026-10-13 18:39:08 +0200] [34] [INFO] Listening at: http://0.0.0.0:5000 (34)

[2026-10-13 18:39:08 +0200] [34] [INFO] Using worker: sync

[2026-10-13 18:39:08 +0200] [40] [INFO] Booting worker with pid: 40

[2026-10-13 18:39:08 +0200] [41] [INFO] Booting worker with pid: 41

[2026-10-13 18:39:08 +0200] [34] [INFO] Control socket listening at /root/.gunicorn/gunicorn.ctl

2026-10-13 18:39:13 INFO: Loaded 6 secrets from ../data/secrets.json

2026-10-13 18:39:13 INFO: Validating configuration with ConfigurationV2

2026-10-13 18:39:13 ERROR: Home Assistant database not found: /homeassistant/home-assistant_v2.db

Traceback (most recent call last):

File "/root/dao/prog/da_scheduler.py", line 74, in <module>

main()

~~~~^^

File "/root/dao/prog/da_scheduler.py", line 69, in main

da_sched = DaScheduler("../data/options.json")

File "/root/dao/prog/da_scheduler.py", line 10, in __init__

super().__init__(file_name)

~~~~~~~~~~~~~~~~^^^^^^^^^^^

File "/root/dao/prog/da_base.py", line 118, in __init__

raise RuntimeError('No database connection for Home Assistant')

RuntimeError: No database connection for Home Assistant

Scheduler crashed with exit code 1

Stopping gunicorn...

[2026-10-13 18:39:16 +0200] [34] [INFO] Handling signal: term

[2026-10-13 18:39:16 +0200] [40] [INFO] Worker exiting (pid: 40)

[2026-10-13 18:39:16 +0200] [41] [INFO] Worker exiting (pid: 41)

[2026-10-13 18:39:17 +0200] [34] [INFO] Shutting down: Master

Scheduler crashed with exit code 1

Scheduler crashed with exit code 1

NB. IK gebruik MariaDB ipv. SQLlite als database.

Iemand een idee hoe ik verder kan komen?
Gebruik voor je logging ajb de CODE tag. Ik denk dat er een fout zit in je JSON. Check die eerst met een JSON checker..

  • domoor
  • Registratie: Mei 2011
  • Laatst online: 28-10 18:33
@konehead De JSON is de initiële json die met het package mee geïnstalleerd wordt.
Ik gebruik de HA APP, met die initiële JSON zou in ieder geval de webserver moeten starten om de JSON verder te kunnen bewerken, correct?

Ik zie wel een foutmelding mbt. de SQLlite homeassistant DB, die gebruik ik niet maar heb de DB in MariaDB zitten. Kan het zijn dat wanneer de SQLlite DB er niet is de App crashed?

  • konehead
  • Registratie: Januari 2005
  • Laatst online: 13:24
domoor schreef op dinsdag 13 oktober 2026 @ 20:10:
@konehead De JSON is de initiële json die met het package mee geïnstalleerd wordt.
Ik gebruik de HA APP, met die initiële JSON zou in ieder geval de webserver moeten starten om de JSON verder te kunnen bewerken, correct?

Ik zie wel een foutmelding mbt. de SQLlite homeassistant DB, die gebruik ik niet maar heb de DB in MariaDB zitten. Kan het zijn dat wanneer de SQLlite DB er niet is de App crashed?
Dat is correct. Dit is mijn header, heb ook MariaDB
code:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
  "config_version": 2,
  "homeassistant": {
    "ip_address": "supervisor",
    "protocol_api": "http"
  },
  "database_ha": {
    "engine": "mysql",
    "server": "core-mariadb",
    "port": 3306,
    "database": "homeassistant",
    "username": "homeassistant",
    "password": "!secret db_da_password"
  },
  "database_da": {
    "engine": "sqlite",
    "db_path": "../data",
    "database": "day_ahead.db"

  • Hedzie
  • Registratie: Januari 2024
  • Laatst online: 13:44
Vraagje mbt de l/w warmtepomp in dao.

Hoe kun je nu het beste de warmtepomp in dao zetten?

Ik heb de warmtepomp 24/7 draaien.

Dao hoeft de warmtepomp niet te plannen, wel moet dao rekening houden met het verbruik.

Het verbruik wisselt uiteraard adhv de buitentemperatuur.

Kun je niet adhv de verwachte buitentemp. Het te verwachten verbruik van de warmtepomp in dao meenemen?

  • domoor
  • Registratie: Mei 2011
  • Laatst online: 28-10 18:33
@konehead Kan ik die json ook anderszins controleren cq. aanpassen?
Bijv. via een docker shell oid.?

  • konehead
  • Registratie: Januari 2005
  • Laatst online: 13:24
domoor schreef op dinsdag 13 oktober 2026 @ 20:45:
@konehead Kan ik die json ook anderszins controleren cq. aanpassen?
Bijv. via een docker shell oid.?
Ja, zoek een paar berichten terug, daar staat het path (zondag besproken)

  • domoor
  • Registratie: Mei 2011
  • Laatst online: 28-10 18:33
@konehead Thanks, de app start nu op met MariaDB.

  • The Source
  • Registratie: April 2000
  • Laatst online: 29-10 22:01
KC27 schreef op maandag 12 oktober 2026 @ 21:33:
[...]

In the changelog staat:
There is seperate configuration topic about this new feature available in the Wiki: https://github.com/cornee...keningshorizon-uitbreiden

De api van wattwanneer is alleen te gebruiken met een abo. Voorlopig alleen gratis en opensource.
Als er behoefte is aan andere providers horen we het graag.
Ik gebruik deze data source: https://epexpredictor.batzill.com/docs
je kunt deze ook zelf in een docker draaien: https://github.com/b3nn0/EpexPredictor

  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
"epixpredictor" is een van de ondersteunde sources in de testversie van DAO.
Hij biedt de data aan via deze api:
https://epexpredictor.bat...on=<region>&hours=<hours>

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • buiter
  • Registratie: December 2001
  • Laatst online: 13:07
@KC27 Mooi dat een meerdaagse verwachting al meegenomen wordt. Die van Jeroen mag wat mij betreft ook in DAO zitten.

Nu DAO bij mij werkt, vroeg ik me af of mijn suggestie over het inplannen van de auto nog een overweging is. Het lijkt me handig, omdat de auto een grootverbruiker in huis is.
Praktisch:
- Er zijn auto’s die elke avond moeten laden.
- Er zijn auto’s die maar 1 of 2 keer per week moeten laden.
Zeker bij dagelijks laden zou het mooi zijn als DAO dat weet en in de planning meeneemt.

Vanuit HA krijg ik bij een SoC <50% van de auto een bericht met de vraag wanneer ik wil laden. Dat kan vandaag, morgen of overmorgen zijn met de optie snel of langzaam:
- Snel: zo snel mogelijk laden.
- Langzaam: het laden mag verdeeld worden over de dag of nacht, met een ruimer tijdvenster.
Het tijdvenster gebeurt buiten DAO met velden waar ik DAO naar wil verwijzen.

Als je weet dat het laden langer mag duren dan heeft DAO de ruimte om te plannen op de gunstigste tarieven. Wat ik mis in de laadplanner van de auto, is een starttijd. Nu is er alleen een klaar-tijd, en wordt er gepland vanaf het moment dat de auto wordt ingeplugd. Met een start- en eindvenster, zoals bij machines, kan DAO de goedkoopste kwartieren binnen dat venster kiezen, ook als de auto al eerder aan de laadpaal hangt. Daarnaast mis ik de geplande laadsessie van de auto in de grafiek van DAO. Wellicht met een vinkje om de auto wel/niet meeplannen. Als ik kan zien wanneer en hoeveel er geladen wordt, is het makkelijker om te controleren of de planning klopt met wat ik verwacht.

De auto als machine inplannen kan ook, maar dan wordt het één aaneengesloten blok. DAO kiest wel het goedkoopste startmoment, maar verdeelt dit niet over losse goedkope kwartieren.

  • -Niels-
  • Registratie: Januari 2007
  • Laatst online: 13:51
Hedzie schreef op dinsdag 13 oktober 2026 @ 20:33:
Vraagje mbt de l/w warmtepomp in dao.

Hoe kun je nu het beste de warmtepomp in dao zetten?

Ik heb de warmtepomp 24/7 draaien.

Dao hoeft de warmtepomp niet te plannen, wel moet dao rekening houden met het verbruik.

Het verbruik wisselt uiteraard adhv de buitentemperatuur.

Kun je niet adhv de verwachte buitentemp. Het te verwachten verbruik van de warmtepomp in dao meenemen?
Ik zit ook met dit idee te spelen. Ik overweeg om een machine te maken en die verschillende 24u programma's te geven en deze vervolgens met een script in te stellen gebaseerd op de weersverwachting.

Ik heb in dao de laatste tijd regelmatig een run gedaan met salderen uit, t gedrag en effect van deferrable loads wordt best een beetje anders. Effectief komt het er nu op neer dat de accu laadt wanneer het tarieft t goedkoopst is en ontlaad wanneer prijzen hoog zijn. Er hoeft geen tot nauwelijks rekening gehouden te worden met huis verbruik en de flag grid balancing staat bijna nooit aan. Deferrable loads gaan altijd naar t goedkoopste moment in t planbare window en of je in dat goedkoopste window nou 1kwh verbruikt vanaf t net of 5 is verder niet van belang, t komt toch van het net omdat dat goedkoper is en de accu wordt bewaard/dan ook geladen om in een duur tijdsblok terug te leveren.

Vanaf volgend jaar wordt het veel belangrijker dat het huis verbruik klopt maar daarintegen maakt het vaak veel minder uit waar dat verbruik valt, of je de vaatwasser nou om 18u aanzet bij een tarief van 40 cent of om 02:00 bij een tarief van 25 cent maakt minder uit, het zal toch zoveel mogelijk uit de batterij moeten komen die bij voorkeur overdag is gevuld met zonneenergie.

Gevolg van dit alles is ook dat een warmtepomp planning met verhogen en verlagen van stooklijnen (wat een gevolg zal hebben voor comfort en of COP) minder voordeel zal hebben. T precies weten hoeveel energie er in de accu moet zitten om de nacht door te komen naar de volgende zonne-opbrengst is wel belangrijk. Gelukkig is de optimizer van DAO hier perfect geschikt voor, we moeten deze vooral goed genoeg van informatie kunnen voorzien.

Mijn idee is dan ook om twee machines te maken, een voor vandaag en een voor morgen en daar een aantal programma's in te gooien die 24u duren. Ik dacht aan een stuk of 6 programma's, oplopend in verbruik, en vervolgens op basis van de weersverwachting een programma laten selecteren door een script. In de zomer verwacht ik dit dan ook in te zetten voor koeling met dezelfde logica.

Gaat dit zo werken of loop ik tegen onvoorziene problemen aan?

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 29-10 13:29
DaBit schreef op dinsdag 13 oktober 2026 @ 10:20:
@KC27 : sorry voor het niet goed lezen...

Hopelijk is deze niet ook voorbarig: in het voorspelde deel word de accu-ontlading gepland tot 0%. Mijn minimum-SoC staat momenteel op 25%.
Dat probleem lijkt zichzelf opgelost te hebben. Ik zie nu keurig dat-ie in de planning de minimum-SoC aanhoud.

Maar @KC27 : het API probleem is er nog wel en volgens mij is er ook niets veranderd: in 2026.10.0.rc1 doet het API/run http://<ip-adres van DAO>:<ip-poort van DAO>/api/run/<commando> deel van de API het niet meer (bij mij). Het API/report deel, dus http://<ip-adres van DAO>:<ip-poort van DAO>/api/report/<variable>/<period>?<parameter>=<parameter_value> doet het wel.

Vraag over de predicted prijzen: kan ik achteraf achterhalen hoe goed deze klopten met de echte prijzen? Ik heb namelijk geen idee hoe goed dap is tov epexpredictor of welke andere dan ook.

(niet dat ik denk dat het heel veel uitmaakt eigenlijk; ik zie dat de lading in de accu beter afgestemd word op de mogelijke situatie in de toekomst en dat zal niet zoveel veranderen als de voorspelling wat onnauwkeuriger is zolang de trend maar klopt)

  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
DaBit schreef op woensdag 14 oktober 2026 @ 14:26:
[...]


Dat probleem lijkt zichzelf opgelost te hebben. Ik zie nu keurig dat-ie in de planning de minimum-SoC aanhoud.

Maar @KC27 : het API probleem is er nog wel en volgens mij is er ook niets veranderd: in 2026.10.0.rc1 doet het API/run http://<ip-adres van DAO>:<ip-poort van DAO>/api/run/<commando> deel van de API het niet meer (bij mij). Het API/report deel, dus http://<ip-adres van DAO>:<ip-poort van DAO>/api/report/<variable>/<period>?<parameter>=<parameter_value> doet het wel.

Vraag over de predicted prijzen: kan ik achteraf achterhalen hoe goed deze klopten met de echte prijzen? Ik heb namelijk geen idee hoe goed dap is tov epexpredictor of welke andere dan ook.

(niet dat ik denk dat het heel veel uitmaakt eigenlijk; ik zie dat de lading in de accu beter afgestemd word op de mogelijke situatie in de toekomst en dat zal niet zoveel veranderen als de voorspelling wat onnauwkeuriger is zolang de trend maar klopt)
Aan de oude api is nog niks aangepast aan de nieuwe horizon verlenging. Dat is ook gecommuniceerd. Staat op mijn/ons todo lijstje.

Ik zal eens nadenken of en hoe ik de diverse predictors kan vergelijken met elkaar en met de daadwerkelijke prijzen.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 29-10 13:29
@KC27: Die API-trubbels gaan niet over nieuwe functionaliteit, maar bestaande die anders is dan in de vorige versie.

http://192.168.100.18:500...t/pv_ac/vandaag_en_morgen
code:
1
{ "message":"Success", "data": [{"time_ts":1791928800000,"time":"2026-10-14 00:00","value":0.0,"datatype":"recorded"},{"time_ts":1791932400000,"time":"2026-10-14 01:00","value":0.0,"datatype":"recorded"},{"time_ts":1791936000000,"time":"2026-10-14
http://192.168.100.18:5003/api/run/calc_zonder_debug
code:
1
Onbekende bewerking: calc_zonder_debug
Die 'onbekende bewerking' heb ik bij de hele /api/run
Oftewel: ik kan geen berekening meer starten via een HA automatie.

[ Voor 4% gewijzigd door DaBit op 14-10-2026 15:11 ]


  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
DaBit schreef op woensdag 14 oktober 2026 @ 15:08:
@KC27: Die API-trubbels gaan niet over nieuwe functionaliteit, maar bestaande die anders is dan in de vorige versie.

http://192.168.100.18:500...t/pv_ac/vandaag_en_morgen

[...]

http://192.168.100.18:5003/api/run/calc_zonder_debug

[...]


Die 'onbekende bewerking' heb ik bij de hele /api/run
Oftewel: ik kan geen berekening meer starten via een HA automatie.
Dank voor het melden. Ik ga ernaar kijken.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Hedzie
  • Registratie: Januari 2024
  • Laatst online: 13:44
-Niels- schreef op woensdag 14 oktober 2026 @ 13:54:
[...]

Ik zit ook met dit idee te spelen. Ik overweeg om een machine te maken en die verschillende 24u programma's te geven en deze vervolgens met een script in te stellen gebaseerd op de weersverwachting.

Ik heb in dao de laatste tijd regelmatig een run gedaan met salderen uit, t gedrag en effect van deferrable loads wordt best een beetje anders. Effectief komt het er nu op neer dat de accu laadt wanneer het tarieft t goedkoopst is en ontlaad wanneer prijzen hoog zijn. Er hoeft geen tot nauwelijks rekening gehouden te worden met huis verbruik en de flag grid balancing staat bijna nooit aan. Deferrable loads gaan altijd naar t goedkoopste moment in t planbare window en of je in dat goedkoopste window nou 1kwh verbruikt vanaf t net of 5 is verder niet van belang, t komt toch van het net omdat dat goedkoper is en de accu wordt bewaard/dan ook geladen om in een duur tijdsblok terug te leveren.

Vanaf volgend jaar wordt het veel belangrijker dat het huis verbruik klopt maar daarintegen maakt het vaak veel minder uit waar dat verbruik valt, of je de vaatwasser nou om 18u aanzet bij een tarief van 40 cent of om 02:00 bij een tarief van 25 cent maakt minder uit, het zal toch zoveel mogelijk uit de batterij moeten komen die bij voorkeur overdag is gevuld met zonneenergie.

Gevolg van dit alles is ook dat een warmtepomp planning met verhogen en verlagen van stooklijnen (wat een gevolg zal hebben voor comfort en of COP) minder voordeel zal hebben. T precies weten hoeveel energie er in de accu moet zitten om de nacht door te komen naar de volgende zonne-opbrengst is wel belangrijk. Gelukkig is de optimizer van DAO hier perfect geschikt voor, we moeten deze vooral goed genoeg van informatie kunnen voorzien.

Mijn idee is dan ook om twee machines te maken, een voor vandaag en een voor morgen en daar een aantal programma's in te gooien die 24u duren. Ik dacht aan een stuk of 6 programma's, oplopend in verbruik, en vervolgens op basis van de weersverwachting een programma laten selecteren door een script. In de zomer verwacht ik dit dan ook in te zetten voor koeling met dezelfde logica.

Gaat dit zo werken of loop ik tegen onvoorziene problemen aan?
Ha, had min ofmeer hetzelfde idee qua machine.

De programma’s zijn het vermogen. Het juiste programma wordt gekozen met een automation in HA door bijv. Adhv de buitentemp.

Maar uiteindelijk denk ik dat de lijst te lang wordt in DAO om de wp 24u te laten draaien.

  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-10 10:34
vandaag weer alleen een Meteo data scherm
iemand idee waarom de berekening regelmatig uitblijft?

Day Ahead Optimizer version: 2026.9.1

Afbeeldingslocatie: https://tweakers.net/i/655RrXo_gyogMp6T8gHCFG2qmbg=/800x/filters:strip_exif()/f/image/UkhvcdLDpV78Z9p0SThK6Noo.png?f=fotoalbum_large
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
2026-10-14 11:42:09 INFO: Loaded 6 secrets from ../data/secrets.json
2026-10-14 11:42:09 INFO: Validating configuration with ConfigurationV2
2026-10-14 11:42:09 info: Day Ahead Optimalisering versie: 2026.9.1
2026-10-14 11:42:09 info: Day Ahead Optimalisering gestart op: 14-10-2026 11:42:09
2026-10-14 11:42:09 info: Day Ahead Optimalisatie gestart: 14-10-2026 11:42:09 taak: calc_optimum_met_debug
2026-10-14 11:42:09 info: Debug = True
2026-10-14 11:42:10 info: Zelf berekende baseload
2026-10-14 11:42:10 info: ML prediction SolarEdge_8kW
                   date_time  prediction
0  2026-10-14 11:00:00+02:00       3.914
1  2026-10-14 12:00:00+02:00       5.001
2  2026-10-14 13:00:00+02:00       4.756
3  2026-10-14 14:00:00+02:00       4.554
4  2026-10-14 15:00:00+02:00       3.975
5  2026-10-14 16:00:00+02:00       2.458
6  2026-10-14 17:00:00+02:00       1.208
7  2026-10-14 18:00:00+02:00       0.132
8  2026-10-14 19:00:00+02:00       0.008
9  2026-10-14 20:00:00+02:00       0.005
10 2026-10-14 21:00:00+02:00       0.004
11 2026-10-14 22:00:00+02:00       0.004
12 2026-10-14 23:00:00+02:00       0.004
2026-10-14 11:42:10 info: Start waarden: 
      uur                tijd  spot   p_l   p_t     base  pv_ac  pv_dc
0   11:30 2026-10-14 11:30:00 0.138 0.303 0.278    0.061  0.192      0
1   11:45 2026-10-14 11:45:00 0.127 0.289 0.265    0.105  1.080      0
2   12:00 2026-10-14 12:00:00 0.124 0.286 0.261    0.205  1.169      0
3   12:15 2026-10-14 12:15:00 0.115 0.274 0.250    0.250  1.237      0
4   12:30 2026-10-14 12:30:00 0.110 0.268 0.244    0.294  1.305      0
5   12:45 2026-10-14 12:45:00 0.103 0.261 0.236    0.273  1.290      0
6   13:00 2026-10-14 13:00:00 0.107 0.265 0.240    0.194  1.211      0
7   13:15 2026-10-14 13:15:00 0.100 0.257 0.232    0.173  1.196      0
8   13:30 2026-10-14 13:30:00 0.095 0.251 0.226    0.151  1.181      0
9   13:45 2026-10-14 13:45:00 0.088 0.242 0.217    0.161  1.168      0
10  14:00 2026-10-14 14:00:00 0.096 0.252 0.227    0.200  1.163      0
11  14:15 2026-10-14 14:15:00 0.100 0.257 0.232    0.210  1.151      0
12  14:30 2026-10-14 14:30:00 0.104 0.262 0.237    0.220  1.138      0
13  14:45 2026-10-14 14:45:00 0.112 0.271 0.246    0.215  1.102      0
14  15:00 2026-10-14 15:00:00 0.106 0.264 0.239    0.194  1.063      0
15  15:15 2026-10-14 15:15:00 0.117 0.277 0.252    0.189  1.026      0
16  15:30 2026-10-14 15:30:00 0.130 0.292 0.268    0.183  0.990      0
17  15:45 2026-10-14 15:45:00 0.146 0.312 0.287    0.193  0.895      0
18  16:00 2026-10-14 16:00:00 0.142 0.307 0.282    0.215  0.753      0
19  16:15 2026-10-14 16:15:00 0.160 0.329 0.305    0.225  0.658      0
20  16:30 2026-10-14 16:30:00 0.195 0.372 0.347    0.235  0.563      0
21  16:45 2026-10-14 16:45:00 0.221 0.403 0.378    0.237  0.485      0
22  17:00 2026-10-14 17:00:00 0.197 0.374 0.349    0.230  0.417      0
23  17:15 2026-10-14 17:15:00 0.219 0.401 0.376    0.232  0.338      0
24  17:30 2026-10-14 17:30:00 0.235 0.420 0.395    0.235  0.260      0
25  17:45 2026-10-14 17:45:00 0.263 0.454 0.429    0.257  0.193      0
26  18:00 2026-10-14 18:00:00 0.250 0.438 0.413    0.305  0.119      0
27  18:15 2026-10-14 18:15:00 0.259 0.448 0.424    0.327  0.052      0
28  18:30 2026-10-14 18:30:00 0.275 0.469 0.444    0.349  0.000      0
29  18:45 2026-10-14 18:45:00 0.303 0.503 0.478    0.322  0.000      0
30  19:00 2026-10-14 19:00:00 0.287 0.483 0.458    0.257  0.012      0
31  19:15 2026-10-14 19:15:00 0.297 0.495 0.470    0.230  0.004      0
32  19:30 2026-10-14 19:30:00 0.299 0.497 0.473    0.203  0.000      0
33  19:45 2026-10-14 19:45:00 0.299 0.497 0.473    0.185  0.000      0
34  20:00 2026-10-14 20:00:00 0.292 0.489 0.464    0.167  0.002      0
35  20:15 2026-10-14 20:15:00 0.279 0.474 0.449    0.148  0.001      0
36  20:30 2026-10-14 20:30:00 0.259 0.449 0.424    0.129  0.001      0
37  20:45 2026-10-14 20:45:00 0.250 0.438 0.413    0.129  0.001      0
38  21:00 2026-10-14 21:00:00 0.265 0.456 0.432   13.128  0.001      0
39  21:15 2026-10-14 21:15:00 0.244 0.430 0.406   13.128  0.001      0
40  21:30 2026-10-14 21:30:00 0.236 0.422 0.397   13.128  0.001      0
41  21:45 2026-10-14 21:45:00 0.220 0.402 0.377  -38.811  0.001      0
42  22:00 2026-10-14 22:00:00 0.230 0.413 0.389 -155.669  0.001      0
43  22:15 2026-10-14 22:15:00 0.215 0.396 0.371 -207.608  0.001      0
44  22:30 2026-10-14 22:30:00 0.203 0.381 0.357 -259.546  0.001      0
45  22:45 2026-10-14 22:45:00 0.195 0.371 0.347 -207.617  0.001      0
46  23:00 2026-10-14 23:00:00 0.209 0.388 0.363  -77.787  0.001      0
47  23:15 2026-10-14 23:15:00 0.199 0.376 0.352  -25.858  0.001      0
48  23:30 2026-10-14 23:30:00 0.193 0.369 0.345   26.072  0.001      0
49  23:45 2026-10-14 23:45:00 0.190 0.365 0.341   78.001  0.001      0
2026-10-14 11:42:12 info: No reduced hours applied for Zendure 3x SolarFlow 2400 AC+
2026-10-14 11:42:12 info: No reduced power applied during discharging at low soc
2026-10-14 11:42:12 info: No reduced power applied during charging at high soc
2026-10-14 11:42:12 info: Startwaarde SoC Zendure 3x SolarFlow 2400 AC+: 16.0%

2026-10-14 11:42:12 info: Boiler direct opwarmen staat aan
2026-10-14 11:42:12 info: Boiler setpoint 52.0 °C
2026-10-14 11:42:12 info: Boiler hysterese 12.0 K
2026-10-14 11:42:12 info: Boiler cooling rate 0.3 K/uur
2026-10-14 11:42:12 info: Boiler heating allowed below 47.0 °C
2026-10-14 11:42:12 info: Boiler opwarmen wordt ingepland tussen: 2026-10-14 11:30 en 2026-10-14 11:45
2026-10-14 11:42:12 info: Boiler verbruik in 1 kwartier: 0.75 kWh
2026-10-14 11:42:12 info: Prognose boiler:
                  tijd  act_temp  heat  elec  interval  cost  end_temp  end_value  netto_cost
0  2026-10-14 11:30:00    41.000 4.403 1.719         3 0.496    48.475      0.405       0.091
1  2026-10-14 11:45:00    40.925 4.433 1.730         3 0.495    48.550      0.409       0.086
2  2026-10-14 12:00:00    40.850 4.463 1.741         3 0.485    48.625      0.413       0.072
3  2026-10-14 12:15:00    40.775 4.493 1.752         3 0.473    48.700      0.417       0.056
4  2026-10-14 12:30:00    40.700 4.523 1.763         3 0.467    48.775      0.421       0.046
5  2026-10-14 12:45:00    40.625 4.553 1.774         3 0.465    48.850      0.425       0.040
6  2026-10-14 13:00:00    40.550 4.583 1.785         3 0.463    48.925      0.429       0.034
7  2026-10-14 13:15:00    40.475 4.613 1.796         3 0.452    49.000      0.433       0.019
8  2026-10-14 13:30:00    40.400 4.643 1.807         3 0.447    49.075      0.437       0.010
9  2026-10-14 13:45:00    40.325 4.673 1.818         3 0.452    49.150      0.441       0.011
10 2026-10-14 14:00:00    40.250 4.703 1.829         3 0.467    49.225      0.445       0.022
11 2026-10-14 14:15:00    40.175 4.733 1.840         3 0.481    49.300      0.449       0.032
12 2026-10-14 14:30:00    40.100 4.763 1.851         3 0.492    49.375      0.453       0.039
13 2026-10-14 14:45:00    40.025 4.793 1.862         3 0.501    49.450      0.457       0.044
14 2026-10-14 15:00:00    39.950 4.823 1.873         3 0.514    49.525      0.461       0.053
15 2026-10-14 15:15:00    39.875 4.853 1.884         3 0.547    49.600      0.466       0.081
16 2026-10-14 15:30:00    39.800 4.883 1.895         3 0.575    49.675      0.470       0.105
17 2026-10-14 15:45:00    39.725 4.913 1.906         3 0.598    49.750      0.474       0.124
18 2026-10-14 16:00:00    39.650 4.943 1.917         3 0.632    49.825      0.478       0.155
19 2026-10-14 16:15:00    39.575 4.973 1.928         3 0.699    49.900      0.482       0.217
20 2026-10-14 16:30:00    39.500 5.003 1.940         3 0.746    49.975      0.486       0.260
21 2026-10-14 16:45:00    39.425 5.033 1.951         3 0.763    50.050      0.490       0.273
22 2026-10-14 17:00:00    39.350 5.064 1.962         3 0.775    50.125      0.494       0.281
23 2026-10-14 17:15:00    39.275 5.094 1.973         3 0.830    50.200      0.498       0.332
24 2026-10-14 17:30:00    39.200 5.124 1.984         3 0.867    50.275      0.502       0.365
25 2026-10-14 17:45:00    39.125 5.154 1.995         3 0.891    50.350      0.506       0.385
26 2026-10-14 18:00:00    39.050 5.184 2.006         3 0.902    50.425      0.510       0.392
27 2026-10-14 18:15:00    38.975 5.214 2.017         3 0.948    50.500      0.514       0.433
28 2026-10-14 18:30:00    38.900 5.244 2.028         3 0.984    50.575      0.518       0.465
29 2026-10-14 18:45:00    38.825 5.274 2.039         3 1.006    50.650      0.522       0.484
30 2026-10-14 19:00:00    38.750 5.304 2.050         3 1.007    50.725      0.526       0.481
31 2026-10-14 19:15:00    38.675 5.334 2.061         3 1.023    50.800      0.531       0.493
32 2026-10-14 19:30:00    38.600 5.364 2.072         3 1.026    50.875      0.535       0.491
33 2026-10-14 19:45:00    38.525 5.394 2.083         3 1.016    50.950      0.539       0.477
34 2026-10-14 20:00:00    38.450 5.424 2.094         3 0.988    51.025      0.543       0.446
35 2026-10-14 20:15:00    38.375 5.454 2.105         3 0.957    51.100      0.547       0.410
36 2026-10-14 20:30:00    38.300 5.484 2.116         3 0.946    51.175      0.551       0.396
37 2026-10-14 20:45:00    38.225 5.514 2.127         3 0.941    51.250      0.555       0.386
38 2026-10-14 21:00:00    38.150 5.544 2.138         3 0.934    51.325      0.559       0.375
39 2026-10-14 21:15:00    38.075 5.574 2.149         3 0.900    51.400      0.563       0.337
40 2026-10-14 21:30:00    38.000 5.604 2.160         3 0.890    51.475      0.567       0.323
41 2026-10-14 21:45:00    37.925 5.634 2.171         3 0.877    51.550      0.571       0.306
42 2026-10-14 22:00:00    37.850 5.664 2.182         3 0.867    51.625      0.575       0.292
43 2026-10-14 22:15:00    37.775 5.694 2.193         3 0.840    51.700      0.579       0.261
44 2026-10-14 22:30:00    37.700 5.724 2.204         3 0.838    51.775      0.583       0.255
45 2026-10-14 22:45:00    37.625 5.754 2.215         3 0.839    51.850      0.587       0.251
46 2026-10-14 23:00:00    37.550 5.784 2.226         3 0.842    51.925      0.591       0.250
47 2026-10-14 23:15:00    37.475 5.814 2.238         3 0.829    52.000      0.595       0.233
48 2026-10-14 23:30:00    37.400 0.000 0.000         0 0.000     0.000      0.000       0.000
49 2026-10-14 23:45:00    37.325 0.000 0.000         0 0.000     0.000      0.000       0.000

2026-10-14 11:42:13 info: Warmtepomp staat uit - warmtepomp wordt niet ingepland
2026-10-14 11:42:13 info: Strategie: minimale kosten
2026-10-14 11:42:13 info: Maximale fout (maximal gap): 0.005000 euro
2026-10-14 11:42:13 info: Welcome to the CBC MILP Solver 
2026-10-14 11:42:13 info: Version: devel 
2026-10-14 11:42:13 info: Build Date: Mar 23 2026
2026-10-14 11:42:13 info: Starting solution of the Linear programming relaxation problem using Dual Simplex
2026-10-14 11:42:13 info: Coin0507I Presolve determined that the problem was infeasible with tolerance of 1e-08
2026-10-14 11:42:13 info: Clp3003W Analysis indicates model infeasible or unbounded
2026-10-14 11:42:13 info: Clp0014I Perturbing problem by 0.001% of 0.68636931 - largest nonzero change 0 ( 0%) - largest zero change 0.00054904126
2026-10-14 11:42:13 info: Clp0001I Primal infeasible - objective value -80.616458
2026-10-14 11:42:13 info: Clp0032I PrimalInfeasible objective -80.61645826 - 5 iterations time 0.002
2026-10-14 11:42:13 info: Rekentijd: 0.01  sec
2026-10-14 11:42:13 waarschuwing: Geen oplossing voor: minimize cost
Afbeeldingslocatie: https://tweakers.net/i/cV_aCfQM5tnDpePj-KJ7d_kCiJ0=/800x/filters:strip_exif()/f/image/G6NqBiEv4rSGFVMkKVYJNZvf.png?f=fotoalbum_large

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


  • -Niels-
  • Registratie: Januari 2007
  • Laatst online: 13:51
hemertje schreef op woensdag 14 oktober 2026 @ 20:30:
vandaag weer alleen een Meteo data scherm
iemand idee waarom de berekening regelmatig uitblijft?

Day Ahead Optimizer version: 2026.9.1

[Afbeelding]


[...]


[Afbeelding]
je base verbruik bevat (behoorlijk) negatieve waarden. Probeer m eens met vastgezette verbruiks gegevens en check als dat wel goed gaat even waarom die baseload calc niet goed gaat

  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 08:39
KC27 schreef op dinsdag 6 oktober 2026 @ 19:57:
[...]

@Torch1969 heb jij (of iemand anders) tijd om deze setup op te nemen in de Wiki?
Done: https://github.com/corneel27/day-ahead/wiki/9.-Voorbeelden-AlphaESS
Zowel de uitleg van @Doopy-X- als die van @TheMystery als reactie daarop

  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-10 10:34
-Niels- schreef op woensdag 14 oktober 2026 @ 20:37:
[...]

je base verbruik bevat (behoorlijk) negatieve waarden. Probeer m eens met vastgezette verbruiks gegevens en check als dat wel goed gaat even waarom die baseload calc niet goed gaat
ah daar zit het, was me nog niet opgevallen, dank

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


  • -Niels-
  • Registratie: Januari 2007
  • Laatst online: 13:51
Hedzie schreef op woensdag 14 oktober 2026 @ 19:14:
[...]

Ha, had min ofmeer hetzelfde idee qua machine.

De programma’s zijn het vermogen. Het juiste programma wordt gekozen met een automation in HA door bijv. Adhv de buitentemp.

Maar uiteindelijk denk ik dat de lijst te lang wordt in DAO om de wp 24u te laten draaien.
net even een kort testje in elkaar geknutseld, dit werkt mooi. O+
Afbeeldingslocatie: https://tweakers.net/i/7-FbkzSosC7ZpYf-ARbyHNW4xQw=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/loymFqqPrU8EwEyTyZnykMs6.png?f=user_large
Ik heb vriend chat de instellingen laten aanvullen met de volgende helpers met een nu nog redelijk random set programma's van allemaal 24u.

nu alleen nog een scriptje knutselen om t meest passende programma te selecteren en elke dag de juiste datums even in te vullen


Afbeeldingslocatie: https://tweakers.net/i/v4R6LXxmbhWTHEm3U5xSBtherGY=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/iPnjyxiIPSn9H5jciOqHjUtH.png?f=user_large
"machines": [
{
"name": "Warmtepomp vandaag",
"programs": [
{
"name": "off",
"power": []
},
{
"name": "verwarmen 1",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
900, 900, 900, 900,
600, 600, 600, 600,
600, 600, 600, 600,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 2",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
450, 450, 450, 450,
900, 900, 900, 900,
550, 550, 550, 550,
550, 550, 550, 550,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 3",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
900, 900, 900, 900,
900, 900, 900, 900,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 4",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
320, 320, 320, 320,
320, 320, 320, 320,
320, 320, 320, 320,
1040, 1040, 1040, 1040,
1040, 1040, 1040, 1040,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
320, 320, 320, 320,
320, 320, 320, 320,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 5",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
640, 640, 640, 640,
640, 640, 640, 640,
640, 640, 640, 640,
1180, 1180, 1180, 1180,
1180, 1180, 1180, 1180,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
640, 640, 640, 640,
640, 640, 640, 640,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 6",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
960, 960, 960, 960,
960, 960, 960, 960,
960, 960, 960, 960,
1320, 1320, 1320, 1320,
1320, 1320, 1320, 1320,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
960, 960, 960, 960,
960, 960, 960, 960,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 7",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
1280, 1280, 1280, 1280,
1280, 1280, 1280, 1280,
1280, 1280, 1280, 1280,
1460, 1460, 1460, 1460,
1460, 1460, 1460, 1460,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1280, 1280, 1280, 1280,
1280, 1280, 1280, 1280,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 8",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
}
],
"entity start window": "input_datetime.dao_wp_vandaag_start_window",
"entity end window": "input_datetime.dao_wp_vandaag_end_window",
"entity selected program": "input_select.dao_wp_vandaag_programma",
"entity calculated start": "input_datetime.dao_wp_vandaag_calculated_start",
"entity calculated end": "input_datetime.dao_wp_vandaag_calculated_end"
},
{
"name": "Warmtepomp morgen",
"programs": [
{
"name": "off",
"power": []
},
{
"name": "verwarmen 1",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
900, 900, 900, 900,
600, 600, 600, 600,
600, 600, 600, 600,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 2",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
450, 450, 450, 450,
900, 900, 900, 900,
550, 550, 550, 550,
550, 550, 550, 550,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
250, 250, 250, 250,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 3",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
900, 900, 900, 900,
900, 900, 900, 900,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
500, 500, 500, 500,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 4",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
320, 320, 320, 320,
320, 320, 320, 320,
320, 320, 320, 320,
1040, 1040, 1040, 1040,
1040, 1040, 1040, 1040,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
720, 720, 720, 720,
320, 320, 320, 320,
320, 320, 320, 320,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 5",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
640, 640, 640, 640,
640, 640, 640, 640,
640, 640, 640, 640,
1180, 1180, 1180, 1180,
1180, 1180, 1180, 1180,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
940, 940, 940, 940,
640, 640, 640, 640,
640, 640, 640, 640,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 6",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
960, 960, 960, 960,
960, 960, 960, 960,
960, 960, 960, 960,
1320, 1320, 1320, 1320,
1320, 1320, 1320, 1320,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
1160, 1160, 1160, 1160,
960, 960, 960, 960,
960, 960, 960, 960,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 7",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
1280, 1280, 1280, 1280,
1280, 1280, 1280, 1280,
1280, 1280, 1280, 1280,
1460, 1460, 1460, 1460,
1460, 1460, 1460, 1460,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1380, 1380, 1380, 1380,
1280, 1280, 1280, 1280,
1280, 1280, 1280, 1280,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
},
{
"name": "verwarmen 8",
"power": [
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
1600, 1600, 1600, 1600,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
]
}
],
"entity start window": "input_datetime.dao_wp_morgen_start_window",
"entity end window": "input_datetime.dao_wp_morgen_end_window",
"entity selected program": "input_select.dao_wp_morgen_programma",
"entity calculated start": "input_datetime.dao_wp_morgen_calculated_start",
"entity calculated end": "input_datetime.dao_wp_morgen_calculated_end"
}

[ Voor 3% gewijzigd door -Niels- op 14-10-2026 21:35 ]


  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
-Niels- schreef op woensdag 14 oktober 2026 @ 21:03:
[...]

net even een kort testje in elkaar geknutseld, dit werkt mooi. O+
[Afbeelding]
Ik heb vriend chat de instellingen laten aanvullen met de volgende helpers met een nu nog redelijk random set programma's van allemaal 24u.

nu alleen nog een scriptje knutselen om t meest passende programma te selecteren en elke dag de juiste datums even in te vullen

[Afbeelding]
 "machines": [
    {
      "name": "Warmtepomp vandaag",
      "programs": [
        {
          "name": "off",
          "power": []
        },
        {
          "name": "verwarmen 1",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            900, 900, 900, 900,
            600, 600, 600, 600,
            600, 600, 600, 600,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 2",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            450, 450, 450, 450,
            900, 900, 900, 900,
            550, 550, 550, 550,
            550, 550, 550, 550,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 3",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            900, 900, 900, 900,
            900, 900, 900, 900,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 4",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            320, 320, 320, 320,
            320, 320, 320, 320,
            320, 320, 320, 320,
            1040, 1040, 1040, 1040,
            1040, 1040, 1040, 1040,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            320, 320, 320, 320,
            320, 320, 320, 320,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 5",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            640, 640, 640, 640,
            640, 640, 640, 640,
            640, 640, 640, 640,
            1180, 1180, 1180, 1180,
            1180, 1180, 1180, 1180,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            640, 640, 640, 640,
            640, 640, 640, 640,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 6",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            960, 960, 960, 960,
            960, 960, 960, 960,
            960, 960, 960, 960,
            1320, 1320, 1320, 1320,
            1320, 1320, 1320, 1320,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            960, 960, 960, 960,
            960, 960, 960, 960,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 7",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            1280, 1280, 1280, 1280,
            1280, 1280, 1280, 1280,
            1280, 1280, 1280, 1280,
            1460, 1460, 1460, 1460,
            1460, 1460, 1460, 1460,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1280, 1280, 1280, 1280,
            1280, 1280, 1280, 1280,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 8",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        }
      ],
      "entity start window": "input_datetime.dao_wp_vandaag_start_window",
      "entity end window": "input_datetime.dao_wp_vandaag_end_window",
      "entity selected program": "input_select.dao_wp_vandaag_programma",
      "entity calculated start": "input_datetime.dao_wp_vandaag_calculated_start",
      "entity calculated end": "input_datetime.dao_wp_vandaag_calculated_end"
    },
    {
      "name": "Warmtepomp morgen",
      "programs": [
        {
          "name": "off",
          "power": []
        },
        {
          "name": "verwarmen 1",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            900, 900, 900, 900,
            600, 600, 600, 600,
            600, 600, 600, 600,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 2",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            450, 450, 450, 450,
            900, 900, 900, 900,
            550, 550, 550, 550,
            550, 550, 550, 550,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            250, 250, 250, 250,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 3",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            900, 900, 900, 900,
            900, 900, 900, 900,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            500, 500, 500, 500,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 4",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            320, 320, 320, 320,
            320, 320, 320, 320,
            320, 320, 320, 320,
            1040, 1040, 1040, 1040,
            1040, 1040, 1040, 1040,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            720, 720, 720, 720,
            320, 320, 320, 320,
            320, 320, 320, 320,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 5",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            640, 640, 640, 640,
            640, 640, 640, 640,
            640, 640, 640, 640,
            1180, 1180, 1180, 1180,
            1180, 1180, 1180, 1180,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            940, 940, 940, 940,
            640, 640, 640, 640,
            640, 640, 640, 640,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 6",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            960, 960, 960, 960,
            960, 960, 960, 960,
            960, 960, 960, 960,
            1320, 1320, 1320, 1320,
            1320, 1320, 1320, 1320,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            1160, 1160, 1160, 1160,
            960, 960, 960, 960,
            960, 960, 960, 960,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 7",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            1280, 1280, 1280, 1280,
            1280, 1280, 1280, 1280,
            1280, 1280, 1280, 1280,
            1460, 1460, 1460, 1460,
            1460, 1460, 1460, 1460,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1380, 1380, 1380, 1380,
            1280, 1280, 1280, 1280,
            1280, 1280, 1280, 1280,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        },
        {
          "name": "verwarmen 8",
          "power": [
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            1600, 1600, 1600, 1600,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0
          ]
        }
      ],
      "entity start window": "input_datetime.dao_wp_morgen_start_window",
      "entity end window": "input_datetime.dao_wp_morgen_end_window",
      "entity selected program": "input_select.dao_wp_morgen_programma",
      "entity calculated start": "input_datetime.dao_wp_morgen_calculated_start",
      "entity calculated end": "input_datetime.dao_wp_morgen_calculated_end"
    }
Niels, zou je de config van je machines tussen quote-tags willen zetten. Dan houden we het scrollen kort.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 08:39
konehead schreef op woensdag 7 oktober 2026 @ 09:55:
[...]

Ik ga hem WIKI ready maken, working on it. Met @Torch1969 afgesproken dat het dashboard netjes gedocumenteerd moet worden. Als je echt niet kan wachten, stuur mij even een DM. Dan stuur ik de ruwe code
Het geweldige dashboard van @konehead staat inmiddels ook op de wiki: https://github.com/corneel27/day-ahead/wiki/10.-Voorbeelden-Planning-kaart

  • konehead
  • Registratie: Januari 2005
  • Laatst online: 13:24
KC27 schreef op woensdag 14 oktober 2026 @ 16:57:
[...]

Dank voor het melden. Ik ga ernaar kijken.
@KC27 zou je ook naar deze kunnen kijken? https://github.com/corneel27/day-ahead/issues/895. Ik heb mijn panelen en batterij achter 1 inverter hangen en bij mij zorgt de panelen in entities_solar_production_dc als negatieve waarden in de baseload..

  • KC27
  • Registratie: December 2009
  • Niet online

KC27

Topicstarter
konehead schreef op woensdag 14 oktober 2026 @ 21:49:
[...]

@KC27 zou je ook naar deze kunnen kijken? https://github.com/corneel27/day-ahead/issues/895. Ik heb mijn panelen en batterij achter 1 inverter hangen en bij mij zorgt de panelen in entities_solar_production_dc als negatieve waarden in de baseload..
Ga ik doen.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-10 10:34
hemertje schreef op woensdag 14 oktober 2026 @ 20:47:
[...]


ah daar zit het, was me nog niet opgevallen, dank
@Niels- bedankt, je had gelijk: het zat in de baseload. Ik heb het uitgezocht (met hulp van Claude voor de analyse van de data en code).

Wat er mis ging
DAO rekent je basisverbruik uit door van de totale netafname het verbruik van o.a. warmtepomp en bijverwarming af te trekken, uit meterstanden per uur. Op 8 september viel de bron van die twee meters 24 uur weg. Mijn eigen template-sensor toonde in die tijd 0 in plaats van “niet beschikbaar”.
Toen de bron op 9 september 22:00 terugkwam met de echte totaalstand (5511 kWh en 1136 kWh), zag DAO dat als “in één uur 6648 kWh verbruikt”. Dat trekt het van je basisverbruik af.
Gemiddeld over de 8 woensdagen in de periode van 56 dagen werd dat −830 kWh om 22:00 op woensdag. Met negatief verbruik kan de optimalisatie niet rekenen (“geen oplossing”), en dat gebeurde vanaf dinsdagmiddag (als woensdag in de horizon komt) tot woensdagavond, vijf weken achter elkaar.

Wat ik heb aangepast
Baseload-periode van 56 naar 28 dagen, zodat die ene uurwaarde uit het gemiddelde valt.
Mijn template-sensoren: ze zijn nu “niet beschikbaar” als de bron wegvalt, in plaats van 0.
Een melding op mijn telefoon als er 45 minuten geen plan is.

Een mogelijke verbetering voor DAO (geen verwijt, mijn invoer was fout): als de baseload een onmogelijke waarde bevat (bijvoorbeeld meer dan je aansluiting per uur kan leveren, of sterk negatief), zou een waarschuwing in het log helpen met het uur en de weekdag erbij. Nu staat er alleen “Presolve determined that the problem was infeasible”, en dat kostte mij weken om te herleiden. Eventueel kan zo’n uur ook genegeerd worden in het gemiddelde.

Afbeeldingslocatie: https://tweakers.net/i/l9eZ3GYLWDFDU2chbVyEcFfTqRE=/800x/filters:strip_exif()/f/image/L6me5wrLeyX2uSbLcnfdIH6Q.png?f=fotoalbum_large

[ Voor 8% gewijzigd door hemertje op 14-10-2026 22:20 ]

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


  • Dogooder
  • Registratie: April 2004
  • Laatst online: 10:40

Dogooder

dus...

konehead schreef op woensdag 14 oktober 2026 @ 21:49:
[...]

@KC27 zou je ook naar deze kunnen kijken? https://github.com/corneel27/day-ahead/issues/895. Ik heb mijn panelen en batterij achter 1 inverter hangen en bij mij zorgt de panelen in entities_solar_production_dc als negatieve waarden in de baseload..
De batterij in en uit moeten ac waardes zijn en zijn eigenlijk systeem in en uit waardes

Zie ook de discussie eerder hier
Pagina: 1 ... 51 ... 53 Laatste