⚠️ Letzter Feature-Release dieses AdaptersWährend dieser Adapter in einer langen Pause war, ist mit ioBroker.tibberlink von @hombach ein vollwertiger Nachfolger entstanden, der bereits im offiziellen ioBroker-Repository verfügbar ist und deutlich mehr kann (direkter lokaler Pulse-Zugriff, historische Verbrauchsdaten, Calculator-Channels für günstigste Stunden / Stundenblöcke, Smart-Battery-Buffer-Logik, FlexCharts/eCharts-Integration).
Für Neueinsteiger: Bitte direkt
tibberlinkinstallieren.
Für Bestandsnutzer: Diesesv0.1.0ist ein reiner Stabilitäts-Release als ruhiger Übergang. Geplant sind keine weiteren Feature-Releases — nur noch Sicherheits-Patches falls nötig. Mittelfristig zutibberlinkmigrieren.Großen Dank an @hombach für das tolle Nachfolge-Werk. 🙏
Erste größere Aktualisierung seit zwei Jahren. Fokus: die Crashes wegbekommen, die im Forum und in den Issues immer wieder gemeldet wurden. Keine neuen Features in diesem Release, dafür sieben Bugfixes auf die Reihe gebracht und das CI komplett modernisiert.
Behobene Bugs
🔥 Wert `0`/`false` wurde verschluckt
`liveMeasurement.power`, `powerProduction`, `signalStrength`, `accumulatedConsumptionLastHour` und ähnliche Datenpunkte wurden nie geschrieben, sobald der Wert `0` war. PV-Volleinspeisung, kein Stromverbrauch, schwaches Pulse-Signal — alle blieben auf dem alten Wert hängen und brachen Energiefluss-Adapter und PV-Berechnungen. Behoben.
🔥 Adapter crasht alle 30 Min
Hauptbeschwerde aus dem Forum. Im 5-Minuten-Intervall für Preis-Updates fehlte das `await`, dadurch wurden API-Fehler zu unhandled promise rejections und der Adapter terminierte mit `UNCAUGHT_EXCEPTION`. Viele Nutzer hatten sich Blockly-Scripts gebaut, die den Adapter alle 12–30 Minuten neu starten. Sollte ab jetzt nicht mehr nötig sein.
🔥 Multi-Home-Setups
Bei mehreren Häusern landeten alle Live-Daten auf der zuletzt iterierten `homeId` — die Tibber-Config wurde im Loop überschrieben. Ein User hatte als Workaround die Home-ID manuell in der Caller-Datei hardcoded.
Closes #221
`accumulatedReward` Config-Tippfehler
Die Aktivierung von `accumulatedReward` im Admin hat nichts bewirkt — der Code hat versehentlich `FeedConfigAccumulatedCost` zweimal abgefragt. PV-Einspeiser haben dadurch ihre Gutschriften nie gesehen.
Adapter blieb gelb statt grün
`info.connection` wurde nur durch den Pulse-`connected`-Event gesetzt. Bei Verzögerungen im Pulse-Aufbau blieb der Adapter gelb, obwohl die API-Calls schon liefen. Jetzt: grün, sobald die API antwortet.
`Error in Tibber Feed on "undefined" with message "undefined"`
`generateErrorMessage` ist auf Netzwerkfehler (kein `statusMessage`, keine `errors`-Property) ungeschützt zugegriffen. Jetzt defensiv und mit Fallback auf `error.message`.
Forum #24
Race-Condition beim Adapter-Stop
`Cannot read properties of undefined (reading 'warn')` beim Stop. Der Pulse-Reconnect-Interval wurde nicht aufgeräumt und versuchte nach Adapter-Shutdown noch auf `this.adapter.log` zuzugreifen.
Forum #29
Zusätzliche Härtungen (Copilot-Review)
- Async-Kette konsequent awaitet — `fetchPrice`/`fetchAddress`/`fetchLegalEntity` riefen ihre `checkAndSetValue*`-Helpers ohne await auf. Auch das `fetchLiveMeasurement` im Pulse — 25 State-Writes laufen jetzt parallel via `Promise.all`, der sync EventEmitter-Handler fängt Rejections via `.catch()`. Keine unhandled rejection mehr möglich.
- Re-entrancy-Guard in den 5-Min-Preis-Intervallen — wenn die Tibber-API mal lahmt und der vorige Aufruf noch läuft, wird der nächste Tick übersprungen statt parallel zu hämmern.
- Pulse-Event-Handler nach Reinit — `DisconnectPulseStream` erzeugte einen neuen `TibberFeed` ohne Event-Handler. Beim nächsten Connect wären `connected`/`data` lautlos verschluckt worden.
CI komplett modernisiert
- Node 14/16/18 raus → 20/22/24
- CodeQL Security-Scan (TypeScript)
- Dependency-Review blockt PRs mit High-Severity-CVEs
- `fail-fast: false` + Concurrency-Groups
Vielen Dank an alle, die in den letzten zwei Jahren Issues geöffnet, im Forum gepostet und Workarounds geteilt haben — ohne eure detaillierten Bug-Reports und Reproduktionen wäre dieser Release nicht möglich gewesen. 🙏