iobroker.tibberlink 1.3.0 → 1.4.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/README.md +33 -20
- package/admin/calculatorStates.png +0 -0
- package/admin/i18n/de/translations.json +0 -8
- package/admin/i18n/en/translations.json +0 -8
- package/admin/i18n/es/translations.json +0 -8
- package/admin/i18n/fr/translations.json +0 -8
- package/admin/i18n/it/translations.json +0 -8
- package/admin/i18n/nl/translations.json +0 -8
- package/admin/i18n/pl/translations.json +0 -8
- package/admin/i18n/pt/translations.json +0 -8
- package/admin/i18n/ru/translations.json +0 -8
- package/admin/i18n/uk/translations.json +0 -8
- package/admin/i18n/zh-cn/translations.json +0 -8
- package/admin/jsonConfig.json +105 -9
- package/build/lib/tibberAPICaller.js +43 -9
- package/build/lib/tibberAPICaller.js.map +1 -1
- package/build/lib/tibberCalculator.js +17 -3
- package/build/lib/tibberCalculator.js.map +1 -1
- package/build/lib/tibberHelper.js +19 -26
- package/build/lib/tibberHelper.js.map +1 -1
- package/build/lib/tibberPulse.js +10 -9
- package/build/lib/tibberPulse.js.map +1 -1
- package/build/main.js +28 -49
- package/build/main.js.map +1 -1
- package/io-package.json +27 -27
- package/package.json +11 -11
package/README.md
CHANGED
|
@@ -15,44 +15,57 @@
|
|
|
15
15
|
|
|
16
16
|
[](https://nodei.co/npm/iobroker.tibberlink/)
|
|
17
17
|
|
|
18
|
-
## Adapter for
|
|
18
|
+
## Adapter for Utilizing TIBBER energy data in ioBroker
|
|
19
19
|
|
|
20
|
-
This adapter
|
|
20
|
+
This adapter facilitates the connection of data from your Tibber account's API to be used within ioBroker, whether for a single home or multiple residences.
|
|
21
21
|
|
|
22
|
-
If you're not a Tibber user
|
|
23
|
-
[https://invite.tibber.com/2gwuign3.](https://invite.tibber.com/2gwuign3.)
|
|
22
|
+
If you're not currently a Tibber user, I would greatly appreciate it if you could use my referral link: [Tibber Referral Link](https://invite.tibber.com/mu8c82n5).
|
|
24
23
|
|
|
25
24
|
## Standard Configuration
|
|
26
25
|
|
|
27
|
-
-
|
|
28
|
-
- You
|
|
29
|
-
- Enter your Tibber API token in the standard settings and
|
|
30
|
-
- Save the settings and exit the
|
|
31
|
-
- Return to the configuration screen and select the homes from which you
|
|
26
|
+
- Begin by creating a new instance of the adapter.
|
|
27
|
+
- You'll also require an API token from Tibber, which you can obtain here: [Tibber Developer API](https://developer.tibber.com).
|
|
28
|
+
- Enter your Tibber API token in the standard settings and configure at least one line for live feed settings (select "None available").
|
|
29
|
+
- Save the settings and exit the configuration to restart the adapter; this step allows your home(s) to be queried from the Tibber server.
|
|
30
|
+
- Return to the configuration screen and select the homes from which you wish to fetch real-time data using your Tibber Pulse. You can also select homes and disable the feed (Note: This works only if the hardware is installed and the Tibber server has verified the connection to Pulse).
|
|
32
31
|
- Save the settings.
|
|
33
32
|
|
|
34
33
|
## Calculator Configuration
|
|
35
34
|
|
|
36
|
-
-
|
|
37
|
-
- The Calculator
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
- The
|
|
41
|
-
|
|
42
|
-
- The
|
|
35
|
+
- Now that the Tibber connection is up and running, you can also leverage the Calculator to incorporate additional automation features into the TibberLink adapter.
|
|
36
|
+
- The Calculator operates using channels, with each channel linked to a selected home.
|
|
37
|
+
- These channels can be activated or deactivated based on corresponding states.
|
|
38
|
+
- These states are designed to serve as external, dynamic inputs for TibberLink, allowing you to, for example, adjust the marginal cost ("TriggerPrice") from an external source or disable the calculator channel ("Active").
|
|
39
|
+
- The states of a calculator channel are positioned adjacent to the home states and named according to the channel number.
|
|
40
|
+

|
|
41
|
+
- The behavior of each channel is determined by its type: "best cost," "best single hours," or "best hours block".
|
|
42
|
+
- 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.
|
|
43
|
+
- 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.
|
|
43
44
|
- Outputs:
|
|
44
|
-
- "Best cost":
|
|
45
|
-
- "Best single hours"
|
|
46
|
-
- "Best hours block"
|
|
45
|
+
- "Best cost": Utilizes the "TriggerPrice" state as input, and the output is "YES" every hour when the current Tibber energy cost is below the trigger price.
|
|
46
|
+
- "Best single hours": The output is "YES" during the cheapest number of hours, with the number defined in the "AmountHours" state.
|
|
47
|
+
- "Best hours block": The output is "YES" during the best block of hours, with the number of hours defined in the "AmountHours" state.
|
|
47
48
|
|
|
48
49
|
## Notes
|
|
49
50
|
|
|
50
|
-
This adapter
|
|
51
|
+
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.
|
|
51
52
|
|
|
52
53
|
## Changelog
|
|
53
54
|
|
|
54
55
|
! Note that missing version entries are typically dependency updates for improved security.
|
|
55
56
|
|
|
57
|
+
### 1.4.0 (2023-10-24)
|
|
58
|
+
|
|
59
|
+
- (HombachC) implement min/max states (#131)
|
|
60
|
+
- (HombachC) fix error with ignored calculator channel deaktivations (#143)
|
|
61
|
+
- (HombachC) optimize translation handling, code cleanup
|
|
62
|
+
|
|
63
|
+
### 1.3.1 (2023-10-21)
|
|
64
|
+
|
|
65
|
+
- (HombachC) fix initialisiation of channel states (#141)
|
|
66
|
+
- (HombachC) change message "reconnect successful" to level info (#80)
|
|
67
|
+
- (HombachC) documentation tweaks - dependency updates
|
|
68
|
+
|
|
56
69
|
### 1.3.0 (2023-10-20)
|
|
57
70
|
|
|
58
71
|
- (HombachC) implement tibber calculator mode "best hours block" (#16)
|
|
Binary file
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"s_StandardSettings": "Standard-Einstellungen",
|
|
3
|
-
"s_ReferalLink": "Wenn Sie derzeit kein Tibber-Benutzer sind, würden ich es sehr schätzen, wenn Sie meinen Empfehlungslink verwenden.",
|
|
4
|
-
"s_TibberAPIToken": "Token für die Tibber-API",
|
|
5
|
-
"s_HomesFeedTable": "Konfiguration der Pulse-Live-Datenströme",
|
|
6
2
|
"s_Home": "Tibber Zuhause",
|
|
7
|
-
"s_PulseActive": "Tibber Pulse für dieses Zuhause verwenden",
|
|
8
|
-
"s_SelectFieldsForFeed": "Wählen Sie alle Felder aus, die Sie in den Feed-Daten laden möchten (Leistung und Zeitstempel sind Standard):",
|
|
9
|
-
"s_PhasesExplanation": "Spannungs- und Stromwerte - auf mehreren Zählern sind diese Werte nicht Teil des Datenrahmens, daher können die Werte null sein. Es können andere Abweichungen aufgrund der konkreten Zähler-Firmware auftreten. Nullwerte generieren überhaupt keinen Status in Ihren ioBroker-Objekten.",
|
|
10
|
-
"s_CalculatorSettings": "Automatisierungs-Einstellungen",
|
|
11
3
|
"s_CalculatorChannels": "Automatisierungs-Kanäle",
|
|
12
4
|
"s_UseCalculator": "Automatisierung verwenden",
|
|
13
5
|
"s_ChannelHome": "Kanal Zuhause",
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"s_StandardSettings": "Standard settings",
|
|
3
|
-
"s_ReferalLink": "If you're not a Tibber user right now, it's greatly appreciated when you're using my reveral link.",
|
|
4
|
-
"s_TibberAPIToken": "token for Tibber api",
|
|
5
|
-
"s_HomesFeedTable": "Configuration of Pulse live data streams",
|
|
6
2
|
"s_Home": "Tibber Home",
|
|
7
|
-
"s_PulseActive": "use Tibber pulse for this home",
|
|
8
|
-
"s_SelectFieldsForFeed": "Select all fields you want to load in feed data (power and timestamp are default):",
|
|
9
|
-
"s_PhasesExplanation": "Voltage and current values - on several meters these values are not part of the data frame, therefore the values might be null. There can be other deviations based on concrete meter firmware. Null values won't generate a state in your ioBroker objects at all.",
|
|
10
|
-
"s_CalculatorSettings": "Calculator settings",
|
|
11
3
|
"s_CalculatorChannels": "Calculator Channels",
|
|
12
4
|
"s_UseCalculator": "Use Calculator",
|
|
13
5
|
"s_ChannelHome": "Channel Home",
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"s_StandardSettings": "Configuración estándar",
|
|
3
|
-
"s_ReferalLink": "Si en este momento no eres un usuario de Tibber, te agradecemos mucho si usas nuestro enlace de referencia.",
|
|
4
|
-
"s_TibberAPIToken": "Token para la API de Tibber",
|
|
5
|
-
"s_HomesFeedTable": "Configuración de los flujos de datos en vivo de Pulse",
|
|
6
2
|
"s_Home": "Casa Tibber",
|
|
7
|
-
"s_PulseActive": "Usar Tibber Pulse para esta casa",
|
|
8
|
-
"s_SelectFieldsForFeed": "Selecciona todos los campos que deseas cargar en los datos del feed (la potencia y la marca de tiempo son los valores predeterminados):",
|
|
9
|
-
"s_PhasesExplanation": "Valores de voltaje y corriente - en varios medidores, estos valores no forman parte del marco de datos, por lo que los valores pueden ser nulos. Puede haber otras desviaciones basadas en el firmware del medidor concreto. Los valores nulos no generarán un estado en tus objetos ioBroker.",
|
|
10
|
-
"s_CalculatorSettings": "Configuración de automatización",
|
|
11
3
|
"s_CalculatorChannels": "Canales de automatización",
|
|
12
4
|
"s_UseCalculator": "Usar automatización",
|
|
13
5
|
"s_ChannelHome": "Canal Casa",
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"s_StandardSettings": "Paramètres standards",
|
|
3
|
-
"s_ReferalLink": "Si vous n'êtes pas actuellement un utilisateur de Tibber, nous vous en serions très reconnaissants si vous utilisiez mon lien de parrainage.",
|
|
4
|
-
"s_TibberAPIToken": "Jeton pour l'API Tibber",
|
|
5
|
-
"s_HomesFeedTable": "Configuration des flux de données en direct de Pulse",
|
|
6
2
|
"s_Home": "Maison Tibber",
|
|
7
|
-
"s_PulseActive": "Utiliser Tibber Pulse pour cette maison",
|
|
8
|
-
"s_SelectFieldsForFeed": "Sélectionnez tous les champs que vous souhaitez charger dans les données du flux (la puissance et l'horodatage sont les valeurs par défaut) :",
|
|
9
|
-
"s_PhasesExplanation": "Valeurs de tension et de courant - sur plusieurs compteurs, ces valeurs ne font pas partie du cadre de données, donc les valeurs peuvent être nulles. Il peut y avoir d'autres écarts en fonction du firmware du compteur concret. Les valeurs nulles ne généreront aucun état dans vos objets ioBroker.",
|
|
10
|
-
"s_CalculatorSettings": "Paramètres d'automatisation",
|
|
11
3
|
"s_CalculatorChannels": "Canaux d'automatisation",
|
|
12
4
|
"s_UseCalculator": "Utiliser l'automatisation",
|
|
13
5
|
"s_ChannelHome": "Canal Maison",
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"s_StandardSettings": "Impostazioni standard",
|
|
3
|
-
"s_ReferalLink": "Se al momento non sei un utente Tibber, apprezziamo molto se utilizzi il nostro link di riferimento.",
|
|
4
|
-
"s_TibberAPIToken": "Token per l'API di Tibber",
|
|
5
|
-
"s_HomesFeedTable": "Configurazione dei flussi di dati live di Pulse",
|
|
6
2
|
"s_Home": "Casa Tibber",
|
|
7
|
-
"s_PulseActive": "Utilizza Tibber Pulse per questa casa",
|
|
8
|
-
"s_SelectFieldsForFeed": "Seleziona tutti i campi che desideri caricare nei dati del feed (potenza e timestamp sono i valori predefiniti):",
|
|
9
|
-
"s_PhasesExplanation": "Valori di tensione e corrente - su diversi contatori questi valori non fanno parte del frame dati, quindi i valori potrebbero essere nulli. Potrebbero esserci altre deviazioni basate sul firmware del contatore concreto. I valori nulli non genereranno uno stato nei tuoi oggetti ioBroker.",
|
|
10
|
-
"s_CalculatorSettings": "Impostazioni di automazione",
|
|
11
3
|
"s_CalculatorChannels": "Canali di automazione",
|
|
12
4
|
"s_UseCalculator": "Utilizza l'automazione",
|
|
13
5
|
"s_ChannelHome": "Canale Casa",
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"s_StandardSettings": "Standaardinstellingen",
|
|
3
|
-
"s_ReferalLink": "Als u op dit moment geen Tibber-gebruiker bent, waarderen we het zeer als u onze verwijzingslink gebruikt.",
|
|
4
|
-
"s_TibberAPIToken": "Token voor Tibber API",
|
|
5
|
-
"s_HomesFeedTable": "Configuratie van livegegevensstromen van Pulse",
|
|
6
2
|
"s_Home": "Tibber Thuis",
|
|
7
|
-
"s_PulseActive": "Gebruik Tibber Pulse voor dit huis",
|
|
8
|
-
"s_SelectFieldsForFeed": "Selecteer alle velden die u wilt laden in de feedgegevens (vermogen en tijdstempel zijn de standaardwaarden):",
|
|
9
|
-
"s_PhasesExplanation": "Spannings- en stroomwaarden - op verschillende meters maken deze waarden geen deel uit van het gegevensframe, dus de waarden kunnen nul zijn. Er kunnen andere afwijkingen zijn op basis van de concrete meterfirmware. Nulwaarden genereren helemaal geen status in uw ioBroker-objecten.",
|
|
10
|
-
"s_CalculatorSettings": "Automatiseringsinstellingen",
|
|
11
3
|
"s_CalculatorChannels": "Automatiseringskanalen",
|
|
12
4
|
"s_UseCalculator": "Automatisering gebruiken",
|
|
13
5
|
"s_ChannelHome": "Kanaal Thuis",
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"s_StandardSettings": "Ustawienia standardowe",
|
|
3
|
-
"s_ReferalLink": "Jeśli nie jesteś obecnie użytkownikiem Tibber, bardzo byśmy to docenili, gdybyś użył mojego linku polecającego.",
|
|
4
|
-
"s_TibberAPIToken": "Token dla API Tibber",
|
|
5
|
-
"s_HomesFeedTable": "Konfiguracja strumieni danych na żywo Pulse",
|
|
6
2
|
"s_Home": "Dom Tibber",
|
|
7
|
-
"s_PulseActive": "Użyj Tibber Pulse w tym domu",
|
|
8
|
-
"s_SelectFieldsForFeed": "Wybierz wszystkie pola, które chcesz załadować do danych zasilania (moc i znacznik czasu są domyślnymi wartościami):",
|
|
9
|
-
"s_PhasesExplanation": "Wartości napięcia i prądu - na kilku licznikach te wartości nie są częścią ramki danych, dlatego wartości mogą być zerowe. Mogą wystąpić inne odstępstwa w zależności od konkretnego oprogramowania licznika. Zera nie generują stanu w twoich obiektach ioBroker.",
|
|
10
|
-
"s_CalculatorSettings": "Ustawienia automatyzacji",
|
|
11
3
|
"s_CalculatorChannels": "Kanały automatyzacji",
|
|
12
4
|
"s_UseCalculator": "Użyj automatyzacji",
|
|
13
5
|
"s_ChannelHome": "Kanał domowy",
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"s_StandardSettings": "Configurações padrão",
|
|
3
|
-
"s_ReferalLink": "Se você não é um usuário Tibber neste momento, ficaríamos muito agradecidos se você usasse o nosso link de referência.",
|
|
4
|
-
"s_TibberAPIToken": "Token para a API Tibber",
|
|
5
|
-
"s_HomesFeedTable": "Configuração de fluxos de dados ao vivo do Pulse",
|
|
6
2
|
"s_Home": "Casa Tibber",
|
|
7
|
-
"s_PulseActive": "Usar Tibber Pulse para esta casa",
|
|
8
|
-
"s_SelectFieldsForFeed": "Selecione todos os campos que deseja carregar nos dados do feed (potência e carimbo de data/hora são os valores padrão):",
|
|
9
|
-
"s_PhasesExplanation": "Valores de tensão e corrente - em vários medidores, esses valores não fazem parte do quadro de dados, portanto, os valores podem ser nulos. Pode haver outras variações com base no firmware do medidor concreto. Valores nulos não gerarão um estado em seus objetos ioBroker.",
|
|
10
|
-
"s_CalculatorSettings": "Configurações de automação",
|
|
11
3
|
"s_CalculatorChannels": "Canais de automação",
|
|
12
4
|
"s_UseCalculator": "Usar automação",
|
|
13
5
|
"s_ChannelHome": "Canal Casa",
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"s_StandardSettings": "Стандартные настройки",
|
|
3
|
-
"s_ReferalLink": "Если вы сейчас не являетесь пользователем Tibber, мы очень ценим, если вы используете мою реферальную ссылку.",
|
|
4
|
-
"s_TibberAPIToken": "Токен для API Tibber",
|
|
5
|
-
"s_HomesFeedTable": "Конфигурация потоков данных в реальном времени Pulse",
|
|
6
2
|
"s_Home": "Дом Tibber",
|
|
7
|
-
"s_PulseActive": "Использовать Tibber Pulse для этого дома",
|
|
8
|
-
"s_SelectFieldsForFeed": "Выберите все поля, которые вы хотите загрузить в данные потока (мощность и временная метка - значения по умолчанию):",
|
|
9
|
-
"s_PhasesExplanation": "Значения напряжения и тока - на нескольких счетчиках эти значения не являются частью данных, поэтому значения могут быть нулевыми. Могут быть и другие отклонения в зависимости от прошивки конкретного счетчика. Нулевые значения не будут генерировать состояние в ваших объектах ioBroker.",
|
|
10
|
-
"s_CalculatorSettings": "Настройки автоматизации",
|
|
11
3
|
"s_CalculatorChannels": "Каналы автоматизации",
|
|
12
4
|
"s_UseCalculator": "Использовать автоматизацию",
|
|
13
5
|
"s_ChannelHome": "Канал Дом",
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"s_StandardSettings": "Стандартні налаштування",
|
|
3
|
-
"s_ReferalLink": "Якщо ви не є користувачем Tibber зараз, ми дуже вдячні, якщо ви використовуєте мій реферальний посилання.",
|
|
4
|
-
"s_TibberAPIToken": "Токен для Tibber API",
|
|
5
|
-
"s_HomesFeedTable": "Конфігурація потоків живих даних Pulse",
|
|
6
2
|
"s_Home": "Tibber Дім",
|
|
7
|
-
"s_PulseActive": "Використовувати Tibber Pulse для цього будинку",
|
|
8
|
-
"s_SelectFieldsForFeed": "Виберіть всі поля, які ви хочете завантажити в дані потоку (потужність і мітка часу - значення за замовчуванням):",
|
|
9
|
-
"s_PhasesExplanation": "Значення напруги і струму - на декількох лічильниках ці значення не є частиною кадру даних, тому значення можуть бути нульовими. Можуть бути інші відхилення в залежності від прошивки конкретного лічильника. Нульові значення не будуть генерувати стан в ваших об'єктах ioBroker.",
|
|
10
|
-
"s_CalculatorSettings": "Налаштування автоматизації",
|
|
11
3
|
"s_CalculatorChannels": "Канали автоматизації",
|
|
12
4
|
"s_UseCalculator": "Використовувати автоматизацію",
|
|
13
5
|
"s_ChannelHome": "Канал Дім",
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"s_StandardSettings": "标准设置",
|
|
3
|
-
"s_ReferalLink": "如果您目前不是Tibber用户,我们非常感谢您使用我的推荐链接。",
|
|
4
|
-
"s_TibberAPIToken": "Tibber API令牌",
|
|
5
|
-
"s_HomesFeedTable": "Pulse实时数据流配置",
|
|
6
2
|
"s_Home": "Tibber家",
|
|
7
|
-
"s_PulseActive": "为此家使用Tibber Pulse",
|
|
8
|
-
"s_SelectFieldsForFeed": "选择要加载到数据流中的所有字段(功率和时间戳是默认值):",
|
|
9
|
-
"s_PhasesExplanation": "电压和电流值 - 在多个电表上,这些值不是数据帧的一部分,因此值可能为null。具体电表固件可能存在其他偏差。null值不会在您的ioBroker对象中生成状态。",
|
|
10
|
-
"s_CalculatorSettings": "自动化设置",
|
|
11
3
|
"s_CalculatorChannels": "自动化通道",
|
|
12
4
|
"s_UseCalculator": "使用自动化",
|
|
13
5
|
"s_ChannelHome": "家庭通道",
|
package/admin/jsonConfig.json
CHANGED
|
@@ -4,11 +4,35 @@
|
|
|
4
4
|
"items": {
|
|
5
5
|
"_StandardTab": {
|
|
6
6
|
"type": "panel",
|
|
7
|
-
"label":
|
|
7
|
+
"label": {
|
|
8
|
+
"en": "Standard settings",
|
|
9
|
+
"de": "Standard-Einstellungen",
|
|
10
|
+
"ru": "Стандартные настройки",
|
|
11
|
+
"pt": "Configurações padrão",
|
|
12
|
+
"nl": "Standaardinstellingen",
|
|
13
|
+
"fr": "Paramètres standard",
|
|
14
|
+
"it": "Impostazioni predefinite",
|
|
15
|
+
"es": "Configuración estándar",
|
|
16
|
+
"pl": "Ustawienia standardowe",
|
|
17
|
+
"uk": "Стандартні налаштування",
|
|
18
|
+
"zh-cn": "标准设置"
|
|
19
|
+
},
|
|
8
20
|
"items": {
|
|
9
21
|
"TibberAPIToken": {
|
|
10
22
|
"type": "text",
|
|
11
|
-
"label":
|
|
23
|
+
"label": {
|
|
24
|
+
"en": "Token for Tibber API",
|
|
25
|
+
"de": "Token für Tibber API",
|
|
26
|
+
"ru": "Токен для Tibber API",
|
|
27
|
+
"pt": "Token para a API Tibber",
|
|
28
|
+
"nl": "Token voor Tibber API",
|
|
29
|
+
"fr": "Token pour l'API Tibber",
|
|
30
|
+
"it": "Token per l'API di Tibber",
|
|
31
|
+
"es": "Token para la API de Tibber",
|
|
32
|
+
"pl": "Token do API Tibber",
|
|
33
|
+
"uk": "Токен для API Tibber",
|
|
34
|
+
"zh-cn": "Tibber API 的令牌"
|
|
35
|
+
},
|
|
12
36
|
"maxLength": 60,
|
|
13
37
|
"sm": 12,
|
|
14
38
|
"md": 6,
|
|
@@ -18,8 +42,20 @@
|
|
|
18
42
|
|
|
19
43
|
"_link": {
|
|
20
44
|
"type": "staticLink",
|
|
21
|
-
"label":
|
|
22
|
-
|
|
45
|
+
"label": {
|
|
46
|
+
"en": "If you're not currently a Tibber user, I would greatly appreciate it if you could use my referral link",
|
|
47
|
+
"de": "Wenn Sie derzeit kein Tibber-Benutzer sind, würde ich es sehr schätzen, wenn Sie meinen Empfehlungslink verwenden könnten",
|
|
48
|
+
"ru": "Если вы в настоящее время не являетесь пользователем Tibber, я был бы очень признателен, если бы вы могли использовать мою реферальную ссылку",
|
|
49
|
+
"pt": "Se você não é atualmente um usuário da Tibber, eu ficaria muito agradecido se você pudesse usar meu link de referência",
|
|
50
|
+
"nl": "Als u op dit moment geen Tibber-gebruiker bent, zou ik het zeer waarderen als u mijn verwijzingslink zou kunnen gebruiken",
|
|
51
|
+
"fr": "Si vous n'êtes pas actuellement un utilisateur de Tibber, je vous serais très reconnaissant si vous pouviez utiliser mon lien de parrainage",
|
|
52
|
+
"it": "Se al momento non sei un utente di Tibber, sarei molto grato se potessi utilizzare il mio link di riferimento",
|
|
53
|
+
"es": "Si actualmente no eres usuario de Tibber, te agradecería mucho si pudieras usar mi enlace de referencia",
|
|
54
|
+
"pl": "Jeśli obecnie nie jesteś użytkownikiem Tibber, bardzo bym docenił, gdybyś mógł skorzystać z mojego linku polecającego",
|
|
55
|
+
"uk": "Якщо ви в даний момент не є користувачем Tibber, я б вдячний, якщо ви могли б використовувати мій реферальний посилання",
|
|
56
|
+
"zh-cn": "如果您目前不是Tibber的用户,如果您能使用我的推荐链接,我将非常感激"
|
|
57
|
+
},
|
|
58
|
+
"href": "https://invite.tibber.com/mu8c82n5",
|
|
23
59
|
"newLine": true
|
|
24
60
|
},
|
|
25
61
|
|
|
@@ -28,7 +64,19 @@
|
|
|
28
64
|
"sm": 12,
|
|
29
65
|
"md": 12,
|
|
30
66
|
"lg": 12,
|
|
31
|
-
"label":
|
|
67
|
+
"label": {
|
|
68
|
+
"en": "Configuration of Pulse live data streams",
|
|
69
|
+
"de": "Konfiguration von Pulse-Live-Datenströmen",
|
|
70
|
+
"ru": "Настройка потоковых данных в режиме реального времени Pulse",
|
|
71
|
+
"pt": "Configuração de transmissões de dados ao vivo do Pulse",
|
|
72
|
+
"nl": "Configuratie van Pulse live gegevensstromen",
|
|
73
|
+
"fr": "Configuration des flux de données en direct Pulse",
|
|
74
|
+
"it": "Configurazione dei flussi di dati in tempo reale di Pulse",
|
|
75
|
+
"es": "Configuración de transmisiones de datos en tiempo real de Pulse",
|
|
76
|
+
"pl": "Konfiguracja strumieni danych na żywo Pulse",
|
|
77
|
+
"uk": "Налаштування потокових даних в режимі реального часу Pulse",
|
|
78
|
+
"zh-cn": "Pulse实时数据流配置"
|
|
79
|
+
},
|
|
32
80
|
"hidden": "!data.TibberAPIToken",
|
|
33
81
|
"items": [
|
|
34
82
|
{
|
|
@@ -43,7 +91,19 @@
|
|
|
43
91
|
},
|
|
44
92
|
{
|
|
45
93
|
"type": "checkbox",
|
|
46
|
-
"title":
|
|
94
|
+
"title": {
|
|
95
|
+
"en": "use Tibber Pulse for this home",
|
|
96
|
+
"de": "Verwenden Sie Tibber Pulse für dieses Zuhause",
|
|
97
|
+
"ru": "Используйте Tibber Pulse для этого дома",
|
|
98
|
+
"pt": "Use o Tibber Pulse para esta casa",
|
|
99
|
+
"nl": "Gebruik Tibber Pulse voor dit huis",
|
|
100
|
+
"fr": "Utilisez Tibber Pulse pour cette maison",
|
|
101
|
+
"it": "Usa Tibber Pulse per questa casa",
|
|
102
|
+
"es": "Usar Tibber Pulse para esta casa",
|
|
103
|
+
"pl": "Użyj Tibber Pulse w tym domu",
|
|
104
|
+
"uk": "Використовуйте Tibber Pulse для цього будинку",
|
|
105
|
+
"zh-cn": "为这个家使用Tibber Pulse"
|
|
106
|
+
},
|
|
47
107
|
"attr": "feedActive",
|
|
48
108
|
"filter": false,
|
|
49
109
|
"sort": false,
|
|
@@ -55,7 +115,19 @@
|
|
|
55
115
|
|
|
56
116
|
"_feedDataDetail": {
|
|
57
117
|
"type": "header",
|
|
58
|
-
"text":
|
|
118
|
+
"text": {
|
|
119
|
+
"en": "Select all fields you want to load in feed data (power and timestamp are on by default):",
|
|
120
|
+
"de": "Wählen Sie alle Felder aus, die Sie in den Feed-Daten laden möchten (Leistung und Zeitstempel sind standardmäßig aktiviert):",
|
|
121
|
+
"ru": "Выберите все поля, которые вы хотите загрузить в данные ленты (мощность и временная метка включены по умолчанию):",
|
|
122
|
+
"pt": "Selecione todos os campos que deseja carregar nos dados do feed (a potência e o carimbo de hora estão ativados por padrão):",
|
|
123
|
+
"nl": "Selecteer alle velden die u wilt laden in de feedgegevens (vermogen en tijdstempel zijn standaard ingeschakeld):",
|
|
124
|
+
"fr": "Sélectionnez tous les champs que vous souhaitez charger dans les données du flux (la puissance et l'horodatage sont activés par défaut) :",
|
|
125
|
+
"it": "Seleziona tutti i campi che desideri caricare nei dati del feed (potenza e timestamp sono attivi per impostazione predefinita):",
|
|
126
|
+
"es": "Seleccione todos los campos que desea cargar en los datos del feed (la potencia y la marca de tiempo están habilitados por defecto):",
|
|
127
|
+
"pl": "Wybierz wszystkie pola, które chcesz załadować do danych kanału (moc i znacznik czasu są domyślnie włączone):",
|
|
128
|
+
"uk": "Виберіть всі поля, які ви хочете завантажити в дані каналу (потужність та відмітка часу активовані за замовчуванням):",
|
|
129
|
+
"zh-cn": "选择要加载到数据中的所有字段(功率和时间戳默认处于启用状态):"
|
|
130
|
+
},
|
|
59
131
|
"hidden": "!data.TibberAPIToken",
|
|
60
132
|
"size": 3
|
|
61
133
|
},
|
|
@@ -211,7 +283,19 @@
|
|
|
211
283
|
"_phases": {
|
|
212
284
|
"type": "staticText",
|
|
213
285
|
"hidden": "!data.TibberAPIToken",
|
|
214
|
-
"label":
|
|
286
|
+
"label": {
|
|
287
|
+
"en": "Voltage and current values - In the case of several meters, these values may not be included in the data frame, which could result in null values. Other deviations may also occur based on the specific firmware of the meter. Null values will not generate a state in your ioBroker objects.",
|
|
288
|
+
"de": "Spannungs- und Stromwerte - In einigen Fällen können diese Werte bei mehreren Zählern nicht im Datenrahmen enthalten sein, was zu Nullwerten führen kann. Weitere Abweichungen können auch auf der spezifischen Firmware des Zählers basieren. Nullwerte generieren keine Zustände in Ihren ioBroker-Objekten.",
|
|
289
|
+
"ru": "Значения напряжения и тока - В случае нескольких счетчиков эти значения могут не включаться в кадр данных, что может привести к нулевым значениям. Другие отклонения также могут возникнуть на основе конкретной прошивки счетчика. Нулевые значения не создадут состояние в ваших объектах ioBroker.",
|
|
290
|
+
"pt": "Valores de tensão e corrente - No caso de vários medidores, esses valores podem não estar incluídos no quadro de dados, o que pode resultar em valores nulos. Outras discrepâncias também podem ocorrer com base na firmware específica do medidor. Valores nulos não gerarão um estado em seus objetos ioBroker.",
|
|
291
|
+
"nl": "Spannings- en stroomwaarden - In het geval van meerdere meters kunnen deze waarden mogelijk niet zijn opgenomen in het gegevenskader, wat kan resulteren in nulwaarden. Andere afwijkingen kunnen ook optreden op basis van de specifieke firmware van de meter. Nulwaarden genereren geen toestand in uw ioBroker-objecten.",
|
|
292
|
+
"fr": "Valeurs de tension et de courant - Dans le cas de plusieurs compteurs, ces valeurs peuvent ne pas être incluses dans le cadre de données, ce qui pourrait entraîner des valeurs nulles. D'autres écarts peuvent également se produire en fonction du firmware spécifique du compteur. Les valeurs nulles ne généreront pas d'état dans vos objets ioBroker.",
|
|
293
|
+
"it": "Valori di tensione e corrente - Nel caso di diversi contatori, questi valori potrebbero non essere inclusi nel frame dati, il che potrebbe comportare valori nulli. Possono verificarsi altre deviazioni in base alla specifica firmware del contatore. I valori nulli non genereranno uno stato nei vostri oggetti ioBroker.",
|
|
294
|
+
"es": "Valores de voltaje y corriente - En el caso de varios medidores, estos valores pueden no estar incluidos en el marco de datos, lo que podría dar lugar a valores nulos. También pueden producirse otras desviaciones según la firmware específica del medidor. Los valores nulos no generarán un estado en sus objetos ioBroker.",
|
|
295
|
+
"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.",
|
|
296
|
+
"uk": "Значення напруги та струму - В разі кількох лічильників ці значення можуть не включати в кадр даних, що може призвести до нульових значень. Інші відхилення також можуть виникнути на основі конкретної прошивки лічильника. Нульові значення не створять стан в ваших об'єктах ioBroker.",
|
|
297
|
+
"zh-cn": "电压和电流数值 - 在多台仪表的情况下,这些数值可能不包括在数据帧中,可能导致空值。根据电表的具体固件,还可能出现其他偏差。空值不会在您的ioBroker对象中生成状态。"
|
|
298
|
+
}
|
|
215
299
|
},
|
|
216
300
|
|
|
217
301
|
"FeedConfigVoltagePhase1": {
|
|
@@ -270,7 +354,19 @@
|
|
|
270
354
|
|
|
271
355
|
"_CalculatorTab": {
|
|
272
356
|
"type": "panel",
|
|
273
|
-
"label":
|
|
357
|
+
"label": {
|
|
358
|
+
"en": "Calculator Settings",
|
|
359
|
+
"de": "Automatisierungs-Einstellungen",
|
|
360
|
+
"ru": "Настройки автоматизации",
|
|
361
|
+
"pt": "Configurações de automação",
|
|
362
|
+
"nl": "Automatiseringsinstellingen",
|
|
363
|
+
"fr": "Paramètres d'automatisation",
|
|
364
|
+
"it": "Impostazioni di automazione",
|
|
365
|
+
"es": "Configuración de automatización",
|
|
366
|
+
"pl": "Ustawienia automatyzacji",
|
|
367
|
+
"uk": "Налаштування автоматизації",
|
|
368
|
+
"zh-cn": "自动化设置"
|
|
369
|
+
},
|
|
274
370
|
"hidden": "!data.TibberAPIToken",
|
|
275
371
|
"items": {
|
|
276
372
|
"_CalculatorHeader": {
|
|
@@ -81,8 +81,10 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
|
|
|
81
81
|
if (!exDate || exDate <= today) {
|
|
82
82
|
const pricesToday = await this.tibberQuery.getTodaysEnergyPrices(homeId);
|
|
83
83
|
this.adapter.log.debug(`Got prices today from tibber api: ${JSON.stringify(pricesToday)}`);
|
|
84
|
-
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesToday", "json"),
|
|
84
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesToday", "json"), JSON.stringify(pricesToday), "The prices today as json");
|
|
85
85
|
this.fetchPriceAverage(homeId, `PricesToday.average`, pricesToday);
|
|
86
|
+
this.fetchPriceMaximum(homeId, `PricesToday.maximum`, pricesToday.sort((a, b) => a.total - b.total));
|
|
87
|
+
this.fetchPriceMinimum(homeId, `PricesToday.minimum`, pricesToday.sort((a, b) => a.total - b.total));
|
|
86
88
|
for (const i in pricesToday) {
|
|
87
89
|
const price = pricesToday[i];
|
|
88
90
|
const hour = new Date(price.startsAt.substr(0, 19)).getHours();
|
|
@@ -90,11 +92,11 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
|
|
|
90
92
|
}
|
|
91
93
|
if (Array.isArray(pricesToday)) {
|
|
92
94
|
// Sort the array if it is an array - possible type error discovered by sentry
|
|
93
|
-
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesToday", "jsonBYpriceASC"),
|
|
95
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesToday", "jsonBYpriceASC"), JSON.stringify(pricesToday.sort((a, b) => a.total - b.total)), "prices sorted by cost ascending as json");
|
|
94
96
|
}
|
|
95
97
|
else {
|
|
96
|
-
// Handle the case when pricesToday is not an array, it's empty
|
|
97
|
-
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesToday", "jsonBYpriceASC"),
|
|
98
|
+
// Handle the case when pricesToday is not an array, it's empty!, so just don't sort and write
|
|
99
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesToday", "jsonBYpriceASC"), JSON.stringify(pricesToday), "prices sorted by cost ascending as json");
|
|
98
100
|
}
|
|
99
101
|
}
|
|
100
102
|
else {
|
|
@@ -121,6 +123,8 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
|
|
|
121
123
|
this.emptyingPrice(homeId, `PricesTomorrow.${hour}`);
|
|
122
124
|
}
|
|
123
125
|
this.emptyingPriceAverage(homeId, `PricesTomorrow.average`);
|
|
126
|
+
this.emptyingPriceMaximum(homeId, `PricesTomorrow.maximum`);
|
|
127
|
+
this.emptyingPriceMinimum(homeId, `PricesTomorrow.minimum`);
|
|
124
128
|
}
|
|
125
129
|
else if (pricesTomorrow) {
|
|
126
130
|
// pricing known, after about 13:00 - write the states
|
|
@@ -129,17 +133,19 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
|
|
|
129
133
|
const hour = new Date(price.startsAt.substr(0, 19)).getHours();
|
|
130
134
|
await this.fetchPrice(homeId, "PricesTomorrow." + hour, price);
|
|
131
135
|
}
|
|
136
|
+
this.fetchPriceAverage(homeId, `PricesTomorrow.average`, pricesTomorrow);
|
|
137
|
+
this.fetchPriceMaximum(homeId, `PricesTomorrow.maximum`, pricesTomorrow.sort((a, b) => a.total - b.total));
|
|
138
|
+
this.fetchPriceMinimum(homeId, `PricesTomorrow.minimum`, pricesTomorrow.sort((a, b) => a.total - b.total));
|
|
132
139
|
}
|
|
133
|
-
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesTomorrow", "json"),
|
|
140
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesTomorrow", "json"), JSON.stringify(pricesTomorrow), "The prices tomorrow as json");
|
|
134
141
|
if (Array.isArray(pricesTomorrow)) {
|
|
135
142
|
// Sort the array if it is an array - possible type error discovered by sentry
|
|
136
|
-
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesTomorrow", "jsonBYpriceASC"),
|
|
143
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesTomorrow", "jsonBYpriceASC"), JSON.stringify(pricesTomorrow.sort((a, b) => a.total - b.total)), "prices sorted by cost ascending as json");
|
|
137
144
|
}
|
|
138
145
|
else {
|
|
139
|
-
// Handle the case when pricesToday is not an array, it's empty
|
|
140
|
-
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesTomorrow", "jsonBYpriceASC"),
|
|
146
|
+
// Handle the case when pricesToday is not an array, it's empty!, so just don't sort and write
|
|
147
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, "PricesTomorrow", "jsonBYpriceASC"), JSON.stringify(pricesTomorrow), "prices sorted by cost ascending as json");
|
|
141
148
|
}
|
|
142
|
-
this.fetchPriceAverage(homeId, `PricesTomorrow.average`, pricesTomorrow);
|
|
143
149
|
}
|
|
144
150
|
else {
|
|
145
151
|
this.adapter.log.debug(`Existing date (${exDate}) of price info is already the tomorrow date, polling of prices tomorrow from Tibber skipped`);
|
|
@@ -161,6 +167,20 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
|
|
|
161
167
|
const taxSum = price.reduce((sum, item) => sum + item.tax, 0);
|
|
162
168
|
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "tax"), Math.round(1000 * (taxSum / price.length)) / 1000, "Todays avarage tax price");
|
|
163
169
|
}
|
|
170
|
+
fetchPriceMaximum(homeId, objectDestination, price) {
|
|
171
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "total"), Math.round(1000 * price[23].total) / 1000, "Todays total price maximum");
|
|
172
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "energy"), Math.round(1000 * price[23].energy) / 1000, "Todays spotmarket price at total price maximum");
|
|
173
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "tax"), Math.round(1000 * price[23].tax) / 1000, "Todays tax price at total price maximum");
|
|
174
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, objectDestination, "level"), price[23].level, "Price level compared to recent price values");
|
|
175
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, objectDestination, "startsAt"), price[23].startsAt, "Start time of the price maximum");
|
|
176
|
+
}
|
|
177
|
+
fetchPriceMinimum(homeId, objectDestination, price) {
|
|
178
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "total"), Math.round(1000 * price[0].total) / 1000, "Todays total price minimum");
|
|
179
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "energy"), Math.round(1000 * price[0].energy) / 1000, "Todays spotmarket price at total price minimum");
|
|
180
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "tax"), Math.round(1000 * price[0].tax) / 1000, "Todays tax price at total price minimum");
|
|
181
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, objectDestination, "level"), price[0].level, "Price level compared to recent price values");
|
|
182
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, objectDestination, "startsAt"), price[0].startsAt, "Start time of the price minimum");
|
|
183
|
+
}
|
|
164
184
|
emptyingPrice(homeId, objectDestination) {
|
|
165
185
|
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "total"), 0, "The total price (energy + taxes)");
|
|
166
186
|
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "energy"), 0, "Spotmarket price");
|
|
@@ -172,6 +192,20 @@ class TibberAPICaller extends tibberHelper_1.TibberHelper {
|
|
|
172
192
|
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "energy"), 0, "The todays avarage spotmarket price");
|
|
173
193
|
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "tax"), 0, "The todays avarage tax price");
|
|
174
194
|
}
|
|
195
|
+
emptyingPriceMaximum(homeId, objectDestination) {
|
|
196
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "total"), 0, "Todays total price maximum");
|
|
197
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "energy"), 0, "Todays spotmarket price at total price maximum");
|
|
198
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "tax"), 0, "Todays tax price at total price maximum");
|
|
199
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, objectDestination, "level"), "Not known now", "Price level compared to recent price values");
|
|
200
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, objectDestination, "startsAt"), "Not known now", "Start time of the price maximum");
|
|
201
|
+
}
|
|
202
|
+
emptyingPriceMinimum(homeId, objectDestination) {
|
|
203
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "total"), 0, "Todays total price minimum");
|
|
204
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "energy"), 0, "Todays spotmarket price at total price minimum");
|
|
205
|
+
this.checkAndSetValueNumber(this.getStatePrefix(homeId, objectDestination, "tax"), 0, "Todays tax price at total price minimum");
|
|
206
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, objectDestination, "level"), "Not known now", "Price level compared to recent price values");
|
|
207
|
+
this.checkAndSetValue(this.getStatePrefix(homeId, objectDestination, "startsAt"), "Not known now", "Start time of the price minimum");
|
|
208
|
+
}
|
|
175
209
|
fetchAddress(homeId, objectDestination, address) {
|
|
176
210
|
this.checkAndSetValue(this.getStatePrefix(homeId, objectDestination, "address1"), address.address1);
|
|
177
211
|
this.checkAndSetValue(this.getStatePrefix(homeId, objectDestination, "address2"), address.address2);
|
|
@@ -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":"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"}
|