notes/10-Projekt/Daikin värmepump.md

221 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Daikin värmepump
created: 2026-10-24
status: aktiv
tags:
- projekt
---
# Daikin värmepump
> [!abstract] Mål
> Värma vardagsrummet med Daikin-luftvärmepumpen i hallen till så låg elkostnad som möjligt. Värmen stannar gärna i hallen, så styrningen ska reglera efter vardagsrummet och inte efter Daikins egen givare.
## Uppgifter
- [x] **30/10:** fyll i sista natten (fläkt 3), ifyllt 31/10
- [ ] Ta ställning till slutsatserna och förslaget till ny styrning (se [[#Fläkttest 24–30 oktober]] och [[#Så analyserar du ett test]])
- [ ] Ta bort `packages/house/hall/daikin_flakttest.yaml` efter testet, och sätt `input_select.daikin_testflakt` till "Av"
- [ ] Bestäm om regleringens fläktlogik ska ändras utifrån testresultatet (se förslaget under fläkttestet)
- [ ] Bestäm om nattmålet ska sänkas (`input_number.vardagsrum_maltemp_natt`, i dag 21 °C)
- [ ] Ta reda på varför kompressorn går trots setpoint långt under rumstemperaturen (Daikin-appen eller manualen: minsta setpoint i värmeläge, frostskydd?)
- [x] Starta om HA så att fläkt 3, kaminläget och kaminens availability-fix laddas (gjort 2026-10-26 21:03)
- [ ] Städa bort de gamla utkasten: automationen "Reser temp" (avstängd) och skriptet "Värmepump – Nattläge med stegvis justering"
## Styrningen i Home Assistant
Paketet `~/repo/Docker/ha/config/packages/house/hall/daikin.yaml`:
- **Reglering:** var 30:e minut justeras Daikins setpoint ±1 °C (16–24 °C, sänkt från 19 den 2026-10-26) tills vardagsrummet ligger inom ±0,3 °C från målet. Hallen får inte gå över 24,5 °C när setpointen höjs, och över 25 °C sänks den.
- **Mål:** `input_number.vardagsrum_maltemp` gäller 06–22 och `input_number.vardagsrum_maltemp_natt` gäller 22–06. Båda är 21 °C från 2026-10-24.
- **Fläkt:** 4 när vardagsrummet ligger mer än 0,3 °C under målet, annars Auto. Se [[#Förslag till ny styrning (väntar, beslut efter testet)]].
- **Kamin:** fläkt 4 och 14 °C när `binary_sensor.vardagsrum_kamin_igang` är på. Bas-setpointen fryses under tiden (från 2026-10-26).
- **Elpris:** under dyra timmar sänks setpointen 1 °C och regleringen fryses. Under billiga timmar höjs målet 0,5 °C.
- **Av/på:** `input_boolean.daikin_auto`.
- **Testläge:** `input_select.daikin_testflakt` låser fläkten och stänger av elprisjusteringen. "Av" ger vanlig drift.
> [!warning] Fel givare
> Regleringen använder `sensor.sensor_inne_vrum_aq001_temperature`. Använd inte `sensor.vardagsrum_temperature` som rumstemperatur, den sitter troligen i en annan enhet.
## Resultat
### Stegtest natten 22→23 oktober
Varje kombination av fläkt och setpoint kördes en timme. Daikins effekt är uppskattad som evcc:s `homePower` minus timmen före testet (574 W). Daikin har ingen egen elmätare.
| Tid | Steg | Kompressor (Hz) | Hall | Daikin ungefär |
|---|---|---|---|---|
| 00–01 | 17 °C, fläkt 2 | 12 | 22,5 | +110 W |
| 01–02 | 17 °C, fläkt 4 | 13 | 22,8 | +290 W |
| 02–03 | 21 °C, fläkt 2 | 19 | 23,2 | +350 W |
| 03–04 | 21 °C, fläkt 4 | 22 | 23,8 | +370 W (en annan last på cirka 280 W borträknad) |
| 04–05 | 23 °C, fläkt 2 | 19 | 24,2 | +590 W |
| 05–06 | 23 °C, fläkt 4 | 22 | 24,4 | +830 W |
Ute var det 11,6 → 9,5 °C. Daikin drog cirka 2,8 kWh mellan 00 och 06.
Slutsatser:
- **Kompressorn stod aldrig vid 17 °C.** Den gick på 12–18 Hz hela tiden, fast Daikins egen givare visade 21–24 °C.
- **Lägre fläkt drog mindre el** vid samma setpoint (180–240 W skillnad). **Högre setpoint drog mer** (cirka +240 W per steg vid fläkt 2).
- **Testet säger inte vad som ger mest värme per kWh.** Stegen var bara en timme och kom i stigande ordning, så huset hann inte stabilisera sig. Därför görs [[#Fläkttest 24–30 oktober]].
- **Fläkt Auto värmer vardagsrummet dåligt** (Simons erfarenhet). Värmen stannar i hallen, och det behövs högre fläkt för att få ut den. Ingen extra Auto-natt läggs till trots att natten mot 25/10 stördes av kaminen.
- **Daikins egen givare mäter stillastående luft** när fläkten står på Auto. Den visade 18 °C och hoppade till 22 °C så fort fläkten startade.
### Vanlig natt 23→24 oktober (referens)
Manuellt 13 °C och fläkt Auto, regleringen av. Vardagsrummet sjönk från 22,5 till 20,4 °C (cirka 0,3 °C i timmen), ute 7 °C. Kompressorn gick ändå på 8–12 Hz hela natten. Huset drog cirka 5,1 kWh mellan 00 och 06, men Daikins andel går inte att räkna ut eftersom andra laster varierade mer.
### Fläkttest 24–30 oktober
Paketet `packages/house/hall/daikin_flakttest.yaml`. Syftet är att ta reda på vilket fläktläge som ger 21 °C i vardagsrummet med minst el. Regleringen håller vardagsrummet på 21 °C varje natt och bara fläkten skiljer. Fläkten låses 22–06 och mätfönstret är 00–06. Ursprungligen skulle varje läge köras två nätter i speglad ordning, men schemat ändrades under testet (se tabellen).
| Natt (morgondatum) | Fläkt |
|---|---|
| 25/10 | Auto |
| 26/10 | 2 |
| 27/10 | 4 |
| 28/10 | 3 (bytt från 4, låter för mycket) |
| 29/10 | 2 |
| 30/10 | 3 (bytt från Auto) |
- Start 24/10 kl. 20:00: målen sätts till 21 °C och `daikin_auto` slås på.
- Varje kväll och morgon loggas fläkt, setpoint och temperaturer i loggboken under namnet "Daikin fläkttest".
- Natten mot 25/10 slutar sommartiden, så jämför medeleffekt (W) och inte kWh.
- En omstart av HA sätter testfläkten till "Av" fram till nästa kväll, och den natten blir då ogiltig.
- **Kaminen stör.** Eldning värmer vardagsrummet till långt efter midnatt, och då behöver Daikin göra mindre. Det eldades 23/10 och 24/10 från cirka 18:30, och givaren vid kaminen låg kvar över rumstemperaturen till cirka 01. Notera för varje natt om det eldades (se [[#Så analyserar du ett test]]).
#### Resultat per natt
Medel 00–06. Bara nätter utan kamin och utan HA-omstart. Huset = evcc `homePower` (utan bil). Setpoint och kompressor kommer från Influx `Daikin`. ΔT = vardagsrum − ute.
| Natt | Fläkt | Ute | Vardagsrum | Hall | Setpoint medel | Kompressor | Kompressor/ΔT | Huset | Huset per timme (00→06) |
|---|---|---|---|---|---|---|---|---|---|
| 25/10 | Auto | 9,6 | 22,2 | 23,2 | 19,0 | 19,1 Hz | – | 995 W | 722 935 1136 709 1228 1225 1009 *(7 h, sommartiden slutade)* |
| 26/10 | 2 | 9,8 | 21,1 | 22,7 | 19,0 | 18,9 Hz | 1,67 | 1031 W | 911 821 768 873 1376 1437 |
| 27/10 | 4 | 7,9 | 21,2 | 23,2 | 16,0 | 15,4 Hz | 1,16 | 1073 W | 798 714 880 1331 1119 1596 |
| 28/10 | 3 | 10,4 | 20,9 | 22,7 | 17,3 | 12,5 Hz | 1,19 | 935 W | 652 620 516 944 1485 1391 |
| 29/10 | 2 | 5,6 | 20,9 | 22,3 | 17,5 | 19,3 Hz | 1,26 | 1175 W | 1646 664 855 1169 1176 1538 |
| 30/10 | 3 | 7,2 | 21,6 | 23,9 | 16,0 | 20,5 Hz | (1,42) | 1155 W | 913 926 883 1278 1336 1594 *(kamin kvällen innan)* |
- **25/10 (Auto): ogiltig.** Kaminen var tänd från 18:30, vardagsrummet sjönk från 23,0 °C utan att Daikin behövde arbeta, och setpointen sänktes manuellt till 17 och 14 °C under kvällen.
- **26/10** hade den gamla gränsen 19 °C som lägsta setpoint, och setpointen stod på den hela natten. Övriga nätter har gränsen 16 °C.
- **27/10** laddade bilen (cirka 1,2 kW per fas på L1 och L3). `homePower` räknar bort den, men P1-faserna går inte att använda den natten.
- **30/10 (fläkt 3): delvis störd.** Det eldades från cirka 20:00 den 29/10, men givaren vid kaminen nådde bara 23,8 °C, så den gamla 24 °C-regeln missade elden. Kaminläget slog aldrig till och fläkt 3 gick hela natten. Vardagsrummet låg *över* målet hela natten (22,0 → 21,3 °C) med setpointen på golvet 16 °C. Natten är därför inte jämförbar på komfort, och kompressorvärdet per grad är osäkert.
- **Kompressorn följer inte setpointen vid låga värden.** 30/10 stod setpointen på 16 °C och Daikins egen givare visade 21,8–22,1 °C, men kompressorn gick ändå på cirka 20 Hz och hallen låg på 23,9 °C. Varvtalet verkar styras mer av utetemperaturen och fläkten än av setpointen när den är under cirka 19 °C. Regleringen har då nästan ingen effekt nedåt.
#### Slutsatser hittills (29/10)
- **Fläkt 3 och 4 ger samma komfort med lägre setpoint och kompressorvarvtal** än fläkt 2. Kompressorn per grad ΔT var cirka 1,2 Hz för fläkt 3 och 4, och 1,3–1,7 Hz för fläkt 2, alltså 10–40 % mer kompressor för fläkt 2.
- **Fläkt 3 verkar bäst.** Den är lika effektiv som 4 och tystare. Fläkt 4 låter för mycket (Simon, 27/10).
- **Husets förbrukning kan inte avgöra frågan.** Andra laster varierar 500–1600 W mellan timmarna, och 04–06 är ofta högt. Skillnaden mellan fläktlägena (troligen 100–200 W) drunknar i bruset, så slutsatsen bygger på kompressorvarvtalet.
- **Förbehåll:** fläkt 3 och 4 har bara en natt var (fläkt 3 får en till 30/10). Hur mycket el fläkten själv drar är inte mätt, men det är troligen 20–60 W.
#### Iakttagelser om regleringen (27/10)
- **Fläkten slår om för lätt.** Dagtid låg vardagsrummet på 20,6–21,0 °C. Regleringen växlade mellan fläkt 4 och Auto och höjde setpointen till 22 °C så fort rummet var 0,03 °C under gränsen 20,7 (mål − 0,3).
- **Både setpoint och fläkt ändras på samma signal.** Det ger stora steg för små avvikelser.
#### Förslag till ny styrning (väntar, beslut efter testet)
| Läge | Fläkt i dag | Förslag |
|---|---|---|
| Normalt | Auto | 3 (eventuellt 2 kl. 22–06 om 3 stör nattetid) |
| Vardagsrummet ligger efter | 4 vid mer än 0,3 °C under målet | 3, och bara setpointen höjs |
| Kamin | 4 och 14 °C | 3 och 14 °C |
| Fläkt 4 | används | tas bort |
## Så analyserar du ett test
En arbetsgång för att utvärdera en natt eller ett test. Alla kommandon körs på `zeuz`.
### Datakällor
| Vad | Var | Detaljer |
|---|---|---|
| Husets förbrukning utan bil | Influx `Car` / `homePower` (evcc) | W. Bästa måttet, eftersom billaddningen redan är borträknad. |
| Billaddning | Influx `Car` / `chargePower`, `chargeCurrents` | Laddar ofta cirka 5,5 kW nattetid, och då blir P1 oanvändbar utan evcc. |
| P1-mätaren | Influx `HomeBucket` / `el` | `electricity_currently_delivered` (kW), `phase_currently_delivered_l1..l3` (W). **Daikin sitter på L2.** |
| Daikin | Influx `home/autogen` / `Daikin`, taggen `type` | `cmpfreq`, `fanRate`, `mode` samt `temperature` med `location` = indoor, outdoor eller target. Tät upplösning. |
| Rumstemperaturer | HA-databasen `ha/config/home-assistant_v2.db` | `sensor.sensor_inne_vrum_aq001_temperature`, `sensor.sensor_inne_hall_th016_temperature`, `sensor.daikinap14037_outside_temperature` |
| Daikin-läge | HA-databasen | `climate.daikinap14037`, attributen `temperature`, `fan_mode`, `hvac_action` |
| Testlogg | HA-databasen, händelsen `logbook_entry` | Sök på "fläkttest" eller "stegtest". |
| Kamineldning | HA-databasen | `binary_sensor.vardagsrum_kamin_igang` (på när givaren vid kaminen i 5 min har varit mer än 0,5 °C varmare än hallen, eller över 23 °C och varmare än hallen. Aktiv sedan omstarten 2026-10-31 15:27. Elden 29/10 nådde bara 23,8 °C och missades av den gamla 24 °C-regeln. Utan eld är kaminens givare alltid kallare än hallen, som mest −0,2 °C. Regeln upptäcker eld 15–30 min tidigare än den gamla gränsen 24 °C. En simulering på veckan 22–29/10 gav exakt de tre eldningarna och inga falsklarm, inte ens under stegtestet då givaren vid kaminen nådde 23,5 °C utan eld.), `counter.vardagsrum_kamin_eldningar`, `sensor.sensor_inne_kamin_th017_temperature`. Sensorn fungerar från 2026-10-24 19:32. Tidigare var den alltid av på grund av ett fel. |
> [!tip] Fallgropar
> - **Tidszon:** Influx svarar i UTC och `aggregateWindow` märker raden med fönstrets *slut*. Raden `22:00Z` är timmen 23–00 svensk sommartid.
> - **HA-databasen sparar bara ändringar,** så glesa sensorer saknar värden för vissa timmar. Använd Influx för kompressorn.
> - **Kompressorns `hvac_action` i HA** är grövre än `cmpfreq` i Influx.
> - **Daikins effekt är alltid en uppskattning:** `homePower` minus en referenstimme. Andra laster (cirka 300–700 W) ger brus, så titta på L2 och kompressorn för att se vad som är Daikin.
### Frågor
Husets förbrukning, kompressor och fläkt per timme (ändra start och stop):
```bash
docker exec influxdb influx query '
h = from(bucket:"Car") |> range(start: 2026-10-24T22:00:00Z, stop: 2026-10-25T05:00:00Z)
|> filter(fn:(r)=> r._measurement=="homePower" or r._measurement=="chargePower")
|> group(columns:["_measurement"]) |> aggregateWindow(every: 1h, fn: mean, createEmpty:false)
|> map(fn:(r)=>({r with _field: r._measurement}))
c = from(bucket:"home/autogen") |> range(start: 2026-10-24T22:00:00Z, stop: 2026-10-25T05:00:00Z)
|> filter(fn:(r)=> r._measurement=="Daikin" and (r.type=="cmpfreq" or r.type=="fanRate"))
|> map(fn:(r)=>({r with _field: r.type})) |> group(columns:["_field"])
|> aggregateWindow(every: 1h, fn: mean, createEmpty:false)
union(tables:[h,c]) |> group() |> keep(columns:["_time","_field","_value"])
|> pivot(rowKey:["_time"], columnKey:["_field"], valueColumn:"_value")' --raw | grep -v '^#'
```
Rumstemperaturer per timme (lokal tid):
```bash
cd ~/repo/Docker/ha/config
sqlite3 -readonly -column -header "file:home-assistant_v2.db?mode=ro" "
SELECT strftime('%H',s.last_updated_ts,'unixepoch','localtime') h,
round(avg(CASE WHEN m.entity_id LIKE '%vrum_aq001%' THEN CAST(s.state AS REAL) END),2) vardagsrum,
round(avg(CASE WHEN m.entity_id LIKE '%hall_th016%' THEN CAST(s.state AS REAL) END),2) hall,
round(avg(CASE WHEN m.entity_id LIKE '%outside%' THEN CAST(s.state AS REAL) END),1) ute
FROM states s JOIN states_meta m USING(metadata_id)
WHERE m.entity_id IN ('sensor.sensor_inne_vrum_aq001_temperature',
'sensor.sensor_inne_hall_th016_temperature','sensor.daikinap14037_outside_temperature')
AND s.state NOT IN ('unknown','unavailable')
AND s.last_updated_ts BETWEEN strftime('%s','2026-10-24 22:00','-2 hours')
AND strftime('%s','2026-10-25 06:00','-1 hours')
GROUP BY h;"
```
(`-2 hours` och `-1 hours` gör om svensk tid till UTC: sommartid +2, vintertid +1.)
Loggboken för testet:
```bash
sqlite3 -readonly "file:home-assistant_v2.db?mode=ro" "
SELECT datetime(e.time_fired_ts,'unixepoch','localtime'), d.shared_data
FROM events e JOIN event_types t USING(event_type_id) LEFT JOIN event_data d USING(data_id)
WHERE t.event_type='logbook_entry' AND d.shared_data LIKE '%fläkttest%' ORDER BY 1;"
```
Eldade det? Visar när kaminsensorn slog på och av (ändra datum):
```bash
sqlite3 -readonly "file:home-assistant_v2.db?mode=ro" "
SELECT datetime(s.last_updated_ts,'unixepoch','localtime'), s.state
FROM states s JOIN states_meta m USING(metadata_id)
WHERE m.entity_id='binary_sensor.vardagsrum_kamin_igang'
AND s.last_updated_ts > strftime('%s','2026-10-24 12:00','-2 hours') ORDER BY 1;"
```
### Utvärdera fläkttestet
1. **Kontrollera att varje natt blev giltig.** Loggboken ska ha en start- och en slutrad med rätt fläkt. Ingen HA-omstart får ha skett mellan 22 och 06, och bilen bör inte ha laddat (annars får man förlita sig på `homePower`).
2. **Kontrollera kaminen.** Om det eldades efter cirka 17 kvällen innan räknas natten som "med kamin". Jämför helst bara nätter utan kamin. Om alla lägen har en kamin-natt kan man jämföra dem sinsemellan, men ta i så fall bara med timmarna efter att givaren vid kaminen har sjunkit till rumstemperatur.
3. **Per natt:** ta fram medel av `homePower` 00–06, medel av kompressorn, medel av vardagsrummet (ska ligga nära 21 °C) och medel av utetemperaturen.
4. **Jämför fläktlägena** med medeleffekten och ta hänsyn till utetemperaturen. Kalla nätter drar mer. Jämför helst nätter med liknande utetemperatur, eller räkna W per grad skillnad mellan inne och ute.
5. **Skriv in resultatet** under "Fläkttest 24–30 oktober" och bocka av uppgifterna.
## Relaterat
- [[Docker-stack]]
- Paket: `~/repo/Docker/ha/config/packages/house/hall/`