iobroker.pv-notifications 1.2.22 → 1.2.24

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.
@@ -388,10 +388,10 @@
388
388
  "type": "checkbox",
389
389
  "label": "label_statsUseSunset",
390
390
  "xs": 12,
391
- "sm": 4,
392
- "md": 4,
393
- "lg": 4,
394
- "xl": 4,
391
+ "sm": 2,
392
+ "md": 2,
393
+ "lg": 2,
394
+ "xl": 2,
395
395
  "default": false,
396
396
  "tooltip": "tooltip_statsUseSunset"
397
397
  },
@@ -399,10 +399,10 @@
399
399
  "type": "objectId",
400
400
  "label": "label_statsSunsetObject",
401
401
  "xs": 12,
402
- "sm": 8,
403
- "md": 8,
404
- "lg": 8,
405
- "xl": 8,
402
+ "sm": 6,
403
+ "md": 6,
404
+ "lg": 6,
405
+ "xl": 6,
406
406
  "tooltip": "tooltip_statsSunsetObject",
407
407
  "disabled": "!statsUseSunset"
408
408
  },
@@ -410,10 +410,10 @@
410
410
  "type": "number",
411
411
  "label": "label_statsWeekDay",
412
412
  "xs": 12,
413
- "sm": 3,
414
- "md": 3,
415
- "lg": 3,
416
- "xl": 3,
413
+ "sm": 4,
414
+ "md": 4,
415
+ "lg": 4,
416
+ "xl": 4,
417
417
  "min": 0,
418
418
  "max": 6,
419
419
  "default": 0,
@@ -423,10 +423,10 @@
423
423
  "type": "text",
424
424
  "label": "label_statsWeekTime",
425
425
  "xs": 12,
426
- "sm": 3,
427
- "md": 3,
428
- "lg": 3,
429
- "xl": 3,
426
+ "sm": 4,
427
+ "md": 4,
428
+ "lg": 4,
429
+ "xl": 4,
430
430
  "default": "10:00",
431
431
  "tooltip": "tooltip_statsWeekTime"
432
432
  },
package/io-package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "pv-notifications",
4
- "version": "1.2.22",
4
+ "version": "1.2.24",
5
5
  "titleLang": {
6
6
  "en": "PV Notifications",
7
7
  "de": "PV-Benachrichtigungen",
@@ -29,6 +29,32 @@
29
29
  "zh-cn": "发送 Telegram 通知用于 PV 电池状态"
30
30
  },
31
31
  "news": {
32
+ "1.2.24": {
33
+ "en": "Add missing uk translations to news, fix prettier formatting in main.js",
34
+ "de": "Fehlende uk-Uebersetzungen in news ergaenzt, Prettier-Formatierung in main.js korrigiert",
35
+ "ru": "Добавлены недостающие uk-переводы в news, исправлено форматирование prettier в main.js",
36
+ "fr": "Ajout des traductions uk manquantes dans news, correction formatage prettier dans main.js",
37
+ "it": "Aggiunte traduzioni uk mancanti in news, corretta formattazione prettier in main.js",
38
+ "es": "Anadidas traducciones uk faltantes en news, corregido formato prettier en main.js",
39
+ "pl": "Dodano brakujace tlumaczenia uk w news, poprawiono formatowanie prettier w main.js",
40
+ "pt": "Adicionadas traducoes uk em falta em news, corrigida formatacao prettier em main.js",
41
+ "nl": "Ontbrekende uk-vertalingen toegevoegd aan news, prettier-opmaak gecorrigeerd in main.js",
42
+ "uk": "Додано відсутні uk-переклади до news, виправлено форматування prettier у main.js",
43
+ "zh-cn": "添加 news 中缺失的 uk 翻译,修复 main.js 中的 prettier 格式"
44
+ },
45
+ "1.2.23": {
46
+ "en": "Fix statistics section layout: align daily time, sunset checkbox and sunset object on one row",
47
+ "de": "Layout der Statistik-Sektion korrigiert: Tageszeit, Sonnenuntergang-Checkbox und Objekt in einer Zeile",
48
+ "ru": "Исправлен макет секции статистики: время, чекбокс заката и объект в одну строку",
49
+ "fr": "Correction mise en page section statistiques: heure, case coucher soleil et objet sur une ligne",
50
+ "it": "Correzione layout sezione statistiche: ora, checkbox tramonto e oggetto su una riga",
51
+ "es": "Correccion diseno seccion estadisticas: hora, casilla atardecer y objeto en una fila",
52
+ "pl": "Poprawka ukladu sekcji statystyk: czas, pole zachodu slonca i obiekt w jednym wierszu",
53
+ "pt": "Correcao layout seccao estatisticas: hora, caixa por do sol e objeto numa linha",
54
+ "nl": "Lay-out statistieksectie gecorrigeerd: tijd, zonsondergang-checkbox en object op een rij",
55
+ "zh-cn": "修复统计部分布局:将时间、日落复选框和对象放在同一行",
56
+ "uk": "Виправлено макет секції статистики: час, чекбокс заходу сонця та обєкт в одному рядку"
57
+ },
32
58
  "1.2.22": {
33
59
  "en": "Add sunset-based daily statistics: optional checkbox to send daily stats at sunset time from a configurable object instead of fixed time",
34
60
  "de": "Sonnenuntergang-basierte Tagesstatistik: optionale Checkbox um Tagesstatistik zur Sonnenuntergangszeit aus einem konfigurierbaren Objekt zu senden statt zur festen Uhrzeit",
@@ -39,7 +65,8 @@
39
65
  "pl": "Statystyki dzienne o zachodzie slonca: opcjonalne pole wyboru do wysylania statystyk o zachodzie slonca z konfigurowalnego obiektu zamiast stalej godziny",
40
66
  "pt": "Estatisticas diarias ao por do sol: caixa opcional para enviar estatisticas na hora do por do sol de um objeto configuravel em vez de hora fixa",
41
67
  "nl": "Dagelijkse statistieken bij zonsondergang: optioneel selectievakje om dagelijkse statistieken te sturen op zonsondergangtijd van een configureerbaar object in plaats van vaste tijd",
42
- "zh-cn": "日落时发送每日统计:可选复选框,在可配置对象的日落时间发送每日统计,而非固定时间"
68
+ "zh-cn": "日落时发送每日统计:可选复选框,在可配置对象的日落时间发送每日统计,而非固定时间",
69
+ "uk": "Додано відправку денної статистики за заходом сонця: опціональний чекбокс для відправки статистики в момент заходу сонця з обєкта що налаштовується замість фіксованого часу"
43
70
  },
44
71
  "1.2.21": {
45
72
  "en": "Fix: use extendObject instead of setObjectNotExists for states with unit/role to update existing instances",
@@ -51,7 +78,8 @@
51
78
  "pl": "Fix: extendObject zamiast setObjectNotExists dla states z unit/role aby zaktualizowac istniejace instancje",
52
79
  "pt": "Fix: extendObject em vez de setObjectNotExists para states com unit/role para atualizar instancias existentes",
53
80
  "nl": "Fix: extendObject in plaats van setObjectNotExists voor states met unit/role om bestaande instanties bij te werken",
54
- "zh-cn": "修复:对带有 unit/role 的 state 使用 extendObject 而非 setObjectNotExists,以更新现有实例"
81
+ "zh-cn": "修复:对带有 unit/role 的 state 使用 extendObject 而非 setObjectNotExists,以更新现有实例",
82
+ "uk": "Виправлено: extendObject замість setObjectNotExists для states з unit/role для оновлення існуючих екземплярів"
55
83
  },
56
84
  "1.2.20": {
57
85
  "en": "Fix PR#5576: remove unused admin files, reduce info logs to debug, English state names with units, channel objects for statistics/info, button read:false, this.setInterval, translate fallback to English",
@@ -63,7 +91,8 @@
63
91
  "pl": "Fix PR#5576: usunieto nieuzywane pliki admin, logi info zredukowane do debug, angielskie nazwy stanow z jednostkami, obiekty channel dla statistics/info, button read:false, this.setInterval, fallback translate na angielski",
64
92
  "pt": "Fix PR#5576: removidos ficheiros admin nao usados, logs info reduzidos a debug, nomes estados ingles com unidades, objetos channel para statistics/info, button read:false, this.setInterval, fallback translate para ingles",
65
93
  "nl": "Fix PR#5576: ongebruikte admin-bestanden verwijderd, info-logs teruggebracht naar debug, Engelse state-namen met eenheden, channel-objecten voor statistics/info, button read:false, this.setInterval, translate fallback naar Engels",
66
- "zh-cn": "修复 PR#5576:删除未使用的 admin 文件,将 info 日志降级为 debug,英文 state 名称带单位,statistics/info 的 channel 对象,button read:false,this.setInterval,translate 回退到英文"
94
+ "zh-cn": "修复 PR#5576:删除未使用的 admin 文件,将 info 日志降级为 debug,英文 state 名称带单位,statistics/info 的 channel 对象,button read:false,this.setInterval,translate 回退到英文",
95
+ "uk": "Fix PR#5576: видалено невикористані файли admin, info-логи знижено до debug, англійські імена states з одиницями, channel-обєкти для statistics/info, button read:false, this.setInterval, fallback translate на англійську"
67
96
  },
68
97
  "1.2.19": {
69
98
  "en": "Added v1.2.18 entry to news section in io-package.json",
@@ -90,32 +119,6 @@
90
119
  "pl": "Naprawiono brakujący await w onBatterySOCChange, sprawdzanie null w buildTestMessage, bezpieczne parsowanie intermediateSteps, usunięto martwy kod",
91
120
  "uk": "Виправлено відсутній await в onBatterySOCChange, перевірка null в buildTestMessage, безпечний парсинг intermediateSteps, видалено мертвий код",
92
121
  "zh-cn": "修复 onBatterySOCChange 中缺少的 await,buildTestMessage 中的 null 检查,安全的 intermediateSteps 解析,删除死代码"
93
- },
94
- "1.2.17": {
95
- "en": "Removed old versions from common.news to comply with W1032 (maximum 7 versions)",
96
- "de": "Alte Versionen aus common.news entfernt zur Einhaltung von W1032 (maximal 7 Versionen)",
97
- "ru": "Удалены старые версии из common.news для соответствия W1032 (максимум 7 версий)",
98
- "pt": "Versões antigas removidas de common.news para cumprir W1032 (máximo 7 versões)",
99
- "nl": "Oude versies verwijderd uit common.news om te voldoen aan W1032 (maximaal 7 versies)",
100
- "fr": "Anciennes versions supprimées de common.news pour respecter W1032 (maximum 7 versions)",
101
- "it": "Rimosse vecchie versioni da common.news per rispettare W1032 (massimo 7 versioni)",
102
- "es": "Versiones antiguas eliminadas de common.news para cumplir con W1032 (máximo 7 versiones)",
103
- "pl": "Usunięto stare wersje z common.news zgodnie z W1032 (maksymalnie 7 wersji)",
104
- "uk": "Видалено старі версії з common.news для відповідності W1032 (максимум 7 версій)",
105
- "zh-cn": "已从 common.news 中删除旧版本以符合 W1032(最多 7 个版本)"
106
- },
107
- "1.2.16": {
108
- "en": "Removed empty line in battery full message for improved formatting",
109
- "de": "Leere Zeile in Batterie VOLL Nachricht für bessere Formatierung entfernt",
110
- "ru": "Удалена пустая строка в сообщении о полной батарее для улучшения форматирования",
111
- "pt": "Removida linha vazia na mensagem de bateria cheia para melhor formatação",
112
- "nl": "Lege regel verwijderd in batterij vol-bericht voor verbeterde opmaak",
113
- "fr": "Suppression de la ligne vide dans le message batterie pleine pour un meilleur formatage",
114
- "it": "Rimossa riga vuota nel messaggio di batteria piena per un migliore formattazione",
115
- "es": "Eliminada línea vacía en el mensaje de batería llena para mejorar el formato",
116
- "pl": "Usunięto pusty wiersz w wiadomości o pełnej baterii dla lepszej formatowania",
117
- "uk": "Видалено порожній рядок у повідомленні про повну батарею для покращення форматування",
118
- "zh-cn": "已删除电池满消息中的空行以改善格式"
119
122
  }
120
123
  },
121
124
  "authors": [
package/main.js CHANGED
@@ -125,11 +125,27 @@ class PvNotifications extends utils.Adapter {
125
125
  });
126
126
  await this.extendObject('statistics.maxSOCToday', {
127
127
  type: 'state',
128
- common: { name: 'Max SOC today', type: 'number', role: 'value.battery', read: true, write: false, def: 0, unit: '%' },
128
+ common: {
129
+ name: 'Max SOC today',
130
+ type: 'number',
131
+ role: 'value.battery',
132
+ read: true,
133
+ write: false,
134
+ def: 0,
135
+ unit: '%',
136
+ },
129
137
  });
130
138
  await this.extendObject('statistics.minSOCToday', {
131
139
  type: 'state',
132
- common: { name: 'Min SOC today', type: 'number', role: 'value.battery', read: true, write: false, def: 100, unit: '%' },
140
+ common: {
141
+ name: 'Min SOC today',
142
+ type: 'number',
143
+ role: 'value.battery',
144
+ read: true,
145
+ write: false,
146
+ def: 100,
147
+ unit: '%',
148
+ },
133
149
  });
134
150
  await this.setObjectNotExists('statistics.fullCyclesWeek', {
135
151
  type: 'state',
@@ -141,7 +157,15 @@ class PvNotifications extends utils.Adapter {
141
157
  });
142
158
  await this.extendObject('statistics.currentSOC', {
143
159
  type: 'state',
144
- common: { name: 'Current SOC', type: 'number', role: 'value.battery', read: true, write: false, def: 0, unit: '%' },
160
+ common: {
161
+ name: 'Current SOC',
162
+ type: 'number',
163
+ role: 'value.battery',
164
+ read: true,
165
+ write: false,
166
+ def: 0,
167
+ unit: '%',
168
+ },
145
169
  });
146
170
  await this.extendObject('statistics.currentEnergyKWh', {
147
171
  type: 'state',
@@ -157,7 +181,15 @@ class PvNotifications extends utils.Adapter {
157
181
  });
158
182
  await this.extendObject('statistics.currentPower', {
159
183
  type: 'state',
160
- common: { name: 'Current power', type: 'number', role: 'value.power', read: true, write: false, def: 0, unit: 'W' },
184
+ common: {
185
+ name: 'Current power',
186
+ type: 'number',
187
+ role: 'value.power',
188
+ read: true,
189
+ write: false,
190
+ def: 0,
191
+ unit: 'W',
192
+ },
161
193
  });
162
194
  await this.extendObject('statistics.currentTotalProduction', {
163
195
  type: 'state',
@@ -173,15 +205,39 @@ class PvNotifications extends utils.Adapter {
173
205
  });
174
206
  await this.extendObject('statistics.currentFeedIn', {
175
207
  type: 'state',
176
- common: { name: 'Feed-in today', type: 'number', role: 'value.energy', read: true, write: false, def: 0, unit: 'kWh' },
208
+ common: {
209
+ name: 'Feed-in today',
210
+ type: 'number',
211
+ role: 'value.energy',
212
+ read: true,
213
+ write: false,
214
+ def: 0,
215
+ unit: 'kWh',
216
+ },
177
217
  });
178
218
  await this.extendObject('statistics.currentConsumption', {
179
219
  type: 'state',
180
- common: { name: 'Consumption today', type: 'number', role: 'value.energy', read: true, write: false, def: 0, unit: 'kWh' },
220
+ common: {
221
+ name: 'Consumption today',
222
+ type: 'number',
223
+ role: 'value.energy',
224
+ read: true,
225
+ write: false,
226
+ def: 0,
227
+ unit: 'kWh',
228
+ },
181
229
  });
182
230
  await this.extendObject('statistics.currentGridPower', {
183
231
  type: 'state',
184
- common: { name: 'Grid power today', type: 'number', role: 'value.energy', read: true, write: false, def: 0, unit: 'kWh' },
232
+ common: {
233
+ name: 'Grid power today',
234
+ type: 'number',
235
+ role: 'value.energy',
236
+ read: true,
237
+ write: false,
238
+ def: 0,
239
+ unit: 'kWh',
240
+ },
185
241
  });
186
242
 
187
243
  // States für letzte Monats-/Wochenstatistik
@@ -269,7 +325,15 @@ class PvNotifications extends utils.Adapter {
269
325
  });
270
326
  await this.extendObject('statistics.lastWeekConsumption', {
271
327
  type: 'state',
272
- common: { name: 'Consumption last week', type: 'number', role: 'value.energy', read: true, write: false, def: 0, unit: 'kWh' },
328
+ common: {
329
+ name: 'Consumption last week',
330
+ type: 'number',
331
+ role: 'value.energy',
332
+ read: true,
333
+ write: false,
334
+ def: 0,
335
+ unit: 'kWh',
336
+ },
273
337
  });
274
338
  await this.extendObject('statistics.lastWeekFeedIn', {
275
339
  type: 'state',
@@ -285,7 +349,15 @@ class PvNotifications extends utils.Adapter {
285
349
  });
286
350
  await this.extendObject('statistics.lastWeekGridPower', {
287
351
  type: 'state',
288
- common: { name: 'Grid power last week', type: 'number', role: 'value.energy', read: true, write: false, def: 0, unit: 'kWh' },
352
+ common: {
353
+ name: 'Grid power last week',
354
+ type: 'number',
355
+ role: 'value.energy',
356
+ read: true,
357
+ write: false,
358
+ def: 0,
359
+ unit: 'kWh',
360
+ },
289
361
  });
290
362
  await this.setObjectNotExists('statistics.lastWeekFullCycles', {
291
363
  type: 'state',
@@ -1098,9 +1170,7 @@ class PvNotifications extends utils.Adapter {
1098
1170
 
1099
1171
  // Einheitlicher Status-Text für alle Intermediate-Stufen
1100
1172
  const statusText =
1101
- direction === 'up'
1102
- ? this.translate('Battery charging')
1103
- : this.translate('Battery discharging');
1173
+ direction === 'up' ? this.translate('Battery charging') : this.translate('Battery discharging');
1104
1174
 
1105
1175
  // Einheitliche Nachricht für alle Stufen (20, 40, 60, 80)
1106
1176
  const batteryAt = this.translate('Battery at');
@@ -1508,19 +1578,21 @@ ${statusText}
1508
1578
  // Tägliche Statistik — entweder zur konfigurierten Zeit oder zum Sonnenuntergang
1509
1579
  if (this.config.statsUseSunset && this.config.statsSunsetObject) {
1510
1580
  // Sonnenuntergangszeit aus dem konfigurierten Objekt lesen
1511
- this.getForeignStateAsync(this.config.statsSunsetObject).then(sunsetState => {
1512
- if (sunsetState && sunsetState.val) {
1513
- const sunsetTime = String(sunsetState.val).trim();
1514
- const match = sunsetTime.match(/^(\d{1,2}):(\d{2})/);
1515
- if (match) {
1516
- const sunsetHours = parseInt(match[1], 10);
1517
- const sunsetMinutes = parseInt(match[2], 10);
1518
- if (hours === sunsetHours && minutes === sunsetMinutes) {
1519
- this.sendDailyStatsMessage();
1581
+ this.getForeignStateAsync(this.config.statsSunsetObject)
1582
+ .then(sunsetState => {
1583
+ if (sunsetState && sunsetState.val) {
1584
+ const sunsetTime = String(sunsetState.val).trim();
1585
+ const match = sunsetTime.match(/^(\d{1,2}):(\d{2})/);
1586
+ if (match) {
1587
+ const sunsetHours = parseInt(match[1], 10);
1588
+ const sunsetMinutes = parseInt(match[2], 10);
1589
+ if (hours === sunsetHours && minutes === sunsetMinutes) {
1590
+ this.sendDailyStatsMessage();
1591
+ }
1520
1592
  }
1521
1593
  }
1522
- }
1523
- }).catch(e => this.log.warn(`Could not read sunset object: ${e.message}`));
1594
+ })
1595
+ .catch(e => this.log.warn(`Could not read sunset object: ${e.message}`));
1524
1596
  } else {
1525
1597
  const [dayHours, dayMinutes] = this.config.statsDayTime.split(':').map(Number);
1526
1598
  if (hours === dayHours && minutes === dayMinutes) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.pv-notifications",
3
- "version": "1.2.22",
3
+ "version": "1.2.24",
4
4
  "description": "PV-Anlage Batterie-Status Telegram Benachrichtigungen",
5
5
  "author": {
6
6
  "name": "Alex1808 via LLM: Qwen",