node-red-contrib-power-saver 1.0.9 → 2.0.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.
package/utils.js CHANGED
@@ -1,3 +1,5 @@
1
+ const { DateTime } = require("luxon");
2
+
1
3
  /**
2
4
  * Get today and tomorrow data out of the input message.
3
5
  * Can accept 3 types of messages: Tibber, Nordpool or plain payload with data already converted.
@@ -19,6 +21,12 @@ function convertMsg(msg) {
19
21
  value: v.value,
20
22
  start: v.start,
21
23
  }));
24
+ } else if (msg.data?.attributes?.raw_today) {
25
+ source = "Nordpool";
26
+ today = msg.data.attributes.raw_today.map((v) => ({
27
+ value: v.value,
28
+ start: v.start,
29
+ }));
22
30
  } else {
23
31
  source = "Other";
24
32
  today = msg.payload?.today || [];
@@ -81,10 +89,10 @@ function getDiffToNextOn(values, onOff, nextOn = null) {
81
89
  const res = values.map((p, i, a) => {
82
90
  for (let n = i + 1; n < a.length; n++) {
83
91
  if (onOff[n]) {
84
- return values[i] - values[n];
92
+ return Math.round((values[i] - values[n]) * 10000) / 10000;
85
93
  }
86
94
  }
87
- return p - nextOnValue;
95
+ return Math.round((p - nextOnValue) * 10000) / 10000;
88
96
  });
89
97
  return res;
90
98
  }
@@ -198,6 +206,19 @@ function fillArray(value, count) {
198
206
  return res;
199
207
  }
200
208
 
209
+ function extractPlanForDate(plan, day) {
210
+ const part = {};
211
+ part.hours = plan.hours.filter((h) => isSameDate(day, h.start));
212
+ part.schedule = plan.schedule.filter((s) => isSameDate(day, s.time));
213
+ return part;
214
+ }
215
+
216
+ function isSameDate(date1, date2) {
217
+ return (
218
+ DateTime.fromISO(date1).toISODate() === DateTime.fromISO(date2).toISODate()
219
+ );
220
+ }
221
+
201
222
  module.exports = {
202
223
  sortedIndex,
203
224
  getDiffToNextOn,
@@ -208,4 +229,6 @@ module.exports = {
208
229
  makeSchedule,
209
230
  fillArray,
210
231
  convertMsg,
232
+ extractPlanForDate,
233
+ isSameDate,
211
234
  };
@@ -1,363 +0,0 @@
1
- {
2
- "payload": {
3
- "schedule": [
4
- {
5
- "time": "2021-10-11T00:00:00.000+02:00",
6
- "value": false
7
- },
8
- {
9
- "time": "2021-10-11T02:00:00.000+02:00",
10
- "value": true
11
- },
12
- {
13
- "time": "2021-10-11T07:00:00.000+02:00",
14
- "value": false
15
- },
16
- {
17
- "time": "2021-10-11T11:00:00.000+02:00",
18
- "value": true
19
- },
20
- {
21
- "time": "2021-10-11T18:00:00.000+02:00",
22
- "value": false
23
- },
24
- {
25
- "time": "2021-10-11T19:00:00.000+02:00",
26
- "value": true
27
- },
28
- {
29
- "time": "2021-10-11T20:00:00.000+02:00",
30
- "value": false
31
- },
32
- {
33
- "time": "2021-10-12T00:00:00.000+02:00",
34
- "value": true
35
- },
36
- {
37
- "time": "2021-10-12T02:00:00.000+02:00",
38
- "value": false
39
- },
40
- {
41
- "time": "2021-10-12T03:00:00.000+02:00",
42
- "value": true
43
- },
44
- {
45
- "time": "2021-10-12T08:00:00.000+02:00",
46
- "value": false
47
- },
48
- {
49
- "time": "2021-10-12T12:00:00.000+02:00",
50
- "value": true
51
- },
52
- {
53
- "time": "2021-10-12T16:00:00.000+02:00",
54
- "value": false
55
- },
56
- {
57
- "time": "2021-10-12T20:00:00.000+02:00",
58
- "value": true
59
- },
60
- {
61
- "time": "2021-10-12T22:00:00.000+02:00",
62
- "value": false
63
- },
64
- {
65
- "time": "2021-10-12T23:00:00.000+02:00",
66
- "value": true
67
- }
68
- ],
69
- "hours": [
70
- {
71
- "price": 0.2494,
72
- "onOff": false,
73
- "start": "2021-10-11T00:00:00.000+02:00",
74
- "saving": 0.03950000000000001
75
- },
76
- {
77
- "price": 0.2209,
78
- "onOff": false,
79
- "start": "2021-10-11T01:00:00.000+02:00",
80
- "saving": 0.01100000000000001
81
- },
82
- {
83
- "price": 0.2099,
84
- "onOff": true,
85
- "start": "2021-10-11T02:00:00.000+02:00",
86
- "saving": null
87
- },
88
- {
89
- "price": 0.219,
90
- "onOff": true,
91
- "start": "2021-10-11T03:00:00.000+02:00",
92
- "saving": null
93
- },
94
- {
95
- "price": 0.2614,
96
- "onOff": true,
97
- "start": "2021-10-11T04:00:00.000+02:00",
98
- "saving": null
99
- },
100
- {
101
- "price": 0.4426,
102
- "onOff": true,
103
- "start": "2021-10-11T05:00:00.000+02:00",
104
- "saving": null
105
- },
106
- {
107
- "price": 0.5433,
108
- "onOff": true,
109
- "start": "2021-10-11T06:00:00.000+02:00",
110
- "saving": null
111
- },
112
- {
113
- "price": 0.5667,
114
- "onOff": false,
115
- "start": "2021-10-11T07:00:00.000+02:00",
116
- "saving": 0.054300000000000015
117
- },
118
- {
119
- "price": 0.5847,
120
- "onOff": false,
121
- "start": "2021-10-11T08:00:00.000+02:00",
122
- "saving": 0.07230000000000003
123
- },
124
- {
125
- "price": 0.5762,
126
- "onOff": false,
127
- "start": "2021-10-11T09:00:00.000+02:00",
128
- "saving": 0.06380000000000008
129
- },
130
- {
131
- "price": 0.5391,
132
- "onOff": false,
133
- "start": "2021-10-11T10:00:00.000+02:00",
134
- "saving": 0.026700000000000057
135
- },
136
- {
137
- "price": 0.5124,
138
- "onOff": true,
139
- "start": "2021-10-11T11:00:00.000+02:00",
140
- "saving": null
141
- },
142
- {
143
- "price": 0.504,
144
- "onOff": true,
145
- "start": "2021-10-11T12:00:00.000+02:00",
146
- "saving": null
147
- },
148
- {
149
- "price": 0.5057,
150
- "onOff": true,
151
- "start": "2021-10-11T13:00:00.000+02:00",
152
- "saving": null
153
- },
154
- {
155
- "price": 0.5066,
156
- "onOff": true,
157
- "start": "2021-10-11T14:00:00.000+02:00",
158
- "saving": null
159
- },
160
- {
161
- "price": 0.5136,
162
- "onOff": true,
163
- "start": "2021-10-11T15:00:00.000+02:00",
164
- "saving": null
165
- },
166
- {
167
- "price": 0.5143,
168
- "onOff": true,
169
- "start": "2021-10-11T16:00:00.000+02:00",
170
- "saving": null
171
- },
172
- {
173
- "price": 0.5306,
174
- "onOff": true,
175
- "start": "2021-10-11T17:00:00.000+02:00",
176
- "saving": null
177
- },
178
- {
179
- "price": 0.5534,
180
- "onOff": false,
181
- "start": "2021-10-11T18:00:00.000+02:00",
182
- "saving": 0.0022999999999999687
183
- },
184
- {
185
- "price": 0.5511,
186
- "onOff": true,
187
- "start": "2021-10-11T19:00:00.000+02:00",
188
- "saving": null
189
- },
190
- {
191
- "price": 0.5491,
192
- "onOff": false,
193
- "start": "2021-10-11T20:00:00.000+02:00",
194
- "saving": 0.09580000000000005
195
- },
196
- {
197
- "price": 0.5485,
198
- "onOff": false,
199
- "start": "2021-10-11T21:00:00.000+02:00",
200
- "saving": 0.0952
201
- },
202
- {
203
- "price": 0.5481,
204
- "onOff": false,
205
- "start": "2021-10-11T22:00:00.000+02:00",
206
- "saving": 0.09480000000000005
207
- },
208
- {
209
- "price": 0.5218,
210
- "onOff": false,
211
- "start": "2021-10-11T23:00:00.000+02:00",
212
- "saving": 0.06850000000000006
213
- },
214
- {
215
- "price": 0.4533,
216
- "onOff": true,
217
- "start": "2021-10-12T00:00:00.000+02:00",
218
- "saving": null
219
- },
220
- {
221
- "price": 0.4196,
222
- "onOff": true,
223
- "start": "2021-10-12T01:00:00.000+02:00",
224
- "saving": null
225
- },
226
- {
227
- "price": 0.4037,
228
- "onOff": false,
229
- "start": "2021-10-12T02:00:00.000+02:00",
230
- "saving": 0.020799999999999985
231
- },
232
- {
233
- "price": 0.3829,
234
- "onOff": true,
235
- "start": "2021-10-12T03:00:00.000+02:00",
236
- "saving": null
237
- },
238
- {
239
- "price": 0.4555,
240
- "onOff": true,
241
- "start": "2021-10-12T04:00:00.000+02:00",
242
- "saving": null
243
- },
244
- {
245
- "price": 0.4721,
246
- "onOff": true,
247
- "start": "2021-10-12T05:00:00.000+02:00",
248
- "saving": null
249
- },
250
- {
251
- "price": 0.4903,
252
- "onOff": true,
253
- "start": "2021-10-12T06:00:00.000+02:00",
254
- "saving": null
255
- },
256
- {
257
- "price": 0.5028,
258
- "onOff": true,
259
- "start": "2021-10-12T07:00:00.000+02:00",
260
- "saving": null
261
- },
262
- {
263
- "price": 0.5163,
264
- "onOff": false,
265
- "start": "2021-10-12T08:00:00.000+02:00",
266
- "saving": 0.009199999999999986
267
- },
268
- {
269
- "price": 0.5264,
270
- "onOff": false,
271
- "start": "2021-10-12T09:00:00.000+02:00",
272
- "saving": 0.019299999999999984
273
- },
274
- {
275
- "price": 0.5346,
276
- "onOff": false,
277
- "start": "2021-10-12T10:00:00.000+02:00",
278
- "saving": 0.02749999999999997
279
- },
280
- {
281
- "price": 0.5224,
282
- "onOff": false,
283
- "start": "2021-10-12T11:00:00.000+02:00",
284
- "saving": 0.01529999999999998
285
- },
286
- {
287
- "price": 0.5071,
288
- "onOff": true,
289
- "start": "2021-10-12T12:00:00.000+02:00",
290
- "saving": null
291
- },
292
- {
293
- "price": 0.5045,
294
- "onOff": true,
295
- "start": "2021-10-12T13:00:00.000+02:00",
296
- "saving": null
297
- },
298
- {
299
- "price": 0.5024,
300
- "onOff": true,
301
- "start": "2021-10-12T14:00:00.000+02:00",
302
- "saving": null
303
- },
304
- {
305
- "price": 0.5038,
306
- "onOff": true,
307
- "start": "2021-10-12T15:00:00.000+02:00",
308
- "saving": null
309
- },
310
- {
311
- "price": 0.5118,
312
- "onOff": false,
313
- "start": "2021-10-12T16:00:00.000+02:00",
314
- "saving": 0.007600000000000051
315
- },
316
- {
317
- "price": 0.5111,
318
- "onOff": false,
319
- "start": "2021-10-12T17:00:00.000+02:00",
320
- "saving": 0.006900000000000017
321
- },
322
- {
323
- "price": 0.5108,
324
- "onOff": false,
325
- "start": "2021-10-12T18:00:00.000+02:00",
326
- "saving": 0.00660000000000005
327
- },
328
- {
329
- "price": 0.5055,
330
- "onOff": false,
331
- "start": "2021-10-12T19:00:00.000+02:00",
332
- "saving": 0.0012999999999999678
333
- },
334
- {
335
- "price": 0.5042,
336
- "onOff": true,
337
- "start": "2021-10-12T20:00:00.000+02:00",
338
- "saving": null
339
- },
340
- {
341
- "price": 0.5259,
342
- "onOff": true,
343
- "start": "2021-10-12T21:00:00.000+02:00",
344
- "saving": null
345
- },
346
- {
347
- "price": 0.5282,
348
- "onOff": false,
349
-
350
- "start": "2021-10-12T22:00:00.000+02:00",
351
- "saving": 0.0030000000000000027
352
- },
353
- {
354
- "price": 0.5252,
355
- "onOff": true,
356
- "start": "2021-10-12T23:00:00.000+02:00",
357
- "saving": null
358
- }
359
- ],
360
- "source": "Tibber"
361
- },
362
- "_msgid": "e6ea1886.6b9878"
363
- }