Shelly 1PM Gen3 är det bästa reläet för en enskild varmvattenberedare: det klarar 16 A (3 680 W vid 230 V) på sin enda kanal, medan Shelly Plus 2PM klarar 10 A per kanal (2 300 W) och 16 A totalt. För beredare över cirka 2 kW och för alla trefasberedare bör Shelly enbart styra en kontaktor som bryter själva effektkretsen. Fast elinstallation får endast utföras av auktoriserad elinstallatör eller ett registrerat elinstallationsföretag. Tidsstyrning sparar bara pengar med timpris- eller kvartsprisavtal, aldrig med rörligt månadspris. Håll beredaren på minst 60 °C för att motverka legionella.
💡 Vår rekommendation
För de flesta som undrar hur man tidsstyr varmvattenberedaren mot timpris rekommenderar vi Kärnfull Energi.
Kärnfull erbjuder kvartspris utan påslag på inköpspriset (0 öre/kWh) och en månadsavgift på 39 kr, den lägsta avgiftsnivån i vår jämförelse. Eftersom Shelly-reläet och skriptet sköter optimeringen behöver du ingen avancerad automations-app från elbolaget, och då väger låga fasta kostnader tyngst: för ett hushåll som förbrukar 20 000 kWh/år är avtalsavgifterna cirka 1 320 kr lägre per år än hos Tibber (49 kr/mån + 6 öre/kWh). Avtalet saknar bindningstid och Trustpilot-betyget ligger på cirka 4.2–4.6/5.
Optimera varmvattnet mot dagens timpriser – byt till timprisavtal här →
🔧 Shelly 1PM Gen3 vs Plus 2PM: tekniska skillnader
Båda reläerna är enfasreläer med effektmätning och stöd för egna skript, och båda kräver nolla (N) för att fungera. Skillnaden ligger i antal kanaler och maximal belastning per kanal.
| Modell | Kanaler | Maximal last | Effektmätning | Egna skript | Inköp och dokumentation |
|---|---|---|---|---|---|
| Shelly 1PM Gen3 | 1 | 16 A, 3 680 W vid 230 V (resistiv last) | Ja | Ja (mJS) | Produktsida hos Shelly |
| Shelly Plus 2PM | 2, på samma fas | 10 A per kanal (2 300 W), 16 A totalt (18 A topp) | Ja, per kanal | Ja (mJS) | Dokumentation hos Shelly |
Shelly anger att 1PM Gen3 har en förbättrad processor och mer minne än föregångaren. För Plus 2PM gäller att kanalerna delar 16 A, så två 2 kW-beredare på samma enhet ligger på 17,4 A tillsammans och överskrider totalgränsen. Om du behöver montera reläet i elcentralen på DIN-skena är Shelly Pro 1PM ett alternativ med 16 A utgång och skydd mot överström, övertemperatur och överspänning, enligt Shellys produktsida.
🎯 Vilket relä ska du välja?
För en enskild beredare är Shelly 1PM Gen3 det enklaste och säkraste valet. Du får 16 A på kanalen, vilket räcker för alla enfaselement upp till 3 680 W, och du betalar inte för en andra kanal du inte använder. Shelly Plus 2PM passar när du vill styra två separata laster, till exempel två beredare eller en beredare och en golvvärmekrets, och då via kontaktorer.
📐 Ampère och beredareffekt
Strömmen räknas som effekt delat med spänning. I tabellen jämförs vanliga elementeffekter mot reläernas gränser vid 230 V.
| Elementeffekt | Ström | 1PM Gen3 direkt (gräns 16 A) | Plus 2PM direkt (gräns 10 A per kanal) |
|---|---|---|---|
| 1,5 kW | 6,5 A | ✅ 41% av gränsen | ✅ 65% av gränsen |
| 2,0 kW | 8,7 A | ⚠️ 54% av gränsen | ⚠️ 87% av gränsen |
| 3,0 kW | 13,0 A | ⚠️ 81% av gränsen | ❌ 130% av gränsen |
| Över 3,68 kW | Över 16 A | ❌ | ❌ |
Vår rekommendation är att alltid låta Shelly styra en kontaktor så snart elementet är på 2 kW eller mer. Ett relä är byggt för att växla laster kortvarigt, medan en beredare belastar kontakterna i timmar i sträck med full märkström. Värmen som utvecklas i plintar och kontakter är den största brandrisken vid direktstyrning.
📊 Jämförelse: Ledande elbolag för kvartspris
Jämförelsen fokuserar på det som är relevant för en tidsstyrd beredare: låga fasta kostnader, kvartspris utan bindningstid och ett bolag som skickar begripliga fakturor. Avtalets egen kostnad avser månadsavgift plus påslag på 208 kWh per månad (2 500 kWh/år ÷ 12), exklusive spotpris och kampanjer.
| Elbolag | Månadsavgift + påslag | Avtalets egen kostnad per månad (2 500 kWh/år) | Villkorstid | Trustpilot | Erbjudande |
|---|---|---|---|---|---|
| Kärnfull Energi | 39 kr + 0 öre/kWh | 39 kr | Löpande, ingen bindningstid | cirka 4.2–4.6/5 (hundratals omdömen) | Se pris → |
| Tibber | 49 kr + 6 öre/kWh | 61,50 kr | Löpande, ingen bindningstid | cirka 3.6–4.0/5 (många tusen omdömen) | Se pris → |
| Bixia Kvartspris | 49 kr + 0 öre/kWh | 49 kr | Ingen bindningstid | cirka 3.2–3.7/5 | Se pris → |
| Greenely | 49–69 kr + 8 öre/kWh | 66–86 kr | 12 mån | cirka 3.4–3.9/5 (flera tusen omdömen) | Se pris → |
| E.ON Kvartspris | 40 kr + 6 öre/kWh | 52,50 kr | 12 mån | cirka 1.3–1.6/5 (flera tusen omdömen) | Se pris → |
Kärnfull har lägst fasta kostnader och högst Trustpilot-betyg i tabellen. Bolaget säljer 100% kärnkraftsel, och kunderna på Trustpilot lyfter fram tydliga fakturor och snabb kundservice, medan några efterlyser mer avancerad smartstyrning i appen. Det spelar mindre roll här eftersom styrningen sker i Shelly-reläet. Uppsägningstiden är 2 månader enligt vår avtalsöversikt.
Tibber och Greenely är starkast om du vill ha en app som visar priser och styr fler enheter, och de har hög nöjdhet bland smart hem-användare. Tibbers påslag och månadsavgift ger en högre grundkostnad. E.ON har ett lågt Trustpilot-betyg, som enligt sammanställningen i hög grad speglar kritik mot elnätsavgifter och långa väntetider i kundservice snarare än elhandeln i sig.
Väljer du en elleverantör för att kunna tidsstyra el generellt, alltså inte bara beredaren, är kvartspris med lågt påslag och utan bindningstid den avtalsform som ger dig störst frihet.
💰 Vad kostar varmvattenstyrning och elbolagets avgifter i praktiken?
🔥 Beredarens energibehov
Energin för att värma vatten är massan gånger värmekapaciteten gånger temperaturhöjningen. Att värma 200 liter från 10 till 60 °C kräver cirka 11,6 kWh (200 kg × 4,186 kJ/kg·K × 50 K ÷ 3 600). Det är en full uppvärmning från kallt vatten, och i vardagen värms beredaren oftast bara upp delvis.
| Beredare | Energi 10 till 60 °C | Tid vid 2 kW | Tid vid 3 kW |
|---|---|---|---|
| 200 liter | 11,6 kWh | 5,8 timmar | 3,9 timmar |
| 300 liter | 17,4 kWh | 8,7 timmar | 5,8 timmar |
📊 Prisutveckling i elområdena
Spotpriset skiljer sig kraftigt mellan elområdena, vilket avgör hur mycket det finns att tjäna på att styra. Årsmedelpriset för SE3 var 41,5 öre/kWh 2024 och 51,4 öre/kWh 2025, jämfört med 18,5 öre/kWh i SE1 under 2025. Siffrorna avser Nord Pool spotpris i öre/kWh, utan moms, nätavgift och elbolagets påslag.
| Elområde | Årsmedel 2024 | Årsmedel 2025 | Senaste 12 mån (feb 2025 – jan 2026) |
|---|---|---|---|
| SE1 | 28,7 | 18,5 | 24,3 |
| SE2 | 28,6 | 18,1 | 24,0 |
| SE3 | 41,5 | 51,4 | 55,1 |
| SE4 | 53,4 | 66,5 | 70,3 |
Månadsmedelpris per elområde, öre/kWh (Nord Pool, februari 2024 till januari 2026):
| Månad | SE1 | SE2 | SE3 | SE4 |
|---|---|---|---|---|
| feb 2024 | 44,8 | 44,8 | 48,5 | 55,4 |
| mar 2024 | 56,6 | 56,6 | 59,4 | 63,4 |
| apr 2024 | 50,5 | 50,5 | 54,4 | 62,5 |
| maj 2024 | 17,6 | 17,6 | 31,0 | 52,8 |
| jun 2024 | 24,0 | 24,0 | 31,0 | 44,7 |
| jul 2024 | 20,6 | 20,6 | 21,3 | 31,3 |
| aug 2024 | 8,9 | 8,5 | 8,5 | 31,3 |
| sep 2024 | 9,6 | 9,6 | 15,6 | 31,4 |
| okt 2024 | 12,6 | 12,6 | 23,0 | 30,2 |
| nov 2024 | 25,0 | 25,0 | 67,0 | 84,7 |
| dec 2024 | 12,6 | 12,6 | 58,3 | 69,3 |
| jan 2025 | 23,8 | 23,8 | 63,4 | 68,0 |
| feb 2025 | 12,9 | 12,9 | 77,1 | 103,9 |
| mar 2025 | 15,8 | 11,0 | 50,8 | 60,5 |
| apr 2025 | 14,4 | 14,2 | 37,6 | 58,4 |
| maj 2025 | 14,1 | 15,1 | 42,9 | 60,0 |
| jun 2025 | 3,1 | 5,0 | 22,8 | 40,7 |
| jul 2025 | 13,6 | 16,0 | 37,0 | 46,4 |
| aug 2025 | 23,7 | 23,1 | 48,6 | 73,2 |
| sep 2025 | 17,3 | 16,3 | 52,3 | 70,6 |
| okt 2025 | 14,2 | 13,5 | 62,8 | 71,3 |
| nov 2025 | 37,0 | 34,3 | 69,6 | 80,7 |
| dec 2025 | 31,6 | 32,1 | 51,7 | 64,9 |
| jan 2026 | 93,9 | 94,2 | 108,4 | 113,0 |
Säsongsvariationen i SE3 är stor: januari 2026 låg på 108,4 öre/kWh mot 22,8 öre/kWh i juni 2025, drygt 4,7 gånger högre. Trenden de senaste sex månaderna (augusti 2025 till januari 2026) är ↗️ stigande i både SE3 (48,6 till 108,4 öre/kWh) och SE4 (73,2 till 113,0 öre/kWh). I februari 2026 låg månadsmedlet hittills på cirka 123 öre/kWh i SE3.
Även inom ett enskilt dygn är skillnaderna stora. Den 24 september 2026 var lägsta kvartspris i SE3 109,88 öre/kWh (kl. 03:45 – 04:00) och högsta 256,08 öre/kWh (kl. 18:45 – 19:00), en skillnad på 146,20 öre/kWh enligt elen.nu. Just den skillnaden är vad ett kvartsprisavtal och en tidsstyrd beredare kan utnyttja.
💡 Vad kan du spara?
Besparingen är skillnaden mellan dygnets snittpris och priset under de kvartar du väljer, multiplicerat med de kWh du flyttar. Följande exempel utgår från en beredare som använder 2 500 kWh/år (ett antagande, kontrollera din egen förbrukning i Shelly-appen) och visar besparingen vid tre olika genomsnittliga prisskillnader. Värdena är räkneexempel och inte en prognos.
| Snittbesparing per flyttad kWh (exkl. moms) | Besparing per år exkl. moms | Besparing per år inkl. 25% moms |
|---|---|---|
| 10 öre/kWh | 250 kr | 313 kr |
| 25 öre/kWh | 625 kr | 781 kr |
| 50 öre/kWh | 1 250 kr | 1 563 kr |
Besparingen måste vara större än eventuella skillnader i månadsavgift och påslag jämfört med ditt nuvarande avtal. Räkna alltid på den totala kostnaden och inte bara på spotpriset.
Vill du ha en app som visar priserna och kan styra fler enheter är Tibber ett alternativ, med 49 kr/mån och 6 öre/kWh i påslag enligt vår avtalsöversikt.
Det som påverkar den totala kostnaden för styrd varmvattenberedning, i ungefärlig ordning efter betydelse:
- Elområde: SE4 hade 2025 ett årsmedel på 66,5 öre/kWh mot 18,5 öre/kWh i SE1.
- Säsong: vinterpriserna är flera gånger högre än sommarpriserna, och beredaren använder lika mycket el hela året.
- Prisskillnaden inom dygnet: ju större spridning mellan dyra och billiga kvartar, desto mer att tjäna.
- Månadsavgift och påslag: avgifter som är fasta för hela hushållet, oavsett om du styr eller inte.
- Nätavgift och eventuell effekttariff: vissa elnätsföretag har infört en avgift baserad på hur mycket effekt du använder samtidigt.
- Moms: 25% på både spotpris, påslag och avgifter.
📋 Vad du lär dig i den här guiden
- Hur ett Shelly-relä, en kontaktor och ett kvartsprisavtal samverkar när du flyttar varmvattenbeställningen till dygnets billigaste kvartar
- Skillnaden mellan Shelly 1PM Gen3 och Shelly Plus 2PM, med ampèregränser i siffror
- Kopplingsscheman för enfas, enfas via kontaktor och trefas
- Säkerhetsreglerna kring brandrisk, jordfelsskydd, legionella och vem som får göra installationen
- Ett färdigt skript med felsäker reservlösning, samt vilket elbolag som passar bäst för uppsättningen
⚡ Tidsstyrning av varmvattenberedaren förklarat — från grunden
🔌 Vad ett Shelly-relä faktiskt gör
Ett Shelly-relä är en Wi-Fi-ansluten strömbrytare med inbyggd effektmätning. Det ersätter inte beredarens termostat eller övertemperaturskydd, utan avgör bara när beredaren får ström. Termostaten bestämmer fortfarande hur varmt vattnet blir, och att den fungerar är en förutsättning för att styrningen ska vara säker.
Både Shelly 1PM Gen3 och Shelly Plus 2PM kan köra egna skript direkt i enheten. Styrningen fortsätter därför att fungera även om ditt hemautomationssystem ligger nere. Enheten hämtar dagens elpriser över internet, väljer de billigaste kvartarna och slår utgången på och av enligt planen.
📊 Timpris, kvartspris och månadspris – skillnaden som avgör lönsamheten
Med ett rörligt avtal med månadspris betalar du månadens genomsnittliga spotpris oavsett när på dygnet du använder elen. Energimarknadsbyrån beskriver det som en missuppfattning att det lönar sig att förbruka el på natten med ett sådant avtal. Det gäller bara timprisavtal och kvartsprisavtal.
Sedan 1 oktober 2025 handlas el per kvart, och kvartsprisavtal där priset ändras fyra gånger per timme har ersatt många timprisavtal. Ett gammalt timprisavtal kan ha övergått till kvartspris utan nytt samtycke om avtalsvillkoren tillåter det. Ditt elnätsbolag ansvarar för att mätaren registrerar förbrukningen var 15:e minut, och du behöver inte byta mätare själv.
Kontrollera med ditt elbolag att du faktiskt debiteras per kvart. Om mätaren ännu inte kvartsavläses kan vissa elbolag debitera ett månadsgenomsnitt tills avläsningen är på plats, och då ger styrningen ingen besparing.
🚿 Varför beredaren är en av de bästa lasterna att flytta
Beredaren lagrar värme i flera hundra liter vatten, och ingen märker vilken timme energin gick in. Den är dessutom en ren resistiv last med känd effekt, vilket gör den enkel att styra, mäta och dimensionera skyddsutrustning för.
Priset på elen varierar kraftigt över dygnet. Sedan kvartshandeln infördes kan elen vara billigast mitt på dagen och inte nödvändigtvis på natten, vilket är skälet till att ett fast nattschema inte längre räcker för att ta hem hela besparingen.
✅ Vad gäller — och vad gäller inte?
Tabellen nedan reder ut de missförstånd som är vanligast när man kopplar ihop Shelly, kontaktor och elavtal.
| Scenario | Gäller? | Notering |
|---|---|---|
| Styra beredaren mot spotpris med rörligt månadspris | ❌ | Du betalar månadens medelpris oavsett tidpunkt. Byt till timpris eller kvartspris. |
| Styra beredaren mot kvartspris eller timpris | ✅ | Du betalar priset som råder när elen används, plus elbolagets påslag och 25% moms. |
| Shelly 1PM Gen3 direkt på 3 kW enfaselement | ⚠️ | 13,0 A av 16 A, alltså inom specifikationen. Vi rekommenderar ändå kontaktor för timslånga laster. |
| Shelly Plus 2PM direkt på 3 kW enfaselement | ❌ | 13,0 A överstiger gränsen på 10 A per kanal. Endast styrning av kontaktor är möjligt. |
| Shelly direkt på trefasberedare | ❌ | Shelly-reläerna är enfasreläer. Använd tre- eller fyrpolig kontaktor. |
| Sänka beredartemperaturen under 60 °C för att spara | ❌ | Legionellabakterier förökar sig mellan cirka 20 och 45 °C. Boverket rekommenderar 60 °C i beredaren. |
| Koppla Shelly-reläet själv som privatperson | ❌ | Att fast ansluta en elektrisk produkt är elinstallationsarbete. Det kräver elinstallatör. |
| Styrningen fortsätter om Wi-Fi eller prisdata ligger nere | ✅ | Ja, om skriptet har ett reservfönster och utgångens startläge är satt till På. |
Raden om rörligt månadspris är den vanligaste fällan. Med Bixia Kvartspris (49 kr/mån och inget påslag på inköpspriset, ingen bindningstid) får du det pris som råder varje kvart, vilket är exakt det skriptet nedan optimerar mot.
🎯 Så väljer du rätt relä, kontaktor och elbolag
- Läs beredarens märkskylt. Notera effekt, spänning och antal faser. För enfas gäller ström = effekt ÷ 230 V, till exempel 2 000 W ÷ 230 V = 8,7 A. För en trefasberedare på 6 000 W blir strömmen 8,7 A per fas (6 000 W ÷ (1,73 × 400 V)).
- Kontrollera avtal och mätare. Du behöver ett kvartspris- eller timprisavtal och en mätare som registrerar varje kvart. Nätbolaget ansvarar för mätaren.
- Välj relä. Shelly 1PM Gen3 för en beredare, Plus 2PM om du behöver två kanaler.
- Välj kontaktor. Ta en modulkontaktor för AC-1 (resistiv last) med märkström på minst 25 A, med rätt polantal och en styrspole för 230 V AC. Kontaktorer finns hos elgrossister och byggvaruhus. Sök på ”modulkontaktor 25 A 230 V AC”.
- Låt behörig person göra installationen. Använd ett registrerat elinstallationsföretag och kontrollera företaget i Elsäkerhetsverkets tjänst Kolla elföretaget.
- Ladda skriptet och ställ in säkert startläge. Sätt utgångens startläge (Power-on default) till På, så att beredaren fungerar även om skriptet stoppar.
- Följ upp efter 30 dagar. Shelly-appens energiöversikt visar förbrukningen per dygn. Jämför mot fakturan för att se om styrningen ger den besparing du räknade med.
🔌 Kopplingsscheman
Schemana är principskisser för att du och din installatör ska prata om samma lösning. De ersätter inte installatörens egna beräkningar och bedömningar. Följ alltid tillverkarens anvisning för respektive enhet.
🔌 Enfas direktstyrning (upp till cirka 2 kW)
GRUPP (automatsäkring + jordfelsbrytare) SHELLY 1PM GEN3
L (brun) --------------------------------> L (in)
| relä
O (ut) ------------------> L BEREDARE
N (blå) ----------+---------------------> N
|
+------------------------------------------------> N BEREDARE
PE (gul/grön) ---------------------------------------------------------> PE BEREDARE
(skyddsjord kopplas aldrig via reläet)
🧲 Enfas via kontaktor (rekommenderad lösning)
Kretsen delas i en styrkrets, där Shelly matar kontaktorns spole, och en effektkrets, där kontaktorn bryter beredaren.
STYRKRETS (liten ström, Shelly matar spolen)
L ----> Shelly L (in) Shelly O (ut) ----> A1 kontaktorspole
N ----> Shelly N N -------------> A2 kontaktorspole
RC-snubber monteras över A1 och A2
EFFEKTKRETS (kontaktorn bryter beredaren)
Grupp L ----> [kontaktor pol 1: 1 till 2] ----> L BEREDARE
Grupp N ----> [kontaktor pol 2: 3 till 4] ----> N BEREDARE
Grupp PE -------------------------------------> PE BEREDARE (aldrig via kontaktorn)
Spolen är en induktiv last. Shelly rekommenderar en RC-snubber vid induktiva laster, och en sådan finns i Shellys egen webbutik.
⚡ Trefas via kontaktor
Shelly-reläerna är enfasreläer och kan aldrig bryta tre faser direkt. Reläet matas från en enfasgrupp och styr bara kontaktorns 230 V-spole.
STYRKRETS (samma som enfas)
L ----> Shelly L (in) Shelly O (ut) ----> A1 N ----> Shelly N och A2
EFFEKTKRETS (tre- eller fyrpolig kontaktor)
L1 ----> [pol 1: 1 till 2] ----> L1 BEREDARE
L2 ----> [pol 2: 3 till 4] ----> L2 BEREDARE
L3 ----> [pol 3: 5 till 6] ----> L3 BEREDARE
N ----> [pol 4, om beredaren har nolla] ----> N BEREDARE
PE -----------------------------------------> PE BEREDARE
🧯 Säkerhet: ampère, kontaktorer och brandrisk
- Elinstallationsarbete är lagreglerat. Enligt Elsäkerhetsverket omfattar det att utföra, ändra eller reparera en elanläggning och att fast ansluta en elektrisk produkt. Arbetet får bara utföras av personer med auktorisation som elinstallatör eller av personer som ingår i ett elinstallationsföretags egenkontrollprogram. Olagligt elinstallationsarbete är straffbart. Kolla vad som gäller på Elsäkerhetsverkets sida om vad du får göra själv.
- Överskrid aldrig märkströmmen. 16 A gäller för resistiva laster på Shelly 1PM Gen3 och 10 A per kanal på Plus 2PM. Installatören dimensionerar gruppens automatsäkring, kabelarea och skydd enligt gällande föreskrifter och installationsstandarden SS 436 40 00.
- Kontaktor ger marginal. Modulkontaktorn är byggd för att bryta resistiva laster på 25 A eller mer i timmar. Shelly-modulen tar då bara den lilla spolströmmen och blir inte en värmekälla i en trång dosa.
- Behåll beredarens egna skydd. Termostaten och övertemperaturskyddet med manuell återställning ska ligga kvar i serie med elementet och får aldrig byggas bort. Om ett relä eller en kontaktor skulle fastna i läge på är det skyddet som begränsar temperaturen.
- Undvik lösa anslutningar. En dåligt åtdragen plint värms upp när strömmen går i timmar och kan orsaka brand. Låt installatören dra åt enligt tillverkarens moment och kontrollera åtdragningen vid service.
- Håll beredaren varm nog. Boverket anger 60 °C som rekommenderad temperatur i varmvattenberedare och lägst 50 °C vid tappstället, eftersom legionellabakterier förökar sig mellan cirka 20 och 45 °C. Använd termostatblandare för att undvika skållning, eftersom tappvarmvatten inte bör överstiga 60 °C efter tappstället. Läs mer hos Boverket om legionella.
- Tänk på Wi-Fi. Ett metallskåp dämpar signalen kraftigt. Testa signalstyrkan innan du monterar enheten i en plåtcentral.
📜 Skript
🕑 Enkel reservlösning: schema i Shelly-appen
Utan skript kan du skapa två scheman i Shelly-appen: ett som slår på reläet och ett som slår av det. Ett exempel som värmer mellan 02:00 och 05:00 varje dag (tidsformat: sekund, minut, timme, dag, månad, veckodag):
Påslag 02:00: 0 0 2 * * SUN,MON,TUE,WED,THU,FRI,SAT -> Switch.Set {"id":0,"on":true}
Avslag 05:00: 0 0 5 * * SUN,MON,TUE,WED,THU,FRI,SAT -> Switch.Set {"id":0,"on":false}
Nackdelen är att schemat inte följer priset. Sedan kvartshandeln infördes kan elen vara billigast mitt på dagen, så ett fast nattfönster missar en del av besparingen.
🤖 Prisstyrt skript för Shelly 1PM Gen3 och Plus 2PM
Skriptet hämtar dagens elpriser för ditt elområde från Elpriset just nu, som publicerar Nord Pool day-ahead-priser öppet och utan API-nyckel. Det väljer det billigaste sammanhängande blocket på dygnet, slår på reläet under blocket och kör ett längre block på söndagar för legionellaskyddet. Om prishämtningen misslyckas körs ett fast reservfönster mellan 02:00 och 05:00, och skriptet försöker hämta priserna igen var 30:e minut.
Skriptet är medvetet skrivet utan å, ä och ö. Shellys skriptmotor (mJS) saknar Unicode-stöd och stöder bara en delmängd av JavaScript: endast let för variabler, inga closures och namngivna callback-funktioner.
// Varmvattenstyrning mot kvartspris - Shelly Gen3 (mJS)
// Hamtar dagens spotpris, valjer billigaste sammanhangande block och styr relaet.
// Fallback: fast tidsfonster om prishamtningen misslyckas.
let CONFIG = {
area: "SE3", // SE1, SE2, SE3 eller SE4
switchId: 0, // relakanal (Plus 2PM: 0 eller 1)
heatMinutes: 180, // uppvarmningstid per dygn i minuter
legionellaMinutes: 300, // forlangt block pa sondagar (kraver termostat pa 60 C eller mer)
windowFrom: 0, // tidigaste start, minuter efter midnatt (0 = 00:00)
windowTo: 1440, // senaste slut, minuter efter midnatt (1440 = 24:00)
fallbackFrom: 120, // reservfonster start (02:00)
fallbackTo: 300, // reservfonster slut (05:00)
retryMinutes: 30 // ny hamtning var 30:e minut tills det lyckas
};
let state = {
day: -1, // dagnummer for aktuell plan
planFrom: -1, // start i minuter, -1 = ingen plan (anvand reservfonster)
planTo: -1,
lastAttempt: -100000, // minuter (epok) for senaste hamtningsforsok
fetching: false,
desired: -1 // senast skickade tillstand: 1 = pa, 0 = av, -1 = okant
};
// ---------- Datum och tid (Sverige), beraknas ur unixtime ----------
function daysFromCivil(y, m, d) {
if (m <= 2) { y = y - 1; }
let era = Math.floor(y / 400);
let yoe = y - era * 400;
let mp = m + 9;
if (m > 2) { mp = m - 3; }
let doy = Math.floor((153 * mp + 2) / 5) + d - 1;
let doe = yoe * 365 + Math.floor(yoe / 4) - Math.floor(yoe / 100) + doy;
return era * 146097 + doe - 719468;
}
function civilFromDays(days) {
let z = days + 719468;
let era = Math.floor(z / 146097);
let doe = z - era * 146097;
let yoe = Math.floor((doe - Math.floor(doe / 1460) + Math.floor(doe / 36524) - Math.floor(doe / 146096)) / 365);
let y = yoe + era * 400;
let doy = doe - (365 * yoe + Math.floor(yoe / 4) - Math.floor(yoe / 100));
let mp = Math.floor((5 * doy + 2) / 153);
let d = doy - Math.floor((153 * mp + 2) / 5) + 1;
let m = mp - 9;
if (mp < 10) { m = mp + 3; }
if (m <= 2) { y = y + 1; }
return { y: y, m: m, d: d };
}
function weekday(days) {
// 0 = sondag
let v = days + 4;
return v - 7 * Math.floor(v / 7);
}
function lastSunday(y, m) {
let d31 = daysFromCivil(y, m, 31);
return d31 - weekday(d31);
}
function swedenOffset(unix) {
let y = civilFromDays(Math.floor(unix / 86400)).y;
let s = lastSunday(y, 3) * 86400 + 3600;
let e = lastSunday(y, 10) * 86400 + 3600;
if (unix >= s && unix < e) { return 7200; }
return 3600;
}
function pad2(n) {
if (n < 10) { return "0" + n; }
return "" + n;
}
function localNow() {
let sys = Shelly.getComponentStatus("sys");
let unix = sys.unixtime;
let local = unix + swedenOffset(unix);
let days = Math.floor(local / 86400);
let secs = local - days * 86400;
return { days: days, minute: Math.floor(secs / 60), civil: civilFromDays(days), dow: weekday(days) };
}
// ---------- Prishamtning ----------
function num(s) {
// JSON.parse pa ett litet objekt ar det sakraste sattet att fa ett tal i mJS
return JSON.parse('{"v":' + s + '}').v;
}
function digits2(str, pos) {
// at() ger teckenkod i mJS; 48 = tecknet 0
return (str.at(pos) - 48) * 10 + (str.at(pos + 1) - 48);
}
function findEnd(body, from) {
let c1 = body.indexOf(",", from);
let c2 = body.indexOf("}", from);
if (c1 === -1) { return c2; }
if (c2 !== -1 && c2 < c1) { return c2; }
return c1;
}
// Skannar svaret utan att bygga hela JSON-trad (sparar minne)
function parsePrices(body) {
let prices = [];
let starts = [];
let pos = 0;
while (true) {
let k = body.indexOf('"SEK_per_kWh":', pos);
if (k === -1) { break; }
let vs = k + 14;
let ve = findEnd(body, vs);
let t = body.indexOf('"time_start":', ve);
if (ve === -1 || t === -1) { break; }
let ts = body.indexOf('"', t + 13) + 1;
let hh = digits2(body, ts + 11);
let mm = digits2(body, ts + 14);
prices.push(num(body.slice(vs, ve)));
starts.push(hh * 60 + mm);
pos = ts + 25;
}
return { prices: prices, starts: starts };
}
// Billigaste sammanhangande block med N platser
function bestBlock(p, minutes) {
let n = p.prices.length;
if (n < 20) { return null; }
let slot = 60;
if (n > 30) { slot = 15; }
let need = Math.round(minutes / slot);
if (need < 1) { need = 1; }
if (need > n) { need = n; }
let best = -1;
let bestSum = 0;
for (let i = 0; i + need <= n; i++) {
let from = p.starts[i];
let to = from + need * slot;
if (from < CONFIG.windowFrom || to > CONFIG.windowTo) { continue; }
let sum = 0;
for (let j = 0; j < need; j++) { sum = sum + p.prices[i + j]; }
if (best === -1 || sum < bestSum) { best = i; bestSum = sum; }
}
if (best === -1) { return null; }
return { from: p.starts[best], to: p.starts[best] + need * slot, avg: bestSum / need };
}
function onPrices(res, err, msg) {
state.fetching = false;
if (err !== 0 || !res || res.code !== 200 || !res.body) {
print("Prishamtning misslyckades:", err, msg, "- kor reservfonster");
return;
}
let p = parsePrices(res.body);
let now = localNow();
let minutes = CONFIG.heatMinutes;
if (now.dow === 0) { minutes = CONFIG.legionellaMinutes; }
let b = bestBlock(p, minutes);
if (b === null) {
print("Kunde inte valja block - kor reservfonster");
return;
}
state.planFrom = b.from;
state.planTo = b.to;
state.day = now.days;
print("Plan " + pad2(Math.floor(b.from / 60)) + ":" + pad2(b.from - Math.floor(b.from / 60) * 60) +
" - " + pad2(Math.floor(b.to / 60)) + ":" + pad2(b.to - Math.floor(b.to / 60) * 60) +
", snittpris " + Math.round(b.avg * 100) + " ore/kWh (exkl. moms)");
}
function fetchPrices(now) {
if (state.fetching) { return; }
state.fetching = true;
state.lastAttempt = now.days * 1440 + now.minute;
let url = "https://www.elprisetjustnu.se/api/v1/prices/" + now.civil.y + "/" +
pad2(now.civil.m) + "-" + pad2(now.civil.d) + "_" + CONFIG.area + ".json";
Shelly.call("HTTP.GET", { url: url, timeout: 15, ssl_ca: "*" }, onPrices);
}
// ---------- Styrning ----------
function setRelay(on) {
let v = 0;
if (on) { v = 1; }
if (state.desired === v) { return; } // andra bara vid overgang - manuell override ligger kvar
state.desired = v;
Shelly.call("Switch.Set", { id: CONFIG.switchId, on: on });
if (on) { print("Rele PA"); } else { print("Rele AV"); }
}
function tick() {
let now = localNow();
if (state.day !== now.days) {
state.planFrom = -1;
state.planTo = -1;
}
let abs = now.days * 1440 + now.minute;
if (state.planFrom === -1 && abs - state.lastAttempt >= CONFIG.retryMinutes) {
fetchPrices(now);
}
let from = CONFIG.fallbackFrom;
let to = CONFIG.fallbackTo;
if (state.planFrom !== -1) {
from = state.planFrom;
to = state.planTo;
}
setRelay(now.minute >= from && now.minute < to);
}
Timer.set(60000, true, tick);
tick();
Så här anpassar och testar du skriptet:
- Elområde: ändra
areatill SE1, SE2, SE3 eller SE4. - Uppvärmningstid: beräkna
heatMinutessom dygnsförbrukning ÷ elementeffekt × 60 × 1,3 för marginal. Med 2 500 kWh/år (6,85 kWh/dygn) och ett 3 kW-element blir det cirka 180 minuter, och med ett 2 kW-element cirka 270 minuter. - Legionella:
legionellaMinutesgäller söndagar. Beredarens termostat måste vara inställd på 60 °C eller mer, annars hjälper inte det längre blocket. - Manuell styrning: skriptet ändrar bara utgången när planen växlar tillstånd, så en manuell påslagning i appen ligger kvar tills nästa växling.
- Kanal: på Plus 2PM anger du
switchId0 eller 1 beroende på vilken kanal som styr kontaktorn. - Testa på arbetsbänk: ladda skriptet utan last kopplad och kontrollera i konsolen att raden ”Plan HH:MM – HH:MM” visas. Ändra sedan
areatill ett felaktigt värde för att se att reservfönstret aktiveras. - Certifikatkontroll: skriptet använder
ssl_ca: "*", vilket hoppar över kontroll av servercertifikatet. Priserna är inte känsliga, men om du vill ha strikt kontroll kan du ange ett CA-paket enligt Shellys HTTP-dokumentation.
Enhetens Wi-Fi och internetanslutning måste vara stabil. Dagens priser är fastställda i förväg, så skriptet hämtar dem en gång per dygn och försöker bara igen (var 30:e minut) om hämtningen misslyckas.
Hur mycket skriptet kan spara avgörs av ditt avtal. Ett lågt påslag och en låg månadsavgift gör att mer av besparingen hamnar hos dig.
Kolla Kärnfulls aktuella pris →
❓ Vanliga frågor
❓ Kan jag koppla varmvattenberedaren direkt på Shelly 1PM Gen3?
Tekniskt sett ja för enfaselement upp till 3 680 W, eftersom reläet klarar 16 A resistiv last. Ett 2 kW-element drar 8,7 A och ett 3 kW-element 13,0 A. Vi rekommenderar ändå kontaktor så snart elementet är 2 kW eller större, eftersom belastningen pågår i timmar och värmeutvecklingen i plintar och relä är den största brandrisken. Trefasberedare går aldrig att koppla direkt på Shelly.
❓ Varför räcker inte Shelly Plus 2PM för en 3 kW-beredare?
Plus 2PM klarar 10 A per kanal, vilket motsvarar 2 300 W vid 230 V. Ett 3 kW-element drar 13,0 A och överskrider alltså kanalgränsen med 30%. Reläet kan däremot styra en kontaktor utan problem. Oavsett vilket relä du väljer förutsätter en besparing ett kvartsprisavtal.
❓ Vilken kontaktor ska jag välja?
Välj en modulkontaktor för AC-1 (resistiv last) med märkström på minst 25 A, en styrspole för 230 V AC och rätt antal poler: två för enfas och tre eller fyra för trefas. Montera en RC-snubber över spolen. Det är installatörens uppgift att slutligt fastställa dimensioneringen mot beredarens märkskylt och gruppens säkring.
❓ Får jag installera Shelly-reläet själv?
Nej, inte om det innebär att du ansluter beredaren fast eller ändrar den fasta elanläggningen. Enligt Elsäkerhetsverket är det elinstallationsarbete som endast får utföras av auktoriserad elinstallatör eller personer som omfattas av ett elinstallationsföretags egenkontrollprogram. Passa på att gå igenom ditt elavtal samtidigt som installatören är på plats.
❓ Sparar jag pengar med rörligt månadspris om jag tidsstyr beredaren?
Nej. Med månadspris betalar du månadens genomsnittliga pris oavsett när du förbrukar elen, och tidsstyrningen ger då ingen besparing. Energimarknadsbyrån bekräftar att det är en missuppfattning att det lönar sig att använda el på natten med rörligt månadspris. Det gäller bara timpris- och kvartsprisavtal.
❓ Vilket elområde ska jag ange i skriptet?
Det beror på var du bor. SE1 täcker bland annat Luleå, Kiruna, Umeå och Östersund, SE2 Sundsvall, Härnösand, Falun och Borlänge, SE3 Stockholm, Göteborg, Örebro, Uppsala och Västerås, och SE4 Malmö, Helsingborg, Kristianstad och Trelleborg. Skillnaden i pris är stor: årsmedelpriset 2025 var 18,5 öre/kWh i SE1 och 66,5 öre/kWh i SE4, så besparingspotentialen är större längre söderut.
❓ Blir varmvattnet kallt om Wi-Fi eller prisdata ligger nere?
Nej, om du har satt utgångens startläge till På och använder ett skript med reservfönster. Skriptet ovan kör ett fast fönster mellan 02:00 och 05:00 när prishämtningen misslyckas och försöker hämta priserna igen var 30:e minut. Beredarens egen termostat begränsar dessutom temperaturen.
❓ Hur hanterar jag legionellarisken när jag flyttar uppvärmningen?
Håll termostaten på minst 60 °C, vilket Boverket rekommenderar för varmvattenberedare, och låt skriptets längre söndagsblock värma hela volymen. Bakterierna förökar sig mellan cirka 20 och 45 °C, så temperaturen får inte hamna där under långa perioder. Det längre blocket ökar förbrukningen några timmar i veckan, vilket gör ett lågt påslag extra värdefullt.
Kolla Kärnfulls aktuella pris →
❓ Går det att styra beredaren utan skript?
Ja, med ett schema i Shelly-appen, men schemat följer inte priset. Sedan kvartshandeln infördes kan elen vara billigast mitt på dagen och inte nödvändigtvis på natten, så ett fast nattfönster fångar bara en del av besparingen. Ett skript som väljer det billigaste blocket varje dag är mer effektivt.
❓ Hur byter jag till kvartspris och hur ofta ändras priset?
Du tecknar det nya avtalet hos elbolaget, som normalt säger upp det gamla åt dig. Räkna med minst 14 dagar för bytet på grund av ångerrätten. Priserna för nästa dygns kvartar publiceras klockan 13:00 dagen innan, och priset ändras därefter fyra gånger per timme.
❓ Påverkar tidsstyrningen min effektavgift?
Det kan den göra. Vissa elnätsföretag har infört en avgift baserad på hur mycket effekt du använder samtidigt. Ett 3 kW-element som slås på samtidigt som spis, tvättmaskin och laddbox kan höja din effekttopp. Kontrollera din nätägares avgiftsmodell och lägg blocket utanför de tider då du normalt har hög förbrukning, för att undvika effekttoppar.
🏆 Sammanfattning
De viktigaste lärdomarna:
- Shelly 1PM Gen3 klarar 16 A (3 680 W) och är det enklaste valet för en beredare. Shelly Plus 2PM klarar 10 A per kanal (2 300 W) och passar två laster via kontaktorer.
- Låt Shelly styra en kontaktor så snart elementet är på 2 kW eller mer, och alltid för trefasberedare.
- Fast elinstallation är elinstallationsarbete och ska utföras av auktoriserad elinstallatör eller ett registrerat elinstallationsföretag.
- Håll beredaren på minst 60 °C och låt skriptet värma hela volymen en gång i veckan.
- Tidsstyrning lönar sig bara med timpris eller kvartspris. Med 25 öre/kWh i snittbesparing på 2 500 kWh/år blir besparingen 781 kr per år inklusive moms.
Elpriser och avtalsvillkor ändras löpande. Verifiera alltid aktuell information direkt med elleverantören innan tecknande.
Optimera varmvattnet mot dagens timpriser – byt till timprisavtal här →