node-red-contrib-power-saver 3.6.2 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/.eslintrc.js +15 -0
  2. package/docs/.vuepress/components/AdsenseAdd.vue +40 -0
  3. package/docs/.vuepress/components/DonateButtons.vue +26 -3
  4. package/docs/.vuepress/components/VippsPlakat.vue +20 -0
  5. package/docs/.vuepress/config.js +17 -10
  6. package/docs/.vuepress/public/ads.txt +1 -0
  7. package/docs/README.md +6 -4
  8. package/docs/changelog/README.md +61 -1
  9. package/docs/contribute/README.md +12 -3
  10. package/docs/examples/README.md +6 -0
  11. package/docs/examples/example-grid-tariff-capacity-flow.json +23 -7
  12. package/docs/examples/example-grid-tariff-capacity-part.md +657 -22
  13. package/docs/faq/README.md +5 -1
  14. package/docs/faq/best-save-viewer.md +9 -1
  15. package/docs/guide/README.md +36 -5
  16. package/docs/images/best-save-config.png +0 -0
  17. package/docs/images/combine-two-lowest-price.png +0 -0
  18. package/docs/images/fixed-schedule-config.png +0 -0
  19. package/docs/images/global-context-window.png +0 -0
  20. package/docs/images/lowest-price-config.png +0 -0
  21. package/docs/images/node-ps-schedule-merger.png +0 -0
  22. package/docs/images/node-ps-strategy-fixed-schedule.png +0 -0
  23. package/docs/images/ps-strategy-fixed-schedule-example.png +0 -0
  24. package/docs/images/schedule-merger-config.png +0 -0
  25. package/docs/images/schedule-merger-example-1.png +0 -0
  26. package/docs/images/vipps-plakat.png +0 -0
  27. package/docs/images/vipps-qr.png +0 -0
  28. package/docs/images/vipps-smiling-rgb-orange-pos.png +0 -0
  29. package/docs/nodes/README.md +24 -4
  30. package/docs/nodes/dynamic-commands.md +91 -0
  31. package/docs/nodes/dynamic-config.md +84 -0
  32. package/docs/nodes/old-power-saver-doc.md +4 -0
  33. package/docs/nodes/ps-elvia-add-tariff.md +16 -0
  34. package/docs/nodes/ps-general-add-tariff.md +22 -0
  35. package/docs/nodes/ps-receive-price.md +14 -1
  36. package/docs/nodes/ps-schedule-merger.md +231 -0
  37. package/docs/nodes/ps-strategy-best-save.md +65 -109
  38. package/docs/nodes/ps-strategy-fixed-schedule.md +113 -0
  39. package/docs/nodes/ps-strategy-heat-capacitor.md +14 -1
  40. package/docs/nodes/ps-strategy-lowest-price.md +61 -110
  41. package/docs/nodes/strategy-input.md +4 -0
  42. package/package.json +5 -2
  43. package/src/elvia/elvia-add-tariff.html +1 -2
  44. package/src/elvia/elvia-add-tariff.js +0 -1
  45. package/src/elvia/elvia-api.js +6 -0
  46. package/src/elvia/elvia-tariff.html +1 -1
  47. package/src/general-add-tariff.html +14 -8
  48. package/src/general-add-tariff.js +0 -1
  49. package/src/handle-input.js +97 -106
  50. package/src/handle-output.js +117 -0
  51. package/src/receive-price-functions.js +3 -3
  52. package/src/schedule-merger-functions.js +98 -0
  53. package/src/schedule-merger.html +135 -0
  54. package/src/schedule-merger.js +112 -0
  55. package/src/strategy-best-save.html +38 -1
  56. package/src/strategy-best-save.js +17 -63
  57. package/src/strategy-fixed-schedule.html +339 -0
  58. package/src/strategy-fixed-schedule.js +84 -0
  59. package/src/strategy-functions.js +35 -0
  60. package/src/strategy-lowest-price.html +76 -38
  61. package/src/strategy-lowest-price.js +16 -35
  62. package/src/utils.js +75 -2
  63. package/test/commands-input-best-save.test.js +142 -0
  64. package/test/commands-input-lowest-price.test.js +149 -0
  65. package/test/commands-input-schedule-merger.test.js +128 -0
  66. package/test/data/best-save-overlap-result.json +5 -1
  67. package/test/data/best-save-result.json +4 -0
  68. package/test/data/commands-result-best-save.json +383 -0
  69. package/test/data/commands-result-lowest-price.json +340 -0
  70. package/test/data/fixed-schedule-result.json +353 -0
  71. package/test/data/lowest-price-result-cont-max-fail.json +5 -1
  72. package/test/data/lowest-price-result-cont-max.json +3 -1
  73. package/test/data/lowest-price-result-cont.json +8 -1
  74. package/test/data/lowest-price-result-missing-end.json +8 -3
  75. package/test/data/lowest-price-result-neg-cont.json +27 -0
  76. package/test/data/lowest-price-result-neg-split.json +23 -0
  77. package/test/data/lowest-price-result-split-allday.json +3 -1
  78. package/test/data/lowest-price-result-split-allday10.json +1 -0
  79. package/test/data/lowest-price-result-split-max.json +3 -1
  80. package/test/data/lowest-price-result-split.json +3 -1
  81. package/test/data/merge-schedule-data.js +238 -0
  82. package/test/data/negative-prices.json +197 -0
  83. package/test/data/nordpool-event-prices.json +96 -480
  84. package/test/data/nordpool-zero-prices.json +90 -0
  85. package/test/data/reconfigResult.js +1 -0
  86. package/test/data/result.js +1 -0
  87. package/test/data/tibber-result-end-0-24h.json +12 -2
  88. package/test/data/tibber-result-end-0.json +12 -2
  89. package/test/data/tibber-result.json +1 -0
  90. package/test/receive-price.test.js +22 -0
  91. package/test/schedule-merger-functions.test.js +101 -0
  92. package/test/schedule-merger-test-utils.js +27 -0
  93. package/test/schedule-merger.test.js +130 -0
  94. package/test/send-config-input.test.js +46 -2
  95. package/test/strategy-best-save-test-utils.js +1 -1
  96. package/test/strategy-best-save.test.js +91 -0
  97. package/test/strategy-fixed-schedule.test.js +117 -0
  98. package/test/strategy-heat-capacitor.test.js +1 -1
  99. package/test/strategy-lowest-price-functions.test.js +1 -1
  100. package/test/strategy-lowest-price-test-utils.js +31 -0
  101. package/test/strategy-lowest-price.test.js +55 -45
  102. package/test/test-utils.js +43 -36
  103. package/test/utils.test.js +13 -0
  104. package/docs/images/node-power-saver.png +0 -0
  105. package/docs/nodes/power-saver.md +0 -23
  106. package/src/power-saver.html +0 -116
  107. package/src/power-saver.js +0 -260
  108. package/test/commands-input.test.js +0 -47
  109. package/test/power-saver.test.js +0 -189
@@ -0,0 +1,353 @@
1
+ {
2
+ "schedule": [
3
+ {
4
+ "time": "2021-10-11T00:00:00.000+02:00",
5
+ "value": false,
6
+ "countHours": 2
7
+ },
8
+ {
9
+ "time": "2021-10-11T02:00:00.000+02:00",
10
+ "value": true,
11
+ "countHours": 4
12
+ },
13
+ {
14
+ "time": "2021-10-11T06:00:00.000+02:00",
15
+ "value": false,
16
+ "countHours": 20
17
+ },
18
+ {
19
+ "time": "2021-10-12T02:00:00.000+02:00",
20
+ "value": true,
21
+ "countHours": 4
22
+ },
23
+ {
24
+ "time": "2021-10-12T06:00:00.000+02:00",
25
+ "value": false,
26
+ "countHours": 18
27
+ }
28
+ ],
29
+ "hours": [
30
+ {
31
+ "start": "2021-10-11T00:00:00.000+02:00",
32
+ "price": 0.2494,
33
+ "onOff": false,
34
+ "saving": null
35
+ },
36
+ {
37
+ "start": "2021-10-11T01:00:00.000+02:00",
38
+ "price": 0.2209,
39
+ "onOff": false,
40
+ "saving": null
41
+ },
42
+ {
43
+ "start": "2021-10-11T02:00:00.000+02:00",
44
+ "price": 0.2099,
45
+ "onOff": true,
46
+ "saving": null
47
+ },
48
+ {
49
+ "start": "2021-10-11T03:00:00.000+02:00",
50
+ "price": 0.219,
51
+ "onOff": true,
52
+ "saving": null
53
+ },
54
+ {
55
+ "start": "2021-10-11T04:00:00.000+02:00",
56
+ "price": 0.2614,
57
+ "onOff": true,
58
+ "saving": null
59
+ },
60
+ {
61
+ "start": "2021-10-11T05:00:00.000+02:00",
62
+ "price": 0.4426,
63
+ "onOff": true,
64
+ "saving": null
65
+ },
66
+ {
67
+ "start": "2021-10-11T06:00:00.000+02:00",
68
+ "price": 0.5433,
69
+ "onOff": false,
70
+ "saving": null
71
+ },
72
+ {
73
+ "start": "2021-10-11T07:00:00.000+02:00",
74
+ "price": 0.5667,
75
+ "onOff": false,
76
+ "saving": null
77
+ },
78
+ {
79
+ "start": "2021-10-11T08:00:00.000+02:00",
80
+ "price": 0.5847,
81
+ "onOff": false,
82
+ "saving": null
83
+ },
84
+ {
85
+ "start": "2021-10-11T09:00:00.000+02:00",
86
+ "price": 0.5762,
87
+ "onOff": false,
88
+ "saving": null
89
+ },
90
+ {
91
+ "start": "2021-10-11T10:00:00.000+02:00",
92
+ "price": 0.5391,
93
+ "onOff": false,
94
+ "saving": null
95
+ },
96
+ {
97
+ "start": "2021-10-11T11:00:00.000+02:00",
98
+ "price": 0.5124,
99
+ "onOff": false,
100
+ "saving": null
101
+ },
102
+ {
103
+ "start": "2021-10-11T12:00:00.000+02:00",
104
+ "price": 0.504,
105
+ "onOff": false,
106
+ "saving": null
107
+ },
108
+ {
109
+ "start": "2021-10-11T13:00:00.000+02:00",
110
+ "price": 0.5057,
111
+ "onOff": false,
112
+ "saving": null
113
+ },
114
+ {
115
+ "start": "2021-10-11T14:00:00.000+02:00",
116
+ "price": 0.5066,
117
+ "onOff": false,
118
+ "saving": null
119
+ },
120
+ {
121
+ "start": "2021-10-11T15:00:00.000+02:00",
122
+ "price": 0.5136,
123
+ "onOff": false,
124
+ "saving": null
125
+ },
126
+ {
127
+ "start": "2021-10-11T16:00:00.000+02:00",
128
+ "price": 0.5143,
129
+ "onOff": false,
130
+ "saving": null
131
+ },
132
+ {
133
+ "start": "2021-10-11T17:00:00.000+02:00",
134
+ "price": 0.5306,
135
+ "onOff": false,
136
+ "saving": null
137
+ },
138
+ {
139
+ "start": "2021-10-11T18:00:00.000+02:00",
140
+ "price": 0.5534,
141
+ "onOff": false,
142
+ "saving": null
143
+ },
144
+ {
145
+ "start": "2021-10-11T19:00:00.000+02:00",
146
+ "price": 0.5511,
147
+ "onOff": false,
148
+ "saving": null
149
+ },
150
+ {
151
+ "start": "2021-10-11T20:00:00.000+02:00",
152
+ "price": 0.5491,
153
+ "onOff": false,
154
+ "saving": null
155
+ },
156
+ {
157
+ "start": "2021-10-11T21:00:00.000+02:00",
158
+ "price": 0.5485,
159
+ "onOff": false,
160
+ "saving": null
161
+ },
162
+ {
163
+ "start": "2021-10-11T22:00:00.000+02:00",
164
+ "price": 0.5481,
165
+ "onOff": false,
166
+ "saving": null
167
+ },
168
+ {
169
+ "start": "2021-10-11T23:00:00.000+02:00",
170
+ "price": 0.5218,
171
+ "onOff": false,
172
+ "saving": null
173
+ },
174
+ {
175
+ "start": "2021-10-12T00:00:00.000+02:00",
176
+ "price": 0.4533,
177
+ "onOff": false,
178
+ "saving": null
179
+ },
180
+ {
181
+ "start": "2021-10-12T01:00:00.000+02:00",
182
+ "price": 0.4196,
183
+ "onOff": false,
184
+ "saving": null
185
+ },
186
+ {
187
+ "start": "2021-10-12T02:00:00.000+02:00",
188
+ "price": 0.4037,
189
+ "onOff": true,
190
+ "saving": null
191
+ },
192
+ {
193
+ "start": "2021-10-12T03:00:00.000+02:00",
194
+ "price": 0.3829,
195
+ "onOff": true,
196
+ "saving": null
197
+ },
198
+ {
199
+ "start": "2021-10-12T04:00:00.000+02:00",
200
+ "price": 0.4555,
201
+ "onOff": true,
202
+ "saving": null
203
+ },
204
+ {
205
+ "start": "2021-10-12T05:00:00.000+02:00",
206
+ "price": 0.4721,
207
+ "onOff": true,
208
+ "saving": null
209
+ },
210
+ {
211
+ "start": "2021-10-12T06:00:00.000+02:00",
212
+ "price": 0.4903,
213
+ "onOff": false,
214
+ "saving": null
215
+ },
216
+ {
217
+ "start": "2021-10-12T07:00:00.000+02:00",
218
+ "price": 0.5028,
219
+ "onOff": false,
220
+ "saving": null
221
+ },
222
+ {
223
+ "start": "2021-10-12T08:00:00.000+02:00",
224
+ "price": 0.5163,
225
+ "onOff": false,
226
+ "saving": null
227
+ },
228
+ {
229
+ "start": "2021-10-12T09:00:00.000+02:00",
230
+ "price": 0.5264,
231
+ "onOff": false,
232
+ "saving": null
233
+ },
234
+ {
235
+ "start": "2021-10-12T10:00:00.000+02:00",
236
+ "price": 0.5346,
237
+ "onOff": false,
238
+ "saving": null
239
+ },
240
+ {
241
+ "start": "2021-10-12T11:00:00.000+02:00",
242
+ "price": 0.5224,
243
+ "onOff": false,
244
+ "saving": null
245
+ },
246
+ {
247
+ "start": "2021-10-12T12:00:00.000+02:00",
248
+ "price": 0.5071,
249
+ "onOff": false,
250
+ "saving": null
251
+ },
252
+ {
253
+ "start": "2021-10-12T13:00:00.000+02:00",
254
+ "price": 0.5045,
255
+ "onOff": false,
256
+ "saving": null
257
+ },
258
+ {
259
+ "start": "2021-10-12T14:00:00.000+02:00",
260
+ "price": 0.5024,
261
+ "onOff": false,
262
+ "saving": null
263
+ },
264
+ {
265
+ "start": "2021-10-12T15:00:00.000+02:00",
266
+ "price": 0.5038,
267
+ "onOff": false,
268
+ "saving": null
269
+ },
270
+ {
271
+ "start": "2021-10-12T16:00:00.000+02:00",
272
+ "price": 0.5118,
273
+ "onOff": false,
274
+ "saving": null
275
+ },
276
+ {
277
+ "start": "2021-10-12T17:00:00.000+02:00",
278
+ "price": 0.5111,
279
+ "onOff": false,
280
+ "saving": null
281
+ },
282
+ {
283
+ "start": "2021-10-12T18:00:00.000+02:00",
284
+ "price": 0.5108,
285
+ "onOff": false,
286
+ "saving": null
287
+ },
288
+ {
289
+ "start": "2021-10-12T19:00:00.000+02:00",
290
+ "price": 0.5055,
291
+ "onOff": false,
292
+ "saving": null
293
+ },
294
+ {
295
+ "start": "2021-10-12T20:00:00.000+02:00",
296
+ "price": 0.5042,
297
+ "onOff": false,
298
+ "saving": null
299
+ },
300
+ {
301
+ "start": "2021-10-12T21:00:00.000+02:00",
302
+ "price": 0.5259,
303
+ "onOff": false,
304
+ "saving": null
305
+ },
306
+ {
307
+ "start": "2021-10-12T22:00:00.000+02:00",
308
+ "price": 0.5282,
309
+ "onOff": false,
310
+ "saving": null
311
+ },
312
+ {
313
+ "start": "2021-10-12T23:00:00.000+02:00",
314
+ "price": 0.5252,
315
+ "onOff": false,
316
+ "saving": null
317
+ }
318
+ ],
319
+ "source": "Tibber",
320
+ "config": {
321
+ "periods": [
322
+ {
323
+ "start": "02",
324
+ "value": true
325
+ },
326
+ {
327
+ "start": "06",
328
+ "value": false
329
+ }
330
+ ],
331
+ "days": {
332
+ "Mon": true,
333
+ "Tue": true,
334
+ "Wed": true,
335
+ "Thu": true,
336
+ "Fri": true,
337
+ "Sat": true,
338
+ "Sun": true
339
+ },
340
+ "contextStorage": "default",
341
+ "outputIfNoSchedule": false,
342
+ "outputValueForOn": true,
343
+ "outputValueForOff": false,
344
+ "outputValueForOntype": "bool",
345
+ "outputValueForOfftype": "bool",
346
+ "override": "auto",
347
+ "hasChanged": false
348
+ },
349
+ "time": "2022-11-12T19:18:14.084+01:00",
350
+ "version": "4.0.0",
351
+ "strategyNodeId": "n1",
352
+ "current": false
353
+ }
@@ -1,6 +1,10 @@
1
1
  {
2
- "schedule": [{ "time": "2021-10-11T00:00:00.000+02:00", "value": false, "countHours": 48 }],
2
+ "schedule": [
3
+ { "time": "2021-10-11T00:00:00.000+02:00", "value": false, "countHours": 48 },
4
+ { "time": "2021-10-13T00:00:00.000+02:00", "value": true, "countHours": null }
5
+ ],
3
6
  "config": {
7
+ "hasChanged": false,
4
8
  "contextStorage": "default",
5
9
  "doNotSplit": true,
6
10
  "fromTime": "10",
@@ -4,9 +4,11 @@
4
4
  { "time": "2021-10-11T11:00:00.000+02:00", "value": true, "countHours": 4 },
5
5
  { "time": "2021-10-11T15:00:00.000+02:00", "value": false, "countHours": 21 },
6
6
  { "time": "2021-10-12T12:00:00.000+02:00", "value": true, "countHours": 4 },
7
- { "time": "2021-10-12T16:00:00.000+02:00", "value": false, "countHours": 8 }
7
+ { "time": "2021-10-12T16:00:00.000+02:00", "value": false, "countHours": 8 },
8
+ { "time": "2021-10-13T00:00:00.000+02:00", "value": true, "countHours": null }
8
9
  ],
9
10
  "config": {
11
+ "hasChanged": false,
10
12
  "contextStorage": "default",
11
13
  "doNotSplit": true,
12
14
  "fromTime": "10",
@@ -4,9 +4,11 @@
4
4
  { "time": "2021-10-11T11:00:00.000+02:00", "value": true, "countHours": 4 },
5
5
  { "time": "2021-10-11T15:00:00.000+02:00", "value": false, "countHours": 21 },
6
6
  { "time": "2021-10-12T12:00:00.000+02:00", "value": true, "countHours": 4 },
7
- { "time": "2021-10-12T16:00:00.000+02:00", "value": false, "countHours": 8 }
7
+ { "time": "2021-10-12T16:00:00.000+02:00", "value": false, "countHours": 8 },
8
+ { "time": "2021-10-13T00:00:00.000+02:00", "value": true, "countHours": null }
8
9
  ],
9
10
  "config": {
11
+ "hasChanged": false,
10
12
  "contextStorage": "default",
11
13
  "doNotSplit": true,
12
14
  "fromTime": "10",
@@ -14,6 +16,11 @@
14
16
  "maxPrice": null,
15
17
  "outputIfNoSchedule": true,
16
18
  "outputOutsidePeriod": false,
19
+ "outputValueForOff": false,
20
+ "outputValueForOfftype": "bool",
21
+ "outputValueForOn": true,
22
+ "outputValueForOntype": "bool",
23
+ "override": "auto",
17
24
  "sendCurrentValueWhenRescheduling": true,
18
25
  "toTime": "20"
19
26
  }
@@ -309,6 +309,7 @@
309
309
  ],
310
310
  "source": "Nordpool",
311
311
  "config": {
312
+ "hasChanged": false,
312
313
  "contextStorage": "default",
313
314
  "fromTime": "22",
314
315
  "toTime": "08",
@@ -317,9 +318,13 @@
317
318
  "doNotSplit": true,
318
319
  "sendCurrentValueWhenRescheduling": true,
319
320
  "outputIfNoSchedule": false,
320
- "outputOutsidePeriod": false
321
- },
322
- "sentOnCommand": false
321
+ "outputValueForOff": false,
322
+ "outputValueForOfftype": "bool",
323
+ "outputValueForOn": true,
324
+ "outputValueForOntype": "bool",
325
+ "outputOutsidePeriod": false,
326
+ "override": "auto"
327
+ }
323
328
  },
324
329
  "_msgid": "892aabf20811e69f"
325
330
  }
@@ -0,0 +1,27 @@
1
+ {
2
+ "schedule": [
3
+ { "time": "2021-10-11T00:00:00.000+02:00", "value": false, "countHours": 1 },
4
+ { "time": "2021-10-11T01:00:00.000+02:00", "value": true, "countHours": 5 },
5
+ { "time": "2021-10-11T06:00:00.000+02:00", "value": false, "countHours": 18 },
6
+ { "time": "2021-10-12T00:00:00.000+02:00", "value": true, "countHours": 5 },
7
+ { "time": "2021-10-12T05:00:00.000+02:00", "value": false, "countHours": 19 },
8
+ { "time": "2021-10-13T00:00:00.000+02:00", "value": true, "countHours": null }
9
+ ],
10
+ "config": {
11
+ "hasChanged": false,
12
+ "contextStorage": "default",
13
+ "doNotSplit": true,
14
+ "fromTime": "00",
15
+ "hoursOn": 5,
16
+ "maxPrice": null,
17
+ "outputIfNoSchedule": true,
18
+ "outputOutsidePeriod": false,
19
+ "outputValueForOff": false,
20
+ "outputValueForOfftype": "bool",
21
+ "outputValueForOn": true,
22
+ "outputValueForOntype": "bool",
23
+ "override": "auto",
24
+ "sendCurrentValueWhenRescheduling": true,
25
+ "toTime": "00"
26
+ }
27
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "schedule": [
3
+ { "time": "2021-10-11T00:00:00.000+02:00", "value": true, "countHours": 3 },
4
+ { "time": "2021-10-11T03:00:00.000+02:00", "value": false, "countHours": 1 },
5
+ { "time": "2021-10-11T04:00:00.000+02:00", "value": true, "countHours": 2 },
6
+ { "time": "2021-10-11T06:00:00.000+02:00", "value": false, "countHours": 18 },
7
+ { "time": "2021-10-12T00:00:00.000+02:00", "value": true, "countHours": 5 },
8
+ { "time": "2021-10-12T05:00:00.000+02:00", "value": false, "countHours": 19 },
9
+ { "time": "2021-10-13T00:00:00.000+02:00", "value": true, "countHours": null }
10
+ ],
11
+ "config": {
12
+ "hasChanged": false,
13
+ "contextStorage": "default",
14
+ "doNotSplit": false,
15
+ "fromTime": "10",
16
+ "hoursOn": 6,
17
+ "maxPrice": null,
18
+ "outputIfNoSchedule": true,
19
+ "outputOutsidePeriod": false,
20
+ "sendCurrentValueWhenRescheduling": true,
21
+ "toTime": "20"
22
+ }
23
+ }
@@ -7,9 +7,11 @@
7
7
  { "time": "2021-10-12T00:00:00.000+02:00", "value": true, "countHours": 7 },
8
8
  { "time": "2021-10-12T07:00:00.000+02:00", "value": false, "countHours": 7 },
9
9
  { "time": "2021-10-12T14:00:00.000+02:00", "value": true, "countHours": 1 },
10
- { "time": "2021-10-12T15:00:00.000+02:00", "value": false, "countHours": 9 }
10
+ { "time": "2021-10-12T15:00:00.000+02:00", "value": false, "countHours": 9 },
11
+ { "time": "2021-10-13T00:00:00.000+02:00", "value": true, "countHours": null }
11
12
  ],
12
13
  "config": {
14
+ "hasChanged": false,
13
15
  "contextStorage": "default",
14
16
  "doNotSplit": false,
15
17
  "fromTime": "00",
@@ -9,6 +9,7 @@
9
9
  { "time": "2021-10-12T10:00:00.000+02:00", "value": true, "countHours": 14 }
10
10
  ],
11
11
  "config": {
12
+ "hasChanged": false,
12
13
  "contextStorage": "default",
13
14
  "doNotSplit": false,
14
15
  "fromTime": "10",
@@ -6,9 +6,11 @@
6
6
  { "time": "2021-10-12T12:00:00.000+02:00", "value": true, "countHours": 4 },
7
7
  { "time": "2021-10-12T16:00:00.000+02:00", "value": false, "countHours": 3 },
8
8
  { "time": "2021-10-12T19:00:00.000+02:00", "value": true, "countHours": 1 },
9
- { "time": "2021-10-12T20:00:00.000+02:00", "value": false, "countHours": 4 }
9
+ { "time": "2021-10-12T20:00:00.000+02:00", "value": false, "countHours": 4 },
10
+ { "time": "2021-10-13T00:00:00.000+02:00", "value": true, "countHours": null }
10
11
  ],
11
12
  "config": {
13
+ "hasChanged": false,
12
14
  "contextStorage": "default",
13
15
  "doNotSplit": false,
14
16
  "fromTime": "10",
@@ -6,9 +6,11 @@
6
6
  { "time": "2021-10-12T12:00:00.000+02:00", "value": true, "countHours": 4 },
7
7
  { "time": "2021-10-12T16:00:00.000+02:00", "value": false, "countHours": 2 },
8
8
  { "time": "2021-10-12T18:00:00.000+02:00", "value": true, "countHours": 2 },
9
- { "time": "2021-10-12T20:00:00.000+02:00", "value": false, "countHours": 4 }
9
+ { "time": "2021-10-12T20:00:00.000+02:00", "value": false, "countHours": 4 },
10
+ { "time": "2021-10-13T00:00:00.000+02:00", "value": true, "countHours": null }
10
11
  ],
11
12
  "config": {
13
+ "hasChanged": false,
12
14
  "contextStorage": "default",
13
15
  "doNotSplit": false,
14
16
  "fromTime": "10",