iobroker.nebenkosten-monitor 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 fischi87 <axel.fischer@hotmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,294 @@
1
+ ![Logo](admin/nebenkosten-monitor.png)
2
+
3
+ # ioBroker.nebenkosten-monitor
4
+
5
+ [![GitHub release](https://img.shields.io/github/v/release/fischi87/ioBroker.nebenkosten-monitor)](https://github.com/fischi87/ioBroker.nebenkosten-monitor/releases)
6
+ [![GitHub license](https://img.shields.io/github/license/fischi87/ioBroker.nebenkosten-monitor)](https://github.com/fischi87/ioBroker.nebenkosten-monitor/blob/main/LICENSE)
7
+ [![Test and Release](https://github.com/fischi87/ioBroker.nebenkosten-monitor/workflows/Test%20and%20Release/badge.svg)](https://github.com/fischi87/ioBroker.nebenkosten-monitor/actions)
8
+ [![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://paypal.me/bigplay87)
9
+
10
+ ## Nebenkosten-Monitor Adapter für ioBroker
11
+
12
+ Überwacht Gas-, Wasser- und Stromverbrauch mit automatischer Kostenberechnung, Abschlagsüberwachung und detaillierten Statistiken.
13
+
14
+ ### ✨ Hauptfunktionen
15
+
16
+ - 📊 **Verbrauchsüberwachung** für Gas, Wasser und Strom
17
+ - 💰 **Automatische Kostenberechnung** mit Arbeitspreis und Grundgebühr
18
+ - 💳 **Abschlagsüberwachung** - Sehe sofort ob Nachzahlung oder Guthaben droht
19
+ - 🔄 **Flexible Sensoren** - Nutzt vorhandene Sensoren (Shelly, Tasmota, Homematic, etc.)
20
+ - ⚡ **HT/NT-Tarife** - Volle Unterstützung für Hoch- und Nebentarife (Tag/Nacht)
21
+ - 🔄 **Gas-Spezial** - Automatische Umrechnung von m³ in kWh
22
+ - 🕛 **Automatische Resets** - Täglich, monatlich und jährlich (Vertragsjubiläum)
23
+ - 🔔 **Intelligente Benachrichtigungen** - Getrennte Erinnerungen für Abrechnungsende (Zählerstand) und Vertragswechsel (Tarif-Check) mit einstellbaren Vorlaufzeiten.
24
+
25
+ ---
26
+
27
+ ## 💝 Support
28
+
29
+ Gefällt dir dieser Adapter? Du kannst mich gerne mit einem Kaffee unterstützen! ☕
30
+
31
+ [![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://paypal.me/bigplay87)
32
+
33
+ ---
34
+
35
+ ## 🚀 Schnellstart
36
+
37
+ ### 1. Installation
38
+
39
+ 1. Adapter über die ioBroker Admin-Oberfläche installieren
40
+ 2. Instanz erstellen
41
+ 3. Konfiguration öffnen
42
+
43
+ ### 2. Grundkonfiguration (Beispiel: Gas)
44
+
45
+ 1. ✅ **Gas-Überwachung aktivieren**
46
+ 2. 🔍 **Sensor auswählen** - Deinen Gaszähler-Sensor (in m³)
47
+ 3. 📝 **Zählerstand bei Vertragsbeginn** - z.B. 10250 m³ (für korrekte Jahresberechnung)
48
+ 4. 📅 **Vertragsbeginn** - z.B. 01.01.2026 (für korrekten Jahresreset und Abschlagsberechnung)
49
+ 5. 🔧 **Offset** _(optional)_ - Falls dein Hardware-Zähler nicht bei 0 startet
50
+ 6. 🔥 **Brennwert & Z-Zahl** - Von deiner Gasrechnung (z.B. 11,5 und 0,95)
51
+ 7. 💶 **Preise eintragen**:
52
+ - Arbeitspreis: 0,1835 €/kWh
53
+ - Grundgebühr: 15,03 €/Monat
54
+ - Jahresgebühr: 60,00 €/Jahr (z.B. Zählermiete)
55
+ 8. 💳 **Abschlag** - Monatliche Vorauszahlung (z.B. 150 €)
56
+
57
+ **Fertig!** Der Adapter berechnet nun automatisch alle Kosten! 🎉
58
+
59
+ ---
60
+
61
+ ## 📊 Datenpunkte erklärt
62
+
63
+ Für jede aktivierte Verbrauchsart (Gas/Wasser/Strom) werden folgende Ordner angelegt:
64
+
65
+ ### 🗂️ **consumption** (Verbrauch)
66
+
67
+ | Datenpunkt | Beschreibung | Beispiel |
68
+ | --------------- | ----------------------------------------------------- | ---------------- |
69
+ | `daily` | Verbrauch **heute** (seit 00:00 Uhr) | 12,02 kWh |
70
+ | `dailyVolume` | Verbrauch heute in m³ | 1,092 m³ |
71
+ | `monthly` | Verbrauch **diesen Monat** (seit 1. des Monats) | 117,77 kWh |
72
+ | `monthlyVolume` | Monatlicher Verbrauch in m³ | 10,69 m³ |
73
+ | `yearly` | Verbrauch **seit Vertragsbeginn** (this billing year) | 730,01 kWh |
74
+ | `yearlyVolume` | Jahresverbrauch in m³ | 66,82 m³ |
75
+ | `dailyHT` | Tagesverbrauch im **Haupttarif** (HT) | 8,40 kWh |
76
+ | `dailyNT` | Tagesverbrauch im **Nebentarif** (NT) | 3,62 kWh |
77
+ | `monthlyHT` | Monatsverbrauch im HT | 82,15 kWh |
78
+ | `monthlyNT` | Monatsverbrauch im NT | 35,62 kWh |
79
+ | `yearlyHT` | Jahresverbrauch im HT | 511,00 kWh |
80
+ | `yearlyNT` | Jahresverbrauch im NT | 219,01 kWh |
81
+ | `lastUpdate` | Letzte Aktualisierung | 06.01.2026 14:11 |
82
+
83
+ **💡 Tipp:** `yearly` wird automatisch als `(Aktueller Zählerstand - Offset) - Initial Reading` berechnet!
84
+
85
+ **📅 Wichtig:** Der Jahresreset erfolgt am **Vertragsbeginn-Datum** (z.B. 12. Mai), NICHT am 1. Januar!
86
+
87
+ ---
88
+
89
+ ### 💰 **costs** (Kosten)
90
+
91
+ | Datenpunkt | Was ist das? | Berechnung | Beispiel |
92
+ | ------------- | ------------------------------------------------------------- | ------------------------------------------ | ------------------------------ |
93
+ | `daily` | Kosten **heute** | daily × Arbeitspreis | 2,27 € |
94
+ | `monthly` | Kosten **diesen Monat** | monthly × Arbeitspreis | 21,61 € |
95
+ | `yearly` | **Verbrauchskosten** seit Vertragsbeginn | yearly × Arbeitspreis | 137,61 € |
96
+ | `totalYearly` | **Gesamtkosten Jahr** (Verbrauch + alle Fixkosten) | yearly-cost + basicCharge + annualFee | 162,64 € |
97
+ | `basicCharge` | **Grundgebühr akkumuliert** (inkl. Jahresgebühr anteilig) | (Grundgebühr + (Jahresgebühr/12)) × Monate | 19,20 € |
98
+ | `annualFee` | **Jahresgebühr akkumuliert** | (Jahresgebühr / 12) × Monate | 4,17 € |
99
+ | `paidTotal` | **Bezahlt** via Abschlag | Abschlag × Monate | 150,00 € |
100
+ | `balance` | **🎯 WICHTIGSTER Wert!**<br>Nachzahlung (+) oder Guthaben (-) | totalYearly - paidTotal | **+12,64 €**<br>→ Nachzahlung! |
101
+
102
+ #### 🔍 **balance** genauer erklärt:
103
+
104
+ - **Positiv (+50 €)** → ❌ **Nachzahlung**: Du musst am Jahresende zahlen
105
+ - **Negativ (-24 €)** → ✅ **Guthaben**: Du bekommst Geld zurück
106
+ - **Null (0 €)** → ⚖️ **Ausgeglichen**: Verbrauch = Abschlag
107
+
108
+ **Beispiel:**
109
+
110
+ ```
111
+ Verbrauchskosten: 137,61 € (yearly)
112
+ Grundgebühr: + 15,03 € (basicCharge)
113
+ ────────────────────────────
114
+ Gesamtkosten: 152,64 €
115
+
116
+ Bezahlt (Abschlag): 150,00 € (paidTotal)
117
+ ────────────────────────────
118
+ Balance: +2,64 € → Nachzahlung
119
+ ```
120
+
121
+ ---
122
+
123
+ ### ℹ️ **info** (Informationen)
124
+
125
+ | Datenpunkt | Beschreibung | Beispiel |
126
+ | -------------------- | ---------------------------- | ---------------- |
127
+ | `currentPrice` | Aktueller Arbeitspreis | 0,1885 €/kWh |
128
+ | `meterReading` | Zählerstand in kWh | 112711,26 kWh |
129
+ | `meterReadingVolume` | Zählerstand in m³ (nur Gas) | 10305,03 m³ |
130
+ | `lastSync` | Letzte Sensor-Aktualisierung | 06.01.2026 14:11 |
131
+ | `sensorActive` | Sensor verbunden? | ✅ true |
132
+
133
+ ---
134
+
135
+ ### 📈 **statistics** (Statistiken)
136
+
137
+ | Datenpunkt | Beschreibung |
138
+ | ---------------- | ------------------------------------ |
139
+ | `averageDaily` | Durchschnittlicher Tagesverbrauch |
140
+ | `averageMonthly` | Durchschnittlicher Monatsverbrauch |
141
+ | `lastDayStart` | Letzter Tages-Reset (00:00 Uhr) |
142
+ | `lastMonthStart` | Letzter Monats-Reset (1. des Monats) |
143
+ | `lastYearStart` | Vertragsbeginn / Jahresstart |
144
+
145
+ ---
146
+
147
+ ### 📅 **billing** (Abrechnungszeitraum)
148
+
149
+ | Datenpunkt | Beschreibung | Beispiel |
150
+ | ------------------- | ---------------------------------------- | ----------- |
151
+ | `endReading` | Endzählerstand (manuell eintragen) | 10316.82 m³ |
152
+ | `closePeriod` | Zeitraum jetzt abschließen (Button) | true/false |
153
+ | `periodEnd` | Abrechnungszeitraum endet am | 01.01.2027 |
154
+ | `daysRemaining` | Tage bis Abrechnungsende | 359 Tage |
155
+ | `newInitialReading` | Neuer Startwert (für Config übernehmen!) | 10316.82 m³ |
156
+
157
+ **💡 Workflow am Jahresende:**
158
+
159
+ 1. Physischen Zähler ablesen (z.B. 10316.82 m³)
160
+ 2. Wert in `endReading` eintragen
161
+ 3. `closePeriod` auf `true` setzen
162
+ 4. ✅ Adapter archiviert automatisch alle Daten in `history.{JAHR}.*`
163
+ 5. ⚠️ **Wichtig:** Config aktualisieren mit neuem `initialReading` (siehe `newInitialReading`)
164
+
165
+ ---
166
+
167
+ ### 📊 **history** (Jahres-Historie)
168
+
169
+ | Datenpunkt | Beschreibung | Beispiel |
170
+ | --------------------------- | --------------------------------------- | ---------- |
171
+ | `history.2024.yearly` | Jahresverbrauch 2024 | 730.01 kWh |
172
+ | `history.2024.yearlyVolume` | Jahresverbrauch 2024 in m³ (Gas/Wasser) | 66.82 m³ |
173
+ | `history.2024.totalYearly` | Gesamtkosten 2024 | 162.64 € |
174
+ | `history.2024.balance` | Bilanz 2024 (Nachzahlung/Guthaben) | +12.64 € |
175
+
176
+ **💡 Automatische Archivierung:**
177
+
178
+ - Wird beim Abschluss des Abrechnungszeitraums erstellt
179
+ - Speichert alle wichtigen Jahreshöchstwerte inkl. HT/NT
180
+ - Ermöglicht Jahresvergleiche
181
+
182
+ ---
183
+
184
+ ### 🔧 **adjustment** (Manuelle Anpassung)
185
+
186
+ Korrigiere Sensor-Abdrift durch manuelle Anpassung.
187
+
188
+ | Datenpunkt | Beschreibung | Beispiel |
189
+ | ---------- | ------------------------------------ | --------- |
190
+ | `value` | Korrekturwert (Differenz zum Zähler) | +4.2 m³ |
191
+ | `note` | Notiz/Grund für Anpassung (optional) | "Ausfall" |
192
+ | `applied` | Zeitstempel der letzten Anwendung | 17035... |
193
+
194
+ **💡 Workflow:**
195
+
196
+ 1. Physischen Zähler ablesen: **10350 m³**
197
+ 2. Adapter zeigt: **10346 m³**
198
+ 3. Differenz in `adjustment.value` eintragen: **+4**
199
+ 4. ✅ Alle Berechnungen werden automatisch korrigiert.
200
+ 5. **Dank der HT/NT-Integration** werden Anpassungen bei HT/NT-Tarifen automatisch dem Haupttarif (HT) angerechnet.
201
+
202
+ ---
203
+
204
+ ## ⚙️ Spezialfunktionen
205
+
206
+ ### ⚡ Gas: m³ → kWh Umrechnung
207
+
208
+ Gasverbrauch wird in **m³ gemessen**, aber in **kWh abgerechnet**.
209
+
210
+ **Formel:** `kWh = m³ × Brennwert × Z-Zahl`
211
+
212
+ 💡 **Tipp:** Brennwert und Z-Zahl findest du auf deiner Gasrechnung!
213
+
214
+ ---
215
+
216
+ ### 🔄 Automatische Resets
217
+
218
+ Der Adapter setzt Zähler automatisch zurück:
219
+
220
+ | Zeitpunkt | Was passiert | Beispiel |
221
+ | --------------------- | ------------- | ------------------- |
222
+ | **00:00 Uhr** täglich | `daily` → 0 | Neuer Tag beginnt |
223
+ | **1. des Monats** | `monthly` → 0 | Neuer Monat beginnt |
224
+ | **Vertragsjubiläum** | `yearly` → 0 | Abrechnungsjahr neu |
225
+
226
+ ---
227
+
228
+ ## Changelog
229
+
230
+ ### 1.3.1 (2026-01-09)
231
+
232
+ - **FIX:** Kritischer Fehler behoben: HT/NT-Datenpunkte wurden aufgrund eines internen Namensfehlers (electricity vs. strom) nicht angelegt.
233
+ - **FIX:** Warnungen im Log "State ... has no existing object" beseitigt.
234
+
235
+ ### 1.3.0 (2026-01-09)
236
+
237
+ - **NEW:** **Differenzierte Benachrichtigungen** - Zwei getrennte Erinnerungstypen:
238
+ - **Abrechnungsende**: Erinnerung zum Zählerstand ablesen (z.B. 7 Tage vorher).
239
+ - **Vertragswechsel**: Erinnerung zum Tarif-Check / Kündigen (z.B. 60 Tage vorher).
240
+ - **NEW:** **Interaktives Benachrichtigungs-Feedback** - Der Test-Button zeigt nun direkt Erfolgs- oder Fehlermeldungen via Popup an (inkl. SMTP-Fehler vom Email-Adapter).
241
+ - **NEW:** **Live-Test ohne Speichern** - Benachrichtigungen können jetzt sofort getestet werden, ohne die Konfiguration vorher speichern zu müssen.
242
+ - **NEW:** **Modularer Code-Aufbau** - Umstellung auf eine moderne Architektur mit spezialisierten Managern für bessere Performance und Wartbarkeit.
243
+ - **IMPROVED:** **Responsives Admin-UI** - Kompakteres Button-Design und optimierte Darstellung auf mobilen Geräten.
244
+ - **FIX:** Redundante Volumen-Datenpunkte (`dailyVolume` etc.) für Strom und Wasser entfernt, um Log-Warnungen zu vermeiden.
245
+ - **FIX:** Mandatory bot requirements (Changelog header, News cleanup).
246
+
247
+ ### 1.2.7 (2026-01-08)
248
+
249
+ - **NEW:** Universelles Benachrichtigungssystem für Abrechnungszeitraum-Erinnerungen (Telegram, Pushover, Email, etc.)
250
+ - **NEW:** Optionale PayPal-Unterstützung (Links in README und Config)
251
+ - **FIX:** Dezimalstellen für Tagesverbrauch auf 3 erhöht (bessere Unterstützung für Sensoren mit kleinen Deltas wie Shelly)
252
+ - **FIX:** Erlauben von leeren Preisen/Gebühren in der Konfiguration (verhindert Speicher-Fehler)
253
+
254
+ ### 1.2.6 (2026-01-08)
255
+
256
+ - **FIX:** Erlaube leere Felder für Grundgebühr/Jahresgebühr/Abschlag in der Konfiguration (verhindert Speicher-Block im Admin-UI)
257
+
258
+ ### 1.2.5 (2026-01-08)
259
+
260
+ - **NEW:** Transparente Anzeige des Vertragsbeginns bei jedem Adapter-Start im Log
261
+ - **NEW:** Unterstützung für zusätzliche **Jahresgebühren** (z.B. Zählermiete)
262
+ - **NEW:** Datenpunkt `costs.totalYearly` für die echten Gesamtkosten
263
+ - **FIX:** Kritischer Fehler in der Verbrauchs-Delta-Berechnung behoben (v1.2.4)
264
+ - **FIX:** Arbeitspreis-Anzeige bei Strom korrigiert
265
+ - **FIX:** Gas m³ → kWh Umrechnung für Anpassungswerte
266
+ - **FIX:** Korrekte Initialisierung des Vertragsjahres bei Neustart
267
+ - **FIX:** Vereinheitlichung der Konfigurationsschlüssel (`wasserInitialReading`)
268
+ - **ROBUSTNESS:** Schutz vor Datenverlust bei Adapter-Neustart (Zählerstand-Persistierung)
269
+ - **ROBUSTNESS:** Integration von manuellen Anpassungen in die HT/NT-Kostenrechnung
270
+ - **NEW:** Volle Unterstützung für **HT/NT-Tarife** für alle Energieträger (Strom, Gas, Wasser)
271
+ - **NEW:** Automatische Archivierung von HT/NT-Verbräuchen und Kosten in der Historie
272
+ - **DOCS:** Internationalisierung von Titel und Beschreibung
273
+
274
+ ### 1.2.2 (2026-01-08)
275
+
276
+ - **NEW:** Manuelle Anpassung für Sensor-Abdrift-Korrektur
277
+ - **NEW:** Abrechnungszeitraum-Management mit automatischer Archivierung
278
+ - **NEW:** Unterstützung für zusätzliche **Jahresgebühren** (z.B. Zählermiete)
279
+ - **NEW:** Datenpunkt `costs.totalYearly` für die echten Gesamtkosten
280
+ - **FIX:** Arbeitspreis-Anzeige bei Strom korrigiert
281
+ - **FIX:** Gas m³ → kWh Umrechnung für Anpassungswerte
282
+ - **DOCS:** Internationalisierung von Titel und Beschreibung
283
+
284
+ ---
285
+
286
+ - Initial release
287
+
288
+ ---
289
+
290
+ ## License
291
+
292
+ MIT License
293
+
294
+ Copyright (c) 2026 fischi87 <axel.fischer@hotmail.com>
@@ -0,0 +1,5 @@
1
+ {
2
+ "nebenkosten-monitor adapter settings": "Adaptereinstellungen für nebenkosten-monitor",
3
+ "option1": "Option1",
4
+ "option2": "Option2"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "nebenkosten-monitor adapter settings": "Adapter settings for nebenkosten-monitor",
3
+ "option1": "option1",
4
+ "option2": "option2"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "nebenkosten-monitor adapter settings": "Ajustes del adaptador para nebenkosten-monitor",
3
+ "option1": "opción1",
4
+ "option2": "opción2"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "nebenkosten-monitor adapter settings": "Paramètres d'adaptateur pour nebenkosten-monitor",
3
+ "option1": "option1",
4
+ "option2": "option2"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "nebenkosten-monitor adapter settings": "Impostazioni dell'adattatore per nebenkosten-monitor",
3
+ "option1": "opzione1",
4
+ "option2": "opzione2"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "nebenkosten-monitor adapter settings": "Adapterinstellingen voor nebenkosten-monitor",
3
+ "option1": "optie1",
4
+ "option2": "optie2"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "nebenkosten-monitor adapter settings": "Ustawienia adaptera dla nebenkosten-monitor",
3
+ "option1": "opcja 1",
4
+ "option2": "opcja 2"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "nebenkosten-monitor adapter settings": "Configurações do adaptador para nebenkosten-monitor",
3
+ "option1": "opção1",
4
+ "option2": "opção2"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "nebenkosten-monitor adapter settings": "Настройки адаптера для nebenkosten-monitor",
3
+ "option1": "вариант 1",
4
+ "option2": "вариант 2"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "nebenkosten-monitor adapter settings": "Налаштування адаптера для nebenkosten-monitor",
3
+ "option1": "варіант1",
4
+ "option2": "варіант2"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "nebenkosten-monitor adapter settings": "nebenkosten-monitor的适配器设置",
3
+ "option1": "选项1",
4
+ "option2": "选项2"
5
+ }