iobroker.utility-monitor 1.4.2
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 +21 -0
- package/README.md +384 -0
- package/admin/i18n/de.json +5 -0
- package/admin/i18n/en.json +5 -0
- package/admin/i18n/es.json +5 -0
- package/admin/i18n/fr.json +5 -0
- package/admin/i18n/it.json +5 -0
- package/admin/i18n/nl.json +5 -0
- package/admin/i18n/pl.json +5 -0
- package/admin/i18n/pt.json +5 -0
- package/admin/i18n/ru.json +5 -0
- package/admin/i18n/uk.json +5 -0
- package/admin/i18n/zh-cn.json +5 -0
- package/admin/jsonConfig.json +1542 -0
- package/admin/utility-monitor.png +0 -0
- package/io-package.json +188 -0
- package/lib/adapter-config.d.ts +19 -0
- package/lib/billingManager.js +806 -0
- package/lib/calculator.js +254 -0
- package/lib/configParser.js +92 -0
- package/lib/consumptionManager.js +407 -0
- package/lib/messagingHandler.js +339 -0
- package/lib/multiMeterManager.js +749 -0
- package/lib/stateManager.js +1556 -0
- package/main.js +297 -0
- package/package.json +80 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 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,384 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# ioBroker.utility-monitor
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/iobroker.utility-monitor)
|
|
6
|
+
[](https://github.com/fischi87/ioBroker.utility-monitor/releases)
|
|
7
|
+
[](https://github.com/fischi87/ioBroker.utility-monitor/blob/main/LICENSE)
|
|
8
|
+
[](https://github.com/fischi87/ioBroker.utility-monitor/actions)
|
|
9
|
+
|
|
10
|
+
## Utility Monitor Adapter for ioBroker
|
|
11
|
+
|
|
12
|
+
Monitor gas, water, and electricity consumption with automatic cost calculation, advance payment monitoring, and detailed statistics.
|
|
13
|
+
|
|
14
|
+
### ✨ Hauptfunktionen
|
|
15
|
+
|
|
16
|
+
- 📊 **Verbrauchsüberwachung** für Gas, Wasser, Strom und **PV/Einspeisung**
|
|
17
|
+
- 🎯 **Multi-Meter Support** - Mehrere Zähler pro Typ (z.B. Hauptzähler + Werkstatt)
|
|
18
|
+
- 💰 **Automatische Kostenberechnung** mit Arbeitspreis und Grundgebühr
|
|
19
|
+
- ☀️ **PV & Einspeisung** - Überwache deine Einspeisung und Vergütung
|
|
20
|
+
- 💳 **Abschlagsüberwachung** - Sehe sofort ob Nachzahlung oder Guthaben droht
|
|
21
|
+
- 🔄 **Flexible Sensoren** - Nutzt vorhandene Sensoren (Shelly, Tasmota, Homematic, etc.)
|
|
22
|
+
- ⚡ **HT/NT-Tarife** - Volle Unterstützung für Hoch- und Nebentarife (Tag/Nacht)
|
|
23
|
+
- 🔄 **Gas-Spezial** - Automatische Umrechnung von m³ in kWh
|
|
24
|
+
- 🕛 **Automatische Resets** - Täglich, monatlich und jährlich (Vertragsjubiläum)
|
|
25
|
+
- 🔔 **Intelligente Benachrichtigungen** - Getrennte Erinnerungen für Abrechnungsende (Zählerstand) und Vertragswechsel (Tarif-Check) mit einstellbaren Vorlaufzeiten
|
|
26
|
+
- ⌨️ **Komma-Support** - Admin UI akzeptiert `12,50` oder `12.50` für Dezimalzahlen
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 💝 Support
|
|
31
|
+
|
|
32
|
+
Gefällt dir dieser Adapter? Du kannst mich gerne mit einem Kaffee unterstützen! ☕
|
|
33
|
+
|
|
34
|
+
[](https://paypal.me/bigplay87)
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 🚀 Schnellstart
|
|
39
|
+
|
|
40
|
+
### 1. Installation
|
|
41
|
+
|
|
42
|
+
1. Adapter über die ioBroker Admin-Oberfläche installieren
|
|
43
|
+
2. Instanz erstellen
|
|
44
|
+
3. Konfiguration öffnen
|
|
45
|
+
|
|
46
|
+
### 2. Grundkonfiguration (Beispiel: Gas)
|
|
47
|
+
|
|
48
|
+
1. ✅ **Gas-Überwachung aktivieren**
|
|
49
|
+
2. 🔍 **Sensor auswählen** - Deinen Gaszähler-Sensor (in m³)
|
|
50
|
+
3. 📝 **Zählerstand bei Vertragsbeginn** - z.B. 10250 m³ (für korrekte Jahresberechnung)
|
|
51
|
+
4. 📅 **Vertragsbeginn** - z.B. 01.01.2026 (für korrekten Jahresreset und Abschlagsberechnung)
|
|
52
|
+
5. 🔧 **Offset** _(optional)_ - Falls dein Hardware-Zähler nicht bei 0 startet
|
|
53
|
+
6. 🔥 **Brennwert & Z-Zahl** - Von deiner Gasrechnung (z.B. 11,5 und 0,95)
|
|
54
|
+
7. 💶 **Preise eintragen**:
|
|
55
|
+
- Arbeitspreis: 0,1835 €/kWh
|
|
56
|
+
- Grundgebühr: 15,03 €/Monat
|
|
57
|
+
- Jahresgebühr: 60,00 €/Jahr (z.B. Zählermiete)
|
|
58
|
+
8. 💳 **Abschlag** - Monatliche Vorauszahlung (z.B. 150 €)
|
|
59
|
+
|
|
60
|
+
**Fertig!** Der Adapter berechnet nun automatisch alle Kosten! 🎉
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 📊 Datenpunkte erklärt
|
|
65
|
+
|
|
66
|
+
Für jede aktivierte Verbrauchsart (Gas/Wasser/Strom/PV) werden folgende Ordner angelegt:
|
|
67
|
+
|
|
68
|
+
### 🗂️ **consumption** (Verbrauch)
|
|
69
|
+
|
|
70
|
+
| Datenpunkt | Beschreibung | Beispiel |
|
|
71
|
+
| --------------- | ----------------------------------------------------- | ---------------- |
|
|
72
|
+
| `daily` | Verbrauch **heute** (seit 00:00 Uhr) | 12,02 kWh |
|
|
73
|
+
| `dailyVolume` | Verbrauch heute in m³ | 1,092 m³ |
|
|
74
|
+
| `monthly` | Verbrauch **diesen Monat** (seit 1. des Monats) | 117,77 kWh |
|
|
75
|
+
| `monthlyVolume` | Monatlicher Verbrauch in m³ | 10,69 m³ |
|
|
76
|
+
| `yearly` | Verbrauch **seit Vertragsbeginn** (this billing year) | 730,01 kWh |
|
|
77
|
+
| `yearlyVolume` | Jahresverbrauch in m³ | 66,82 m³ |
|
|
78
|
+
| `dailyHT` | Tagesverbrauch im **Haupttarif** (HT) | 8,40 kWh |
|
|
79
|
+
| `dailyNT` | Tagesverbrauch im **Nebentarif** (NT) | 3,62 kWh |
|
|
80
|
+
| `monthlyHT` | Monatsverbrauch im HT | 82,15 kWh |
|
|
81
|
+
| `monthlyNT` | Monatsverbrauch im NT | 35,62 kWh |
|
|
82
|
+
| `yearlyHT` | Jahresverbrauch im HT | 511,00 kWh |
|
|
83
|
+
| `yearlyNT` | Jahresverbrauch im NT | 219,01 kWh |
|
|
84
|
+
| `lastUpdate` | Letzte Aktualisierung | 06.01.2026 14:11 |
|
|
85
|
+
|
|
86
|
+
**💡 Tipp:** `yearly` wird automatisch als `(Aktueller Zählerstand - Offset) - Initial Reading` berechnet!
|
|
87
|
+
|
|
88
|
+
**📅 Wichtig:** Der Jahresreset erfolgt am **Vertragsbeginn-Datum** (z.B. 12. Mai), NICHT am 1. Januar!
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### 💰 **costs** (Kosten)
|
|
93
|
+
|
|
94
|
+
| Datenpunkt | Was ist das? | Berechnung | Beispiel |
|
|
95
|
+
| ------------- | ------------------------------------------------------------- | ------------------------------------------ | ------------------------------ |
|
|
96
|
+
| `daily` | Kosten **heute** | daily × Arbeitspreis | 2,27 € |
|
|
97
|
+
| `monthly` | Kosten **diesen Monat** | monthly × Arbeitspreis | 21,61 € |
|
|
98
|
+
| `yearly` | **Verbrauchskosten** seit Vertragsbeginn | yearly × Arbeitspreis | 137,61 € |
|
|
99
|
+
| `totalYearly` | **Gesamtkosten Jahr** (Verbrauch + alle Fixkosten) | yearly-cost + basicCharge + annualFee | 162,64 € |
|
|
100
|
+
| `basicCharge` | **Grundgebühr akkumuliert** (inkl. Jahresgebühr anteilig) | (Grundgebühr + (Jahresgebühr/12)) × Monate | 19,20 € |
|
|
101
|
+
| `annualFee` | **Jahresgebühr akkumuliert** | (Jahresgebühr / 12) × Monate | 4,17 € |
|
|
102
|
+
| `paidTotal` | **Bezahlt** via Abschlag | Abschlag × Monate | 150,00 € |
|
|
103
|
+
| `balance` | **🎯 WICHTIGSTER Wert!**<br>Nachzahlung (+) oder Guthaben (-) | totalYearly - paidTotal | **+12,64 €**<br>→ Nachzahlung! |
|
|
104
|
+
|
|
105
|
+
#### 🔍 **balance** genauer erklärt:
|
|
106
|
+
|
|
107
|
+
- **Positiv (+50 €)** → ❌ **Nachzahlung**: Du musst am Jahresende zahlen
|
|
108
|
+
- **Negativ (-24 €)** → ✅ **Guthaben**: Du bekommst Geld zurück
|
|
109
|
+
- **Null (0 €)** → ⚖️ **Ausgeglichen**: Verbrauch = Abschlag
|
|
110
|
+
|
|
111
|
+
**Beispiel:**
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
Verbrauchskosten: 137,61 € (yearly)
|
|
115
|
+
Grundgebühr: + 15,03 € (basicCharge)
|
|
116
|
+
────────────────────────────
|
|
117
|
+
Gesamtkosten: 152,64 €
|
|
118
|
+
|
|
119
|
+
Bezahlt (Abschlag): 150,00 € (paidTotal)
|
|
120
|
+
────────────────────────────
|
|
121
|
+
Balance: +2,64 € → Nachzahlung
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### ℹ️ **info** (Informationen)
|
|
127
|
+
|
|
128
|
+
| Datenpunkt | Beschreibung | Beispiel |
|
|
129
|
+
| -------------------- | ---------------------------- | ---------------- |
|
|
130
|
+
| `currentPrice` | Aktueller Arbeitspreis | 0,1885 €/kWh |
|
|
131
|
+
| `meterReading` | Zählerstand in kWh | 112711,26 kWh |
|
|
132
|
+
| `meterReadingVolume` | Zählerstand in m³ (nur Gas) | 10305,03 m³ |
|
|
133
|
+
| `lastSync` | Letzte Sensor-Aktualisierung | 06.01.2026 14:11 |
|
|
134
|
+
| `sensorActive` | Sensor verbunden? | ✅ true |
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### 📈 **statistics** (Statistiken)
|
|
139
|
+
|
|
140
|
+
| Datenpunkt | Beschreibung |
|
|
141
|
+
| ---------------- | ------------------------------------ |
|
|
142
|
+
| `averageDaily` | Durchschnittlicher Tagesverbrauch |
|
|
143
|
+
| `averageMonthly` | Durchschnittlicher Monatsverbrauch |
|
|
144
|
+
| `lastDayStart` | Letzter Tages-Reset (00:00 Uhr) |
|
|
145
|
+
| `lastMonthStart` | Letzter Monats-Reset (1. des Monats) |
|
|
146
|
+
| `lastYearStart` | Vertragsbeginn / Jahresstart |
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
### 📅 **billing** (Abrechnungszeitraum)
|
|
151
|
+
|
|
152
|
+
| Datenpunkt | Beschreibung | Beispiel |
|
|
153
|
+
| ------------------- | ---------------------------------------- | ----------- |
|
|
154
|
+
| `endReading` | Endzählerstand (manuell eintragen) | 10316.82 m³ |
|
|
155
|
+
| `closePeriod` | Zeitraum jetzt abschließen (Button) | true/false |
|
|
156
|
+
| `periodEnd` | Abrechnungszeitraum endet am | 01.01.2027 |
|
|
157
|
+
| `daysRemaining` | Tage bis Abrechnungsende | 359 Tage |
|
|
158
|
+
| `newInitialReading` | Neuer Startwert (für Config übernehmen!) | 10316.82 m³ |
|
|
159
|
+
|
|
160
|
+
**💡 Workflow am Jahresende:**
|
|
161
|
+
|
|
162
|
+
1. Physischen Zähler ablesen (z.B. 10316.82 m³)
|
|
163
|
+
2. Wert in `endReading` eintragen
|
|
164
|
+
3. `closePeriod` auf `true` setzen
|
|
165
|
+
4. ✅ Adapter archiviert automatisch alle Daten in `history.{JAHR}.*`
|
|
166
|
+
5. ⚠️ **Wichtig:** Config aktualisieren mit neuem `initialReading` (siehe `newInitialReading`)
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### 📊 **history** (Jahres-Historie)
|
|
171
|
+
|
|
172
|
+
| Datenpunkt | Beschreibung | Beispiel |
|
|
173
|
+
| --------------------------- | --------------------------------------- | ---------- |
|
|
174
|
+
| `history.2024.yearly` | Jahresverbrauch 2024 | 730.01 kWh |
|
|
175
|
+
| `history.2024.yearlyVolume` | Jahresverbrauch 2024 in m³ (Gas/Wasser) | 66.82 m³ |
|
|
176
|
+
| `history.2024.totalYearly` | Gesamtkosten 2024 | 162.64 € |
|
|
177
|
+
| `history.2024.balance` | Bilanz 2024 (Nachzahlung/Guthaben) | +12.64 € |
|
|
178
|
+
|
|
179
|
+
**💡 Automatische Archivierung:**
|
|
180
|
+
|
|
181
|
+
- Wird beim Abschluss des Abrechnungszeitraums erstellt
|
|
182
|
+
- Speichert alle wichtigen Jahreshöchstwerte inkl. HT/NT
|
|
183
|
+
- Ermöglicht Jahresvergleiche
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
### 🔧 **adjustment** (Manuelle Anpassung)
|
|
188
|
+
|
|
189
|
+
Korrigiere Sensor-Abdrift durch manuelle Anpassung.
|
|
190
|
+
|
|
191
|
+
| Datenpunkt | Beschreibung | Beispiel |
|
|
192
|
+
| ---------- | ------------------------------------ | --------- |
|
|
193
|
+
| `value` | Korrekturwert (Differenz zum Zähler) | +4.2 m³ |
|
|
194
|
+
| `note` | Notiz/Grund für Anpassung (optional) | "Ausfall" |
|
|
195
|
+
| `applied` | Zeitstempel der letzten Anwendung | 17035... |
|
|
196
|
+
|
|
197
|
+
**💡 Workflow:**
|
|
198
|
+
|
|
199
|
+
1. Physischen Zähler ablesen: **10350 m³**
|
|
200
|
+
2. Adapter zeigt: **10346 m³**
|
|
201
|
+
3. Differenz in `adjustment.value` eintragen: **+4**
|
|
202
|
+
4. ✅ Alle Berechnungen werden automatisch korrigiert.
|
|
203
|
+
5. **Dank der HT/NT-Integration** werden Anpassungen bei HT/NT-Tarifen automatisch dem Haupttarif (HT) angerechnet.
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## ⚙️ Spezialfunktionen
|
|
208
|
+
|
|
209
|
+
### ⚡ Gas: m³ → kWh Umrechnung
|
|
210
|
+
|
|
211
|
+
Gasverbrauch wird in **m³ gemessen**, aber in **kWh abgerechnet**.
|
|
212
|
+
|
|
213
|
+
**Formel:** `kWh = m³ × Brennwert × Z-Zahl`
|
|
214
|
+
|
|
215
|
+
💡 **Tipp:** Brennwert und Z-Zahl findest du auf deiner Gasrechnung!
|
|
216
|
+
|
|
217
|
+
### 🔄 Automatische Resets
|
|
218
|
+
|
|
219
|
+
Der Adapter setzt Zähler automatisch zurück:
|
|
220
|
+
|
|
221
|
+
| Zeitpunkt | Was passiert | Beispiel |
|
|
222
|
+
| --------------------- | ------------- | ------------------- |
|
|
223
|
+
| **00:00 Uhr** täglich | `daily` → 0 | Neuer Tag beginnt |
|
|
224
|
+
| **1. des Monats** | `monthly` → 0 | Neuer Monat beginnt |
|
|
225
|
+
| **Vertragsjubiläum** | `yearly` → 0 | Abrechnungsjahr neu |
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Changelog
|
|
230
|
+
|
|
231
|
+
### **WORK IN PROGRESS**
|
|
232
|
+
|
|
233
|
+
### 1.4.2 (2026-01-18)
|
|
234
|
+
|
|
235
|
+
- **FIX:** 🔧 **TypeScript Errors Resolved** - All TypeScript compilation errors fixed:
|
|
236
|
+
- Fixed `formatDateString()` missing argument in multiMeterManager
|
|
237
|
+
- Fixed Date arithmetic type errors (explicit timestamp conversion)
|
|
238
|
+
- Added `@ts-ignore` comments for intentional error tests
|
|
239
|
+
- **FIX:** 🐛 **Critical Multi-Meter Balance Bug** - Fixed incorrect balance calculation:
|
|
240
|
+
- `totalYearly` was using hardcoded 12 months for `basicCharge` instead of actual months since contract start
|
|
241
|
+
- Now correctly calculates `basicChargeAccumulated = grundgebuehr × monthsSinceYearStart`
|
|
242
|
+
- Fixes incorrect high balance values for users with mid-year contract start dates
|
|
243
|
+
- **NEW:** ✅ **Enhanced Input Validation** - Robust validation for configuration values:
|
|
244
|
+
- `isValidSensorDP()` - Validates sensor datapoint IDs
|
|
245
|
+
- `parseConfigDate()` - Validates German and ISO date formats
|
|
246
|
+
- `parseConfigPrice()` - Ensures prices are non-negative
|
|
247
|
+
- **NEW:** 📋 **Extended Constants** - Centralized constant definitions:
|
|
248
|
+
- Rounding precision, time constants, validation constraints
|
|
249
|
+
- Better maintainability and consistency across modules
|
|
250
|
+
- **NEW:** 🛡️ **Error Handling** - Safe wrapper for state creation:
|
|
251
|
+
- `safeSetObjectNotExists()` catches and logs state creation failures
|
|
252
|
+
- Prevents silent failures in StateManager
|
|
253
|
+
- **IMPROVED:** 🧪 **Code Quality** - All tests passing (31 unit + 57 package tests)
|
|
254
|
+
|
|
255
|
+
### 1.4.1 (2026-01-18)
|
|
256
|
+
|
|
257
|
+
- **FIX:** 🐛 **Multi-Meter Critical Bugs** - Comprehensive fixes for multi-meter functionality:
|
|
258
|
+
- Fixed `updateCosts()` to correctly delegate to multiMeterManager for all meters
|
|
259
|
+
- Fixed `closeBillingPeriod()` to archive totals instead of only main meter values
|
|
260
|
+
- Fixed `checkMonthlyReport()` to display totals in reports for multi-meter setups
|
|
261
|
+
- Fixed state type mismatch: `lastDayStart`, `lastMonthStart`, `lastYearStart` now use number (timestamp) instead of string
|
|
262
|
+
- **NEW:** 🎯 **Per-Meter Billing Closure** - Each meter can now be closed individually with its own `billing.closePeriod` button
|
|
263
|
+
- Main meter: `gas.billing.closePeriod`
|
|
264
|
+
- Additional meters: `gas.erdgeschoss.billing.closePeriod`, `gas.keller.billing.closePeriod`, etc.
|
|
265
|
+
- Each meter uses its own contract date for yearly resets
|
|
266
|
+
- **NEW:** 📅 **Individual Contract Anniversary Resets** - Each meter resets on its own contract date
|
|
267
|
+
- Primary: Manual `closePeriod` triggers yearly reset immediately
|
|
268
|
+
- Fallback: Automatic reset on contract anniversary if user forgets to close period
|
|
269
|
+
- Contract date is preserved when closing period early (no drift)
|
|
270
|
+
- **IMPROVED:** 💰 **Billing Period Closure** - No longer resets `basicCharge` and `annualFee` to zero
|
|
271
|
+
- These values now persist from config (user must update config if tariff changes)
|
|
272
|
+
- Helpful reminder message added after closing period
|
|
273
|
+
- **FIX:** 🤖 **ioBroker Bot Compliance** - All bot checker issues resolved:
|
|
274
|
+
- Removed non-existent version 1.3.4 from news
|
|
275
|
+
- Added complete translations for all news entries (9 languages)
|
|
276
|
+
- Removed `.npmignore` file (using `files` field in package.json)
|
|
277
|
+
- DevDependencies already use `~` syntax (compliant)
|
|
278
|
+
|
|
279
|
+
### 1.4.0 (2026-01-17)
|
|
280
|
+
|
|
281
|
+
- **NEW:** 🎉 **Multi-Meter Support** - Verwende mehrere Zähler pro Typ (z.B. Gas Hauptzähler + Werkstatt-Zähler)
|
|
282
|
+
- Beliebig viele zusätzliche Zähler mit eigenen Namen konfigurierbar
|
|
283
|
+
- Separate Kostenberechnung und Statistiken pro Zähler
|
|
284
|
+
- Automatische Totals-Berechnung über alle Zähler
|
|
285
|
+
- **NEW:** ✨ **Komma-Dezimaltrenner Support** - Admin UI akzeptiert jetzt sowohl Komma als auch Punkt (z.B. `12,50` oder `12.50`)
|
|
286
|
+
- **NEW:** 📊 **Pro-Meter Billing** - Jeder Zähler hat eigene `billing.daysRemaining` und `billing.periodEnd` Werte
|
|
287
|
+
- **NEW:** 🔧 **Config-Parser** - Automatische Konvertierung von String→Number mit Komma-Support
|
|
288
|
+
- **FIX:** 💰 **Balance-Berechnung korrigiert** - Nutzt jetzt begonnene Monate statt volle Monate (17 Tage = 1 Monat gezahlt)
|
|
289
|
+
- **FIX:** 🐛 **String-Type Fehler** behoben - Config-Werte werden korrekt als Numbers verarbeitet
|
|
290
|
+
- **IMPROVED:** 🔍 **Debug-Logging** - Hilfreiche Debug-Logs für Troubleshooting (nur in Debug-Modus sichtbar)
|
|
291
|
+
- **CLEANUP:** 🧹 Repository aufgeräumt - Alte Backup-Dateien und temporäre Scripts entfernt
|
|
292
|
+
|
|
293
|
+
### 1.3.5 (2026-01-11)
|
|
294
|
+
|
|
295
|
+
- **NEW:** **Monatlicher Status-Bericht** - Optionaler monatlicher Bericht per Benachrichtigung.
|
|
296
|
+
- **NEW:** Datenpunkte `statistics.lastDay` (Verbrauch gestern) für alle Typen und `lastDayVolume` (Gas) hinzugefügt.
|
|
297
|
+
- **FIX:** **PV-Reset Bug** behoben (Tages- und Monatswerte wurden nicht zurückgesetzt).
|
|
298
|
+
- **FIX:** Schema-Validierung für Preisfelder korrigiert (Fix für Kommastellen).
|
|
299
|
+
- **FIX:** HT/NT-Anzeige korrigiert.
|
|
300
|
+
- **IMPROVED:** **Admin-UI Info-Tab** komplett optimiert (Sauberes Markdown & Layout).
|
|
301
|
+
- **IMPROVED:** Einheitliche Rundung berechneter Werte auf **2 Nachkommastellen** (daily, monthly, yearly).
|
|
302
|
+
- **ROBUSTNESS:** ioBroker Bot Compliance Check (Grid-Attribute in Admin-UI vereinheitlicht).
|
|
303
|
+
|
|
304
|
+
### 1.3.4 (2026-01-10)
|
|
305
|
+
|
|
306
|
+
- **FIX:** Kritischer Fix: Kommastellen für Gebühren-Felder (Grundgebühr, Arbeitspreis) werden nun korrekt gespeichert (Erlaubt 4 Nachkommastellen).
|
|
307
|
+
|
|
308
|
+
### 1.3.3 (2026-01-09)
|
|
309
|
+
|
|
310
|
+
- **IMPROVED:** Konfigurations-Reihenfolge optimiert (Gebühren logisch gruppiert).
|
|
311
|
+
- **NEW:** **PV-Benachrichtigungen** - Erhalte Erinnerungen auch für deine PV-Anlage (Abrechnung/Vertrag).
|
|
312
|
+
|
|
313
|
+
### 1.3.2 (2026-01-09)
|
|
314
|
+
|
|
315
|
+
- **NEW:** **PV / Einspeise-Unterstützung** ☀️ - Neuer Tab für Photovoltaik:
|
|
316
|
+
- Überwache deine Netzeinspeisung (kWh).
|
|
317
|
+
- Berechne deine Vergütung (Earnings) automatisch.
|
|
318
|
+
- Volle Unterstützung für Zählerstände, Abrechnungszeiträume und Historie.
|
|
319
|
+
|
|
320
|
+
### 1.3.1 (2026-01-09)
|
|
321
|
+
|
|
322
|
+
- **FIX:** Kritischer Fehler behoben: HT/NT-Datenpunkte wurden aufgrund eines internen Namensfehlers (electricity vs. strom) nicht angelegt.
|
|
323
|
+
- **FIX:** Warnungen im Log "State ... has no existing object" beseitigt.
|
|
324
|
+
|
|
325
|
+
### 1.3.0 (2026-01-09)
|
|
326
|
+
|
|
327
|
+
- **NEW:** **Differenzierte Benachrichtigungen** - Zwei getrennte Erinnerungstypen:
|
|
328
|
+
- **Abrechnungsende**: Erinnerung zum Zählerstand ablesen (z.B. 7 Tage vorher).
|
|
329
|
+
- **Vertragswechsel**: Erinnerung zum Tarif-Check / Kündigen (z.B. 60 Tage vorher).
|
|
330
|
+
- **NEW:** **Interaktives Benachrichtigungs-Feedback** - Der Test-Button zeigt nun direkt Erfolgs- oder Fehlermeldungen via Popup an (inkl. SMTP-Fehler vom Email-Adapter).
|
|
331
|
+
- **NEW:** **Live-Test ohne Speichern** - Benachrichtigungen können jetzt sofort getestet werden, ohne die Konfiguration vorher speichern zu müssen.
|
|
332
|
+
- **NEW:** **Modularer Code-Aufbau** - Umstellung auf eine moderne Architektur mit spezialisierten Managern für bessere Performance und Wartbarkeit.
|
|
333
|
+
- **IMPROVED:** **Responsives Admin-UI** - Kompakteres Button-Design und optimierte Darstellung auf mobilen Geräten.
|
|
334
|
+
- **FIX:** Redundante Volumen-Datenpunkte (`dailyVolume` etc.) für Strom und Wasser entfernt, um Log-Warnungen zu vermeiden.
|
|
335
|
+
- **FIX:** Mandatory bot requirements (Changelog header, News cleanup).
|
|
336
|
+
|
|
337
|
+
### 1.2.7 (2026-01-08)
|
|
338
|
+
|
|
339
|
+
- **NEW:** Universelles Benachrichtigungssystem für Abrechnungszeitraum-Erinnerungen (Telegram, Pushover, Email, etc.)
|
|
340
|
+
- **NEW:** Optionale PayPal-Unterstützung (Links in README und Config)
|
|
341
|
+
- **FIX:** Dezimalstellen für Tagesverbrauch auf 3 erhöht (bessere Unterstützung für Sensoren mit kleinen Deltas wie Shelly)
|
|
342
|
+
- **FIX:** Erlauben von leeren Preisen/Gebühren in der Konfiguration (verhindert Speicher-Fehler)
|
|
343
|
+
|
|
344
|
+
### 1.2.6 (2026-01-08)
|
|
345
|
+
|
|
346
|
+
- **FIX:** Erlaube leere Felder für Grundgebühr/Jahresgebühr/Abschlag in der Konfiguration (verhindert Speicher-Block im Admin-UI)
|
|
347
|
+
|
|
348
|
+
### 1.2.5 (2026-01-08)
|
|
349
|
+
|
|
350
|
+
- **NEW:** Transparente Anzeige des Vertragsbeginns bei jedem Adapter-Start im Log
|
|
351
|
+
- **NEW:** Unterstützung für zusätzliche **Jahresgebühren** (z.B. Zählermiete)
|
|
352
|
+
- **NEW:** Datenpunkt `costs.totalYearly` für die echten Gesamtkosten
|
|
353
|
+
- **FIX:** Kritischer Fehler in der Verbrauchs-Delta-Berechnung behoben (v1.2.4)
|
|
354
|
+
- **FIX:** Arbeitspreis-Anzeige bei Strom korrigiert
|
|
355
|
+
- **FIX:** Gas m³ → kWh Umrechnung für Anpassungswerte
|
|
356
|
+
- **FIX:** Korrekte Initialisierung des Vertragsjahres bei Neustart
|
|
357
|
+
- **FIX:** Vereinheitlichung der Konfigurationsschlüssel (`wasserInitialReading`)
|
|
358
|
+
- **ROBUSTNESS:** Schutz vor Datenverlust bei Adapter-Neustart (Zählerstand-Persistierung)
|
|
359
|
+
- **ROBUSTNESS:** Integration von manuellen Anpassungen in die HT/NT-Kostenrechnung
|
|
360
|
+
- **NEW:** Volle Unterstützung für **HT/NT-Tarife** für alle Energieträger (Strom, Gas, Wasser)
|
|
361
|
+
- **NEW:** Automatische Archivierung von HT/NT-Verbräuchen und Kosten in der Historie
|
|
362
|
+
- **DOCS:** Internationalisierung von Titel und Beschreibung
|
|
363
|
+
|
|
364
|
+
### 1.2.2 (2026-01-08)
|
|
365
|
+
|
|
366
|
+
- **NEW:** Manuelle Anpassung für Sensor-Abdrift-Korrektur
|
|
367
|
+
- **NEW:** Abrechnungszeitraum-Management mit automatischer Archivierung
|
|
368
|
+
- **NEW:** Unterstützung für zusätzliche **Jahresgebühren** (z.B. Zählermiete)
|
|
369
|
+
- **NEW:** Datenpunkt `costs.totalYearly` für die echten Gesamtkosten
|
|
370
|
+
- **FIX:** Arbeitspreis-Anzeige bei Strom korrigiert
|
|
371
|
+
- **FIX:** Gas m³ → kWh Umrechnung für Anpassungswerte
|
|
372
|
+
- **DOCS:** Internationalisierung von Titel und Beschreibung
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
- Initial release
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
## License
|
|
381
|
+
|
|
382
|
+
MIT License
|
|
383
|
+
|
|
384
|
+
Copyright (c) 2026 fischi87 <axel.fischer@hotmail.com>
|