iobroker.pv-notifications 1.2.20 → 1.2.22
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/admin/i18n/de/translations.json +96 -92
- package/admin/i18n/en/translations.json +96 -92
- package/admin/i18n/ru/translations.json +96 -92
- package/admin/jsonConfig.json +22 -0
- package/io-package.json +64 -52
- package/main.js +38 -21
- package/package.json +9 -3
|
@@ -1,94 +1,98 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
2
|
+
"pv-notifications": "PV Notifications",
|
|
3
|
+
"header_telegram": "Telegram Konfiguration",
|
|
4
|
+
"label_telegramInstance": "Telegram Instanz",
|
|
5
|
+
"label_telegramUsers": "Telegram Benutzer (kommagetrennt)",
|
|
6
|
+
"tooltip_telegramUsers": "Z.B. User1, User2 oder -123456789 (ID)",
|
|
7
|
+
"header_datapoints": "Datenpunkte Konfiguration",
|
|
8
|
+
"label_batterySOC": "Batterie SOC Datenpunkt",
|
|
9
|
+
"tooltip_batterySOC": "Z.B. modbus.0.holdingRegisters.40083_Batterie_SOC",
|
|
10
|
+
"label_powerProduction": "Aktuelle PV-Leistung (W)",
|
|
11
|
+
"label_totalProduction": "Gesamtproduktion heute (kWh)",
|
|
12
|
+
"label_feedIn": "Einspeisung heute (kWh)",
|
|
13
|
+
"label_consumption": "Hausverbrauch heute (kWh)",
|
|
14
|
+
"label_gridPower": "Netzbezug heute (kWh)",
|
|
15
|
+
"label_weeklyProduction": "Produktion diese Woche (kWh)",
|
|
16
|
+
"tooltip_weeklyProduction": "sourceanalytix...Produktion.currentWeek",
|
|
17
|
+
"label_weeklyConsumption": "Verbrauch diese Woche (kWh)",
|
|
18
|
+
"tooltip_weeklyConsumption": "sourceanalytix...Verbrauch.currentWeek",
|
|
19
|
+
"label_weeklyFeedIn": "Einspeisung diese Woche (kWh)",
|
|
20
|
+
"tooltip_weeklyFeedIn": "sourceanalytix...Einspeisung.currentWeek",
|
|
21
|
+
"label_weeklyGridPower": "Netzbezug diese Woche (kWh)",
|
|
22
|
+
"tooltip_weeklyGridPower": "sourceanalytix...Netzbezug.currentWeek",
|
|
23
|
+
"label_monthlyProduction": "Produktion diesen Monat (kWh)",
|
|
24
|
+
"tooltip_monthlyProduction": "sourceanalytix...Produktion.currentMonth",
|
|
25
|
+
"label_monthlyConsumption": "Verbrauch diesen Monat (kWh)",
|
|
26
|
+
"tooltip_monthlyConsumption": "sourceanalytix...Verbrauch.currentMonth",
|
|
27
|
+
"label_monthlyFeedIn": "Einspeisung diesen Monat (kWh)",
|
|
28
|
+
"tooltip_monthlyFeedIn": "sourceanalytix...Einspeisung.currentMonth",
|
|
29
|
+
"label_monthlyGridPower": "Netzbezug diesen Monat (kWh)",
|
|
30
|
+
"tooltip_monthlyGridPower": "sourceanalytix...Netzbezug.currentMonth",
|
|
31
|
+
"header_battery": "Batterie Konfiguration",
|
|
32
|
+
"label_batteryCapacityWh": "Batterie-Kapazität (Wh)",
|
|
33
|
+
"label_thresholdFull": "Schwellwert VOLL (%)",
|
|
34
|
+
"label_thresholdEmpty": "Schwellwert LEER (%)",
|
|
35
|
+
"label_thresholdResetFull": "Reset VOLL unter (%)",
|
|
36
|
+
"label_thresholdResetEmpty": "Reset LEER über (%)",
|
|
37
|
+
"header_intermediate": "Nachtmodus & Intermediate-Stufen",
|
|
38
|
+
"label_nightModeEnabled": "Nachtmodus aktivieren",
|
|
39
|
+
"tooltip_nightModeEnabled": "Wenn deaktiviert, werden Benachrichtigungen auch nachts gesendet",
|
|
40
|
+
"label_nightModeStart": "Start",
|
|
41
|
+
"tooltip_nightModeStart": "Startzeit für Nachtmodus (z.B. 00:00)",
|
|
42
|
+
"label_nightModeEnd": "Ende",
|
|
43
|
+
"tooltip_nightModeEnd": "Endezeit für Nachtmodus (z.B. 08:00)",
|
|
44
|
+
"label_nightModeIgnoreEmpty": "Nachtmodus für 0% Batterie ignorieren",
|
|
45
|
+
"tooltip_nightModeIgnoreEmpty": "Wenn aktiviert, wird bei 0% immer benachrichtigt (auch nachts)",
|
|
46
|
+
"label_quietModeEnabled": "Ruhemodus aktivieren",
|
|
47
|
+
"tooltip_quietModeEnabled": "Wenn aktiviert, werden keine Benachrichtigungen während der Ruhezeit gesendet",
|
|
48
|
+
"label_quietModeStart": "Start",
|
|
49
|
+
"tooltip_quietModeStart": "Startzeit für Ruhemodus (z.B. 22:00)",
|
|
50
|
+
"label_quietModeEnd": "Ende",
|
|
51
|
+
"tooltip_quietModeEnd": "Endezeit für Ruhemodus (z.B. 07:00)",
|
|
52
|
+
"label_intermediateSteps": "Intermediate-Stufen (kommagetrennt)",
|
|
53
|
+
"tooltip_intermediateSteps": "Z.B. 20,40,60,80",
|
|
54
|
+
"label_minIntervalFull": "Min. Intervall VOLL (Minuten)",
|
|
55
|
+
"label_minIntervalEmpty": "Min. Intervall LEER (Minuten)",
|
|
56
|
+
"label_minIntervalIntermediate": "Min. Intervall Intermediate (Minuten)",
|
|
57
|
+
"header_statistics": "Statistik & Zeitplanung",
|
|
58
|
+
"label_statsDayTime": "Tagesstatistik Uhrzeit",
|
|
59
|
+
"tooltip_statsDayTime": "Format: HH:MM (z.B. 22:00)",
|
|
60
|
+
"label_statsWeekDay": "Wochentag für Wochenstatistik",
|
|
61
|
+
"tooltip_statsWeekDay": "0=Montag, 1=Dienstag, ..., 6=Sonntag",
|
|
62
|
+
"label_statsWeekTime": "Uhrzeit für Wochenstatistik",
|
|
63
|
+
"tooltip_statsWeekTime": "Format: HH:MM (z.B. 10:00)",
|
|
64
|
+
"header_monthly": "Monatsstatistik (Optional)",
|
|
65
|
+
"label_monthlyStatsEnabled": "Monatsstatistik aktivieren",
|
|
66
|
+
"label_monthlyStatsDay": "Tag des Monats",
|
|
67
|
+
"tooltip_monthlyStatsDay": "1-31 (z.B. 1 = Erster des Monats)",
|
|
68
|
+
"label_monthlyStatsTime": "Uhrzeit",
|
|
69
|
+
"tooltip_monthlyStatsTime": "Format: HH:MM (z.B. 09:00)",
|
|
70
|
+
"header_weather": "Wetter (Optional)",
|
|
71
|
+
"label_weatherEnabled": "Wetterdaten in Nachrichten anzeigen",
|
|
72
|
+
"tooltip_weatherEnabled": "Wenn aktiviert, werden Wetterdaten in Tagesstatistik und Batterie-Status-Nachrichten angezeigt",
|
|
73
|
+
"label_weatherInIntermediate": "Intermediate-Stufen",
|
|
74
|
+
"tooltip_weatherInIntermediate": "Wetterdaten in Intermediate-Nachrichten (20%, 40%, 60%, 80%) anzeigen",
|
|
75
|
+
"label_weatherInDailyStats": "Tagesstatistik",
|
|
76
|
+
"tooltip_weatherInDailyStats": "Wetterdaten in Tagesstatistik (22:00) anzeigen",
|
|
77
|
+
"label_weatherTodayText": "Wetter heute",
|
|
78
|
+
"tooltip_weatherTodayText": "Z.B. daswetter.0.Day0.forecast.currentSymbol",
|
|
79
|
+
"label_weatherTodayTemp": "Temperatur heute (°C)",
|
|
80
|
+
"tooltip_weatherTodayTemp": "Z.B. daswetter.0.Day0.forecast.maxTemp",
|
|
81
|
+
"label_weatherTomorrowText": "Wetter morgen",
|
|
82
|
+
"tooltip_weatherTomorrowText": "Z.B. daswetter.0.Day1.forecast.currentSymbol",
|
|
83
|
+
"label_weatherTomorrowTemp": "Temperatur morgen (°C)",
|
|
84
|
+
"tooltip_weatherTomorrowTemp": "Z.B. daswetter.0.Day1.forecast.maxTemp",
|
|
85
|
+
"header_thresholds": "Schwellwerte für Empfehlungen",
|
|
86
|
+
"label_highProduction": "Hohe Produktion ab (W)",
|
|
87
|
+
"label_highConsumption": "Hoher Verbrauch ab (W)",
|
|
88
|
+
"label_testButton": "Test-Benachrichtigung",
|
|
89
|
+
"buttonText_testButton": "Test senden",
|
|
90
|
+
"tooltip_testButton": "Sendet eine Test-Benachrichtigung an alle konfigurierten Telegram-Benutzer",
|
|
91
|
+
"Test Notification": "Test-Benachrichtigung",
|
|
92
|
+
"Production today": "Produktion heute",
|
|
93
|
+
"Current production": "Aktuelle Produktion",
|
|
94
|
+
"label_statsUseSunset": "Nach Sonnenuntergang senden",
|
|
95
|
+
"tooltip_statsUseSunset": "Wenn aktiviert, wird die Tagesstatistik zur Uhrzeit des Sonnenuntergang-Objekts gesendet statt zur festen Uhrzeit oben",
|
|
96
|
+
"label_statsSunsetObject": "Sonnenuntergang-Objekt",
|
|
97
|
+
"tooltip_statsSunsetObject": "Objekt mit Sonnenuntergangszeit als HH:MM-String (z.B. daswetter.0.Day0.forecast.sunset)"
|
|
94
98
|
}
|
|
@@ -1,94 +1,98 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
2
|
+
"pv-notifications": "PV Notifications",
|
|
3
|
+
"header_telegram": "Telegram Configuration",
|
|
4
|
+
"label_telegramInstance": "Telegram Instance",
|
|
5
|
+
"label_telegramUsers": "Telegram Users (comma-separated)",
|
|
6
|
+
"tooltip_telegramUsers": "e.g. User1, User2 or -123456789 (ID)",
|
|
7
|
+
"header_datapoints": "Data Points Configuration",
|
|
8
|
+
"label_batterySOC": "Battery SOC Data Point",
|
|
9
|
+
"tooltip_batterySOC": "e.g. modbus.0.holdingRegisters.40083_Battery_SOC",
|
|
10
|
+
"label_powerProduction": "Current PV Power (W)",
|
|
11
|
+
"label_totalProduction": "Total Production Today (kWh)",
|
|
12
|
+
"label_feedIn": "Feed-in Today (kWh)",
|
|
13
|
+
"label_consumption": "House Consumption Today (kWh)",
|
|
14
|
+
"label_gridPower": "Grid Consumption Today (kWh)",
|
|
15
|
+
"label_weeklyProduction": "Production This Week (kWh)",
|
|
16
|
+
"tooltip_weeklyProduction": "sourceanalytix...Production.currentWeek",
|
|
17
|
+
"label_weeklyConsumption": "Consumption This Week (kWh)",
|
|
18
|
+
"tooltip_weeklyConsumption": "sourceanalytix...Consumption.currentWeek",
|
|
19
|
+
"label_weeklyFeedIn": "Feed-in This Week (kWh)",
|
|
20
|
+
"tooltip_weeklyFeedIn": "sourceanalytix...Feed-in.currentWeek",
|
|
21
|
+
"label_weeklyGridPower": "Grid Consumption This Week (kWh)",
|
|
22
|
+
"tooltip_weeklyGridPower": "sourceanalytix...GridConsumption.currentWeek",
|
|
23
|
+
"label_monthlyProduction": "Production This Month (kWh)",
|
|
24
|
+
"tooltip_monthlyProduction": "sourceanalytix...Production.currentMonth",
|
|
25
|
+
"label_monthlyConsumption": "Consumption This Month (kWh)",
|
|
26
|
+
"tooltip_monthlyConsumption": "sourceanalytix...Consumption.currentMonth",
|
|
27
|
+
"label_monthlyFeedIn": "Feed-in This Month (kWh)",
|
|
28
|
+
"tooltip_monthlyFeedIn": "sourceanalytix...Feed-in.currentMonth",
|
|
29
|
+
"label_monthlyGridPower": "Grid Consumption This Month (kWh)",
|
|
30
|
+
"tooltip_monthlyGridPower": "sourceanalytix...GridConsumption.currentMonth",
|
|
31
|
+
"header_battery": "Battery Configuration",
|
|
32
|
+
"label_batteryCapacityWh": "Battery Capacity (Wh)",
|
|
33
|
+
"label_thresholdFull": "Threshold FULL (%)",
|
|
34
|
+
"label_thresholdEmpty": "Threshold EMPTY (%)",
|
|
35
|
+
"label_thresholdResetFull": "Reset FULL below (%)",
|
|
36
|
+
"label_thresholdResetEmpty": "Reset EMPTY above (%)",
|
|
37
|
+
"header_intermediate": "Night Mode & Intermediate Levels",
|
|
38
|
+
"label_nightModeEnabled": "Activate night mode",
|
|
39
|
+
"tooltip_nightModeEnabled": "If disabled, notifications will be sent at night too",
|
|
40
|
+
"label_nightModeStart": "Start",
|
|
41
|
+
"tooltip_nightModeStart": "Start time for night mode (e.g. 00:00)",
|
|
42
|
+
"label_nightModeEnd": "End",
|
|
43
|
+
"tooltip_nightModeEnd": "End time for night mode (e.g. 08:00)",
|
|
44
|
+
"label_nightModeIgnoreEmpty": "Ignore night mode for 0% battery",
|
|
45
|
+
"tooltip_nightModeIgnoreEmpty": "If enabled, 0% will always notify (even at night)",
|
|
46
|
+
"label_quietModeEnabled": "Activate quiet mode",
|
|
47
|
+
"tooltip_quietModeEnabled": "If enabled, no notifications will be sent during quiet time",
|
|
48
|
+
"label_quietModeStart": "Start",
|
|
49
|
+
"tooltip_quietModeStart": "Start time for quiet mode (e.g. 22:00)",
|
|
50
|
+
"label_quietModeEnd": "End",
|
|
51
|
+
"tooltip_quietModeEnd": "End time for quiet mode (e.g. 07:00)",
|
|
52
|
+
"label_intermediateSteps": "Intermediate levels (comma-separated)",
|
|
53
|
+
"tooltip_intermediateSteps": "e.g. 20,40,60,80",
|
|
54
|
+
"label_minIntervalFull": "Min. interval FULL (minutes)",
|
|
55
|
+
"label_minIntervalEmpty": "Min. interval EMPTY (minutes)",
|
|
56
|
+
"label_minIntervalIntermediate": "Min. interval Intermediate (minutes)",
|
|
57
|
+
"header_statistics": "Statistics & Scheduling",
|
|
58
|
+
"label_statsDayTime": "Daily statistics time",
|
|
59
|
+
"tooltip_statsDayTime": "Format: HH:MM (e.g. 22:00)",
|
|
60
|
+
"label_statsWeekDay": "Weekday for weekly statistics",
|
|
61
|
+
"tooltip_statsWeekDay": "0=Monday, 1=Tuesday, ..., 6=Sunday",
|
|
62
|
+
"label_statsWeekTime": "Time for weekly statistics",
|
|
63
|
+
"tooltip_statsWeekTime": "Format: HH:MM (e.g. 10:00)",
|
|
64
|
+
"header_monthly": "Monthly Statistics (Optional)",
|
|
65
|
+
"label_monthlyStatsEnabled": "Activate monthly statistics",
|
|
66
|
+
"label_monthlyStatsDay": "Day of month",
|
|
67
|
+
"tooltip_monthlyStatsDay": "1-31 (e.g. 1 = First of month)",
|
|
68
|
+
"label_monthlyStatsTime": "Time",
|
|
69
|
+
"tooltip_monthlyStatsTime": "Format: HH:MM (e.g. 09:00)",
|
|
70
|
+
"header_weather": "Weather (Optional)",
|
|
71
|
+
"label_weatherEnabled": "Show weather data in messages",
|
|
72
|
+
"tooltip_weatherEnabled": "If enabled, weather data will be shown in daily statistics and battery status messages",
|
|
73
|
+
"label_weatherInIntermediate": "Intermediate levels",
|
|
74
|
+
"tooltip_weatherInIntermediate": "Show weather data in intermediate messages (20%, 40%, 60%, 80%)",
|
|
75
|
+
"label_weatherInDailyStats": "Daily statistics",
|
|
76
|
+
"tooltip_weatherInDailyStats": "Show weather data in daily statistics (22:00)",
|
|
77
|
+
"label_weatherTodayText": "Weather today",
|
|
78
|
+
"tooltip_weatherTodayText": "e.g. daswetter.0.Day0.forecast.currentSymbol",
|
|
79
|
+
"label_weatherTodayTemp": "Temperature today (°C)",
|
|
80
|
+
"tooltip_weatherTodayTemp": "e.g. daswetter.0.Day0.forecast.maxTemp",
|
|
81
|
+
"label_weatherTomorrowText": "Weather tomorrow",
|
|
82
|
+
"tooltip_weatherTomorrowText": "e.g. daswetter.0.Day1.forecast.currentSymbol",
|
|
83
|
+
"label_weatherTomorrowTemp": "Temperature tomorrow (°C)",
|
|
84
|
+
"tooltip_weatherTomorrowTemp": "e.g. daswetter.0.Day1.forecast.maxTemp",
|
|
85
|
+
"header_thresholds": "Thresholds for recommendations",
|
|
86
|
+
"label_highProduction": "High production from (W)",
|
|
87
|
+
"label_highConsumption": "High consumption from (W)",
|
|
88
|
+
"label_testButton": "Test Notification",
|
|
89
|
+
"buttonText_testButton": "Send Test",
|
|
90
|
+
"tooltip_testButton": "Sends a test notification to all configured Telegram users",
|
|
91
|
+
"Test Notification": "Test Notification",
|
|
92
|
+
"Production today": "Production today",
|
|
93
|
+
"Current production": "Current production",
|
|
94
|
+
"label_statsUseSunset": "Send at sunset time",
|
|
95
|
+
"tooltip_statsUseSunset": "If enabled, daily statistics will be sent at the time shown in the sunset object instead of the fixed time above",
|
|
96
|
+
"label_statsSunsetObject": "Sunset time object",
|
|
97
|
+
"tooltip_statsSunsetObject": "Object containing sunset time as HH:MM string (e.g. daswetter.0.Day0.forecast.sunset)"
|
|
94
98
|
}
|
|
@@ -1,94 +1,98 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
2
|
+
"pv-notifications": "PV Notifications",
|
|
3
|
+
"header_telegram": "Настройка Telegram",
|
|
4
|
+
"label_telegramInstance": "Экземпляр Telegram",
|
|
5
|
+
"label_telegramUsers": "Пользователи Telegram (через запятую)",
|
|
6
|
+
"tooltip_telegramUsers": "Например: User1, User2 или -123456789 (ID)",
|
|
7
|
+
"header_datapoints": "Настройка точек данных",
|
|
8
|
+
"label_batterySOC": "Точка данных SOC батареи",
|
|
9
|
+
"tooltip_batterySOC": "Например: modbus.0.holdingRegisters.40083_Batterie_SOC",
|
|
10
|
+
"label_powerProduction": "Текущая мощность PV (Вт)",
|
|
11
|
+
"label_totalProduction": "Общее производство сегодня (кВт⋅ч)",
|
|
12
|
+
"label_feedIn": "Подача в сеть сегодня (кВт⋅ч)",
|
|
13
|
+
"label_consumption": "Потребление дома сегодня (кВт⋅ч)",
|
|
14
|
+
"label_gridPower": "Потребление из сети сегодня (кВт⋅ч)",
|
|
15
|
+
"label_weeklyProduction": "Производство на этой неделе (кВт⋅ч)",
|
|
16
|
+
"tooltip_weeklyProduction": "sourceanalytix...Produktion.currentWeek",
|
|
17
|
+
"label_weeklyConsumption": "Потребление на этой неделе (кВт⋅ч)",
|
|
18
|
+
"tooltip_weeklyConsumption": "sourceanalytix...Verbrauch.currentWeek",
|
|
19
|
+
"label_weeklyFeedIn": "Подача в сеть на этой неделе (кВт⋅ч)",
|
|
20
|
+
"tooltip_weeklyFeedIn": "sourceanalytix...Einspeisung.currentWeek",
|
|
21
|
+
"label_weeklyGridPower": "Потребление из сети на этой неделе (кВт⋅ч)",
|
|
22
|
+
"tooltip_weeklyGridPower": "sourceanalytix...Netzbezug.currentWeek",
|
|
23
|
+
"label_monthlyProduction": "Производство в этом месяце (кВт⋅ч)",
|
|
24
|
+
"tooltip_monthlyProduction": "sourceanalytix...Produktion.currentMonth",
|
|
25
|
+
"label_monthlyConsumption": "Потребление в этом месяце (кВт⋅ч)",
|
|
26
|
+
"tooltip_monthlyConsumption": "sourceanalytix...Verbrauch.currentMonth",
|
|
27
|
+
"label_monthlyFeedIn": "Подача в сеть в этом месяце (кВт⋅ч)",
|
|
28
|
+
"tooltip_monthlyFeedIn": "sourceanalytix...Einspeisung.currentMonth",
|
|
29
|
+
"label_monthlyGridPower": "Потребление из сети в этом месяце (кВт⋅ч)",
|
|
30
|
+
"tooltip_monthlyGridPower": "sourceanalytix...Netzbezug.currentMonth",
|
|
31
|
+
"header_battery": "Настройка батареи",
|
|
32
|
+
"label_batteryCapacityWh": "Емкость батареи (Вт⋅ч)",
|
|
33
|
+
"label_thresholdFull": "Порог ПОЛНАЯ (%)",
|
|
34
|
+
"label_thresholdEmpty": "Порог ПУСТАЯ (%)",
|
|
35
|
+
"label_thresholdResetFull": "Сброс ПОЛНАЯ ниже (%)",
|
|
36
|
+
"label_thresholdResetEmpty": "Сброс ПУСТАЯ выше (%)",
|
|
37
|
+
"header_intermediate": "Ночной режим и промежуточные уровни",
|
|
38
|
+
"label_nightModeEnabled": "Активировать ночной режим",
|
|
39
|
+
"tooltip_nightModeEnabled": "Если отключено, уведомления будут отправляться и ночью",
|
|
40
|
+
"label_nightModeStart": "Начало",
|
|
41
|
+
"tooltip_nightModeStart": "Время начала ночного режима (например, 00:00)",
|
|
42
|
+
"label_nightModeEnd": "Конец",
|
|
43
|
+
"tooltip_nightModeEnd": "Время окончания ночного режима (например, 08:00)",
|
|
44
|
+
"label_nightModeIgnoreEmpty": "Игнорировать ночной режим для 0% батареи",
|
|
45
|
+
"tooltip_nightModeIgnoreEmpty": "Если включено, 0% всегда будет уведомлять (даже ночью)",
|
|
46
|
+
"label_quietModeEnabled": "Активировать тихий режим",
|
|
47
|
+
"tooltip_quietModeEnabled": "Если включено, уведомления не будут отправляться во время тихого времени",
|
|
48
|
+
"label_quietModeStart": "Начало",
|
|
49
|
+
"tooltip_quietModeStart": "Время начала тихого режима (например, 22:00)",
|
|
50
|
+
"label_quietModeEnd": "Конец",
|
|
51
|
+
"tooltip_quietModeEnd": "Время окончания тихого режима (например, 07:00)",
|
|
52
|
+
"label_intermediateSteps": "Промежуточные уровни (через запятую)",
|
|
53
|
+
"tooltip_intermediateSteps": "Например: 20,40,60,80",
|
|
54
|
+
"label_minIntervalFull": "Мин. интервал ПОЛНАЯ (минуты)",
|
|
55
|
+
"label_minIntervalEmpty": "Мин. интервал ПУСТАЯ (минуты)",
|
|
56
|
+
"label_minIntervalIntermediate": "Мин. интервал Промежуточный (минуты)",
|
|
57
|
+
"header_statistics": "Статистика и планирование",
|
|
58
|
+
"label_statsDayTime": "Время дневной статистики",
|
|
59
|
+
"tooltip_statsDayTime": "Формат: ЧЧ:ММ (например, 22:00)",
|
|
60
|
+
"label_statsWeekDay": "День недели для недельной статистики",
|
|
61
|
+
"tooltip_statsWeekDay": "0=Понедельник, 1=Вторник, ..., 6=Воскресенье",
|
|
62
|
+
"label_statsWeekTime": "Время для недельной статистики",
|
|
63
|
+
"tooltip_statsWeekTime": "Формат: ЧЧ:ММ (например, 10:00)",
|
|
64
|
+
"header_monthly": "Месячная статистика (опционально)",
|
|
65
|
+
"label_monthlyStatsEnabled": "Активировать месячную статистику",
|
|
66
|
+
"label_monthlyStatsDay": "День месяца",
|
|
67
|
+
"tooltip_monthlyStatsDay": "1-31 (например, 1 = Первое число месяца)",
|
|
68
|
+
"label_monthlyStatsTime": "Время",
|
|
69
|
+
"tooltip_monthlyStatsTime": "Формат: ЧЧ:ММ (например, 09:00)",
|
|
70
|
+
"header_weather": "Погода (опционально)",
|
|
71
|
+
"label_weatherEnabled": "Показывать данные о погоде в сообщениях",
|
|
72
|
+
"tooltip_weatherEnabled": "Если включено, данные о погоде будут отображаться в дневной статистике и сообщениях о статусе батареи",
|
|
73
|
+
"label_weatherInIntermediate": "Промежуточные уровни",
|
|
74
|
+
"tooltip_weatherInIntermediate": "Показывать погоду в промежуточных сообщениях (20%, 40%, 60%, 80%)",
|
|
75
|
+
"label_weatherInDailyStats": "Дневная статистика",
|
|
76
|
+
"tooltip_weatherInDailyStats": "Показывать погоду в дневной статистике (22:00)",
|
|
77
|
+
"label_weatherTodayText": "Погода сегодня",
|
|
78
|
+
"tooltip_weatherTodayText": "Например: daswetter.0.Day0.forecast.currentSymbol",
|
|
79
|
+
"label_weatherTodayTemp": "Температура сегодня (°C)",
|
|
80
|
+
"tooltip_weatherTodayTemp": "Например: daswetter.0.Day0.forecast.maxTemp",
|
|
81
|
+
"label_weatherTomorrowText": "Погода завтра",
|
|
82
|
+
"tooltip_weatherTomorrowText": "Например: daswetter.0.Day1.forecast.currentSymbol",
|
|
83
|
+
"label_weatherTomorrowTemp": "Температура завтра (°C)",
|
|
84
|
+
"tooltip_weatherTomorrowTemp": "Например: daswetter.0.Day1.forecast.maxTemp",
|
|
85
|
+
"header_thresholds": "Пороги для рекомендаций",
|
|
86
|
+
"label_highProduction": "Высокое производство от (Вт)",
|
|
87
|
+
"label_highConsumption": "Высокое потребление от (Вт)",
|
|
88
|
+
"label_testButton": "Тестовое уведомление",
|
|
89
|
+
"buttonText_testButton": "Отправить тест",
|
|
90
|
+
"tooltip_testButton": "Отправляет тестовое уведомление всем настроенным пользователям Telegram",
|
|
91
|
+
"Test Notification": "Тестовое уведомление",
|
|
92
|
+
"Production today": "Выработка сегодня",
|
|
93
|
+
"Current production": "Текущая мощность",
|
|
94
|
+
"label_statsUseSunset": "Отправлять по закату",
|
|
95
|
+
"tooltip_statsUseSunset": "Если включено, дневная статистика отправляется в момент заката из выбранного объекта, а не в фиксированное время",
|
|
96
|
+
"label_statsSunsetObject": "Объект времени заката",
|
|
97
|
+
"tooltip_statsSunsetObject": "Объект содержащий время заката в формате ЧЧ:ММ (например daswetter.0.Day0.forecast.sunset)"
|
|
94
98
|
}
|
package/admin/jsonConfig.json
CHANGED
|
@@ -384,6 +384,28 @@
|
|
|
384
384
|
"xl": 4,
|
|
385
385
|
"tooltip": "tooltip_statsDayTime"
|
|
386
386
|
},
|
|
387
|
+
"statsUseSunset": {
|
|
388
|
+
"type": "checkbox",
|
|
389
|
+
"label": "label_statsUseSunset",
|
|
390
|
+
"xs": 12,
|
|
391
|
+
"sm": 4,
|
|
392
|
+
"md": 4,
|
|
393
|
+
"lg": 4,
|
|
394
|
+
"xl": 4,
|
|
395
|
+
"default": false,
|
|
396
|
+
"tooltip": "tooltip_statsUseSunset"
|
|
397
|
+
},
|
|
398
|
+
"statsSunsetObject": {
|
|
399
|
+
"type": "objectId",
|
|
400
|
+
"label": "label_statsSunsetObject",
|
|
401
|
+
"xs": 12,
|
|
402
|
+
"sm": 8,
|
|
403
|
+
"md": 8,
|
|
404
|
+
"lg": 8,
|
|
405
|
+
"xl": 8,
|
|
406
|
+
"tooltip": "tooltip_statsSunsetObject",
|
|
407
|
+
"disabled": "!statsUseSunset"
|
|
408
|
+
},
|
|
387
409
|
"statsWeekDay": {
|
|
388
410
|
"type": "number",
|
|
389
411
|
"label": "label_statsWeekDay",
|
package/io-package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "pv-notifications",
|
|
4
|
-
"version": "1.2.
|
|
4
|
+
"version": "1.2.22",
|
|
5
5
|
"titleLang": {
|
|
6
6
|
"en": "PV Notifications",
|
|
7
7
|
"de": "PV-Benachrichtigungen",
|
|
@@ -29,6 +29,30 @@
|
|
|
29
29
|
"zh-cn": "发送 Telegram 通知用于 PV 电池状态"
|
|
30
30
|
},
|
|
31
31
|
"news": {
|
|
32
|
+
"1.2.22": {
|
|
33
|
+
"en": "Add sunset-based daily statistics: optional checkbox to send daily stats at sunset time from a configurable object instead of fixed time",
|
|
34
|
+
"de": "Sonnenuntergang-basierte Tagesstatistik: optionale Checkbox um Tagesstatistik zur Sonnenuntergangszeit aus einem konfigurierbaren Objekt zu senden statt zur festen Uhrzeit",
|
|
35
|
+
"ru": "Отправка дневной статистики по закату: опциональный чекбокс для отправки статистики в момент заката из настраиваемого объекта вместо фиксированного времени",
|
|
36
|
+
"fr": "Statistiques quotidiennes au coucher du soleil: case optionnelle pour envoyer les stats au coucher du soleil depuis un objet configurable au lieu d une heure fixe",
|
|
37
|
+
"it": "Statistiche giornaliere al tramonto: checkbox opzionale per inviare le statistiche all ora del tramonto da un oggetto configurabile invece di un orario fisso",
|
|
38
|
+
"es": "Estadisticas diarias al atardecer: casilla opcional para enviar estadisticas a la hora del atardecer desde un objeto configurable en lugar de hora fija",
|
|
39
|
+
"pl": "Statystyki dzienne o zachodzie slonca: opcjonalne pole wyboru do wysylania statystyk o zachodzie slonca z konfigurowalnego obiektu zamiast stalej godziny",
|
|
40
|
+
"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
|
+
"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": "日落时发送每日统计:可选复选框,在可配置对象的日落时间发送每日统计,而非固定时间"
|
|
43
|
+
},
|
|
44
|
+
"1.2.21": {
|
|
45
|
+
"en": "Fix: use extendObject instead of setObjectNotExists for states with unit/role to update existing instances",
|
|
46
|
+
"de": "Fix: extendObject statt setObjectNotExists fuer States mit unit/role, um bestehende Instanzen zu aktualisieren",
|
|
47
|
+
"ru": "Fix: extendObject вместо setObjectNotExists для states с unit/role, чтобы обновить существующие инстанции",
|
|
48
|
+
"fr": "Fix: extendObject au lieu de setObjectNotExists pour les states avec unit/role afin de mettre a jour les instances existantes",
|
|
49
|
+
"it": "Fix: extendObject invece di setObjectNotExists per states con unit/role per aggiornare le istanze esistenti",
|
|
50
|
+
"es": "Fix: extendObject en lugar de setObjectNotExists para states con unit/role para actualizar instancias existentes",
|
|
51
|
+
"pl": "Fix: extendObject zamiast setObjectNotExists dla states z unit/role aby zaktualizowac istniejace instancje",
|
|
52
|
+
"pt": "Fix: extendObject em vez de setObjectNotExists para states com unit/role para atualizar instancias existentes",
|
|
53
|
+
"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,以更新现有实例"
|
|
55
|
+
},
|
|
32
56
|
"1.2.20": {
|
|
33
57
|
"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",
|
|
34
58
|
"de": "Fix PR#5576: ungenutzte Admin-Dateien entfernt, Info-Logs auf Debug reduziert, englische State-Namen mit Einheiten, Channel-Objekte fuer statistics/info, button read:false, this.setInterval, translate Fallback auf Englisch",
|
|
@@ -92,32 +116,6 @@
|
|
|
92
116
|
"pl": "Usunięto pusty wiersz w wiadomości o pełnej baterii dla lepszej formatowania",
|
|
93
117
|
"uk": "Видалено порожній рядок у повідомленні про повну батарею для покращення форматування",
|
|
94
118
|
"zh-cn": "已删除电池满消息中的空行以改善格式"
|
|
95
|
-
},
|
|
96
|
-
"1.2.15": {
|
|
97
|
-
"en": "Added separator lines to battery full/empty and intermediate messages for improved readability",
|
|
98
|
-
"de": "Trennlinien zu Batterie VOLL/LEER und Intermediate-Nachrichten für bessere Lesbarkeit hinzugefügt",
|
|
99
|
-
"ru": "Добавлены разделительные линии к сообщениям о полной/пустой батарее и промежуточным сообщениям для улучшения читаемости",
|
|
100
|
-
"pt": "Adicionadas linhas separadoras às mensagens de bateria cheia/vazia e intermediárias para melhor legibilidade",
|
|
101
|
-
"nl": "Scheidinglijnen toegevoegd aan batterij vol/leeg en intermediate-berichten voor verbeterde leesbaarheid",
|
|
102
|
-
"fr": "Ajout de lignes séparatrices aux messages batterie pleine/vide et intermédiaires pour une meilleure lisibilité",
|
|
103
|
-
"it": "Aggiunte linee separatrici ai messaggi di batteria piena/vuota e intermedi per una migliore leggibilità",
|
|
104
|
-
"es": "Agregadas líneas separadoras a los mensajes de batería llena/vacía e intermedios para mejorar la legibilidad",
|
|
105
|
-
"pl": "Dodano linie oddzielające do wiadomości o pełnej/pustej baterii i pośrednich dla lepszej czytelności",
|
|
106
|
-
"uk": "Додано розділювальні лінії до повідомлень про повну/порожню батарею та проміжних для покращення читабельності",
|
|
107
|
-
"zh-cn": "已添加分隔线到电池满/空和中间消息以提高可读性"
|
|
108
|
-
},
|
|
109
|
-
"1.2.14": {
|
|
110
|
-
"en": "Fixed intermediate message formatting: Removed extra line break before weather data",
|
|
111
|
-
"de": "Intermediate-Nachricht formatiert: Zusätzlichen Zeilenumbruch vor Wetterdaten entfernt",
|
|
112
|
-
"ru": "Исправлено форматирование промежуточного сообщения: удалён лишний перенос строки перед данными погоды",
|
|
113
|
-
"pt": "Corrigida formatação da mensagem intermediária: Removida quebra de linha extra antes dos dados meteorológicos",
|
|
114
|
-
"nl": "Formattering tussentijds bericht gecorrigeerd: extra regeleis voor weergegevens verwijderd",
|
|
115
|
-
"fr": "Correction du formatage des messages intermédiaires: suppression du saut de ligne supplémentaire avant les données météo",
|
|
116
|
-
"it": "Corretta formattazione messaggio intermedio: rimossa interruzione di riga extra prima dei dati meteo",
|
|
117
|
-
"es": "Corregido formato de mensaje intermedio: Eliminada salto de línea adicional antes de datos meteorológicos",
|
|
118
|
-
"pl": "Poprawiono formatowanie wiadomości pośrednich: Usunięto dodatkowy podział wiersza przed danymi pogodowymi",
|
|
119
|
-
"uk": "Виправлено форматування проміжних повідомлень: видалено додатковий перенос рядка перед даними погоди",
|
|
120
|
-
"zh-cn": "修复中间消息格式:删除天气数据前的额外换行符"
|
|
121
119
|
}
|
|
122
120
|
},
|
|
123
121
|
"authors": [
|
|
@@ -206,7 +204,9 @@
|
|
|
206
204
|
"monthlyGridPower": "",
|
|
207
205
|
"weatherEnabled": true,
|
|
208
206
|
"weatherInIntermediate": true,
|
|
209
|
-
"weatherInDailyStats": true
|
|
207
|
+
"weatherInDailyStats": true,
|
|
208
|
+
"statsUseSunset": false,
|
|
209
|
+
"statsSunsetObject": ""
|
|
210
210
|
},
|
|
211
211
|
"objects": [
|
|
212
212
|
{
|
|
@@ -272,10 +272,11 @@
|
|
|
272
272
|
"common": {
|
|
273
273
|
"name": "Max SOC today",
|
|
274
274
|
"type": "number",
|
|
275
|
-
"role": "value",
|
|
275
|
+
"role": "value.battery",
|
|
276
276
|
"read": true,
|
|
277
277
|
"write": false,
|
|
278
|
-
"def": 0
|
|
278
|
+
"def": 0,
|
|
279
|
+
"unit": "%"
|
|
279
280
|
}
|
|
280
281
|
},
|
|
281
282
|
{
|
|
@@ -284,10 +285,11 @@
|
|
|
284
285
|
"common": {
|
|
285
286
|
"name": "Min SOC today",
|
|
286
287
|
"type": "number",
|
|
287
|
-
"role": "value",
|
|
288
|
+
"role": "value.battery",
|
|
288
289
|
"read": true,
|
|
289
290
|
"write": false,
|
|
290
|
-
"def": 100
|
|
291
|
+
"def": 100,
|
|
292
|
+
"unit": "%"
|
|
291
293
|
}
|
|
292
294
|
},
|
|
293
295
|
{
|
|
@@ -320,10 +322,11 @@
|
|
|
320
322
|
"common": {
|
|
321
323
|
"name": "Current SOC",
|
|
322
324
|
"type": "number",
|
|
323
|
-
"role": "value",
|
|
325
|
+
"role": "value.battery",
|
|
324
326
|
"read": true,
|
|
325
327
|
"write": false,
|
|
326
|
-
"def": 0
|
|
328
|
+
"def": 0,
|
|
329
|
+
"unit": "%"
|
|
327
330
|
}
|
|
328
331
|
},
|
|
329
332
|
{
|
|
@@ -332,10 +335,11 @@
|
|
|
332
335
|
"common": {
|
|
333
336
|
"name": "Current energy in kWh",
|
|
334
337
|
"type": "number",
|
|
335
|
-
"role": "value",
|
|
338
|
+
"role": "value.energy",
|
|
336
339
|
"read": true,
|
|
337
340
|
"write": false,
|
|
338
|
-
"def": 0
|
|
341
|
+
"def": 0,
|
|
342
|
+
"unit": "kWh"
|
|
339
343
|
}
|
|
340
344
|
},
|
|
341
345
|
{
|
|
@@ -344,10 +348,11 @@
|
|
|
344
348
|
"common": {
|
|
345
349
|
"name": "Production last month",
|
|
346
350
|
"type": "number",
|
|
347
|
-
"role": "value",
|
|
351
|
+
"role": "value.energy",
|
|
348
352
|
"read": true,
|
|
349
353
|
"write": false,
|
|
350
|
-
"def": 0
|
|
354
|
+
"def": 0,
|
|
355
|
+
"unit": "kWh"
|
|
351
356
|
}
|
|
352
357
|
},
|
|
353
358
|
{
|
|
@@ -356,10 +361,11 @@
|
|
|
356
361
|
"common": {
|
|
357
362
|
"name": "Consumption last month",
|
|
358
363
|
"type": "number",
|
|
359
|
-
"role": "value",
|
|
364
|
+
"role": "value.energy",
|
|
360
365
|
"read": true,
|
|
361
366
|
"write": false,
|
|
362
|
-
"def": 0
|
|
367
|
+
"def": 0,
|
|
368
|
+
"unit": "kWh"
|
|
363
369
|
}
|
|
364
370
|
},
|
|
365
371
|
{
|
|
@@ -368,10 +374,11 @@
|
|
|
368
374
|
"common": {
|
|
369
375
|
"name": "Feed-in last month",
|
|
370
376
|
"type": "number",
|
|
371
|
-
"role": "value",
|
|
377
|
+
"role": "value.energy",
|
|
372
378
|
"read": true,
|
|
373
379
|
"write": false,
|
|
374
|
-
"def": 0
|
|
380
|
+
"def": 0,
|
|
381
|
+
"unit": "kWh"
|
|
375
382
|
}
|
|
376
383
|
},
|
|
377
384
|
{
|
|
@@ -380,10 +387,11 @@
|
|
|
380
387
|
"common": {
|
|
381
388
|
"name": "Grid power last month",
|
|
382
389
|
"type": "number",
|
|
383
|
-
"role": "value",
|
|
390
|
+
"role": "value.energy",
|
|
384
391
|
"read": true,
|
|
385
392
|
"write": false,
|
|
386
|
-
"def": 0
|
|
393
|
+
"def": 0,
|
|
394
|
+
"unit": "kWh"
|
|
387
395
|
}
|
|
388
396
|
},
|
|
389
397
|
{
|
|
@@ -416,10 +424,11 @@
|
|
|
416
424
|
"common": {
|
|
417
425
|
"name": "Production last week",
|
|
418
426
|
"type": "number",
|
|
419
|
-
"role": "value",
|
|
427
|
+
"role": "value.energy",
|
|
420
428
|
"read": true,
|
|
421
429
|
"write": false,
|
|
422
|
-
"def": 0
|
|
430
|
+
"def": 0,
|
|
431
|
+
"unit": "kWh"
|
|
423
432
|
}
|
|
424
433
|
},
|
|
425
434
|
{
|
|
@@ -428,10 +437,11 @@
|
|
|
428
437
|
"common": {
|
|
429
438
|
"name": "Consumption last week",
|
|
430
439
|
"type": "number",
|
|
431
|
-
"role": "value",
|
|
440
|
+
"role": "value.energy",
|
|
432
441
|
"read": true,
|
|
433
442
|
"write": false,
|
|
434
|
-
"def": 0
|
|
443
|
+
"def": 0,
|
|
444
|
+
"unit": "kWh"
|
|
435
445
|
}
|
|
436
446
|
},
|
|
437
447
|
{
|
|
@@ -440,10 +450,11 @@
|
|
|
440
450
|
"common": {
|
|
441
451
|
"name": "Feed-in last week",
|
|
442
452
|
"type": "number",
|
|
443
|
-
"role": "value",
|
|
453
|
+
"role": "value.energy",
|
|
444
454
|
"read": true,
|
|
445
455
|
"write": false,
|
|
446
|
-
"def": 0
|
|
456
|
+
"def": 0,
|
|
457
|
+
"unit": "kWh"
|
|
447
458
|
}
|
|
448
459
|
},
|
|
449
460
|
{
|
|
@@ -452,10 +463,11 @@
|
|
|
452
463
|
"common": {
|
|
453
464
|
"name": "Grid power last week",
|
|
454
465
|
"type": "number",
|
|
455
|
-
"role": "value",
|
|
466
|
+
"role": "value.energy",
|
|
456
467
|
"read": true,
|
|
457
468
|
"write": false,
|
|
458
|
-
"def": 0
|
|
469
|
+
"def": 0,
|
|
470
|
+
"unit": "kWh"
|
|
459
471
|
}
|
|
460
472
|
},
|
|
461
473
|
{
|
package/main.js
CHANGED
|
@@ -123,11 +123,11 @@ class PvNotifications extends utils.Adapter {
|
|
|
123
123
|
type: 'state',
|
|
124
124
|
common: { name: 'Empty cycles today', type: 'number', role: 'value', read: true, write: false, def: 0 },
|
|
125
125
|
});
|
|
126
|
-
await this.
|
|
126
|
+
await this.extendObject('statistics.maxSOCToday', {
|
|
127
127
|
type: 'state',
|
|
128
128
|
common: { name: 'Max SOC today', type: 'number', role: 'value.battery', read: true, write: false, def: 0, unit: '%' },
|
|
129
129
|
});
|
|
130
|
-
await this.
|
|
130
|
+
await this.extendObject('statistics.minSOCToday', {
|
|
131
131
|
type: 'state',
|
|
132
132
|
common: { name: 'Min SOC today', type: 'number', role: 'value.battery', read: true, write: false, def: 100, unit: '%' },
|
|
133
133
|
});
|
|
@@ -139,11 +139,11 @@ class PvNotifications extends utils.Adapter {
|
|
|
139
139
|
type: 'state',
|
|
140
140
|
common: { name: 'Empty cycles this week', type: 'number', role: 'value', read: true, write: false, def: 0 },
|
|
141
141
|
});
|
|
142
|
-
await this.
|
|
142
|
+
await this.extendObject('statistics.currentSOC', {
|
|
143
143
|
type: 'state',
|
|
144
144
|
common: { name: 'Current SOC', type: 'number', role: 'value.battery', read: true, write: false, def: 0, unit: '%' },
|
|
145
145
|
});
|
|
146
|
-
await this.
|
|
146
|
+
await this.extendObject('statistics.currentEnergyKWh', {
|
|
147
147
|
type: 'state',
|
|
148
148
|
common: {
|
|
149
149
|
name: 'Current energy',
|
|
@@ -155,11 +155,11 @@ class PvNotifications extends utils.Adapter {
|
|
|
155
155
|
unit: 'kWh',
|
|
156
156
|
},
|
|
157
157
|
});
|
|
158
|
-
await this.
|
|
158
|
+
await this.extendObject('statistics.currentPower', {
|
|
159
159
|
type: 'state',
|
|
160
160
|
common: { name: 'Current power', type: 'number', role: 'value.power', read: true, write: false, def: 0, unit: 'W' },
|
|
161
161
|
});
|
|
162
|
-
await this.
|
|
162
|
+
await this.extendObject('statistics.currentTotalProduction', {
|
|
163
163
|
type: 'state',
|
|
164
164
|
common: {
|
|
165
165
|
name: 'Total production today',
|
|
@@ -171,21 +171,21 @@ class PvNotifications extends utils.Adapter {
|
|
|
171
171
|
unit: 'kWh',
|
|
172
172
|
},
|
|
173
173
|
});
|
|
174
|
-
await this.
|
|
174
|
+
await this.extendObject('statistics.currentFeedIn', {
|
|
175
175
|
type: 'state',
|
|
176
176
|
common: { name: 'Feed-in today', type: 'number', role: 'value.energy', read: true, write: false, def: 0, unit: 'kWh' },
|
|
177
177
|
});
|
|
178
|
-
await this.
|
|
178
|
+
await this.extendObject('statistics.currentConsumption', {
|
|
179
179
|
type: 'state',
|
|
180
180
|
common: { name: 'Consumption today', type: 'number', role: 'value.energy', read: true, write: false, def: 0, unit: 'kWh' },
|
|
181
181
|
});
|
|
182
|
-
await this.
|
|
182
|
+
await this.extendObject('statistics.currentGridPower', {
|
|
183
183
|
type: 'state',
|
|
184
184
|
common: { name: 'Grid power today', type: 'number', role: 'value.energy', read: true, write: false, def: 0, unit: 'kWh' },
|
|
185
185
|
});
|
|
186
186
|
|
|
187
187
|
// States für letzte Monats-/Wochenstatistik
|
|
188
|
-
await this.
|
|
188
|
+
await this.extendObject('statistics.lastMonthProduction', {
|
|
189
189
|
type: 'state',
|
|
190
190
|
common: {
|
|
191
191
|
name: 'Production last month',
|
|
@@ -197,7 +197,7 @@ class PvNotifications extends utils.Adapter {
|
|
|
197
197
|
unit: 'kWh',
|
|
198
198
|
},
|
|
199
199
|
});
|
|
200
|
-
await this.
|
|
200
|
+
await this.extendObject('statistics.lastMonthConsumption', {
|
|
201
201
|
type: 'state',
|
|
202
202
|
common: {
|
|
203
203
|
name: 'Consumption last month',
|
|
@@ -209,7 +209,7 @@ class PvNotifications extends utils.Adapter {
|
|
|
209
209
|
unit: 'kWh',
|
|
210
210
|
},
|
|
211
211
|
});
|
|
212
|
-
await this.
|
|
212
|
+
await this.extendObject('statistics.lastMonthFeedIn', {
|
|
213
213
|
type: 'state',
|
|
214
214
|
common: {
|
|
215
215
|
name: 'Feed-in last month',
|
|
@@ -221,7 +221,7 @@ class PvNotifications extends utils.Adapter {
|
|
|
221
221
|
unit: 'kWh',
|
|
222
222
|
},
|
|
223
223
|
});
|
|
224
|
-
await this.
|
|
224
|
+
await this.extendObject('statistics.lastMonthGridPower', {
|
|
225
225
|
type: 'state',
|
|
226
226
|
common: {
|
|
227
227
|
name: 'Grid power last month',
|
|
@@ -255,7 +255,7 @@ class PvNotifications extends utils.Adapter {
|
|
|
255
255
|
def: 0,
|
|
256
256
|
},
|
|
257
257
|
});
|
|
258
|
-
await this.
|
|
258
|
+
await this.extendObject('statistics.lastWeekProduction', {
|
|
259
259
|
type: 'state',
|
|
260
260
|
common: {
|
|
261
261
|
name: 'Production last week',
|
|
@@ -267,11 +267,11 @@ class PvNotifications extends utils.Adapter {
|
|
|
267
267
|
unit: 'kWh',
|
|
268
268
|
},
|
|
269
269
|
});
|
|
270
|
-
await this.
|
|
270
|
+
await this.extendObject('statistics.lastWeekConsumption', {
|
|
271
271
|
type: 'state',
|
|
272
272
|
common: { name: 'Consumption last week', type: 'number', role: 'value.energy', read: true, write: false, def: 0, unit: 'kWh' },
|
|
273
273
|
});
|
|
274
|
-
await this.
|
|
274
|
+
await this.extendObject('statistics.lastWeekFeedIn', {
|
|
275
275
|
type: 'state',
|
|
276
276
|
common: {
|
|
277
277
|
name: 'Feed-in last week',
|
|
@@ -283,7 +283,7 @@ class PvNotifications extends utils.Adapter {
|
|
|
283
283
|
unit: 'kWh',
|
|
284
284
|
},
|
|
285
285
|
});
|
|
286
|
-
await this.
|
|
286
|
+
await this.extendObject('statistics.lastWeekGridPower', {
|
|
287
287
|
type: 'state',
|
|
288
288
|
common: { name: 'Grid power last week', type: 'number', role: 'value.energy', read: true, write: false, def: 0, unit: 'kWh' },
|
|
289
289
|
});
|
|
@@ -1505,10 +1505,27 @@ ${statusText}
|
|
|
1505
1505
|
this.resetMonthlyStats();
|
|
1506
1506
|
}
|
|
1507
1507
|
|
|
1508
|
-
// Tägliche Statistik zur konfigurierten Zeit
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
this.
|
|
1508
|
+
// Tägliche Statistik — entweder zur konfigurierten Zeit oder zum Sonnenuntergang
|
|
1509
|
+
if (this.config.statsUseSunset && this.config.statsSunsetObject) {
|
|
1510
|
+
// 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();
|
|
1520
|
+
}
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
}).catch(e => this.log.warn(`Could not read sunset object: ${e.message}`));
|
|
1524
|
+
} else {
|
|
1525
|
+
const [dayHours, dayMinutes] = this.config.statsDayTime.split(':').map(Number);
|
|
1526
|
+
if (hours === dayHours && minutes === dayMinutes) {
|
|
1527
|
+
this.sendDailyStatsMessage();
|
|
1528
|
+
}
|
|
1512
1529
|
}
|
|
1513
1530
|
|
|
1514
1531
|
// Wöchentliche Statistik am konfigurierten Tag und Zeit
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.pv-notifications",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.22",
|
|
4
4
|
"description": "PV-Anlage Batterie-Status Telegram Benachrichtigungen",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Alex1808 via LLM: Qwen",
|
|
@@ -40,7 +40,12 @@
|
|
|
40
40
|
"lint": "eslint -c eslint.config.mjs .",
|
|
41
41
|
"lint:fix": "eslint -c eslint.config.mjs . --fix",
|
|
42
42
|
"translate": "translate-adapter",
|
|
43
|
-
"release": "release-script"
|
|
43
|
+
"release": "release-script",
|
|
44
|
+
"dev": "dev-server watch default",
|
|
45
|
+
"dev:run": "dev-server run default",
|
|
46
|
+
"dev:debug": "dev-server debug default",
|
|
47
|
+
"dev-setup": "dev-server setup default",
|
|
48
|
+
"dev-upload": "dev-server upload default"
|
|
44
49
|
},
|
|
45
50
|
"dependencies": {
|
|
46
51
|
"@iobroker/adapter-core": "^3.3.2"
|
|
@@ -54,7 +59,8 @@
|
|
|
54
59
|
"@iobroker/eslint-config": "^2.2.0",
|
|
55
60
|
"@iobroker/testing": "^5.2.2",
|
|
56
61
|
"@types/node": "^25.5.0",
|
|
57
|
-
"typescript": "~5.9.3"
|
|
62
|
+
"typescript": "~5.9.3",
|
|
63
|
+
"@iobroker/dev-server": "^0.8.0"
|
|
58
64
|
},
|
|
59
65
|
"bugs": {
|
|
60
66
|
"url": "https://github.com/alex/iobroker.pv-notifications/issues"
|