iobroker.tibberlink 1.5.0 → 1.6.1
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 +45 -124
- package/admin/i18n/de.json +3 -0
- package/admin/i18n/{en/translations.json → en.json} +0 -1
- package/admin/i18n/{es/translations.json → es.json} +0 -1
- package/admin/i18n/fr.json +3 -0
- package/admin/i18n/{it/translations.json → it.json} +0 -1
- package/admin/i18n/nl.json +3 -0
- package/admin/i18n/{pl/translations.json → pl.json} +0 -1
- package/admin/i18n/pt.json +3 -0
- package/admin/i18n/{ru/translations.json → ru.json} +0 -1
- package/admin/i18n/{uk/translations.json → uk.json} +0 -1
- package/admin/i18n/{zh-cn/translations.json → zh-cn.json} +0 -1
- package/admin/jsonConfig.json +178 -46
- package/build/lib/tibberAPICaller.js +85 -28
- package/build/lib/tibberAPICaller.js.map +1 -1
- package/build/lib/tibberCalculator.js +278 -55
- package/build/lib/tibberCalculator.js.map +1 -1
- package/build/lib/tibberHelper.js +5 -1
- package/build/lib/tibberHelper.js.map +1 -1
- package/build/main.js +87 -8
- package/build/main.js.map +1 -1
- package/io-package.json +27 -53
- package/package.json +12 -13
- package/admin/i18n/de/translations.json +0 -4
- package/admin/i18n/fr/translations.json +0 -4
- package/admin/i18n/nl/translations.json +0 -4
- package/admin/i18n/pt/translations.json +0 -4
package/README.md
CHANGED
|
@@ -53,18 +53,59 @@ If you're not currently a Tibber user, I would greatly appreciate it if you coul
|
|
|
53
53
|
- Each channel populates an external state as output, which has to be selected in the settings tab. For instance, this state might be "0_userdata.0.example_state" or any other writable external state.
|
|
54
54
|
- The values to be written to the output state can be defined in "value YES" and "value NO," e.g., "true" for boolean states or a number or text to be written.
|
|
55
55
|
- Outputs:
|
|
56
|
-
- "Best cost": Utilizes the "TriggerPrice" state as input,
|
|
57
|
-
- "Best single hours":
|
|
58
|
-
- "Best hours block":
|
|
56
|
+
- "Best cost": Utilizes the "TriggerPrice" state as input, producing a "YES" output every hour when the current Tibber energy cost is below the trigger price.
|
|
57
|
+
- "Best single hours": Generates a "YES" output during the least expensive hours, with the number defined in the "AmountHours" state.
|
|
58
|
+
- "Best hours block": Outputs "YES" during the most cost-effective block of hours, with the number of hours specified in the "AmountHours" state.
|
|
59
|
+
- "Best cost LTF": "Best cost" within a Limited Time Frame (LTF).
|
|
60
|
+
- "Best single hours LTF": "Best single hours" within a Limited Time Frame (LTF).
|
|
61
|
+
- "Best hours block LTF": "Best hours block" within a Limited Time Frame (LTF).
|
|
62
|
+
- LTF channels: Function similarly to standard channels but only operate within a time frame defined by the "StartTime" and "StopTime" state objects. After "StopTime," the channel deactivates itself. "StartTime" and "StopTime" may span over several days. The states must be filled with a date-time string in ISO-8601 format with a timezone offset, such as: "2023-11-17T21:00:00.000+01:00".
|
|
63
|
+
|
|
64
|
+
### Hint
|
|
65
|
+
|
|
66
|
+
#### Inverse Usage:
|
|
67
|
+
|
|
68
|
+
To obtain, for example, peak hours instead of optimal hours, simply invert the usage and parameters:
|
|
69
|
+

|
|
70
|
+
By swapping true <-> false, you will receive a true at a low cost in the first line and a true at a high cost in the second line (Channel names are not triggers and are still free to choose).
|
|
71
|
+
|
|
72
|
+
Attention: For peak single hours, such as in the example, you also need to adjust the number of hours. Original: 5 -> Inverse (24-5) = 19 -> You will obtain a true result during the 5 peak hours.
|
|
73
|
+
|
|
74
|
+
#### LTF channels:
|
|
75
|
+
|
|
76
|
+
The calculation is performed for "multiday" data. As we only have information for "today" and "tomorrow" (available after approximately 13:00), the time scope is effectively limited to a maximum of 35 hours. However, it's crucial to be mindful of this behavior because the calculated result may/will change around 13:00 when new data for tomorrow's prices becomes available.
|
|
77
|
+
|
|
78
|
+
To observe this dynamic change in the time scope for a standard channel, you may opt for a Limited Time Frame (LTF) spanning several years. This is particularly useful for the "Best Single Hours LTF" scenario.
|
|
59
79
|
|
|
60
80
|
## Notes
|
|
61
81
|
|
|
62
82
|
This adapter employs Sentry libraries to automatically report exceptions and code errors to the developers. For more details and information on how to disable error reporting, please consult the [Sentry-Plugin Documentation](https://github.com/ioBroker/plugin-sentry#plugin-sentry)! Sentry reporting is initiated starting with js-controller 3.0.
|
|
63
83
|
|
|
84
|
+
## Donate
|
|
85
|
+
|
|
86
|
+
<a href="https://www.paypal.com/donate/?hosted_button_id=F7NM9R2E2DUYS"><img src="https://raw.githubusercontent.com/Hombach/ioBroker.tibberlink/main/docu/bluePayPal.svg" height="40"></a>
|
|
87
|
+
If you enjoyed this project — or just feeling generous, consider buying me a beer. Cheers! :beers:
|
|
88
|
+
|
|
64
89
|
## Changelog
|
|
65
90
|
|
|
66
91
|
! Note that missing version entries are typically dependency updates for improved security.
|
|
67
92
|
|
|
93
|
+
### 1.6.1 (2023-11-26)
|
|
94
|
+
|
|
95
|
+
- (HombachC) cleanup in documentation and translation handling
|
|
96
|
+
|
|
97
|
+
### 1.6.0 (2023-11-26)
|
|
98
|
+
|
|
99
|
+
- (HombachC) fixed major bug in 1.5.0, not working calculator channels (#212)
|
|
100
|
+
- (HombachC) implement limit calculations to a time frame (#153)
|
|
101
|
+
- (HombachC) fix error of missing price data upon not working tibber server connect at adapter start (#204)
|
|
102
|
+
- (HombachC) fixed possible error with wrong price date in multi home systems
|
|
103
|
+
- (HombachC) fixed possible type error, notified by Sentry
|
|
104
|
+
- (HombachC) added some documentation for inverse use of channels (#202)
|
|
105
|
+
- (HombachC) added Sentry statistics
|
|
106
|
+
- (HombachC) optimize translation handling
|
|
107
|
+
- (HombachC) bump dependencies
|
|
108
|
+
|
|
68
109
|
### 1.5.0 (2023-11-13)
|
|
69
110
|
|
|
70
111
|
- (HombachC) implement calculator channel names (#186)
|
|
@@ -139,127 +180,7 @@ This adapter employs Sentry libraries to automatically report exceptions and cod
|
|
|
139
180
|
- (HombachC) Increase to the first major release, as now a stable level is reached
|
|
140
181
|
- (HombachC) Code cleanup
|
|
141
182
|
|
|
142
|
-
###
|
|
143
|
-
|
|
144
|
-
- (HombachC) fixed error with polling multiple homes live data (#108)
|
|
145
|
-
- (HombachC) Lots of dependency updates; code optimizations
|
|
146
|
-
|
|
147
|
-
### 0.4.1 (2023-09-24)
|
|
148
|
-
|
|
149
|
-
- (HombachC) Hardened 2 typeerrors uppon sentry recognition
|
|
150
|
-
- (HombachC) Fix error with not deleted averages of tomorrow pricing (#95)
|
|
151
|
-
- (HombachC) preparations for tibber calculator
|
|
152
|
-
|
|
153
|
-
### 0.4.0 (2023-09-20)
|
|
154
|
-
|
|
155
|
-
- (HombachC) Added daily average price values (#89)
|
|
156
|
-
|
|
157
|
-
### 0.3.3 (2023-09-17)
|
|
158
|
-
|
|
159
|
-
- (HombachC) Fixed false positive connection message (#87)
|
|
160
|
-
- (HombachC) Updated translations with ChatGPT
|
|
161
|
-
- (HombachC) preparations for tibber calculator
|
|
162
|
-
|
|
163
|
-
### 0.3.2 (2023-09-14)
|
|
164
|
-
|
|
165
|
-
- (HombachC) Fixed error when starting adapter first time (#82)
|
|
166
|
-
- (HombachC) Fixed error in admin config from 0.3.0 (#81)
|
|
167
|
-
|
|
168
|
-
### 0.3.1 (2023-09-13)
|
|
169
|
-
|
|
170
|
-
- (HombachC) Mitigate error in admin config from 0.3.0 (#81)
|
|
171
|
-
- (HombachC) Change logging of TibberFeed errors from type error to type warn - because of too many downtimes of Tibber server (#80)
|
|
172
|
-
|
|
173
|
-
### 0.3.0 (2023-09-12)
|
|
174
|
-
|
|
175
|
-
- (HombachC) BREAKING: change Pulse usage to be configurable for all homes seperately (#41)
|
|
176
|
-
- (HombachC) optimize code again to mitigate set state timing for long JSON states (#68)
|
|
177
|
-
- (HombachC) preparations for tibber calculator
|
|
178
|
-
|
|
179
|
-
### 0.2.7 (2023-09-07)
|
|
180
|
-
|
|
181
|
-
- (HombachC) reducing polls at Tibber server by precheck of current price data
|
|
182
|
-
- (HombachC) preparations for tibber calculator
|
|
183
|
-
|
|
184
|
-
### 0.2.6 (2023-09-04)
|
|
185
|
-
|
|
186
|
-
- (HombachC) fix error with boolean states
|
|
187
|
-
|
|
188
|
-
### 0.2.5 (2023-09-03)
|
|
189
|
-
|
|
190
|
-
- (HombachC) optimize code to mitigate set state timing for long JSON states (#68)
|
|
191
|
-
|
|
192
|
-
### 0.2.4 (2023-08-30)
|
|
193
|
-
|
|
194
|
-
- (HombachC) enable correct price poll also for adapter running in different timezones (#63)
|
|
195
|
-
|
|
196
|
-
### 0.2.3 (2023-08-27)
|
|
197
|
-
|
|
198
|
-
- (HombachC) fix error in 0.2.2 in start conditions of adapter
|
|
199
|
-
|
|
200
|
-
### 0.2.2 (2023-08-24)
|
|
201
|
-
|
|
202
|
-
- (HombachC) reducing polls at Tibber server by precheck of known data
|
|
203
|
-
- (HombachC) code optimizations
|
|
204
|
-
- (HombachC) fix config screen (#55)
|
|
205
|
-
|
|
206
|
-
### 0.2.1 (2023-08-21)
|
|
207
|
-
|
|
208
|
-
- (HombachC) double timeout for Tibber server queries
|
|
209
|
-
|
|
210
|
-
### 0.2.0 (2023-08-18)
|
|
211
|
-
|
|
212
|
-
- (HombachC) introduces JSONs for prices sorted by price ascending
|
|
213
|
-
- (HombachC) fix stupid error for obsolete next day pricing (#23, #50)
|
|
214
|
-
|
|
215
|
-
### 0.1.10 (2023-08-15)
|
|
216
|
-
|
|
217
|
-
- (HombachC) preparations for tibber calculator
|
|
218
|
-
- (HombachC) mitigate multi homes & pulse problems (#41)
|
|
219
|
-
- (HombachC) add documentation to config screen (#47)
|
|
220
|
-
|
|
221
|
-
### 0.1.9 (2023-08-14)
|
|
222
|
-
|
|
223
|
-
- (HombachC) optimizing fetching homes list (#32) after Tibber server error, restart adapter in case of trouble
|
|
224
|
-
|
|
225
|
-
### 0.1.8 (2023-08-12)
|
|
226
|
-
|
|
227
|
-
- (HombachC) bump dev-dependencies, fix eslint/prettier issue
|
|
228
|
-
|
|
229
|
-
### 0.1.7 (2023-08-11)
|
|
230
|
-
|
|
231
|
-
- (HombachC) code cleanup, fix error for obsolete next day pricing (#23)
|
|
232
|
-
- (HombachC) add another try/catch while fetching homes list (#32)
|
|
233
|
-
|
|
234
|
-
### 0.1.6 (2023-07-30)
|
|
235
|
-
|
|
236
|
-
- (HombachC) add units for live data, bump adapter-core to 3.x
|
|
237
|
-
|
|
238
|
-
### 0.1.5 (2023-07-18)
|
|
239
|
-
|
|
240
|
-
- (HombachC) fix error in sentry logging
|
|
241
|
-
|
|
242
|
-
### 0.1.4 (2023-07-17)
|
|
243
|
-
|
|
244
|
-
- (HombachC) BREAKING: encrypted API-Token in ioBroker
|
|
245
|
-
- (HombachC) rearranged configuration options
|
|
246
|
-
- (HombachC) fixed bug in state generation
|
|
247
|
-
|
|
248
|
-
### 0.1.3 (2023-07-17)
|
|
249
|
-
|
|
250
|
-
- (HombachC) all log messages in English
|
|
251
|
-
- (HombachC) remove unused state change handler
|
|
252
|
-
- (HombachC) fixed state roles
|
|
253
|
-
|
|
254
|
-
### 0.1.2 (2023-07-17)
|
|
255
|
-
|
|
256
|
-
- (HombachC) round grid consumption meter values to Wh accuracy
|
|
257
|
-
- (HombachC) hide unused checkboxes in config
|
|
258
|
-
- (HombachC) fix snyc and appveyor
|
|
259
|
-
|
|
260
|
-
### 0.1.0 (2023-07-14)
|
|
261
|
-
|
|
262
|
-
- (HombachC) initial version
|
|
183
|
+
### Old Changes see [CHANGELOG OLD](CHANGELOG_OLD.md)
|
|
263
184
|
|
|
264
185
|
## License
|
|
265
186
|
|
package/admin/jsonConfig.json
CHANGED
|
@@ -81,7 +81,19 @@
|
|
|
81
81
|
"items": [
|
|
82
82
|
{
|
|
83
83
|
"type": "selectSendTo",
|
|
84
|
-
"title":
|
|
84
|
+
"title": {
|
|
85
|
+
"en": "Tibber Home",
|
|
86
|
+
"de": "Tibber Zuhause",
|
|
87
|
+
"ru": "Дом Tibber",
|
|
88
|
+
"pt": "Casa Tibber",
|
|
89
|
+
"nl": "Tibber Thuis",
|
|
90
|
+
"fr": "Maison Tibber",
|
|
91
|
+
"it": "Casa Tibber",
|
|
92
|
+
"es": "Casa Tibber",
|
|
93
|
+
"pl": "Dom Tibber",
|
|
94
|
+
"uk": "Tibber Дім",
|
|
95
|
+
"zh-cn": "Tibber家"
|
|
96
|
+
},
|
|
85
97
|
"command": "HomesForConfig",
|
|
86
98
|
"attr": "homeID",
|
|
87
99
|
"filter": false,
|
|
@@ -514,6 +526,54 @@
|
|
|
514
526
|
"zh-cn": "最佳小时块"
|
|
515
527
|
},
|
|
516
528
|
"value": 3
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
"label": {
|
|
532
|
+
"en": "best cost LTF",
|
|
533
|
+
"de": "beste Kosten LTF",
|
|
534
|
+
"ru": "лучшие затраты LTF",
|
|
535
|
+
"pt": "melhor custo LTF",
|
|
536
|
+
"nl": "beste kosten LTF",
|
|
537
|
+
"fr": "meilleur coût LTF",
|
|
538
|
+
"it": "miglior costo LTF",
|
|
539
|
+
"es": "mejor costo LTF",
|
|
540
|
+
"pl": "najlepsze koszty LTF",
|
|
541
|
+
"uk": "Найкращі витрати LTF",
|
|
542
|
+
"zh-cn": "最佳成本 LTF"
|
|
543
|
+
},
|
|
544
|
+
"value": 4
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
"label": {
|
|
548
|
+
"en": "best single hours LTF",
|
|
549
|
+
"de": "beste Einzelstunden LTF",
|
|
550
|
+
"ru": "лучшие одиночные часы LTF",
|
|
551
|
+
"pt": "melhores horas únicas LTF",
|
|
552
|
+
"nl": "beste enkele uren LTF",
|
|
553
|
+
"fr": "meilleures heures uniques LTF",
|
|
554
|
+
"it": "migliori ore singole LTF",
|
|
555
|
+
"es": "mejores horas individuales LTF",
|
|
556
|
+
"pl": "najlepsze pojedyncze godziny LTF",
|
|
557
|
+
"uk": "кращі одиничні години LTF",
|
|
558
|
+
"zh-cn": "最佳单个小时 LTF"
|
|
559
|
+
},
|
|
560
|
+
"value": 5
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
"label": {
|
|
564
|
+
"en": "best hours block LTF",
|
|
565
|
+
"de": "beste Stundenblock LTF",
|
|
566
|
+
"ru": "лучший часовой блок LTF",
|
|
567
|
+
"pt": "melhor bloco de horas LTF",
|
|
568
|
+
"nl": "beste uren blok LTF",
|
|
569
|
+
"fr": "meilleur bloc d'heures LTF",
|
|
570
|
+
"it": "miglior blocco di ore LTF",
|
|
571
|
+
"es": "mejor bloque de horas LTF",
|
|
572
|
+
"pl": "najlepszy blok godzin LTF",
|
|
573
|
+
"uk": "кращий годинний блок LTF",
|
|
574
|
+
"zh-cn": "最佳小时块 LTF"
|
|
575
|
+
},
|
|
576
|
+
"value": 6
|
|
517
577
|
}
|
|
518
578
|
],
|
|
519
579
|
"filter": false,
|
|
@@ -535,7 +595,7 @@
|
|
|
535
595
|
"uk": "Назва каналу",
|
|
536
596
|
"zh-cn": "通道名称"
|
|
537
597
|
},
|
|
538
|
-
"maxLength":
|
|
598
|
+
"maxLength": 25,
|
|
539
599
|
"attr": "chName",
|
|
540
600
|
"filter": false,
|
|
541
601
|
"sort": false,
|
|
@@ -702,17 +762,17 @@
|
|
|
702
762
|
"type": "staticText",
|
|
703
763
|
"hidden": "!data.UseCalculator",
|
|
704
764
|
"label": {
|
|
705
|
-
"en": "Outputs
|
|
706
|
-
"de": "Ausgaben
|
|
707
|
-
"ru": "
|
|
708
|
-
"pt": "Saídas
|
|
709
|
-
"nl": "Uitvoer
|
|
710
|
-
"fr": "Sorties
|
|
711
|
-
"it": "Uscite
|
|
712
|
-
"es": "Salidas
|
|
713
|
-
"pl": "Wyniki
|
|
714
|
-
"uk": "
|
|
715
|
-
"zh-cn": "
|
|
765
|
+
"en": "<b>Outputs:</b>",
|
|
766
|
+
"de": "<b>Ausgaben:</b>",
|
|
767
|
+
"ru": "<b>Вывод:</b>",
|
|
768
|
+
"pt": "<b>Saídas:</b>",
|
|
769
|
+
"nl": "<b>Uitvoer:</b>",
|
|
770
|
+
"fr": "<b>Sorties:</b>",
|
|
771
|
+
"it": "<b>Uscite:</b>",
|
|
772
|
+
"es": "<b>Salidas:</b>",
|
|
773
|
+
"pl": "<b>Wyniki:</b>",
|
|
774
|
+
"uk": "<b>Виводи:</b>",
|
|
775
|
+
"zh-cn": "<b>输出:</b>"
|
|
716
776
|
},
|
|
717
777
|
"newLine": true
|
|
718
778
|
},
|
|
@@ -720,17 +780,17 @@
|
|
|
720
780
|
"type": "staticText",
|
|
721
781
|
"hidden": "!data.UseCalculator",
|
|
722
782
|
"label": {
|
|
723
|
-
"en": " 'Best cost':
|
|
724
|
-
"de": " 'Beste Kosten': Verwendet
|
|
725
|
-
"ru": " 'Лучшие затраты': Использует
|
|
726
|
-
"pt": " 'Melhor custo':
|
|
727
|
-
"nl": " 'Beste
|
|
728
|
-
"fr": " 'Meilleur coût': Utilise l'
|
|
729
|
-
"it": " 'Miglior costo': Utilizza
|
|
730
|
-
"es": " 'Mejor costo': Utiliza el
|
|
731
|
-
"pl": " 'Najlepszy koszt':
|
|
732
|
-
"uk": " '
|
|
733
|
-
"zh-cn": "
|
|
783
|
+
"en": " 'Best cost': Utilizes the 'TriggerPrice' object as input, producing a 'YES' output every hour when the current Tibber energy cost is below the trigger price",
|
|
784
|
+
"de": " 'Beste Kosten': Verwendet das Objekt 'TriggerPrice' als Eingabe und erzeugt jede Stunde eine 'YES'-Ausgabe, wenn die aktuellen Tibber-Energiekosten unter dem Auslösepreis liegen",
|
|
785
|
+
"ru": " 'Лучшие затраты': Использует объект 'TriggerPrice' в качестве входных данных, выдающее 'YES' каждый час, когда текущая стоимость энергии Tibber ниже цены триггера",
|
|
786
|
+
"pt": " 'Melhor custo': Utiliza o objeto 'TriggerPrice' como entrada, produzindo uma saída 'YES' a cada hora quando o custo de energia atual da Tibber estiver abaixo do preço de gatilho",
|
|
787
|
+
"nl": " 'Beste kost': Gebruikt het object 'TriggerPrice' als invoer, geeft elke uur een 'JA'-uitvoer wanneer de huidige Tibber energiekosten onder de drempelprijs liggen",
|
|
788
|
+
"fr": " 'Meilleur coût': Utilise l'objet 'TriggerPrice' comme entrée, produisant une sortie 'YES' chaque heure lorsque le coût actuel de l'énergie Tibber est inférieur au prix déclencheur",
|
|
789
|
+
"it": " 'Miglior costo': Utilizza l'oggetto 'TriggerPrice' come input, producendo un output 'YES' ogni ora quando il costo energetico corrente di Tibber è inferiore al prezzo di trigger",
|
|
790
|
+
"es": " 'Mejor costo': Utiliza el objeto 'TriggerPrice' como entrada, produciendo una salida 'YES' cada hora cuando el costo actual de la energía Tibber está por debajo del precio de activación",
|
|
791
|
+
"pl": " 'Najlepszy koszt': Wykorzystuje obiekt 'TriggerPrice' jako wejście, generując wyjście 'YES' co godzinę, gdy aktualny koszt energii Tibber jest poniżej ceny wyzwalacza",
|
|
792
|
+
"uk": " 'Best cost': Використовує об'єкт 'TriggerPrice' як вхідні дані, видає 'YES' кожну годину, коли поточна вартість енергії Tibber нижче тригер-ціни",
|
|
793
|
+
"zh-cn": " '最佳成本':使用'TriggerPrice'对象作为输入,当当前Tibber能源成本低于触发价格时,每小时产生'YES'输出"
|
|
734
794
|
},
|
|
735
795
|
"newLine": true
|
|
736
796
|
},
|
|
@@ -738,17 +798,17 @@
|
|
|
738
798
|
"type": "staticText",
|
|
739
799
|
"hidden": "!data.UseCalculator",
|
|
740
800
|
"label": {
|
|
741
|
-
"en": " 'Best single hours'
|
|
742
|
-
"de": " 'Beste Einzelstunden'
|
|
743
|
-
"ru": " 'Лучшие часы'
|
|
744
|
-
"pt": " 'Melhores horas únicas'
|
|
745
|
-
"nl": " 'Beste enkele uren'
|
|
746
|
-
"fr": " 'Meilleures heures
|
|
747
|
-
"it": " 'Migliori ore singole'
|
|
748
|
-
"es": " 'Mejores horas individuales'
|
|
749
|
-
"pl": " 'Najlepsze pojedyncze godziny'
|
|
750
|
-
"uk": " 'Найкращі години'
|
|
751
|
-
"zh-cn": "
|
|
801
|
+
"en": " 'Best single hours': Generates a 'YES' output during the least expensive hours, with the number defined in the 'AmountHours' object",
|
|
802
|
+
"de": " 'Beste Einzelstunden': Erzeugt eine 'YES'-Ausgabe während der kostengünstigsten Stunden, mit der im Objekt 'AmountHours' definierten Anzahl",
|
|
803
|
+
"ru": " 'Лучшие одиночные часы': Генерирует выход 'YES' во время наименее дорогих часов, с количеством, определенным в объекте 'AmountHours'",
|
|
804
|
+
"pt": " 'Melhores horas únicas': Gera uma saída 'YES' durante as horas menos caras, com o número definido no objeto 'AmountHours'",
|
|
805
|
+
"nl": " 'Beste enkele uren': Genereert een 'JA'-uitvoer tijdens de goedkoopste uren, met het aantal gedefinieerd in het object 'AmountHours'",
|
|
806
|
+
"fr": " 'Meilleures heures uniques': Génère une sortie 'YES' pendant les heures les moins chères, avec le nombre défini dans l'objet 'AmountHours'",
|
|
807
|
+
"it": " 'Migliori ore singole': Genera un'uscita 'YES' durante le ore meno costose, con il numero definito nell'oggetto 'AmountHours'",
|
|
808
|
+
"es": " 'Mejores horas individuales': Genera una salida 'YES' durante las horas menos costosas, con el número definido en el objeto 'AmountHours'",
|
|
809
|
+
"pl": " 'Najlepsze pojedyncze godziny': Generuje wyjście 'YES' w trakcie najtańszych godzin, z liczbą określoną w obiekcie 'AmountHours'",
|
|
810
|
+
"uk": " 'Найкращі одиночні години': Генерує вихід 'YES' протягом найменш дорогих годин, з числом, визначеним у об'єкті 'AmountHours'",
|
|
811
|
+
"zh-cn": " '最佳单小时': 在最便宜的小时内生成'YES'输出,其数量在'AmountHours'对象中定义"
|
|
752
812
|
},
|
|
753
813
|
"newLine": true
|
|
754
814
|
},
|
|
@@ -756,17 +816,89 @@
|
|
|
756
816
|
"type": "staticText",
|
|
757
817
|
"hidden": "!data.UseCalculator",
|
|
758
818
|
"label": {
|
|
759
|
-
"en": " 'Best hours block'
|
|
760
|
-
"de": " 'Bester Stundenblock'
|
|
761
|
-
"ru": " 'Лучший
|
|
762
|
-
"pt": " 'Melhor bloco de horas'
|
|
763
|
-
"nl": " 'Beste uren blok'
|
|
764
|
-
"fr": " 'Meilleur bloc d'heures'
|
|
765
|
-
"it": " 'Miglior blocco di ore'
|
|
766
|
-
"es": " 'Mejor bloque de horas'
|
|
767
|
-
"pl": " 'Najlepszy blok godzin'
|
|
768
|
-
"uk": " 'Кращий
|
|
769
|
-
"zh-cn": "
|
|
819
|
+
"en": " 'Best hours block': Outputs 'YES' during the most cost-effective block of hours, with the number of hours specified in the 'AmountHours' object",
|
|
820
|
+
"de": " 'Bester Stundenblock': Gibt 'YES' während des kostengünstigsten Stundenblocks aus, mit der im Objekt 'AmountHours' festgelegten Anzahl von Stunden",
|
|
821
|
+
"ru": " 'Лучший блок часов': Выводит 'YES' во время наиболее эффективного по стоимости блока часов, с указанием количества часов в объекте 'AmountHours'",
|
|
822
|
+
"pt": " 'Melhor bloco de horas': Gera 'YES' durante o bloco de horas mais econômico, com o número de horas especificado no objeto 'AmountHours'",
|
|
823
|
+
"nl": " 'Beste uren blok': Geeft 'JA' uit tijdens het meest kosteneffectieve blok van uren, met het aantal uur gespecificeerd in het object 'AmountHours'",
|
|
824
|
+
"fr": " 'Meilleur bloc d'heures': Produit 'YES' pendant le bloc d'heures le plus rentable, avec le nombre d'heures spécifié dans l'objet 'AmountHours'",
|
|
825
|
+
"it": " 'Miglior blocco di ore': Emette un'uscita 'YES' durante il blocco di ore più conveniente, con il numero di ore specificato nell'oggetto 'AmountHours'",
|
|
826
|
+
"es": " 'Mejor bloque de horas': Genera 'YES' durante el bloque de horas más rentable, con el número de horas especificado en el objeto 'AmountHours'",
|
|
827
|
+
"pl": " 'Najlepszy blok godzin': Generuje 'YES' podczas najbardziej opłacalnego bloku godzin, z liczbą godzin określoną w obiekcie 'AmountHours'",
|
|
828
|
+
"uk": " 'Кращий блок годин': Виводить 'YES' під час найбільш вигідного блоку годин, із зазначенням кількості годин у об'єкті 'AmountHours'",
|
|
829
|
+
"zh-cn": " '最佳时段': 在最经济的小时内输出'YES',在'AmountHours'对象中指定的小时数"
|
|
830
|
+
},
|
|
831
|
+
"newLine": true
|
|
832
|
+
},
|
|
833
|
+
"_calculatorhelp10": {
|
|
834
|
+
"type": "staticText",
|
|
835
|
+
"hidden": "!data.UseCalculator",
|
|
836
|
+
"label": {
|
|
837
|
+
"en": " 'Best cost LTF': 'Best cost' within a Limited Time Frame (LTF)",
|
|
838
|
+
"de": " 'Beste Kosten LTF': 'Beste Kosten' innerhalb eines begrenzten Zeitrahmens (LTF)",
|
|
839
|
+
"ru": " 'Лучшие затраты LTF': 'Лучшие затраты' в пределах ограниченного временного интервала (LTF)",
|
|
840
|
+
"pt": " 'Melhor custo LTF': 'Melhor custo' dentro de um quadro de tempo limitado (LTF)",
|
|
841
|
+
"nl": " 'Beste kosten LTF': 'Beste kosten' binnen een beperkt tijdsbestek (LTF)",
|
|
842
|
+
"fr": " 'Meilleur coût LTF': 'Meilleur coût' dans un cadre temporel limité (LTF)",
|
|
843
|
+
"it": " 'Miglior costo LTF': 'Miglior costo' all'interno di un periodo di tempo limitato (LTF)",
|
|
844
|
+
"es": " 'Mejor costo LTF': 'Mejor costo' dentro de un Marco de Tiempo Limitado (LTF)",
|
|
845
|
+
"pl": " 'Najlepsze koszty LTF': 'Najlepsze koszty' w ramach ograniczonego okresu czasu (LTF)",
|
|
846
|
+
"uk": " 'Найкращі витрати LTF': 'Найкращі витрати' в межах обмеженого часового проміжку (LTF)",
|
|
847
|
+
"zh-cn": " '最佳成本 LTF': 在有限时间范围内的'最佳成本' (LTF)"
|
|
848
|
+
},
|
|
849
|
+
"newLine": true
|
|
850
|
+
},
|
|
851
|
+
"_calculatorhelp11": {
|
|
852
|
+
"type": "staticText",
|
|
853
|
+
"hidden": "!data.UseCalculator",
|
|
854
|
+
"label": {
|
|
855
|
+
"en": " 'Best single hours LTF': 'Best single hours' within a Limited Time Frame (LTF)",
|
|
856
|
+
"de": " 'Beste Einzelstunden LTF': 'Beste Einzelstunden' innerhalb eines begrenzten Zeitrahmens (LTF)",
|
|
857
|
+
"ru": " 'Лучшие одиночные часы LTF': 'Лучшие одиночные часы' в пределах ограниченного временного интервала (LTF)",
|
|
858
|
+
"pt": " 'Melhores horas únicas LTF': 'Melhores horas únicas' dentro de um quadro de tempo limitado (LTF)",
|
|
859
|
+
"nl": " 'Beste enkele uren LTF': 'Beste enkele uren' binnen een beperkt tijdsbestek (LTF)",
|
|
860
|
+
"fr": " 'Meilleures heures uniques LTF': 'Meilleures heures uniques' dans un cadre temporel limité (LTF)",
|
|
861
|
+
"it": " 'Miglior ore singole LTF': 'Miglior ore singole' all'interno di un periodo di tempo limitato (LTF)",
|
|
862
|
+
"es": " 'Mejor horas individuales LTF': 'Mejor horas individuales' dentro de un Marco de Tiempo Limitado (LTF)",
|
|
863
|
+
"pl": " 'Najlepsze pojedyncze godziny LTF': 'Najlepsze pojedyncze godziny' w ramach ograniczonego okresu czasu (LTF)",
|
|
864
|
+
"uk": " 'Найкращі одиночні години LTF': 'Найкращі одиночні години' в межах обмеженого часового проміжку (LTF)",
|
|
865
|
+
"zh-cn": " '最佳单小时 LTF': 在有限时间范围内的'最佳单小时' (LTF)"
|
|
866
|
+
},
|
|
867
|
+
"newLine": true
|
|
868
|
+
},
|
|
869
|
+
"_calculatorhelp12": {
|
|
870
|
+
"type": "staticText",
|
|
871
|
+
"hidden": "!data.UseCalculator",
|
|
872
|
+
"label": {
|
|
873
|
+
"en": " 'Best hours block LTF': 'Best hours block' within a Limited Time Frame (LTF)",
|
|
874
|
+
"de": " 'Bester Stundenblock LTF': 'Bester Stundenblock' innerhalb eines begrenzten Zeitrahmens (LTF)",
|
|
875
|
+
"ru": " 'Лучший блок часов LTF': 'Лучший блок часов' в пределах ограниченного временного интервала (LTF)",
|
|
876
|
+
"pt": " 'Melhor bloco de horas LTF': 'Melhor bloco de horas' dentro de um quadro de tempo limitado (LTF)",
|
|
877
|
+
"nl": " 'Beste uren blok LTF': 'Beste uren blok' binnen een beperkt tijdsbestek (LTF)",
|
|
878
|
+
"fr": " 'Meilleur bloc d'heures LTF': 'Meilleur bloc d'heures' dans un cadre temporel limité (LTF)",
|
|
879
|
+
"it": " 'Miglior blocco di ore LTF': 'Miglior blocco di ore' all'interno di un periodo di tempo limitato (LTF)",
|
|
880
|
+
"es": " 'Mejor bloque de horas LTF': 'Mejor bloque de horas' dentro de un Marco de Tiempo Limitado (LTF)",
|
|
881
|
+
"pl": " 'Najlepszy blok godzin LTF': 'Najlepszy blok godzin' w ramach ograniczonego okresu czasu (LTF)",
|
|
882
|
+
"uk": " 'Найкращий блок годин LTF': 'Найкращий блок годин' в межах обмеженого часового проміжку (LTF)",
|
|
883
|
+
"zh-cn": " '最佳时段 LTF': 在有限时间范围内的'最佳时段' (LTF)"
|
|
884
|
+
},
|
|
885
|
+
"newLine": true
|
|
886
|
+
},
|
|
887
|
+
"_calculatorhelp13": {
|
|
888
|
+
"type": "staticText",
|
|
889
|
+
"hidden": "!data.UseCalculator",
|
|
890
|
+
"label": {
|
|
891
|
+
"en": "LTF channels: Function similarly to standard channels but only operate within a time frame defined by the 'StartTime' and 'StopTime' state objects. After 'StopTime,' the channel deactivates itself. 'StartTime' and 'StopTime' may span over several days. The states must be filled with a date-time string in ISO-8601 format with a timezone offset, such as: '2023-11-17T21:00:00.000+01:00'",
|
|
892
|
+
"de": "LTF-Kanäle: Funktionieren ähnlich wie Standardkanäle, arbeiten jedoch nur innerhalb eines durch die Statusobjekte 'StartTime' und 'StopTime' definierten Zeitrahmens. Nach 'StopTime' deaktiviert sich der Kanal selbst. 'StartTime' und 'StopTime' können sich über mehrere Tage erstrecken. Die Zustände müssen mit einem Datum-Zeit-String im ISO-8601-Format mit einem Zeitzonenoffset gefüllt sein, z. B .: '2023-11-17T21:00:00.000+01:00'",
|
|
893
|
+
"ru": "LTF-каналы: Функционируют аналогично стандартным каналам, но работают только в пределах временного интервала, определенного объектами состояний 'StartTime' и 'StopTime'. После 'StopTime' канал деактивируется сам. 'StartTime' и 'StopTime' могут охватывать несколько дней. Состояния должны быть заполнены строкой даты-времени в формате ISO-8601 с смещением часового пояса, например: '2023-11-17T21:00:00.000+01:00'",
|
|
894
|
+
"pt": "Canais LTF: Funcionam de maneira semelhante aos canais padrão, mas operam apenas dentro de um intervalo de tempo definido pelos objetos de estado 'StartTime' e 'StopTime'. Após 'StopTime', o canal se desativa. 'StartTime' e 'StopTime' podem abranger vários dias. Os estados devem ser preenchidos com uma string de data e hora no formato ISO-8601 com um deslocamento de fuso horário, como: '2023-11-17T21:00:00.000+01:00'",
|
|
895
|
+
"nl": "LTF-kanalen: Functioneren op dezelfde manier als standaardkanalen, maar werken alleen binnen een tijdsbestek dat wordt gedefinieerd door de toestelobjecten 'StartTime' en 'StopTime'. Na 'StopTime' deactiveert het kanaal zichzelf. 'StartTime' en 'StopTime' kunnen zich over meerdere dagen uitstrekken. De staten moeten worden gevuld met een datum-tijdreeks in ISO-8601-indeling met een tijdzoneverschil, zoals: '2023-11-17T21:00:00.000+01:00'",
|
|
896
|
+
"fr": "Canaux LTF : Fonctionnent de manière similaire aux canaux standard mais n'opèrent que dans une plage horaire définie par les objets d'état 'StartTime' et 'StopTime'. Après 'StopTime', le canal se désactive. 'StartTime' et 'StopTime' peuvent s'étendre sur plusieurs jours. Les états doivent être remplis avec une chaîne de date-heure au format ISO-8601 avec un décalage de fuseau horaire, par exemple : '2023-11-17T21:00:00.000+01:00'",
|
|
897
|
+
"it": "Canali LTF: Funzionano in modo simile ai canali standard ma operano solo all'interno di un periodo definito dagli oggetti di stato 'StartTime' e 'StopTime'. Dopo 'StopTime', il canale si disattiva. 'StartTime' e 'StopTime' possono estendersi su più giorni. Gli stati devono essere compilati con una stringa di data e ora nel formato ISO-8601 con un offset di fuso orario, ad esempio: '2023-11-17T21:00:00.000+01:00'",
|
|
898
|
+
"es": "Canales LTF: Funcionan de manera similar a los canales estándar, pero solo operan dentro de un marco de tiempo definido por los objetos de estado 'StartTime' y 'StopTime'. Después de 'StopTime', el canal se desactiva. 'StartTime' y 'StopTime' pueden abarcar varios días. Los estados deben llenarse con una cadena de fecha y hora en formato ISO-8601 con un desplazamiento de zona horaria, como: '2023-11-17T21:00:00.000+01:00'",
|
|
899
|
+
"pl": "Kanały LTF: Działają podobnie jak standardowe kanały, ale działają tylko w oknie czasowym określonym przez obiekty stanu 'StartTime' i 'StopTime'. Po 'StopTime' kanał dezaktywuje się. 'StartTime' i 'StopTime' mogą obejmować kilka dni. Stany muszą być wypełnione ciągiem daty i godziny w formacie ISO-8601 z przesunięciem strefy czasowej, na przykład: '2023-11-17T21:00:00.000+01:00'",
|
|
900
|
+
"uk": "LTF-канали: Функціонують аналогічно стандартним каналам, але працюють лише в межах часового інтервалу, визначеного об'єктами стану 'StartTime' та 'StopTime'. Після 'StopTime' канал деактивується. 'StartTime' та 'StopTime' можуть охоплювати кілька днів. Стани повинні бути заповнені рядком дати та часу в форматі ISO-8601 з часовим поясом, наприклад: '2023-11-17T21:00:00.000+01:00'",
|
|
901
|
+
"zh-cn": "LTF通道:与标准通道类似,但仅在由'StartTime'和'StopTime'状态对象定义的时间范围内运行。在'StopTime'后,通道将自动停用。 'StartTime'和'StopTime'可能跨越多天。状态必须填写ISO-8601格式的带有时区偏移的日期时间字符串,例如:'2023-11-17T21:00:00.000+01:00'"
|
|
770
902
|
},
|
|
771
903
|
"newLine": true
|
|
772
904
|
}
|