
https://github.com/elRadix/daikin_cycle_ml
🔥 Daikin Altherma Heat Pump Monitor — Local ML voor Compressor Cyclus Analyse & SPF/COP Optimalisatie
(Home Assistant · geen cloud · geen writes naar je warmtepomp · werkt met Monoblock, Split, Hybride én Bivalente Altherma)
📡 ESPAltherma geeft je data — Daikin Cycle ML geeft je inzicht
Heb je al ESPAltherma draaien? Dan heb je ruwe data: 127 attributen in één monolithic sensor, of tientallen losse sensor.espaltherma_* entities in de v2-indeling. Maar eerlijk: 127 getallen in een lijst is nog geen inzicht. Je hebt de grondstof, maar niet de antwoorden:
- Hoe vaak slaat mijn compressor per dag aan — en is dat pendelen of normaal?
- Wat is mijn échte COP per modus (verwarming / DHW / koelen), en hoe verhoudt die zich tot de datasheet?
- Welke cycli zijn gezond, welke verspillen energie, en waarom?
- Daalt mijn seizoensrendement zonder dat ik het doorheb?
- Wat levert een stooklijn-aanpassing concreet op in COP?
- Bij hybride opstelling (WP + gasketel): wanneer springt de ketel bij, en wat kost me dat aan COP?
- Bij Bivalent Direct (WP + boiler, geen DHW-tank): hoe voorkom ik spooktank-alerts en blijft mijn COP kloppen?
🔧 Wat het doet
- Compressorcyclus-detectie — start/stoptijden, duur, frequentie, pendelpatronen (8 patronen over verwarming/koeling/DHW). Lange modulerende runs tot 48 uur worden als één cycle geregistreerd. Sinds v1.19.7 worden ook lage-modulatie runs na een defrost gedetecteerd via een flow+COP fallback, wanneer de RPS-waarde "Invalid" rapporteert.
- ESPAltherma v2 native support — Sinds v1.20.0 kun je naast de klassieke monolithic sensor ook de nieuwe v2-indeling gebruiken (losse sensor.espaltherma_* + binary_sensor.espaltherma_*). Auto-detectie kiest de bron met de hoogste coverage, met prefix-configuratie in de wizard en een repair-melding die precies laat zien welke labels ontbreken.
- Hybride & Bivalente ondersteuning — Daikin Altherma R Hybrid (EVLQ05/EVLQ08): boiler-detectie, COP-isolatie (co-fire samples uitgesloten van HP-COP), ketel-bijdrage per dag, hybride-modus sensor. Sinds v1.22.3 ook Bivalent Direct (SH-only) en Bivalent Indirect (DHW) — met expliciete dhw_present override en 3-traps auto-detectie.
- Per-modus COP/SPF — verwarming, warm water, koelen, met weersnormalisatie (A7W35) en datasheet-vergelijking
- Fysische COP-grenzen (Carnot) — Sinds v1.19.9 worden fysisch onmogelijke COP-samples automatisch geclassificeerd (accept/flag/reject) op basis van de Carnot-limiet. Bij een reject verschijnt de binary_sensor cop_physically_impossible en wordt de sample niet meegenomen in de statistieken.
- Defrost als flag, geen split — defrost wordt per cycle gemarkeerd (defrost_used=True), niet als aparte cycle. Effectieve verwarming = runtime_compressor_today.heating_s − defrost_duration_today
- Energieboekhouding — elektrisch kWh vs. geleverde warmte kWh, per dag/week/maand, met persistente accumulators over HA-restarts
- Seizoensgebonden degradatie — 30-daagse COP-trend met Carnot-correctie (ondervangt het "COP daalt als het kouder wordt"-effect)
- Installateur-advies — stooklijn-suggesties in Daikin-taal (slope/offset), inclusief verwacht effect op COP
- 19 alerts, 20 instelbare aggregatievensters — pendelen per uur/dag, korte runs, short cycling pattern (3+ korte runs in een uur), setpoint-oscillatie, defrost, BUH-gebruik, bron-verouderd, fysisch onmogelijke COP, etc.
- Lokaal ML-model — kmeans clustering op je eigen cycli, geen data verlaat je huis, geen externe API's
- HA 2026.10+ & Gold Quality Scale — Volledig geaudit, 5.850+ tests, 100% coverage, klaar voor de nieuwste Home Assistant architectuur.
De grootste update tot nu toe voor wie een hybride of bivalente opstelling heeft:
- Nieuwe dhw_present optie (auto / always / never) in Options → Advanced. Bepaalt of de integratie een DHW-tank verwacht. Bij auto: 3-traps detectie (3-wegklep → tanktemperatuur → historische DB-cycli).
- Bivalent Direct (SH-only) werkt nu — voorheen brak COP-aggregatie zodra je de 3-wegklep sensor uitschakelde om spooktank-rendering te voorkomen. Nu: zet dhw_present = never, de integratie negeert de klep en de COP-berekening loopt gewoon door.
- Nieuwe binary sensor — binary_sensor.daikin_cycle_ml_dhw_installed laat direct zien wat de integratie heeft gedetecteerd (on = tank verwacht, off = bypass actief).
- Repair Issue — dhw_missing_suspect waarschuwt als de integratie geen DHW verwacht, maar er wél historische DHW-cycli in de DB staan. Voorkomt stille breuk bij wie per ongeluk een klep-sensor heeft uitgezet.
- Bool 3-wegklep fix (#167) — True/False waardes worden nu correct gelezen (was: None, waardoor DHW-cycli als heating werden geregistreerd op nieuwere ESPAltherma firmware).
- Volledige bivalent-gids — CONFIGURATION.md §4.8 met decision matrix (Direct / Indirect DHW / Indirect DHW+SH) en stap-voor-stap per type.
v1.21.0 richtte zich op datacorrectheid — de cijfers die je ziet, kloppen nu exact:
- Dagtotalen kloppen eindelijk exact — cycli die over middernacht lopen worden correct toegerekend aan de startdag, en transient cycli (tijdens HA-herstarts of korte storingen) worden uitgesloten van de gebruikers-statistieken. Geen "28-uur dagen" meer in je grafieken.
- Legionella BUH-uitzondering — als je warmtepomp de backup-heater inzet tijdens een legionella-run (DHW ≥ 60°C), wordt dat niet meer als verspilling bestraft. De BUH-penalty in de quality score wordt automatisch kwijtgescholden.
- Options-wijzigingen direct actief — na het opslaan van nieuwe instellingen hoef je niet meer te herstarten; de integratie pikt de nieuwe waarden direct op.
v1.20.0 introduceerde de nieuwe ESPAltherma v2-indeling (losse sensoren per label in plaats van één grote monolithic sensor). Drie modi:
- Monolithic — de klassieke aanpak, één sensor.althermasensors met 127 attributen
- Individual (v2) — losse sensor.espaltherma_* + binary_sensor.espaltherma_* entities, met automatische prefix-detectie
- Auto — beide bronnen lezen, de hoogste coverage wint, met INFO/WARNING-logs bij wisseling
📊 Kant-en-klare dashboard cards
Vijf Lovelace-kaarten, direct te plakken via Manual Card. Geen YAML-gedoe, geen entity-aanpassingen. Klik op een thumbnail om naar de GitHub-documentatie en YAML te gaan.
- Home Assistant (2024.x of nieuwer)
- ESPAltherma op je Daikin Altherma — ESPAltherma 1.x én 2.x (beta/stable) beide native ondersteund sinds v1.20.0
- HACS voor installatie van de integratie en de 5 frontend cards
- Optioneel maar aanbevolen: Shelly of andere kWh-meter voor nauwkeurig elektrisch verbruik (anders valt de integratie terug op een schatting via flow × ΔT)
Monoblock, Split, Hybride en Bivalente Altherma — ruim 55 datasheets gebundeld (EPRA, ERLA, ERGA, EDLA, EBLA, EDLQ, EBLQ, EVLQ, EPSK, ERRQ, EPGA, en meer). Zie docs/MODEL_COMPATIBILITY.md voor de volledige lijst. Onbekend model? Eigen datasheet importeren kan via de import-datasheet service.
Bivalente opstellingen zijn sinds v1.22.3 first-class ondersteund. Zowel Bivalent Direct (SH-only, geen DHW-tank) als Bivalent Indirect (DHW via boiler) worden ondersteund. De nieuwe dhw_present optie laat je handmatig ingrijpen als auto-detectie niet lukt. Zie de bivalent-gids voor stap-voor-stap per type.
🔒 Veiligheid & privacy
Volledig read-only. Geen writes naar de warmtepomp. Geen cloud-verbinding. Alle data staat in een lokale SQLite-database op je HA-instance. Geen telemetrie, geen externe API-calls. De integratie leest alleen de attributen van je ESPAltherma-sensor en doet de rest lokaal.
📖 Documentatie & installatie
GitHub — README, installatie, configuratie, dashboard-cards, troubleshooting
Laatste release: v1.22.3
📋 Laatste 5 releases
| Versie | Datum | Belangrijkste wijzigingen |
|---|---|---|
| v1.22.3 | 11 nov 2026 | Bivalente systemen first-class: nieuwe dhw_present optie (auto/always/never), 3-traps detectie, binary_sensor.dhw_installed, dhw_missing_suspect repair. Bool 3-wegklep fix (#167). Bivalent Direct zonder spooktank-alerts (#176). Volledige bivalent-gids. |
| v1.22.2 | 11 nov 2026 | `last_cycle` sensor stale fix na forward-merge (#329). Sensor toont nu de DB-waarde binnen dezelfde poll-cyclus na een merge-extensie. |
| v1.22.1 | 10 nov 2026 | Defrost-tolerant-on (#308), HA 2026.11.1 compat (#311, #322), live daily_summary tijdens open cycle (#323), detector stuck-IDLE fix (#285), backfill q=0 (#313). |
| v1.22.0 | 9 nov 2026 | EPRA14DAW17 support, nieuwe Pattern Analysis dashboard-card (3 tabs: Distribution / Scatter / COP-trend). |
| v1.21.0 | 8 nov 2026 | Correcte dagtotalen (cross-midnight + transient exclusion), legionella BUH-uitzondering, options reload listener (geen herstart meer nodig), backfill respecteert user options. Quality + accuracy release. |
[ Voor 179% gewijzigd door FloRadix op 11-11-2026 19:11 ]






:strip_exif()/f/image/IEgdlCTvFwg6AhGHCRLHsZ2R.jpg?f=fotoalbum_large)
/f/image/ozwrYbFCA4ZmV0ogww2Q0EmX.png?f=fotoalbum_large)
/f/image/VCpIgj9K9EgcHGrcxnvWuwmY.png?f=fotoalbum_large)
:strip_exif()/f/image/R7FDnIDkd3oJPtKVDV97jlwK.jpg?f=fotoalbum_large)
:strip_exif()/f/image/1Bhi9OJhcfNRqavfWkUDZEDG.jpg?f=fotoalbum_large)
:strip_exif()/f/image/XQScmqqkcbkYQBbRH4HLh1zF.jpg?f=fotoalbum_large)
:strip_exif()/f/image/eO3Q9C9eGn7qd7hNC3eDWHNX.jpg?f=fotoalbum_large)
:strip_exif()/f/image/GN0xGP9rALuIGlKdlAcsafWJ.jpg?f=fotoalbum_large)
:strip_exif()/f/image/wURKnX4s3TPOkO3TYhly8usD.png?f=user_large)
/f/image/k5OmU9HGK07O7ZcuSDeOo7KQ.png?f=fotoalbum_tile)
/f/image/qSucz3Q09LYaFhpb8TC3mD1l.png?f=fotoalbum_tile)
/f/image/5Y3pedwGwClBDTxE9Rx1kzRI.png?f=fotoalbum_tile)
/f/image/Pq4YiLWTubo1mVox11uCaRQm.png?f=fotoalbum_tile)
:strip_exif()/f/image/FwZ8ABGtwmKfmH9pYBg9h0vg.jpg?f=fotoalbum_large)
/f/image/QOkg3nxfUQbwWfbhj0bp7y0m.png?f=fotoalbum_large)
/f/image/TSkJehxz8YTYZZMsGy6JTyjy.png?f=fotoalbum_large)
:strip_exif()/f/image/CHyoL7iE3ynQnavsm8pS6hbd.png?f=user_large)
/f/image/L0ofMYbkaq9dB9NbGwnZXABB.png?f=fotoalbum_large)
/f/image/dVfHwhqCPURDtXB5n2Pp9QVC.png?f=fotoalbum_large)
/f/image/QTBHk63hwvLpGhKqZNXmKTkb.png?f=fotoalbum_large)
/f/image/F13Cy6zJCGVgUgQ7ogNDgeFl.png?f=fotoalbum_large)
/f/image/arI5coeCit1jaMAAwHWPqAt3.png?f=fotoalbum_large)
:strip_exif()/f/image/24C4nJheRK14M1uDpjW7PbeS.png?f=user_large)
/f/image/00c4ZiQWkeiUyeTXtwZN61wI.png?f=fotoalbum_large)
:strip_exif()/f/image/2y1VyDOEIIipN2a84UT0neaI.png?f=user_large)
/f/image/GTS3mbp36F1gIlcxe8crNqWq.png?f=fotoalbum_large)
/f/image/vVZmVwBr7O0FfoHzCqpNVKTR.png?f=fotoalbum_large)
/f/image/3l6EJHz7G50vYmAYeUiqgMLH.png?f=fotoalbum_large)
/f/image/R5t01YusoaSlmfTlpUUcaUjA.png?f=fotoalbum_large)
/f/image/KkzazvNfgqDfUpTFJbm4vueX.png?f=fotoalbum_large)

/f/image/zpPZ1Oi6iBFoVe2EoCsyWETQ.png?f=fotoalbum_large)
:strip_exif()/f/image/YYNM2kYVv27PRjqsYMJAJyjR.jpg?f=fotoalbum_large)
:strip_exif()/f/image/OqPCT9EWfAnl6XhbeHz6D6X2.png?f=user_large)
/f/image/CDja935PrspNOxs6P8Nt7lHh.png?f=fotoalbum_large)
/f/image/8RODYFAS9WufzTKLI6tfyrpJ.png?f=fotoalbum_large)
/f/image/qKKEJsBiafmY2l276kIKRaBy.png?f=fotoalbum_large)
/f/image/S4D0d9W2dDdVas7JdGSwxOwV.png?f=fotoalbum_large)
/f/image/oEgVq7FiVEAyiqK5rlhTxeVD.png?f=fotoalbum_large)