Del 1 av 3 i vår serie om att bygga världens bästa planerare för hemmets energi.
Energyplan bestämmer när ett batteri laddar, när en bil laddar och när ett hem säljer el. Vi har byggt den på Sourceful och vi äger den. Det är proprietär programvara. Den följer med FTW, vårt öppna energistyrsystem, och vi har byggt den så att den kan följa med andra produkter också.
Vårt mål är världens bästa planerare för hemmets energi, och vi tror att vi är på väg dit. En AI kan på en eftermiddag skriva något som ser ut som en planerare. En planerare som riktiga hem kan lita på är ett annat jobb. Den här vilar på år av forskning, månader av mätta releaser, cirka 50 miljarder tokens AI-arbete, riktig data, riktig hårdvara och riktiga användare.
Det började långt före Energyplan
Två av oss kom till det här från forskningen. Fredrik Ahlgren, vd och medgrundare, är doktor i energieffektivitet och ledde IoT-forskningen vid Linnéuniversitetet. 2017 till 2019 tränade han modeller som förutsade bränsleförbrukningen på ett kryssningsfartyg, med automatiserad maskininlärning, och det arbetet blev två artiklar 2018. Tobias Olsson, CTO och medgrundare, är doktor i datavetenskap och forskade också vid Linnéuniversitetet, där han använde maskininlärning för att koppla källkod till programvaruarkitektur. Energi är samma sorts problem: rörig mätdata och en förutsägelse som måste hålla mot det som faktiskt hände.
Vägen därifrån:
| När | Vad |
|---|---|
| 2017–2019 | Automatiserad maskininlärning på ett kryssningsfartygs bränsleförbrukning. Två artiklar 2018. |
| Juni 2025 | En första optimerare för effekttoppar |
| Augusti 2025 – januari 2026 | EMS Optimizer Light: batterioptimering inom en anläggnings gräns |
| Oktober 2025 | Sourcefuls EMS börjar: en molnplattform som planerar var 15:e minut och styr batterier, sol och laddare |
| November 2025 | EMS:en får sin första optimerare |
| Januari 2026 | Forskningen om prognoser för hushållslast och sol börjar, och likaså toppkapning med V2X-laddare under svenska effekttariffer |
| Februari – mars 2026 | En prognostjänst som bygger 24-timmarsprognoser var 15:e minut, och en första optimeringsmotor i Rust |
| April 2026 | FTW börjar, och får sin första planerare två dagar senare |
| Juli 2026 | FTW:s första matematiska optimerare |
| Augusti 2026 | En fysikbaserad anläggningssimulator börjar. Den har 474 commits hittills. |
| September 2026 | Energyplan blir en egen produkt |
| Oktober 2026 | Ett särskilt forskningsspår för lösaren |
| Oktober – november 2026 | En planerare för kommersiella batterier bakom elmätaren, testad på en riktig anläggnings inspelade data |
I januari 2026 bad Fredrik också Claude Code att på egen hand återskapa hans artikel från 2018, och dokumenterade vad som hände. I dag bedriver vi forskning med agenter, under mycket striktare regler.
Två spår av optimering, ett företag
Energyplan är inte Sourcefuls enda planerare, och den växte inte fram ensam.
I oktober 2025 började Tobias bygga Sourcefuls EMS: en molnplattform där en optimeringsmotor var 15:e minut gör en plan för de kommande 12 till 24 timmarna, och där en regulator var 30:e sekund utför den mot anläggningens verkliga gränser. 618 av dess 898 commits är hans. I mars förklarade han hur den optimeraren tänker i ett inlägg här på bloggen.
En plan betyder något först när den når ett batteri. Tobias har också skrivit mycket av det som bär den dit: kärnplattformen för telemetri, styrning och autentisering, och firmware på våra gateways. I augusti började han på en fysikbaserad simulator av kommersiella anläggningar. I oktober och november byggde han en planerare för kommersiella batterier bakom elmätaren. Den förenar toppkapning, handel på spotpriset och säkringsskydd i en plan, och vi testar den på en riktig anläggnings inspelade data med en anpassad digital tvilling av batteriet.
FTW och Energyplan tog en annan väg: lokalt, på hemmets egen box, byggt för en enda familj av problem. De två spåren delar företag och samma svåra frågor om tariffer, säkringar och prognoser, och idéer flyttar mellan dem.
En bra planerare för ett enkelt hem
FTW:s första planerare använder dynamisk programmering: dela in batteriets laddnivå i steg och räkna ut för varje timme under det kommande dygnet vilket steg den ska gå till för att den totala kostnaden ska bli lägst. Den är snabb och pålitlig. För ett batteri och ett elpris är den nära perfekt.
Sedan blev hemmen mer intressanta.
- Bilar. En bil har en avresetid och ett mål: "80 % till 07:00". En laddare har en lägsta ström: den är antingen av eller på med minst 6 A, och inget däremellan.
- Fler än ett batteri. Två batterier, eller ett batteri och en bil som kan ge tillbaka el, påverkar varandra.
- Effekttariffer. Många nätavgifter beror nu på din högsta timme under dygnet eller månaden. En enda dålig timme kostar dig hela månaden, så ett beslut klockan 18 hänger ihop med varje annan timme.
- Gränser. Huvudsäkringar, importtak per timme, exportgränser och gränser som skyddar batteriet.
Var och en av dem ökar antalet lägen som den dynamiska programmeringen måste hålla reda på. Lägg ihop dem och det går inte längre i praktiken: planeraren måste antingen förenkla hemmet eller få slut på tid.
In med matematiken
Verktyget för den här sortens problem är blandad heltalsoptimering: beskriv varje enhet, gräns, pris och mål som ekvationer, markera vilka beslut som är ja eller nej, och låt en lösare hitta den billigaste planen som uppfyller allt. En bra lösare kan också bevisa att det inte finns någon bättre plan. Del 2 förklarar hur.
Den 12 juli 2026 fick FTW sin första matematiska optimerare, på beta- och edge-kanalerna. Det var en arbetsprocess i Python med egna releaser och ett protokoll som förhandlades med FTW:s kärna. Den visade hur mycket bättre planerna kunde bli. Den visade också de svåra delarna. Ett system i hemmet kör inte på en server. Det kör på något som liknar en Raspberry Pi, bredvid allt annat systemet gör. Planen måste vara klar på en sekund eller två, med några minuters mellanrum, hela dagen och varje dag. Och den får aldrig vara fel.
I slutet av augusti blev FTW:s egen planerare standard, och Python-optimeraren körde bredvid som en mätande skugga. En vecka senare tog vi bort den.
Energyplan
Den 7 september 2026 blev Energyplan en egen planerare: en särskild optimerare som Sourceful har byggt, i Rust, för ett enda jobb, att planera ett hems energi. Den har varit proprietär sedan första commit.
Vi fattade tre beslut om utformningen första dagen, och de gäller fortfarande:
- En separat arbetsprocess med ett kontrakt. FTW:s kärna skickar en förfrågan (priser, prognoser, enheter, mål) och Energyplan svarar med en plan. Protokollet är versionshanterat, och nya förmågor förhandlas. En äldre FTW och en nyare planerare, eller tvärtom, fungerar ändå ihop.
- Lita, men kontrollera. FTW:s kärna validerar varje plan från Energyplan innan den når riktig hårdvara. Den spelar upp planen mot hemmets fysik. Stämmer något inte underkänner kärnan planen och tar över med sin egen planerare. Den dynamiska planeraren försvann aldrig: den kör som skugga och reserv.
- Släpp i små, mätta steg. Först en betakanal med riktiga hem, sedan stabil.
Alla versioner hittills
| Version | När | Vad den gav |
|---|---|---|
| Python-optimeraren 0.1 | 12 juli | FTW:s första matematiska optimerare, på beta- och edge-kanalerna |
| Python-optimeraren 1.3–1.4 | 22 juli – 4 augusti | Egna releaser, ett protokoll som förhandlas med kärnan, säkrare hantering av batteriets läge |
| Energyplan 0.1–0.3 | 7–8 september | Flytten till Rust: en särskild arbetsprocess, binärpaketering och kontraktet med kärnan |
| 0.4.0–0.4.2 | 8–12 september | De första versionerna som låstes i FTW, sedan paketerade under licensen Home Use |
| 0.4.3–0.4.8 | 13–22 september | Bilar: energimål med pulskvot, två bilar som delar en importgräns, laddpulser med rätt pris |
| 0.4.9–0.4.10 | 28–29 september | Snabbare planering för flera batterier och för effekttariffer |
| 0.5.0 | 3 oktober | Bättre bilplaner inom en Raspberry Pis budget, och en giltig plan som överlever att lösaren fallerar |
| 0.5.1 | 7 oktober | Billigare planer med bil: batteriet planeras runt laddningen |
| 0.5.2 | 8 oktober | Ett soligt tvådygnsfall för ett hem på en Pis budget: 77 kr i stället för 100 kr, där bästa möjliga plan kostar 77 kr |
| 0.6.0 | 25 oktober | Importgränser per timme |
| 0.7.0 "ROBUST" | 6 november | Effekttimmar som stämmer, planer som aldrig går bakåt, under en tredjedel av minnet, i tid på en Pi |
| 0.8.0 "FAST" | pågår | Fler planer bevisat optimala, snabbare |
I oktober blev Energyplan också standard i stabila releaser.
De senaste tre veckorna
Energyplan 0.6.0 lade till gränser för import per timme. Om din nätanslutning eller din tariff begränsar hur mycket du får ta ut under en timme håller planeraren varje klocktimme under gränsen. Batteriet får täcka huset så att bilen ändå blir laddad, och planeraren säger rakt ut när ett mål för bilen inte går att nå.
Energyplan 0.7.0 "ROBUST" handlade om tillit, inte om nya funktioner:
- Effekttariffer som stämmer. Planeraren räknar nu med timmen som redan pågår, så varje dygns topp räknas en gång.
- Aldrig ett steg bakåt. En ny plan är aldrig sämre för dina bilmål eller din nota än den plan planeraren redan har.
- Tydliga svar när något är omöjligt. Om en anläggnings gränser inte alla går att hålla får du orsaken och tidssteget i stället för en misslyckad plan.
- Under en tredjedel av minnet. Toppminnet på vår kärntestsats föll från 223 MiB till 64 MiB.
- I tid på en Raspberry Pi. På en Pi 4, den hårdvara många FTW-hem kör på, föll antalet överskridna tidsbudgetar från 3 till 0 på vår kärntestsats. På 500 riktiga omplaneringar från ett hem i drift föll det från 2 till 0, och planerna blev inte dyrare.
- Noll underkända planer. FTW validerar varje plan innan den når din hårdvara. På våra testsatser underkände FTW ingen av planerna från 0.7.0, mot fem från 0.6.0.
0.7.0 ligger nu i FTW 0.160.0-beta.1 på betakanalen.
Vad det krävde
Vi bygger Energyplan med ett litet team människor som styr ett stort team AI-agenter. Varje agent följer strikta regler: test först, mätning mot den version du kör i dag, granskning av andra agenter som bara letar fel, och sammanslagning först när siffrorna säger ja.
Här är AI-arbetet vi fortfarande kan räkna. Våra loggar går tillbaka till augusti 2026.
| Arbete | Bearbetade tokens |
|---|---|
| Energyplan 0.7.0 och starten på 0.8.0, 27 oktober till 8 november, huvudsakliga byggmaskinen | cirka 6,4 miljarder |
| Forskningsspåret för lösaren, oktober | minst 8,9 miljarder |
| FTW, Energyplan och allt runt omkring på vår huvudsakliga utvecklingslaptop, sedan augusti | cirka 34,7 miljarder |
| Totalt i loggarna vi har kvar | cirka 50 miljarder |
Det räknar all indata, cachad indata och utdata. Cirka 146 miljoner av de tokens är det modellerna skrev: kod, tester, granskningar och rapporter. Bakom dem ligger cirka 235 000 verktygsåtgärder, som byggen, tester, mätningar och ändringar.
Modellerna:
| Modell | Bearbetade tokens |
|---|---|
| Claude Opus 5.5 | 30,9 miljarder |
| GPT-6.1 Sol | 6,8 miljarder |
| GPT-6 Astra | 3,2 miljarder |
| Claude Opus 5 | 3,1 miljarder |
| GPT-6 Luna | 2,6 miljarder |
| Claude Sonnet 5.5 | 2,3 miljarder |
| Claude Fable 5 och 5.1 | 0,9 miljarder |
| Claude Opus 4.8 | 0,2 miljarder |
Före augusti använde vi också dagens bästa modeller. De loggarna har vi inte kvar, så de finns inte i tabellen, och inte heller arbetet med prognoser och optimerare från före augusti. Tabellen tar inte heller med resten av teamets maskiner, bland annat Tobias arbete med EMS:en och plattformen.
Bara den senaste releasen ser ut så här:
| 27 oktober till 8 november, huvudsakliga byggmaskinen | |
|---|---|
| Agentkörningar | 396, i 8 releasevågor med flera agenter |
| Modellanrop / verktygsåtgärder | cirka 31 900 / 33 400 |
| Skrivna tokens | cirka 29 miljoner |
| Commits | 437 på tre veckor |
| Automatiska tester | 593 i planeraren, 395 i testriggen |
| Mätsteg | över 830, som vart och ett jämför en ändring med den släppta versionen |
| Testdata | 10 testsatser, plus 500 riktiga omplaneringar från ett hem i drift |
En särskild mätmaskin går dygnet runt. Den vet när andra tunga jobb kör, och den gör om varje mätning de kan ha stört. Ett påstående om fart betyder ingenting om mätningen är smutsig.
Varför det här inte går att vibekoda
Tokens kan vem som helst köpa. Det här kunde vi inte köpa:
- År med det verkliga problemet. Forskningen går tillbaka till 2017. Sourcefuls EMS har planerat och styrt energi sedan 2025. Arbetet med prognoser började i januari 2026, och FTW fick sin första planerare i april. Energyplan tog med sig allt vi hade lärt oss.
- Riktig data. Varje release spelar upp riktiga planeringsförfrågningar från ett hem i drift genom den gamla och den nya versionen. En ändring som ser bra ut på påhittad data måste också hålla på dem.
- Riktig hårdvara. Planeraren måste bli klar i tid på en Raspberry Pi 4, bredvid allt annat som boxen gör. Vi testar på en sådan.
- Riktiga användare. Betaanvändare kör det här med sina egna batterier, bilar och säkringar, och de säger till när något går fel. I slutet av oktober hade vi förtecknat 840 kända fel, enhetsbeteenden och hårdvaruprov, och vi gör om dem till scenarier i en simulator av en hel anläggning.
- Ett sätt att skilja bättre från sämre. Tio testsatser, uppmätta brusnivåer och en validerare som spelar upp varje plan mot hemmets fysik.
En planerare som fungerar i en demo en solig dag är den enkla delen. Den svåra delen är en Pi med molnig prognos, effekttariff, en säkring nära gränsen och en bil som kopplas in sent. Vad det kräver lär man sig genom att köra i riktiga hem i månader, och den kunskapen är det vi har byggt.
Vår egen, och byggd för att flyttas
FTW:s kärna, klienter och drivrutiner är öppen kod under AGPLv3, och så ska det förbli. Energyplan är något annat. Den är delen vi behåller. FTW får den som en kompilerad arbetsprocess.
Den separata arbetsprocessen är också det som gör att den kan flyttas. Allt som talar dess versionshanterade kontrakt kan köra den. FTW är den första produkten som levererar den, och behöver inte vara den enda. Privata hushåll får den gratis med FTW. Kommersiellt bruk och paketering kräver skriftlig licens från Sourceful.
En funktion vi struntade i
En idé till 0.8.0 var en smartare regel för när planeraren får sluta söka. Innan vi skrev en rad planerarkod emulerade vi den på 564 riktiga och syntetiska förfrågningar. Den sparade 16,7 öre totalt, från bara två planer, och gjorde planeraren 6 % långsammare.
Vi struntade i den. Varje ändring i Energyplan måste visa en uppmätt vinst.
Härnäst: 0.8.0 "FAST"
0.7.0 handlade om att aldrig ha fel. 0.8.0 handlar om fart: fler planer bevisat optimala inom tidsbudgeten, så att planeraren vet att den hittade den bästa planen och inte bara en bra.
Vi skrev ner målen mot 0.7.0 innan vi såg något resultat, så att ingen kan justera dem i efterhand. För att bli godkänd måste 0.8.0:
- bevisa den optimala planen i minst 22 % fler av våra kärnfall inom tidsbudgeten;
- nå det beviset 20 % snabbare (median);
- göra 15 % mindre lösararbete för samma svar;
- svara på fler förfrågningar inom halva sin tidsbudget;
- inte vara långsammare till sin första giltiga plan.
Efter FAST kommer BEST: planernas kvalitet, ner till sista öret.
Ditt hem fattar tusentals små energibeslut om dagen. Tillsammans avgör de hur mycket du betalar, hur länge batteriet håller och om bilen är klar på morgonen. Vi tycker att de besluten förtjänar samma tekniska noggrannhet som driften av ett kraftverk.
De två nästa inläggen går djupare:
- Varför det är svårt att planera ett hems energi, och hur vi mäter det: problemet, mätningarna och vad state of the art betyder.
- Så släpper vi en planerare du kan lita på: reglerna vi arbetar efter och agenterna som följer dem.
Energyplan är Sourcefuls proprietära planerare. Den följer med FTW, vars kärna, klienter och drivrutiner är öppen kod under AGPLv3. Energyplan har en egen licens: gratis för ditt eget privata hushåll med FTW, och med skriftlig licens från Sourceful för kommersiellt bruk eller för att paketeras med andra produkter. Hör av dig om du vill ha den i din.