- Bugfixes.
- max from 10 to 20 svotc_requested_offset_c:, svotc_applied_offset_c:
SVOTC Àr ett stabilt och förutseende styrsystem för vÀrmepumpar i Home Assistant. Det optimerar vÀrmeproduktion genom att kombinera komfortskydd och prislogik, med mjuka övergÄngar och tydliga förklaringar (reason codes).
Systemet Àr byggt för att vara:
- â Stabilt â inga oscillationer eller instabila tillstĂ„nd
- â FörutsĂ€gbart â tydlig logik med full observability
- â SjĂ€lvkorrigerande â via stabiliserande lager (dwell, hysteresis, ramp-limit)
- â Enkelt att felsöka â omfattande diagnostik och reason codes
- â Autonomt â krĂ€ver minimal inblandning efter setup
- HÄller inomhustemperaturen nÀra ett mÄl
- Komfortskydd aktiveras nÀr temperaturen sjunker för lÄgt
- MCP (Maximum Comfort Priority) blockerar prisstyrning nÀr komforten hotas
- Hysteresis förhindrar studsning mellan on/off
- AnvÀnder P30/P80-percentiler frÄn
raw_todayför att avgöra billiga/dyra perioder (Ngenic-liknande dagsfokus) - Pre-brake-logik (forward-look) som bygger upp bromsning gradvis innan dyra timmar
- Brake-fasmaskin (ramping up â holding â ramping down) för mjuka övergĂ„ngar
- Dwell-timers förhindrar prisfluktuationer frÄn att orsaka instabilitet
- Bridge-hold (NEAR) kan titta in i
raw_tomorrowom det finns, men pÄverkar inte P30/P80-grÀnserna
Alla delar Àr separerade för enkel förstÄelse och underhÄll:
- Sensors â validerade temperaturer och priser
- Price dwell â stabiliserar rĂ„a pristillstĂ„nd
- Brake phase â fasmaskin för mjuka bromscykler
- Engine â core control loop
- Learning â sjĂ€lvjustering (endast i learning-variant)
- Notify â diagnostik och varningar
- Startup init â sĂ€ker initialisering (om din variant har den)
- Freeze-logik nÀr prisdata saknas (komfortskydd fortsÀtter)
- Rate-limiter för applied offset (förhindrar plötsliga hopp)
- HÀlsokontroller för alla inputs
- Anti-storm throttling (max en körning per 30 sekunder, om aktiverat i din variant)
- Sanity checks pÄ alla sensorvÀrden
LĂ€gg filen i:
/config/packages/svotc.yaml
Eller valfri plats om du anvÀnder packages: i configuration.yaml.
I din configuration.yaml, lÀgg till:
homeassistant:
packages: !include_dir_named packagesDĂ€r hittar du alla SVOTC-kontroller.
För kompatibilitet Àr input_boolean.svotc_initialized satt till on frÄn början.
Gör sÄ hÀr för sÀker first-run-init:
- SĂ€tt
input_boolean.svotc_initializedtill off - VĂ€nta 30â60 sekunder sĂ„ init-automation hinner skriva standardvĂ€rden
- Verifiera att helpers fÄtt rimliga defaultvÀrden
- LÄt
svotc_initializedgÄ tillbaka till on (automatiskt eller manuellt)
Tips: LÀgg gÀrna detta som punkt i din installationschecklista sÄ det inte missas.
Följ dessa steg för att komma igÄng snabbt:
- Installera filen enligt ovan
- Starta om Home Assistant
- Konfigurera entiteter:
- GĂ„ till Developer Tools â States
- Hitta dina temperatur- och pris-entiteter
- Ange dem i:
input_text.svotc_entity_indoorâ din inomhussensorinput_text.svotc_entity_outdoorâ din utomhussensorinput_text.svotc_entity_priceâ din Nordpool-sensor
- SĂ€tt mode till Smart:
input_select.svotc_modeâSmart
- VÀnta 2-3 minuter för första körningen
- Verifiera att det fungerar:
- Kolla
input_text.svotc_reason_code - Om
NEUTRALellerPRICE_BRAKEâ allt Ă€r OK - Om
MISSING_INPUTS_FREEZEâ kontrollera entitetsmappning
- Kolla
Troubleshooting: Om inget hÀnder efter 5 minuter, kolla:
binary_sensor.svotc_inputs_healthy(ska vara ON)binary_sensor.svotc_price_available(ska vara ON)input_text.svotc_reason_codeför diagnos
Du mÄste ange dessa tre entiteter:
| Typ | Input | Exempel | Format |
|---|---|---|---|
| Inomhustemperatur | input_text.svotc_entity_indoor |
sensor.indoor_temp |
Numeriskt vÀrde i °C |
| Utomhustemperatur | input_text.svotc_entity_outdoor |
sensor.outdoor_temp |
Numeriskt vÀrde i °C |
| Nordpool-entitet | input_text.svotc_entity_price |
sensor.nordpool_kwh_se3 |
Nordpool-integration med state=current_price och attribut raw_today (gÀrna Àven raw_tomorrow) |
OBS: Nordpool-entiteten mÄste vara frÄn Nordpool-integrationen eller kompatibel.
- P30/P80 berÀknas endast frÄn
raw_today(dagens priser). raw_tomorrowanvÀnds bara för forward-look/bridge-hold nÀr morgondagens block finns tillgÀngliga.
| Parameter | VÀrde | Förklaring |
|---|---|---|
| Mode | Smart | Full autonom styrning |
| Prebrake lead time | 30 min | Grundfönster före dyrperiod |
| Bridge-hold window | 45â90 min | Undvik dip mellan nĂ€ra pris-toppar |
| Thermal mass factor | 1.0 | Normal villa, justera sedan |
| Comfort temperature | 21.0°C | Ditt önskade mÄl |
| Comfort guard | PĂ | Alltid rekommenderat |
| Brake hold offset | 6.0°C | Maximal offset under dyra perioder |
| Minimum brake price | 0.10 SEK/kWh | Hindrar bromsning vid extremt lÄga/negativa priser |
LÀtt hus (snabb vÀrme/kyla, dÄlig isolering):
- Thermal mass factor: 0.6â0.8
- Prebrake lead time: 15â30 min
- Brake hold offset: 4â6°C
Normal villa:
- Thermal mass factor: 1.0
- Prebrake lead time: 30 min
- Brake hold offset: 6°C
Tung villa (bra isolering, lÄngsam vÀrme/kyla):
- Thermal mass factor: 1.3â1.8
- Prebrake lead time: 40â60 min
- Brake hold offset: 6â8°C
| Mode | Beskrivning | AnvÀndning |
|---|---|---|
| Smart | Full autonom styrning med bÄde komfort och prisoptimering | Rekommenderas för daglig drift |
| Simple | Förenklad logik, Ngenic-liknande med fÀrre parametrar | Bra för nybörjare |
| ComfortOnly | Endast komfortskydd, ingen prisoptimering | NÀr elpriset Àr stabilt/lÄgt |
| PassThrough | Ingen styrning, bara mÀtning och diagnostik | Testning och kalibrering |
| Off | Systemet helt avstÀngt | UnderhÄll eller felsökning |
SVOTC styr inte direkt din vÀrmepump. IstÀllet skapar den en virtuell utomhustemperatur som du mÄste skicka till pumpen.
sensor.svotc_virtual_outdoor_temperature
Detta Àr den temperatur din vÀrmepump ska anvÀnda istÀllet för verklig utomhustemperatur.
SVOTC kan kopplas till din vÀrmepump pÄ flera sÀtt:
Ohmigo Ohm-on WiFi Plus Àr en WiFi-adapter som gör det enkelt att integrera SVOTC med din vÀrmepump.
Fördelar:
- â Plug & Play â enkel installation
- â WiFi-baserad â kommunicerar direkt med Home Assistant
- â Kompatibel med mĂ„nga vĂ€rmepumpar
- â Ingen molntjĂ€nst krĂ€vs â fungerar lokalt
Installation:
- Montera Ohm-on WiFi Plus enligt tillverkarens instruktioner
- Anslut enheten till ditt WiFi-nÀtverk
- Integrera med Home Assistant (via MQTT)
- Skapa en automation som lÀser
sensor.svotc_virtual_outdoor_temperature - Skicka vÀrdet till vÀrmepumpen via Ohmigo-enheten
| Sensor | Funktion | Typiskt vÀrde |
|---|---|---|
sensor.svotc_virtual_outdoor_temperature |
Den temperatur som skickas till vÀrmepumpen | Outdoor temp ± offset |
input_number.svotc_applied_offset_c |
Aktuell offset (efter rate-limit) | -2 till +8°C |
input_text.svotc_reason_code |
Förklaring till senaste beslut | NEUTRAL, PRICE_BRAKE, etc. |
| Sensor | Funktion |
|---|---|
sensor.svotc_prebrake_strength |
0â1, hur nĂ€ra dyra timmar du Ă€r |
input_number.svotc_requested_offset_c |
RÄ offset frÄn engine (före rate-limit) |
binary_sensor.svotc_comfort_guard_active |
ON = komforten hotas |
binary_sensor.svotc_inputs_healthy |
ON = alla sensorer fungerar |
binary_sensor.svotc_price_available |
ON = Nordpool-data finns |
sensor.svotc_minutes_to_next_brake_start |
Tid till nÀsta dyra period |
input_text.svotc_brake_phase |
idle / ramping_up / holding / ramping_down |
input_number.svotc_learned_brake_efficiency |
SjĂ€lvjusterad faktor (0.5â1.5) |
| Code | Betydelse |
|---|---|
NEUTRAL |
Normal drift, inget pÄgÄr |
PRICE_BRAKE |
Aktiv prisbromsning |
COMFORT_GUARD |
Komfortskydd aktivt |
MCP_BLOCKS_BRAKE |
Komfort blockerar pris-brake |
PRICE_DATA_WARMUP_FREEZE |
VÀntar pÄ prisdata, offset fryst |
MISSING_INPUTS_FREEZE |
Sensorer saknas, allt fryst |
PASS_THROUGH |
PassThrough mode aktiv |
COMFORT_ONLY |
ComfortOnly mode aktiv |
OFF |
Systemet avstÀngt |
SVOTC levereras med fÀrdiga kort som du kan kopiera in i din dashboard.
Detta Àr det rekommenderade sÀttet - lÀgg till SVOTC-kort i din befintliga dashboard.
- GÄ till din HemskÀrm (eller valfri dashboard)
- Klicka pÄ pennikonen (Edit Dashboard) uppe till höger
- Klicka pÄ "+ ADD CARD" dÀr du vill ha kortet
- Scrolla ner i kortlistan
- Klicka pÄ "MANUAL" lÀngst ner (eller vÀlj ett befintligt kort först)
- Du ser nu en kod-editor med YAML
- Radera det som stÄr i editorn
- Ăppna filen
SVOTC_Cards.yamlfrÄn repot - Kopiera det kort du vill ha (t.ex. "Kontrollpanel")
- Klistra in i editorn
- Klicka "SAVE"
LÀgg till fler kort genom att upprepa steg 2-3 för varje kort du vill ha.
Klart! Dina SVOTC-kort Ă€r nu tillagda. đ
Om du vill ha en egen dashboard för SVOTC med Sections-layout:
- GĂ„ till Settings â Dashboards
- Klicka pÄ "+ ADD DASHBOARD" (nere till höger)
- VĂ€lj "New dashboard"
- Namn: "SVOTC Control"
- Typ: VÀlj "Sections (experimental)" om tillgÀnglig, annars standard
- Klicka "CREATE"
- PĂ„ den nya dashboarden, klicka "EDIT DASHBOARD"
- Klicka "+ ADD SECTION"
- VĂ€lj "Grid"
- I den nya grid-sectionen, klicka "+ ADD CARD"
- Scrolla ner och vÀlj "MANUAL" (eller sök efter korttyp)
- I YAML-editorn som öppnas:
- Radera befintligt innehÄll
- Klistra in ett kort frÄn
SVOTC_Cards.yaml - Klicka "SAVE"
- Upprepa för varje kort du vill ha
- I edit-lÀge, klicka pÄ "MANAGE BADGES" (om tillgÀngligt)
- LĂ€gg till relevanta entiteter som badges:
sensor.svotc_virtual_outdoor_temperatureinput_text.svotc_reason_codebinary_sensor.svotc_inputs_healthy
Klart! Du har nu en dedikerad SVOTC-dashboard. đ
InnehÄll:
- DriftslÀge (Smart/Simple/ComfortOnly/etc.)
- KomfortinstÀllningar (mÄl, guard-trösklar)
- Prisoptimering (brake/heat aggressiveness)
- Thermal mass factor
- Comfort guard on/off
AnvÀndning: PrimÀra kontroller för daglig anvÀndning.
InnehÄll:
- Requested offset (orange)
- Applied offset (röd)
- 24h historik
AnvÀndning: Se hur systemet justerar offset över tid.
InnehÄll:
- Outdoor verklig (blÄ)
- Virtual outdoor â VP (lila)
- 24h historik
AnvÀndning: Se skillnaden mellan verklig och virtuell utetemperatur.
InnehÄll:
- Nordpool-pris
- 24h historik
AnvĂ€ndning: Ăvervaka elpriset och förstĂ„ nĂ€r systemet bromsar.
InnehÄll:
- SystemhÀlsa (sensors OK, price available)
- Timing (minuter till nÀsta brake, prebrake window)
- Prisstatus (raw â pending â stable)
- Brake phase
AnvÀndning: Felsökning och förstÄelse av systemets interna tillstÄnd.
InnehÄll:
- Live systemöversikt med dynamiska berÀkningar
- Temperaturstatus med offset-detaljer
- Prisstyrning med prebrake-indikator
- Komfortskydd med trösklar
- Bromsfas med progress
- Expanderbara diagnostikdetaljer
- Strategi-förklaring
AnvÀndning: En enda överblick över ALLT systemet gör.
OBS: Detta kort krÀver mycket utrymme - rekommenderas i egen sektion.
InnehÄll:
- SVOTC Mode + System OK (rad 1)
- Comfort Guard + Reason Code (rad 2)
AnvÀndning: Kompakt statusöversikt.
Graferna anvÀnder mini-graph-card frÄn HACS:
- Ăppna HACS â Frontend
- Sök efter "mini-graph-card"
- Klicka "Download"
- Starta om Home Assistant
Alternativ utan custom cards:
- Skippa grafkorten
- Eller ersÀtt med standard
history-graph:type: history-graph entities: - entity: input_number.svotc_applied_offset_c hours_to_show: 24
För bÀsta översikt, anvÀnd denna ordning:
Sektion 1 (Grid):
- đŻ Snabbstatus (överst för snabb överblick)
- đïž Kontrollpanel (primĂ€ra instĂ€llningar)
- đ Offset-graf (viktigaste grafen)
- đĄïž Temperaturgraf
- đ” Prisgraf
Sektion 2 (Grid, valfri):
- đ System Status (markdown) - hel bredd
- đŹ Diagnostik (för nördarna)
- HÄll nere pÄ kortet (mobil) eller klicka tre prickar (desktop)
- VĂ€lj "Edit"
- Klicka "SHOW CODE EDITOR" (nere till höger)
- Gör dina Àndringar
- Spara
Ăppna kortet i YAML-lĂ€ge och ta bort rader. Exempel:
entities:
- entity: input_number.svotc_comfort_temperature
# - entity: input_number.svotc_prebrake_lead_time_min â Ta bort denna rad om du inte vill Ă€ndra denSVOTC kan (i learning-varianten) anvĂ€nda en enkel sjĂ€lvjustering som anpassar bromsningen över tid baserat pĂ„ hur ofta komfortskyddet behöver ingripa.
-
Varje gĂ„ng komfortskyddet aktiveras rĂ€knas en âkomfortavvikelseâ.
-
Vid midnatt varje natt analyseras senaste 24 timmarna med en finstegad kurva:
- >5 avvikelser â systemet har varit för aggressivt â minska brake-efficiency med 0.05
- 3â5 avvikelser â nĂ„got för aggressivt â minska brake-efficiency med 0.02
- 0 avvikelser â systemet kan bromsa mer â öka brake-efficiency med 0.03
- 1 avvikelse â nĂ€ra balans men kan bromsa lite mer â öka brake-efficiency med 0.01
- 2 avvikelser â balans â behĂ„ll nuvarande vĂ€rde
-
RÀknaren nollstÀlls.
-
NÀsta dag anvÀnds den uppdaterade effektiviteten i prisbromsningen.
VĂ€rdet klampas alltid till intervallet 0.5â1.5.
Systemet brukar stabilisera sig efter nÄgra dygn till nÄgon vecka, men tiden varierar beroende pÄ husets tröghet, vÀder, vÀrmepumpens kurva och elprisernas mönster.
Du kan alltid manuellt justera:
input_number.svotc_learned_brake_efficiency
Normalintervall: 0.5â1.5
- 0.5 = mycket försiktig (liten offset)
- 1.0 = normal (rekommenderad start)
- 1.5 = aggressiv (stor offset)
Systemet skickar automatiska notiser vid:
| Event | Trigger | Delay |
|---|---|---|
| đŽ Saknade inputs | binary_sensor.svotc_inputs_healthy = OFF |
3 minuter |
| đŽ Saknade prisdata | binary_sensor.svotc_price_available = OFF |
3 minuter |
| đĄ Comfort guard avstĂ€ngt | input_boolean.svotc_comfort_guard_enabled = OFF |
5 minuter |
| đą Ă terhĂ€mtning | BĂ„da sensors = ON | 2 minuter |
Ange vilken notify-service som ska anvÀndas:
input_text.svotc_notify_service
Exempel:
notify.mobile_app_johan(HA Companion App)notify.telegram(Telegram)notify.pushover(Pushover)notify.notify(default, alla notifieringstjÀnster)
Vid problem:
SVOTC: Missing data
Inputs eller prisdata saknas sedan minst 3 minuter.
Missing mappings: price mapping
Sources:
indoor=21.3
outdoor=5.2
price=unknown
Vid ÄterhÀmtning:
SVOTC: OK again
Inputs + price data Àr stabila igen.
Q: Varför rör sig inte offset?
A: Kolla input_text.svotc_reason_code. Troligen:
MISSING_INPUTS_FREEZEâ saknar sensorer, kontrollera entitetsmappningPRICE_DATA_WARMUP_FREEZEâ vĂ€ntar pĂ„ tillrĂ€cklig prisdata (frĂ€mstraw_today) innan prislogik slĂ€ppsOFFâ systemet Ă€r avstĂ€ngt, sĂ€tt mode till Smart
Q: Hur vet jag att det fungerar?
A: Efter 2-3 minuter bör du se:
binary_sensor.svotc_inputs_healthy= ONbinary_sensor.svotc_price_available= ONinput_text.svotc_reason_code= NEUTRAL (eller annan aktiv kod)input_number.svotc_applied_offset_cÀndras gradvis
Q: Vilken Nordpool-integration behöver jag?
A: Den officiella Nordpool-integrationen frÄn HACS eller core. Sensorn mÄste ha attributen:
current_priceraw_today(lista med prisblock för idag)raw_tomorrow(valfritt men rekommenderat för bÀttre forward-look/bridge-hold)
Tips: Om du anvÀnder den officiella Nordpool-integrationen, kan du anvÀnda paketfilen frÄn Nordpool-official för enklare konfiguration.
Q: Vilken hÄrdvara behöver jag för att koppla SVOTC till min vÀrmepump?
A: Det beror pÄ din vÀrmepump:
- Rekommenderat: Ohmigo Ohm-on WiFi Plus â fungerar med de flesta vĂ€rmepumpar och ger fullstĂ€ndig lokal kontroll
- Annat: Kontrollera om din pumpintegration stöder temperaturoffset eller vÀrmekurva
Q: Systemet Àr för aggressivt / för försiktigt
A: Justera i denna ordning:
input_number.svotc_prebrake_lead_time_minâ hur tidigt prebrake ska börjainput_number.svotc_thermal_mass_factor(0.5-2.0) â anpassa till husets tröghetinput_number.svotc_brake_hold_offset_c(0-20) â max offset under dyra perioderinput_number.svotc_bridge_hold_window_minâ minska/öka brohĂ„llning mellan toppar- VĂ€nta 3-5 dagar om learning/autotune Ă€r aktiv innan ny större justering
Q: Kan jag inaktivera learning?
A: Ja, ta bort automationen SVOTC Learning: reset daily counter. DÄ behÄller systemet alltid det manuella vÀrdet i svotc_learned_brake_efficiency.
Q: Hur fungerar freeze-logiken?
A: NĂ€r prisdata saknas:
- Comfort guard fortsÀtter fungera (sÀkerhet först)
- Price logic frysas pÄ senast kÀnda vÀrde
- Offset Àndras inte (rate-limiter hÄller nuvarande vÀrde)
- Notifikation skickas efter 3 minuter
- NĂ€r data Ă„terkommer â systemet fortsĂ€tter normalt
Q: Vad hÀnder om Nordpool gÄr ner?
A:
- Systemet detekterar saknad prisdata inom 1 minut
- ĂvergĂ„r till freeze-mode (behĂ„ller senaste offset)
- Comfort guard fortsÀtter fungera
- Du fÄr en notis efter 3 minuter
- NÀr Nordpool Àr uppe igen ÄtergÄr allt till normalt
Q: Kan jag bidra?
A: Absolut! Pull requests vÀlkomnas för:
- Buggfixar
- DokumentationsförbÀttringar
- ĂversĂ€ttningar
MIT License â fritt att anvĂ€nda, Ă€ndra och dela.
Copyright (c) 2026 Johan Ă
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- Ohmigo Ohm-on WiFi Plus â WiFi-adapter för vĂ€rmepumpar
- Coming soon: Installation guide
- Coming soon: Advanced tuning
- Coming soon: Integration examples
Version: (2026-02-25)
Senast uppdaterad: 2026-02-25
Licens: MIT