← Tillbaka till dashboarden

🧰 Förutsättningar

Krav för att komma igång
  1. Growatt-konto — inverter registrerad på server.growatt.com. Notiera ditt användarnamn och lösenord.
  2. Supabase-projekt (gratis tier räcker) — skapa på supabase.com. Du behöver Project URL och anon key.
  3. Vercel-konto (Hobby tier räcker) — deployas via vercel.com. Python Serverless Functions används.
  4. Supabase-tabeller skapade — kör SQL-migrationerna i ordningen i databasen (se README.md).
⚠️ Hobby-planen på Vercel tillåter max 12 serverless functions. Projektet använder exakt 12 — lägg inte till fler .py-filer under api/ utan att ta bort en befintlig.

🔐 Miljövariabler (Vercel)

Sätt dessa under Vercel → Project → Settings → Environment Variables. De är aldrig synliga i frontend-koden.

VariabelVärdeBeskrivning
GROWATT_USER "ditt@email.com" Ditt Growatt-kontos inloggningsemail krävs
GROWATT_PASS "ditt-lösenord" Growatt-lösenord (MD5-hashat av appen automatiskt) krävs
SUPABASE_URL "https://xxx.supabase.co" Din Supabase-projektets URL krävs
SUPABASE_ANON_KEY "eyJ..." Supabase anon/public key — används av serverless functions krävs
ℹ️ Supabase anon key är även hårdkodad i index.html (rad ~1576) för direkta frontend-läsningar. Anon key är publik per design — den kan läsa data men skriver inget utan RLS-policy. Byt ut SUPABASE_URL och SUPABASE_KEY-konstanterna i index.html till dina egna.

🐍 Backend — konstanter att byta (Python)

Dessa värden finns direkt i källkoden och måste ändras med en texteditor.

Plats & solpaneler — 3 filer
Samma konstanter finns i api/solar_model.py, api/growatt_tou.py och api/weather.py — ändra i alla tre.
KonstantUrsprungsvärdeVad du ändrar till
LAT 59.28 Din latitud (WGS84). Hitta via maps.google.com → högerklick → "Vad finns här?"
LON 18.00 Din longitud (WGS84).
PANEL_TILT 45 Panelernas lutning i grader (0° = horisontellt, 90° = vertikalt).
PANEL_AZ −68 Azimut från söder i grader. 0° = rakt söderut, −90° = öster, +90° = väster. Negativt = öst om syd.
Batteri & tariff — api/growatt_tou.py (rad ~684–693)
KonstantUrsprungsvärdeVad du ändrar till
BATT_KWH 20.0 Batteriets användbara kapacitet i kWh. Originalinstallation: 4 × 5 kWh APX.
AREA "SE3" Elprisområde. Sverige: SE1–SE4. SE1=Luleå, SE2=Sundsvall, SE3=Stockholm, SE4=Malmö.
NATAVG_IN_ORE 26.0 Nätavgift inmatning öre/kWh — hämta från din nätoperatörs prislista.
ENERGISKATT_ORE 54.25 Energiskatt öre/kWh — fastställs av riksdagen varje år.
FORTUM_ORE 4.9 Elhandelns rörliga påslag öre/kWh — beror på din elleverantör.
Growatt fallback-värden — _growatt.py (rad ~317–319)
✅ Dessa behövs normalt inte — plant_id och mix_serial hämtas automatiskt vid inloggning. De används bara om Growatts API inte returnerar dem. Du kan lämna dem tomma eller sätta dina egna som extra säkerhet.
KonstantUrsprungsvärdeHitta ditt värde
plant_id fallback "10119069" Hittas i URL:en på server.growatt.com när du är inloggad och tittar på din anläggning.
mix_serial fallback "KJN6EXV00L" Inverterns serienummer — finns på en etikett på inverterns sida, och i Growatt-appen.

🖥️ Frontend — konfigurationspanelen (UI)

Dessa inställningar finns i dashboardens ⚙️ Inställningar-panel och sparas i localStorage. Du kan ändra dem direkt i webbläsaren utan att ändra kod. Standardvärdena i källkoden (index.html) bör ändå uppdateras för att vara korrekta vid första laddning på en ny enhet.

FältUrsprungsvärdeBeskrivning
Prisområde SE3 SE1–SE4 beroende på din ort. UI
Solkapacitet (kWp) 11.0 Installerad toppeffekt i kilowatt-peak. UI
Batterikapacitet (kWh) 20.0 Användbar batterikapacitet kWh. Måste matcha BATT_KWH i backend. UI
Fast avgift (Ellevio) 390 kr/mån Nätabonnemangets fasta månadsavgift. Ändrades till 590 kr 2026-06-01 i ursprungsinstallationen. UI
Nätavgift import (öre/kWh) 26.0 Rörlig nätavgift per förbrukad kWh. Hämta från din nätoperatör. UI
Nätnytta hög/låg (öre/kWh) 5.50 / 4.12 Nätoperatörens exportkompensation — beror på din operatör och avtal. UI
Energiskatt (öre/kWh) 54.875 Statlig energiskatt — ändras 1 januari varje år. UI
Elhandel påslag (öre/kWh) 6.96 Elleverantörens rörliga påslag. Beror på ditt avtal. UI
Elhandel fast (kr/mån) 55.20 Elleverantörens fasta månadsavgift. UI
Panellutning (°) 45 Används i solmodellen för GTI-beräkning. Måste matcha backend PANEL_TILT. UI
Panelazimut (°) −68 0=söder, −90=öster, +90=väster. Negativt = öst om syd. Måste matcha PANEL_AZ. UI
Batteriverkningsgrad (%) 95 Round-trip-effektivitet. LiFePO4 ≈ 95 %. UI
Start-SoC (%) 50 Startantagande i SoC-simulering för dagar utan historik. UI

🏠 Hushållsanpassningar (kod)

Dessa är inbyggda i index.html och speglar specifika vanor och rutiner i ursprungshushållet. De kräver en kodredigering för att ändras, men är tydligt markerade med kommentarer.

Städdag-schema — isStaddag() (rad ~2165)

Detekterar varannan-torsdag som städdag baserat på ISO-veckonummer. Ankarveckan är 2025-W24 (12 juni 2025) = jämna veckor. Ändra ankaret om din städdag infaller på udda veckor, annan veckodag, eller annan frekvens.

// Ändra dessa rader i isStaddag():
if (dt.getDay() !== 4) return false;  // 4 = torsdag (0=sön … 6=lör)
return isoWeek % 2 === 0;  // 0=jämna, 1=udda veckor
Tariff-tidslinje — TARIFF_SCHEDULE (rad ~1484)

Anger när fast avgift och nätavgift ändrades. Används för att auto-fylla rätt värden i inställningspanelen beroende på vilket datum du tittar på. Lägg till en ny rad när din nätoperatör ändrar taxan.

const TARIFF_SCHEDULE = [
  { from: '2026-06-01', fastAvgift: 590, natavgIn: 26.0 },
  { from: '2000-01-01', fastAvgift: 390, natavgIn: 26.0 },  // baseline
];
Hushållsapparater & tidsfönster — APPLIANCES (rad ~2209)

Varje apparat har förbrukningsprofil och tillåtna tidsfönster per dagtyp (vardag / helg / helgdag). Anpassa till dina vanor — t.ex. när du diskar, tvättar, lagar mat.

ApparatkWh/cykelTimmar/cykelVardag: fönster
Diskmaskin 1.2 3.5 07–11 (frukost) eller 19–23 (middag)
Tvättmaskin 0.8 3.0 07–21
Torktumlare 2.5 1.0 07–22
Ugn 1.5 1.0 11–21 (lunch eller middag)
Dammsugare 0.3 0.5 08–20

Förbrukningsvärdena är avrundade typvärden — se din apparats etiketter eller Energimyndighetens databas för exakta mätvärden.

⏰ Cron-jobb (vercel.json)

Samtliga cron-jobb körs i UTC. Justera om du befinner dig utanför CET/CEST-zonen.

Schema (UTC)EndpointSyfte
0 1 * * */api/collect?action=autofill&days=3Nattlig bakåtfyllning av chartdata
0 3 * * */api/weatherDaglig vädercache-uppdatering
0 4 * * */api/solar_model?action=buildBygg om solmodellen (90 dagars data)
0 6 * * */api/save_prices?area=SE3Hämta dagens spotpriser
0 8 * * */api/grid?action=fetchHämta nationell elproduktionsmix
0 13 * * */api/save_prices?area=SE3&date=tomorrowHämta morgondagens spotpriser (efter Nordpool)
0 20 * * */api/growatt_tou?action=notify_resetÅterställ TOU-notifieringstillstånd
10 22 * * */api/growatt_tou?action=build_suggestBygg TOU-förslag för morgondagen
⚠️ Ändra area=SE3 till ditt prisområde i de två save_prices-cronerna och i konstanten AREA i api/growatt_tou.py.
ℹ️ Vercel Hobby-plan: Endast 2 cron-jobb körs på gratisplanen — övriga ignoreras tyst. Kritiska jobb (build_suggest, save_prices, autofill) bör triggas via cron-job.org istället. Det externa insamlingsjobbet (/api/collect) körs redan där var 5:e minut.
ℹ️ Diagrammet uppdateras inte automatiskt. Data samlas in var 5:e minut av cron-job.org och skrivs till Supabase, men diagrammet laddar data en gång vid sidöppning. Ladda om sidan manuellt för att se de senaste 5-minutersslottarna. Livedataraden (sol/batteri/nät) uppdateras däremot var 30:e sekund direkt från Growatt och reflekterar aktuellt värde utan omladdning.

✅ Checklista för ny installation

  1. Forka repot till ditt eget GitHub-konto.
  2. Skapa ett nytt Supabase-projekt och kör SQL-migrationerna från README.md.
  3. Sätt de 4 miljövariablerna i Vercel (GROWATT_USER, GROWATT_PASS, SUPABASE_URL, SUPABASE_ANON_KEY).
  4. Byt ut SUPABASE_URL och SUPABASE_KEY i index.html (~rad 1576) till dina egna.
  5. Ändra LAT, LON, PANEL_TILT, PANEL_AZ i tre Python-filer: solar_model.py, growatt_tou.py, weather.py.
  6. Ändra BATT_KWH och tariffkonstanterna i growatt_tou.py.
  7. Ändra area=SE3 till ditt elprisområde i vercel.json.
  8. Uppdatera standard-värdena i konfigurationspanelens HTML-inputs i index.html (~rad 1093–1110).
  9. Anpassa TARIFF_SCHEDULE (~rad 1484) och APPLIANCES (~rad 2209) till dina egna tariffer och vanor.
  10. Deploya till Vercel — cron-jobben aktiveras automatiskt.
  11. Testa GET /api/status — kontrollera att logged_in: true och att env_ok: true returneras.
  12. Trigga GET /api/collect manuellt för att fylla in de första datapunkterna.
Growatt Electricity Dashboard — öppen källkod GitHub →