iobroker.tibberlink 2.2.2 → 2.3.2

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/README.md CHANGED
@@ -96,6 +96,22 @@ If you enjoyed this project — or just feeling generous, consider buying me a b
96
96
 
97
97
  ! Note that missing version entries are typically dependency updates for improved security.
98
98
 
99
+ ### 2.3.2 (2024-03-17)
100
+
101
+ - (HombachC) code optimizations
102
+ - (HombachC) fix undefined force mode (#349)
103
+ - (HombachC) fix poll of not existing current price state (#348)
104
+ - (HombachC) fix current price poll when configured as not to poll (#350)
105
+ - (HombachC) bump dependencies
106
+
107
+ ### 2.3.1 (2024-03-10)
108
+
109
+ - (HombachC) BREAKING: Calculator channels of type 'smart battery buffer' will now switch outputs to 'OFF' only once, directly after setting the channel to Active=false (#332)
110
+ - (HombachC) Fixed error in jsonConfig.json (#329)
111
+ - (HombachC) deleted feed disconnect debug-message, cause warn message already exists
112
+ - (HombachC) bump typescript-eslint to gen 7
113
+ - (HombachC) bump dependencies
114
+
99
115
  ### 2.2.2 (2024-02-19)
100
116
 
101
117
  - (HombachC) simplify internal state handling
@@ -431,6 +431,7 @@
431
431
  "md": 6,
432
432
  "lg": 4
433
433
  },
434
+
434
435
  "FeedConfigPowerFactor": {
435
436
  "type": "checkbox",
436
437
  "label": "PowerFactor",
@@ -440,7 +441,6 @@
440
441
  "lg": 4,
441
442
  "newLine": true
442
443
  },
443
-
444
444
  "FeedConfigSignalStrength": {
445
445
  "type": "checkbox",
446
446
  "label": "SignalStrength",
@@ -465,7 +465,8 @@
465
465
  "pl": "Wartości napięcia i prądu - W przypadku kilku liczników te wartości mogą nie być uwzględnione w ramce danych, co może skutkować wartościami zerowymi. Inne odstępstwa mogą również wystąpić na podstawie konkretnej wersji firmware licznika. Wartości zerowe nie wygenerują stanu w twoich obiektach ioBroker.",
466
466
  "uk": "Значення напруги та струму - В разі кількох лічильників ці значення можуть не включати в кадр даних, що може призвести до нульових значень. Інші відхилення також можуть виникнути на основі конкретної прошивки лічильника. Нульові значення не створять стан в ваших об'єктах ioBroker.",
467
467
  "zh-cn": "电压和电流数值 - 在多台仪表的情况下,这些数值可能不包括在数据帧中,可能导致空值。根据电表的具体固件,还可能出现其他偏差。空值不会在您的ioBroker对象中生成状态。"
468
- }
468
+ },
469
+ "newLine": true
469
470
  },
470
471
 
471
472
  "FeedConfigVoltagePhase1": {
@@ -613,6 +614,12 @@
613
614
  "uk": "Домашній канал",
614
615
  "zh-cn": "家庭通道"
615
616
  },
617
+ "attr": "chHomeID",
618
+ "default": "No Home selected",
619
+ "filter": false,
620
+ "sort": false,
621
+ "width": "10% ",
622
+ "command": "HomesForCalculator",
616
623
  "tooltip": {
617
624
  "en": "select the home this channel should be attached to",
618
625
  "de": "Wählen Sie das Zuhause aus, an das dieser Kanal angehängt werden soll",
@@ -625,13 +632,7 @@
625
632
  "pl": "wybierz dom, do którego ten kanał powinien być podłączony",
626
633
  "uk": "виберіть будинок, до якого має бути приєднаний цей канал",
627
634
  "zh-cn": "选择要连接到的主页"
628
- },
629
- "attr": "chHomeID",
630
- "default": "No Home selected",
631
- "filter": false,
632
- "sort": false,
633
- "width": "10% ",
634
- "command": "HomesForCalculator"
635
+ }
635
636
  },
636
637
  {
637
638
  "type": "select",
@@ -55,13 +55,15 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
55
55
  * updates current prices of all homes
56
56
  *
57
57
  * @param homeInfoList - homeInfo list object
58
- * @param forceUpdate - force mode, without verification if existing data is fitting to current date
58
+ * @param forceUpdate - OPTIONAL: force mode, without verification if existing data is fitting to current date, default: false
59
59
  * @returns okprice - got correct data
60
60
  */
61
- async updateCurrentPriceAllHomes(homeInfoList, forceUpdate) {
61
+ async updateCurrentPriceAllHomes(homeInfoList, forceUpdate = false) {
62
62
  let okprice = true;
63
- for (const index in homeInfoList) {
64
- if (!(await this.updateCurrentPrice(homeInfoList[index].ID, forceUpdate)))
63
+ for (const curHomeInfo of homeInfoList) {
64
+ if (!curHomeInfo.PriceDataPollActive)
65
+ continue;
66
+ if (!(await this.updateCurrentPrice(curHomeInfo.ID, forceUpdate)))
65
67
  okprice = false; // single fault sets all false
66
68
  }
67
69
  return okprice;
@@ -70,17 +72,20 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
70
72
  * updates current price of one home
71
73
  *
72
74
  * @param homeId - homeId string
73
- * @param forceUpdate - force mode, without verification if existing data is fitting to current date
75
+ * @param forceUpdate - OPTIONAL: force mode, without verification if existing data is fitting to current date, default: false
74
76
  * @returns okprice - got new data
75
77
  */
76
- async updateCurrentPrice(homeId, forceUpdate) {
78
+ async updateCurrentPrice(homeId, forceUpdate = false) {
77
79
  try {
78
80
  if (homeId) {
79
81
  let exDateCurrent = null;
80
- exDateCurrent = new Date(await this.getStateValue(`Homes.${homeId}.CurrentPrice.startsAt`));
82
+ let pricesToday = [];
81
83
  const now = new Date();
84
+ if (!forceUpdate) {
85
+ exDateCurrent = new Date(await this.getStateValue(`Homes.${homeId}.CurrentPrice.startsAt`));
86
+ pricesToday = JSON.parse(await this.getStateValue(`Homes.${homeId}.PricesToday.json`));
87
+ }
82
88
  // update remaining average
83
- const pricesToday = JSON.parse(await this.getStateValue(`Homes.${homeId}.PricesToday.json`));
84
89
  if (Array.isArray(pricesToday) && pricesToday[2] && pricesToday[2].startsAt) {
85
90
  const exDateToday = new Date(pricesToday[2].startsAt);
86
91
  if (now.getDate == exDateToday.getDate)
@@ -120,21 +125,20 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
120
125
  * updates lists of todays prices of all homes
121
126
  *
122
127
  * @param homeInfoList - homeInfo list object
123
- * @param forceUpdate - force mode, without verification if existing data is fitting to current date
128
+ * @param forceUpdate - OPTIONAL: force mode, without verification if existing data is fitting to current date, default: false
124
129
  * @returns okprice - got correct data
125
130
  */
126
- async updatePricesTodayAllHomes(homeInfoList, forceUpdate) {
131
+ async updatePricesTodayAllHomes(homeInfoList, forceUpdate = false) {
127
132
  let okprice = true;
128
- const currentForceUpdate = forceUpdate !== undefined ? forceUpdate : false;
129
- for (const index in homeInfoList) {
130
- if (!homeInfoList[index].PriceDataPollActive)
133
+ for (const curHomeInfo of homeInfoList) {
134
+ if (!curHomeInfo.PriceDataPollActive)
131
135
  continue;
132
- if (!(await this.updatePricesToday(homeInfoList[index].ID, currentForceUpdate))) {
133
- okprice = false; // single fault sets all false
136
+ if (!(await this.updatePricesToday(curHomeInfo.ID, forceUpdate))) {
137
+ okprice = false;
134
138
  }
135
139
  else {
136
140
  const now = new Date();
137
- this.checkAndSetValue(this.getStatePrefix(homeInfoList[index].ID, "PricesToday", "lastUpdate"), now.toString(), `last update of prices today`);
141
+ this.checkAndSetValue(this.getStatePrefix(curHomeInfo.ID, "PricesToday", "lastUpdate"), now.toString(), `last update of prices today`);
138
142
  }
139
143
  }
140
144
  return okprice;
@@ -143,16 +147,16 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
143
147
  * updates list of todays prices of one home
144
148
  *
145
149
  * @param homeId - homeId string
146
- * @param forceUpdate - force mode, without verification if existing data is fitting to current date
150
+ * @param forceUpdate - OPTIONAL: force mode, without verification if existing data is fitting to current date, default: false
147
151
  * @returns okprice - got correct data
148
152
  */
149
- async updatePricesToday(homeId, forceUpdate) {
153
+ async updatePricesToday(homeId, forceUpdate = false) {
150
154
  try {
151
155
  let exDate = null;
152
- // POTENTIAL 2.0.0 exJSON not needed?? -> 1 line
153
- // const exPricesTodaynew: IPrice[] = JSON.parse(await this.getStateValue(`Homes.${homeId}.PricesToday.json`));
154
- const exJSON = await this.getStateValue(`Homes.${homeId}.PricesToday.json`);
155
- const exPricesToday = JSON.parse(exJSON);
156
+ let exPricesToday = [];
157
+ if (!forceUpdate) {
158
+ exPricesToday = JSON.parse(await this.getStateValue(`Homes.${homeId}.PricesToday.json`));
159
+ }
156
160
  if (Array.isArray(exPricesToday) && exPricesToday[2] && exPricesToday[2].startsAt) {
157
161
  exDate = new Date(exPricesToday[2].startsAt);
158
162
  }
@@ -160,6 +164,11 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
160
164
  today.setHours(0, 0, 0, 0); // sets clock to 0:00
161
165
  if (!exDate || exDate <= today || forceUpdate) {
162
166
  const pricesToday = await this.tibberQuery.getTodaysEnergyPrices(homeId);
167
+ // POTENTIAL 2.3.1 better error logging
168
+ if (!(Array.isArray(pricesToday) && pricesToday.length > 0 && pricesToday[2] && pricesToday[2].total)) {
169
+ throw new Error(`Got invalid data structure from Tibber`);
170
+ }
171
+ // WIP
163
172
  this.adapter.log.debug(`Got prices today from tibber api: ${JSON.stringify(pricesToday)} Force: ${forceUpdate}`);
164
173
  this.checkAndSetValue(this.getStatePrefix(homeId, "PricesToday", "json"), JSON.stringify(pricesToday), "The prices today as json"); // write also it might be empty
165
174
  this.fetchPriceAverage(homeId, `PricesToday.average`, pricesToday);
@@ -202,21 +211,20 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
202
211
  * updates lists of tomorrows prices of all homes
203
212
  *
204
213
  * @param homeInfoList - homeInfo list object
205
- * @param forceUpdate - force mode, without verification if existing data is fitting to current date
214
+ * @param forceUpdate - OPTIONAL: force mode, without verification if existing data is fitting to current date, default: false
206
215
  * @returns okprice - got correct data
207
216
  */
208
- async updatePricesTomorrowAllHomes(homeInfoList, forceUpdate) {
217
+ async updatePricesTomorrowAllHomes(homeInfoList, forceUpdate = false) {
209
218
  let okprice = true;
210
- const currentForceUpdate = forceUpdate !== undefined ? forceUpdate : false;
211
- for (const index in homeInfoList) {
212
- if (!homeInfoList[index].PriceDataPollActive)
219
+ for (const curHomeInfo of homeInfoList) {
220
+ if (!curHomeInfo.PriceDataPollActive)
213
221
  continue;
214
- if (!(await this.updatePricesTomorrow(homeInfoList[index].ID, currentForceUpdate))) {
222
+ if (!(await this.updatePricesTomorrow(curHomeInfo.ID, forceUpdate))) {
215
223
  okprice = false; // single fault sets all false
216
224
  }
217
225
  else {
218
226
  const now = new Date();
219
- this.checkAndSetValue(this.getStatePrefix(homeInfoList[index].ID, "PricesTomorrow", "lastUpdate"), now.toString(), `last update of prices tomorrow`);
227
+ this.checkAndSetValue(this.getStatePrefix(curHomeInfo.ID, "PricesTomorrow", "lastUpdate"), now.toString(), `last update of prices tomorrow`);
220
228
  }
221
229
  }
222
230
  return okprice;
@@ -225,14 +233,16 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
225
233
  * updates list of tomorrows prices of one home
226
234
  *
227
235
  * @param homeId - homeId string
228
- * @param forceUpdate - force mode, without verification if existing data is fitting to current date
236
+ * @param forceUpdate - OPTIONAL: force mode, without verification if existing data is fitting to current date, default: false
229
237
  * @returns okprice - got new data
230
238
  */
231
- async updatePricesTomorrow(homeId, forceUpdate) {
239
+ async updatePricesTomorrow(homeId, forceUpdate = false) {
232
240
  try {
233
241
  let exDate = null;
234
- const exJSON = await this.getStateValue(`Homes.${homeId}.PricesTomorrow.json`);
235
- const exPricesTomorrow = JSON.parse(exJSON);
242
+ let exPricesTomorrow = [];
243
+ if (!forceUpdate) {
244
+ exPricesTomorrow = JSON.parse(await this.getStateValue(`Homes.${homeId}.PricesTomorrow.json`));
245
+ }
236
246
  if (Array.isArray(exPricesTomorrow) && exPricesTomorrow[2] && exPricesTomorrow[2].startsAt) {
237
247
  exDate = new Date(exPricesTomorrow[2].startsAt);
238
248
  }
@@ -240,8 +250,6 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
240
250
  morgen.setDate(morgen.getDate() + 1);
241
251
  morgen.setHours(0, 0, 0, 0); // sets clock to 0:00
242
252
  if (!exDate || exDate < morgen || forceUpdate) {
243
- //if (!exDate || exDate <= morgen || forceUpdate) { FIX in 1.8.0
244
- // -> try getting new data from Tibber server
245
253
  const pricesTomorrow = await this.tibberQuery.getTomorrowsEnergyPrices(homeId);
246
254
  this.adapter.log.debug(`Got prices tomorrow from tibber api: ${JSON.stringify(pricesTomorrow)} Force: ${forceUpdate}`);
247
255
  this.checkAndSetValue(this.getStatePrefix(homeId, "PricesTomorrow", "json"), JSON.stringify(pricesTomorrow), "The prices tomorrow as json"); // write also it might be empty
@@ -325,6 +333,14 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
325
333
  this.adapter.log.error(this.generateErrorMessage(error, `pull of consumption data`));
326
334
  }
327
335
  }
336
+ /**
337
+ * Updates the list of tomorrow's prices for one home.
338
+ *
339
+ * @param homeId - The unique identifier of the home.
340
+ * @param objectDestination - The destination object for storing price data.
341
+ * @param price - The price object containing price information.
342
+ * @returns Promise<void> - Resolves when the price data is successfully fetched and updated.
343
+ */
328
344
  async fetchPrice(homeId, objectDestination, price) {
329
345
  await this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "total"), price.total, "Total price (energy + taxes)");
330
346
  this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "energy"), price.energy, "Spotmarket energy price");
@@ -1 +1 @@
1
- {"version":3,"file":"tibberAPICaller.js","sourceRoot":"","sources":["../../src/lib/tibberAPICaller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tibberAPICaller.js","sourceRoot":"","sources":["../../src/lib/tibberAPICaller.ts"],"names":[],"mappings":";;;AACA,2CAAkD;AAKlD,uFAAoF;AACpF,iDAAyD;AAEzD,MAAa,eAAgB,SAAQ,2BAAY;IAIhD,YAAY,YAAqB,EAAE,OAA8B;QAChE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,IAAI,wBAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,kBAAkB;QACvB,IAAI;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9E,MAAM,YAAY,GAAgB,EAAE,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;gBAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjC,YAAY,CAAC,IAAI,CAAC;oBACjB,EAAE,EAAE,WAAW,CAAC,EAAE;oBAClB,SAAS,EAAE,WAAW,CAAC,WAAW;oBAClC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,0BAA0B;oBACzD,UAAU,EAAE,KAAK;oBACjB,mBAAmB,EAAE,IAAI;iBACzB,CAAC,CAAC;gBACH,mDAAmD;gBACnD,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC;gBAC1C,eAAe;gBACf,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;gBAC/G,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,QAAQ,EAAE,mCAAmC,CAAC,CAAC;gBAC7I,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,WAAW,EAAE,gCAAgC,CAAC,CAAC;gBAC9I,IAAI,CAAC,gBAAgB,CACpB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,EAC7D,WAAW,CAAC,SAAS,EACrB,oCAAoC,CACpC,CAAC;gBACF,sFAAsF;gBACtF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;gBACrH,8CAA8C;gBAC9C,IAAI,CAAC,gBAAgB,CACpB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,sBAAsB,CAAC,EACtE,WAAW,CAAC,oBAAoB,EAChC,yCAAyC,CACzC,CAAC;gBACF,8GAA8G;gBAC9G,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAC;gBAC/I,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC,EACnE,WAAW,CAAC,iBAAiB,EAC7B,yCAAyC,CACzC,CAAC;gBACF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;gBAC5I,IAAI,CAAC,uBAAuB,CAC3B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,sBAAsB,CAAC,EACtE,WAAW,CAAC,oBAAoB,EAChC,2CAA2C,CAC3C,CAAC;gBAEF,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;gBAClE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBAElE,IAAI,CAAC,uBAAuB,CAC3B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,EAAE,4BAA4B,CAAC,EAC7E,WAAW,CAAC,QAAQ,CAAC,0BAA0B,EAC/C,yDAAyD,CACzD,CAAC;aACF;YACD,OAAO,YAAY,CAAC;SACpB;QAAC,OAAO,KAAK,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC,CAAC;YAC3F,OAAO,EAAE,CAAC;SACV;IACF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,0BAA0B,CAAC,YAAyB,EAAE,cAAuB,KAAK;QACvF,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;YACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB;gBAAE,SAAS;YAC/C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;gBAAE,OAAO,GAAG,KAAK,CAAC,CAAC,8BAA8B;SAClH;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IACD;;;;;;OAMG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAAc,EAAE,cAAuB,KAAK;QACpE,IAAI;YACH,IAAI,MAAM,EAAE;gBACX,IAAI,aAAa,GAAgB,IAAI,CAAC;gBACtC,IAAI,WAAW,GAAa,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,WAAW,EAAE;oBACjB,aAAa,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,MAAM,wBAAwB,CAAC,CAAC,CAAC;oBAC5F,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,MAAM,mBAAmB,CAAC,CAAC,CAAC;iBACvF;gBACD,2BAA2B;gBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;oBAC5E,MAAM,WAAW,GAAS,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC5D,IAAI,GAAG,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO;wBAAE,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,8BAA8B,EAAE,WAAW,CAAC,CAAC;iBAC7H;gBAED,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,aAAa,CAAC,QAAQ,EAAE,IAAI,WAAW,EAAE;oBACjF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;oBAC1E,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;oBAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,sCAAsC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;oBACnH,aAAa,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;oBAChD,IAAI,aAAa,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,aAAa,CAAC,QAAQ,EAAE,EAAE;wBACjE,OAAO,IAAI,CAAC;qBACZ;iBACD;qBAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,aAAa,CAAC,QAAQ,EAAE,EAAE;oBACvD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CACrB,SAAS,aAAa,CAAC,QAAQ,EAAE,oGAAoG,CACrI,CAAC;oBACF,OAAO,IAAI,CAAC;iBACZ;qBAAM;oBACN,OAAO,KAAK,CAAC;iBACb;aACD;iBAAM;gBACN,OAAO,KAAK,CAAC;aACb;SACD;QAAC,OAAO,KAAU,EAAE;YACpB,IAAI,WAAW;gBAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;;gBAC9F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;YACtF,OAAO,KAAK,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,yBAAyB,CAAC,YAAyB,EAAE,cAAuB,KAAK;QACtF,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;YACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB;gBAAE,SAAS;YAC/C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,EAAE;gBACjE,OAAO,GAAG,KAAK,CAAC;aAChB;iBAAM;gBACN,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,6BAA6B,CAAC,CAAC;aACvI;SACD;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IACD;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,cAAuB,KAAK;QACnE,IAAI;YACH,IAAI,MAAM,GAAgB,IAAI,CAAC;YAC/B,IAAI,aAAa,GAAa,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,EAAE;gBACjB,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,MAAM,mBAAmB,CAAC,CAAC,CAAC;aACzF;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAClF,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;aAC7C;YACD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACzB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB;YACjD,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,WAAW,EAAE;gBAC9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBACzE,uCAAuC;gBACvC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBACtG,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;iBAC1D;gBACD,MAAM;gBACN,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;gBACjH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC,+BAA+B;gBACnK,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC;gBACnE,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,8BAA8B,EAAE,WAAW,CAAC,CAAC;gBACrF,IAAI,CAAC,iBAAiB,CACrB,MAAM,EACN,qBAAqB,EACrB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAC7C,CAAC;gBACF,IAAI,CAAC,iBAAiB,CACrB,MAAM,EACN,qBAAqB,EACrB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAC7C,CAAC;gBACF,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE;oBAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAC/D,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,eAAe,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;iBAC5D;gBACD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;oBAC5E,IAAI,CAAC,gBAAgB,CACpB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAC5D,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAC7D,yCAAyC,CACzC,CAAC;oBACF,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC3C,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,EAAE;wBAC9B,OAAO,IAAI,CAAC;qBACZ;iBACD;qBAAM;oBACN,8FAA8F;oBAC9F,IAAI,CAAC,gBAAgB,CACpB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAC5D,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAC3B,yCAAyC,CACzC,CAAC;oBACF,OAAO,KAAK,CAAC;iBACb;aACD;iBAAM;gBACN,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,MAAM,wFAAwF,CAAC,CAAC;gBACzI,OAAO,IAAI,CAAC;aACZ;SACD;QAAC,OAAO,KAAU,EAAE;YACpB,IAAI,WAAW;gBAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC,CAAC;;gBACnG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC;YACrF,OAAO,KAAK,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,4BAA4B,CAAC,YAAyB,EAAE,cAAuB,KAAK;QACzF,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;YACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB;gBAAE,SAAS;YAC/C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,EAAE;gBACpE,OAAO,GAAG,KAAK,CAAC,CAAC,8BAA8B;aAC/C;iBAAM;gBACN,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,gCAAgC,CAAC,CAAC;aAC7I;SACD;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IACD;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,cAAuB,KAAK;QACtE,IAAI;YACH,IAAI,MAAM,GAAgB,IAAI,CAAC;YAC/B,IAAI,gBAAgB,GAAa,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,EAAE;gBACjB,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,MAAM,sBAAsB,CAAC,CAAC,CAAC;aAC/F;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC3F,MAAM,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;aAChD;YACD,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB;YAClD,IAAI,CAAC,MAAM,IAAI,MAAM,GAAG,MAAM,IAAI,WAAW,EAAE;gBAC9C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;gBAC/E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;gBACvH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,6BAA6B,CAAC,CAAC,CAAC,+BAA+B;gBAC5K,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;oBAChC,gEAAgE;oBAChE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;oBACnG,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE;wBACrC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAC;qBACrD;oBACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;oBAC5D,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;oBAC5D,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;oBAC5D,IAAI,CAAC,gBAAgB,CACpB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAC/D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAC9B,yCAAyC,CACzC,CAAC;oBACF,OAAO,KAAK,CAAC;iBACb;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;oBACzC,sDAAsD;oBACtD,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE;wBAC/B,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;wBAChC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;wBAC/D,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;qBAC/D;oBACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,EAAE,cAAc,CAAC,CAAC;oBACzE,IAAI,CAAC,iBAAiB,CACrB,MAAM,EACN,wBAAwB,EACxB,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAChD,CAAC;oBACF,IAAI,CAAC,iBAAiB,CACrB,MAAM,EACN,wBAAwB,EACxB,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAChD,CAAC;oBACF,IAAI,CAAC,gBAAgB,CACpB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAC/D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAChE,yCAAyC,CACzC,CAAC;oBACF,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC9C,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE;wBAC/B,OAAO,IAAI,CAAC;qBACZ;yBAAM;wBACN,OAAO,KAAK,CAAC;qBACb;iBACD;aACD;iBAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE;gBACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,MAAM,8FAA8F,CAAC,CAAC;gBAC/I,OAAO,IAAI,CAAC;aACZ;YACD,OAAO,KAAK,CAAC;SACb;QAAC,OAAO,KAAU,EAAE;YACpB,IAAI,WAAW;gBAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC,CAAC;;gBACtG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC,CAAC;YACxF,OAAO,KAAK,CAAC;SACb;IACF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,yBAAyB;QAC9B,IAAI;YACH,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;gBACjD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,SAAS;gBAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC3B,MAAM,WAAW,GAAG;oBACnB,EAAE,IAAI,EAAE,mCAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE;oBAC3G,EAAE,IAAI,EAAE,mCAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE;oBACvG,EAAE,IAAI,EAAE,mCAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE;oBAC3G,EAAE,IAAI,EAAE,mCAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE;oBAC/G,EAAE,IAAI,EAAE,mCAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE;iBAC3G,CAAC;gBACF,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,WAAW,EAAE;oBAChE,IAAI,OAAO,IAAI,OAAO,GAAG,CAAC,EAAE;wBAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;wBACjF,IAAI,CAAC,gBAAgB,CACpB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EACjD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAC3B,+BAA+B,WAAW,WAAW,CACrD,CAAC;qBACF;yBAAM;wBACN,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;qBAC/E;iBACD;gBACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,qDAAqD,MAAM,EAAE,CAAC,CAAC;aACtF;SACD;QAAC,OAAO,KAAU,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC,CAAC;SACrF;IACF,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,iBAAyB,EAAE,KAAa;QAChF,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;QACxI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;QAC/H,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,6CAA6C,CAAC,CAAC;QAC7I,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;QAC7H,0HAA0H;QAC1H,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;IAC5I,CAAC;IAEO,iBAAiB,CAAC,MAAc,EAAE,iBAAyB,EAAE,KAAe;QACnF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC3C,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;gBAC3C,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;aACxB;YACD,OAAO,GAAG,CAAC;QACZ,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EACvD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,EACnD,4BAA4B,CAC5B,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EACxD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,EACpD,iCAAiC,CACjC,CAAC;QACF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,EACrD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,EACjD,0BAA0B,CAC1B,CAAC;IACH,CAAC;IAEO,0BAA0B,CAAC,MAAc,EAAE,iBAAyB,EAAE,KAAe;QAC5F,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,eAAe;QACvC,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnC,8CAA8C;QAC9C,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YACpD,OAAO,QAAQ,IAAI,WAAW,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC7D,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;gBAC3C,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;aACxB;YACD,OAAO,GAAG,CAAC;QACZ,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EACvD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,EACrE,sCAAsC,CACtC,CAAC;QACF,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EACxD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,EACtE,4CAA4C,CAC5C,CAAC;QACF,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,EACrD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,EACnE,oCAAoC,CACpC,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,MAAc,EAAE,iBAAyB,EAAE,KAAe;QACnF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE;YAClD,kEAAkE;YAClE,UAAU;SACV;QACD,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EACvD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,EACzC,4BAA4B,CAC5B,CAAC;QACF,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EACxD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,EAC1C,gDAAgD,CAChD,CAAC;QACF,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,EACrD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EACvC,yCAAyC,CACzC,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;QAC/I,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;IAC1I,CAAC;IAEO,iBAAiB,CAAC,MAAc,EAAE,iBAAyB,EAAE,KAAe;QACnF,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EACvD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,EACxC,4BAA4B,CAC5B,CAAC;QACF,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EACxD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,EACzC,gDAAgD,CAChD,CAAC;QACF,IAAI,CAAC,sBAAsB,CAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,EACrD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EACtC,yCAAyC,CACzC,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;QAC9I,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;IACzI,CAAC;IAEO,aAAa,CAAC,MAAc,EAAE,iBAAyB;QAC9D,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;QAC5H,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC7G,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,+CAA+C,CAAC,CAAC;QACvI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,6CAA6C,CAAC,CAAC;IAChJ,CAAC;IAEO,oBAAoB,CAAC,MAAc,EAAE,iBAAyB;QACrE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAC1H,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,qCAAqC,CAAC,CAAC;QAChI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACvH,CAAC;IAEO,oBAAoB,CAAC,MAAc,EAAE,iBAAyB;QACrE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,4BAA4B,CAAC,CAAC;QACtH,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,gDAAgD,CAAC,CAAC;QAC3I,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,yCAAyC,CAAC,CAAC;QACjI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,6CAA6C,CAAC,CAAC;QAC/I,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,eAAe,EAAE,iCAAiC,CAAC,CAAC;IACvI,CAAC;IAEO,oBAAoB,CAAC,MAAc,EAAE,iBAAyB;QACrE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,4BAA4B,CAAC,CAAC;QACtH,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,gDAAgD,CAAC,CAAC;QAC3I,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,yCAAyC,CAAC,CAAC;QACjI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,6CAA6C,CAAC,CAAC;QAC/I,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,eAAe,EAAE,iCAAiC,CAAC,CAAC;IACvI,CAAC;IAEO,gBAAgB,CAAC,MAAc,EAAE,iBAAyB,EAAE,WAAyB;QAC5F,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1G,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACjH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAChG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;QAC5G,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;QACpH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxG,IAAI,WAAW,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;SAC3F;QACD,IAAI,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;SAC/E;IACF,CAAC;IAEO,gBAAgB,CAAC,MAAc,EAAE,iBAAyB,EAAE,WAAyB;QAC5F,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAClG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrG,CAAC;IAEO,YAAY,CAAC,MAAc,EAAE,iBAAyB,EAAE,OAAiB;QAChF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5F,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACxG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAClG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACvG,CAAC;CACD;AAziBD,0CAyiBC"}
@@ -53,7 +53,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
53
53
  this.adapter.config.CalculatorList[channel].chName = `Channel Name`;
54
54
  }
55
55
  const channelName = this.adapter.config.CalculatorList[channel].chName;
56
- //#region *** setup channel folder ***
56
+ //#region *** setup channel folders ***
57
57
  let typeDesc;
58
58
  switch (this.adapter.config.CalculatorList[channel].chType) {
59
59
  case tibberHelper_1.enCalcType.BestCost:
@@ -103,8 +103,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
103
103
  this.adapter.log.debug(`Wrong type for chActive: ${valueActive}`);
104
104
  }
105
105
  //#endregion
106
- /*
107
- "best cost" | Input state: "TriggerPrice"
106
+ /* "best cost" | Input state: "TriggerPrice"
108
107
  | Output state: "Output"
109
108
  "best single hours" | Input state: "AmountHours"
110
109
  | Output state: "Output"
@@ -121,7 +120,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
121
120
  */
122
121
  switch (this.adapter.config.CalculatorList[channel].chType) {
123
122
  case tibberHelper_1.enCalcType.BestCost:
124
- this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `AmountHours`).value);
123
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `AmountHours`).value); // INPUTS
125
124
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `StartTime`).value);
126
125
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `StopTime`).value);
127
126
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `EfficiencyLoss`).value);
@@ -130,9 +129,18 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
130
129
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `BlockStartTime`).value);
131
130
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `BlockStopTime`).value);
132
131
  await this.setup_chTriggerPrice(homeId, channel);
132
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `Output2`).value); // OUTPUTS
133
+ // WIP
134
+ if (this.adapter.config.CalculatorList[channel].chTargetState.length > 10) {
135
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `Output`).value);
136
+ }
137
+ else {
138
+ // await this.setup_chOutput(homeId, channel);
139
+ }
140
+ //WIP
133
141
  break;
134
142
  case tibberHelper_1.enCalcType.BestSingleHours:
135
- this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `TriggerPrice`).value);
143
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `TriggerPrice`).value); // INPUTS
136
144
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `StartTime`).value);
137
145
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `StopTime`).value);
138
146
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `EfficiencyLoss`).value);
@@ -141,9 +149,10 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
141
149
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `BlockStartTime`).value);
142
150
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `BlockStopTime`).value);
143
151
  await this.setup_chAmountHours(homeId, channel);
152
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `Output2`).value); // OUTPUTS
144
153
  break;
145
154
  case tibberHelper_1.enCalcType.BestHoursBlock:
146
- this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `TriggerPrice`).value);
155
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `TriggerPrice`).value); // INPUTS
147
156
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `StartTime`).value);
148
157
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `StopTime`).value);
149
158
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `EfficiencyLoss`).value);
@@ -152,9 +161,10 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
152
161
  await this.setup_chAverageTotalCost(homeId, channel);
153
162
  await this.setup_chBlockStartFullHour(homeId, channel);
154
163
  await this.setup_chBlockEndFullHour(homeId, channel);
164
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `Output2`).value); // OUTPUTS
155
165
  break;
156
166
  case tibberHelper_1.enCalcType.BestCostLTF:
157
- this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `AmountHours`).value);
167
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `AmountHours`).value); // INPUTS
158
168
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `EfficiencyLoss`).value);
159
169
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `AverageTotalCost`).value);
160
170
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `BlockStartTime`).value);
@@ -163,9 +173,10 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
163
173
  await this.setup_chStartTime(homeId, channel);
164
174
  await this.setup_chStopTime(homeId, channel);
165
175
  await this.setup_chRepeatDays(homeId, channel);
176
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `Output2`).value); // OUTPUTS
166
177
  break;
167
178
  case tibberHelper_1.enCalcType.BestSingleHoursLTF:
168
- this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `TriggerPrice`).value);
179
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `TriggerPrice`).value); // INPUTS
169
180
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `EfficiencyLoss`).value);
170
181
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `AverageTotalCost`).value);
171
182
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `BlockStartTime`).value);
@@ -174,9 +185,10 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
174
185
  await this.setup_chStartTime(homeId, channel);
175
186
  await this.setup_chStopTime(homeId, channel);
176
187
  await this.setup_chRepeatDays(homeId, channel);
188
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `Output2`).value); // OUTPUTS
177
189
  break;
178
190
  case tibberHelper_1.enCalcType.BestHoursBlockLTF:
179
- this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `TriggerPrice`).value);
191
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `TriggerPrice`).value); // INPUTS
180
192
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `EfficiencyLoss`).value);
181
193
  await this.setup_chAmountHours(homeId, channel);
182
194
  await this.setup_chStartTime(homeId, channel);
@@ -185,9 +197,10 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
185
197
  await this.setup_chAverageTotalCost(homeId, channel);
186
198
  await this.setup_chBlockStartFullHour(homeId, channel);
187
199
  await this.setup_chBlockEndFullHour(homeId, channel);
200
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `Output2`).value); // OUTPUTS
188
201
  break;
189
202
  case tibberHelper_1.enCalcType.SmartBatteryBuffer:
190
- this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `TriggerPrice`).value);
203
+ this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `TriggerPrice`).value); // INPUTS
191
204
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `StartTime`).value);
192
205
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `StopTime`).value);
193
206
  this.adapter.delObjectAsync(this.getStatePrefix(homeId, `Calculations.${channel}`, `RepeatDays`).value);
@@ -199,10 +212,17 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
199
212
  break;
200
213
  default:
201
214
  this.adapter.log.error(`Calculator Type for channel ${channel} not set, please do!`);
202
- }
203
- //*** subscribeStates ***
204
- this.adapter.subscribeStates(`Homes.${homeId}.Calculations.${channel}.*`);
205
- // all states changes inside the calculator channel settings namespace are subscribed
215
+ } //end setup and delete channel states according to channel type
216
+ //#region *** subscribe state changes ***
217
+ // this.adapter.subscribeStates(`Homes.${homeId}.Calculations.${channel}.*`);
218
+ this.adapter.subscribeStates(`Homes.${homeId}.Calculations.${channel}.Active`);
219
+ this.adapter.subscribeStates(`Homes.${homeId}.Calculations.${channel}.TriggerPrice`);
220
+ this.adapter.subscribeStates(`Homes.${homeId}.Calculations.${channel}.AmountHours`);
221
+ this.adapter.subscribeStates(`Homes.${homeId}.Calculations.${channel}.StartTime`);
222
+ this.adapter.subscribeStates(`Homes.${homeId}.Calculations.${channel}.StopTime`);
223
+ this.adapter.subscribeStates(`Homes.${homeId}.Calculations.${channel}.RepeatDays`);
224
+ this.adapter.subscribeStates(`Homes.${homeId}.Calculations.${channel}.EfficiencyLoss`);
225
+ //#endregion
206
226
  }
207
227
  catch (error) {
208
228
  this.adapter.log.warn(this.generateErrorMessage(error, `setup of states for calculator`));
@@ -252,7 +272,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
252
272
  async setup_chStartTime(homeId, channel) {
253
273
  try {
254
274
  const channelName = this.adapter.config.CalculatorList[channel].chName;
255
- //*** chAmountHours ***
275
+ //*** chStartTime ***
256
276
  if (this.adapter.config.CalculatorList[channel].chStartTime === undefined) {
257
277
  const today = new Date();
258
278
  today.setHours(0, 0, 0, 0); // sets clock to 0:00
@@ -275,7 +295,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
275
295
  async setup_chStopTime(homeId, channel) {
276
296
  try {
277
297
  const channelName = this.adapter.config.CalculatorList[channel].chName;
278
- //*** chAmountHours ***
298
+ //*** chStopTime ***
279
299
  if (this.adapter.config.CalculatorList[channel].chStopTime === undefined) {
280
300
  const today = new Date();
281
301
  today.setHours(23, 59, 0, 0); // sets clock to 0:00
@@ -347,9 +367,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
347
367
  this.adapter.log.warn(this.generateErrorMessage(error, `setup of state AverageTotalCost for calculator`));
348
368
  }
349
369
  }
350
- async setup_chBlockStartFullHour(homeId, channel, delMode) {
351
- if (delMode === undefined)
352
- delMode = false;
370
+ async setup_chBlockStartFullHour(homeId, channel, delMode = false) {
353
371
  try {
354
372
  const channelName = this.adapter.config.CalculatorList[channel].chName;
355
373
  this.checkAndSetValue(this.getStatePrefix(homeId, `Calculations.${channel}`, `BlockStartFullHour`), `-`, `first hour of determined block`, false, false);
@@ -360,9 +378,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
360
378
  this.adapter.log.warn(this.generateErrorMessage(error, `write state BlockStartFullHour for calculator`));
361
379
  }
362
380
  }
363
- async setup_chBlockEndFullHour(homeId, channel, delMode) {
364
- if (delMode === undefined)
365
- delMode = false;
381
+ async setup_chBlockEndFullHour(homeId, channel, delMode = false) {
366
382
  try {
367
383
  const channelName = this.adapter.config.CalculatorList[channel].chName;
368
384
  this.checkAndSetValue(this.getStatePrefix(homeId, `Calculations.${channel}`, `BlockEndFullHour`), `-`, `end hour of determined block`, false, false);
@@ -373,10 +389,11 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
373
389
  this.adapter.log.warn(this.generateErrorMessage(error, `write state BlockEndFullHour for calculator`));
374
390
  }
375
391
  }
376
- async startCalculatorTasks() {
392
+ async startCalculatorTasks(onStateChange = false) {
377
393
  if (!this.adapter.config.UseCalculator)
378
394
  return;
379
395
  const badComponents = ["tibberlink", "Homes", "Calculations"]; // we must not use an input as output!!
396
+ // WIP einen first Run mode implementieren, das muss nicht bei jedem Lauf durchgegangen werden
380
397
  for (const channel in this.adapter.config.CalculatorList) {
381
398
  if (!this.adapter.config.CalculatorList[channel] ||
382
399
  !this.adapter.config.CalculatorList[channel].chTargetState ||
@@ -390,6 +407,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
390
407
  if (!chTargetStateComponents.includes(badComponent))
391
408
  foundAllBadComponents = false;
392
409
  });
410
+ // WIP - oder enthält "Output"....
393
411
  if (foundAllBadComponents) {
394
412
  this.adapter.log.error(`Invalid destination state defined in calculator channel ${channel}. Please avoid specifying the activation state of this channel as the destination. Skipping channel execution.`);
395
413
  continue;
@@ -407,6 +425,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
407
425
  if (!chTargetState2Components.includes(badComponent))
408
426
  foundAllBadComponents = false;
409
427
  });
428
+ // WIP - oder enthält "Output"....
410
429
  if (foundAllBadComponents) {
411
430
  this.adapter.log.error(`Invalid second destination state defined in calculator channel ${channel}. Please avoid specifying the activation state of this channel as the destination. Skipping channel execution.`);
412
431
  continue;
@@ -432,8 +451,14 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
432
451
  case tibberHelper_1.enCalcType.BestHoursBlockLTF:
433
452
  this.executeCalculatorBestHoursBlock(parseInt(channel), true);
434
453
  break;
435
- case tibberHelper_1.enCalcType.SmartBatteryBuffer:
436
- this.executeCalculatorSmartBatteryBuffer(parseInt(channel));
454
+ case tibberHelper_1.enCalcType.SmartBatteryBuffer: // If Active=false been set just now - or still active then act - else just produce debug log in the following runs
455
+ // WIP #332 - 2.3.1
456
+ if (this.adapter.config.CalculatorList[channel].chActive || onStateChange) {
457
+ this.executeCalculatorSmartBatteryBuffer(parseInt(channel));
458
+ }
459
+ else {
460
+ this.adapter.log.debug(`calculator channel: ${channel}-smart battery buffer; execution skipped because channel not set to active in channel states`);
461
+ }
437
462
  break;
438
463
  default:
439
464
  this.adapter.log.debug(`unknown value for calculator type: ${this.adapter.config.CalculatorList[channel].chType}`);
@@ -457,9 +482,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
457
482
  }
458
483
  }
459
484
  }
460
- async executeCalculatorBestCost(channel, modeLTF) {
461
- if (modeLTF === undefined)
462
- modeLTF = false;
485
+ async executeCalculatorBestCost(channel, modeLTF = false) {
463
486
  try {
464
487
  let valueToSet = "";
465
488
  const now = new Date();
@@ -500,9 +523,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
500
523
  this.adapter.log.warn(this.generateErrorMessage(error, `execute calculator for best price ${modeLTF ? "LTF " : ""}in channel ${channel}`));
501
524
  }
502
525
  }
503
- async executeCalculatorBestSingleHours(channel, modeLTF) {
504
- if (modeLTF === undefined)
505
- modeLTF = false;
526
+ async executeCalculatorBestSingleHours(channel, modeLTF = false) {
506
527
  try {
507
528
  let valueToSet = "";
508
529
  const now = new Date();
@@ -564,9 +585,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
564
585
  this.adapter.log.warn(this.generateErrorMessage(error, `execute calculator for best single hours ${modeLTF ? "LTF " : ""}in channel ${channel}`));
565
586
  }
566
587
  }
567
- async executeCalculatorBestHoursBlock(channel, modeLTF) {
568
- if (modeLTF === undefined)
569
- modeLTF = false;
588
+ async executeCalculatorBestHoursBlock(channel, modeLTF = false) {
570
589
  try {
571
590
  let valueToSet = "";
572
591
  const now = new Date();
@@ -652,6 +671,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
652
671
  }
653
672
  }
654
673
  async executeCalculatorSmartBatteryBuffer(channel) {
674
+ //#region *** SPECIFICATION ***
655
675
  /*
656
676
  Summary:
657
677
  Develop a channel that categorizes hourly energy prices into three groups—cheap, normal, and expensive.
@@ -680,6 +700,7 @@ class TibberCalculator extends tibberHelper_1.TibberHelper {
680
700
  - Normal Hours - disable battery charging (OFF-1) and also disable feed into home energy system (OFF-2)
681
701
  - Expensive Hours - disable battery charging (OFF-1) and enable feed into home energy system (ON-2)
682
702
  */
703
+ //#endregion
683
704
  try {
684
705
  let valueToSet = "";
685
706
  let valueToSet2 = "";