📚 API Dokumentation

Välkommen till utvecklardokumentationen för Spotprisoptimering. Här hittar du allt du behöver för att integrera våra tjänster i dina egna applikationer, oavsett om du använder PHP, Python, JavaScript eller Shelly-skript.

Bas-URL: https://www.spotprisoptimering.se/api/ HTTPS krävs
✨ NYTT I SOLAR API 2.0

Prediktiv batteriladdning med arbitrage

Analyserar 24h prisprognos och rekommenderar optimala tider för att ladda och sälja från batteriet – precis som Tibber, men med din egen hårdvara!

Arbitrage: Köp lågt, sälj högt
Batterihälsa: Respekterar min/max SOC
Soloptimering: Maximerar egenanvändning
Prediktiv: 24h framförhållning
🚗 NYTT I CAR API 2.2

Prediktiv laddning för elbil

Analyserar 24h prisprognos och schemalägger laddning till billigaste timmarna. Hanterar akutladdning, tidskritisk laddning och optimerar för din avfärdstid.

24h prognos: Hittar billigaste timmarna
Akutladdning: Vid låg batterinivå
Avfärdstid: Prioriterar din tidtabell
Prediktiv: Maximerar besparing

🔥 Värmepump

GET v2.0.0

Huvud-API för värmepumpsstyrning. Returnerar signal baserad på aktuellt elpris och användarens tröskelvärden.

/api/signal.php
API-nyckel (query parameter eller Bearer header) JSON
Signaler:
HEAT SAVE NORMAL
Parametrar:
Parameter Typ Beskrivning
api_key string Din API-nyckel
area string Elområde (SE1, SE2, SE3, SE4). Default: användarens inställning
Exempelanrop:
curl "https://www.spotprisoptimering.se/api/signal.php?api_key=DIN_API_NYCKEL"
Exempelsvar:
{
    "success": true,
    "timestamp": "2026-03-05T22:05:05+01:00",
    "api_version": "2.0.0",
    "signal": "SAVE",
    "message": "Högt pris - sänk temperaturen temporärt",
    "price": {
        "current": 1.346,
        "area": "SE4",
        "unit": "SEK\/kWh",
        "source": "cache"
    },
    "thresholds": {
        "low": 0.5,
        "high": 1.1
    },
    "level": "HIGH",
    "recommendation": {
        "short": "Spara!",
        "action": "Sänk 2-3°C eller aktivera nattsänkning",
        "duration": "nästa timme"
    }
}

🚗 Elbil - Prediktiv laddning 2.2 NY 2.2

GET v2.2.0

Avancerat API för elbilsladdning med prediktiv logik. Analyserar 24h prisprognos och schemalägger laddning till billigaste timmarna. Hanterar akutladdning, tidskritisk laddning och optimerar för avfärdstid.

/api/car.php
API-nyckel (query parameter eller Bearer header) JSON
Signaler:
CHARGE_NOW CHARGE WAIT
Parametrar:
Parameter Typ Beskrivning
api_key string Din API-nyckel
area string Elområde (SE1-SE4). Default: användarens inställning
hours integer Antal timmar prognos (max 72). Default: 48
action string Välj "signal" för enkel signal
Exempelanrop:
curl "https://www.spotprisoptimering.se/api/car.php?api_key=DIN_API_NYCKEL&hours=24"
Exempelsvar:
{
    "success": true,
    "timestamp": "2026-03-05T22:05:05+01:00",
    "api_version": "2.2.0",
    "vehicle": {
        "name": "Min elbil",
        "brand": null,
        "model": null,
        "battery_capacity": 60,
        "current_charge": 30,
        "target_charge": 80,
        "min_charge": 50,
        "charger_power": 11,
        "departure_time": "07:30:00",
        "smart_charging": true,
        "is_active": false
    },
    "price_forecast": {
        "area": "SE4",
        "hours": 48,
        "current_price": 1.346,
        "min_price_24h": 0.638,
        "max_price_24h": 2.429,
        "avg_price_24h": 1.283,
        "forecast": [],
        "source": "database"
    },
    "charging": {
        "can_achieve_target": true,
        "hours_to_departure": 10,
        "hours_needed": 3,
        "current_kwh": 18,
        "needed_kwh": 30,
        "schedule": [],
        "total_energy": 33,
        "total_cost": 37.48,
        "avg_price": 1.136,
        "final_charge": 85,
        "alerts": [
            {
                "level": "critical",
                "message": "Batteriet är under 50% - AKUTLADDNING!"
            }
        ],
        "recommendations": []
    },
    "predictive": {
        "best_charge_hour": 4,
        "best_charge_price": 0.638,
        "min_price_24h": 0.638,
        "max_price_24h": 2.429,
        "cheapest_windows": []
    },
    "chargers": [],
    "recommendations": [],
    "alerts": [
        {
            "level": "critical",
            "message": "Batteriet är under 50% - AKUTLADDNING!"
        }
    ],
    "signal": "CHARGE"
}
Prediktiv logik: Analyserar 24h prisprognos, identifierar billigaste timmarna, hanterar akutladdning (under miniminivå) och tidskritisk laddning inför avfärd.

🚗 Elbil - Enkel signal

GET v1.0.0

Enkelt textbaserat API för Shelly-reläer och enkla IoT-enheter. Returnerar bara en textsträng baserat på samma prediktiva logik som car.php.

/api/car_signal.php
API-nyckel (query parameter) Text/plain
Signaler:
CHARGE_NOW CHARGE WAIT STOP
Parametrar:
Parameter Typ Beskrivning
api_key string Din API-nyckel
Exempelanrop:
curl "https://www.spotprisoptimering.se/api/car_signal.php?api_key=DIN_API_NYCKEL"
Exempelsvar:
"CHARGE"

💧 Varmvatten

GET v2.0.0

API för varmvattenstyrning. Returnerar enkel text eller JSON beroende på format-parameter.

/api/water.php
API-nyckel (query parameter) Text/plain (default) eller JSON
Signaler:
START STOPP NORMAL
Parametrar:
Parameter Typ Beskrivning
api_key string Din API-nyckel
format string Välj "json" för JSON-svar, annars text
Exempelanrop:
curl "https://www.spotprisoptimering.se/api/water.php?api_key=DIN_API_NYCKEL"
Exempelsvar:
null
Text-svar (format=text):
NORMAL

☀️ Solceller & Batteri - Smart laddning 2.0 NY 2.0

GET v2.0.0

API för solcells- och batteristyrning med prediktiv laddning. Analyserar 24h prognos och planerar optimal laddning/sälj.

/api/solar.php
API-nyckel (query parameter eller Bearer header) JSON
Signaler:
CHARGE DISCHARGE IDLE
Parametrar:
Parameter Typ Beskrivning
api_key string Din API-nyckel
action string Välj "status", "optimize" eller "signal"
format string Välj "json" (default) eller "text" för enkel signal
Exempelanrop:
curl "https://www.spotprisoptimering.se/api/solar.php?api_key=DIN_API_NYCKEL"
Exempelsvar:
{
    "success": true,
    "timestamp": "2026-03-07T14:30:00+01:00",
    "api_version": "2.0.0",
    "user_id": 1,
    "area": "SE3",
    "settings": {
        "has_solar": true,
        "has_battery": true,
        "solar_capacity": 10,
        "solar_orientation": "south",
        "solar_tilt": 35,
        "battery_capacity": 13.5,
        "battery_power": 5,
        "battery_efficiency": 0.95,
        "current_soc": 45,
        "strategy": "trading",
        "is_active": true
    },
    "current": {
        "price": 0.52,
        "hour": 14,
        "price_level": "LOW"
    },
    "forecast": {
        "min_price_24h": 0.45,
        "max_price_24h": 1.85,
        "best_charge_hour": 4,
        "best_charge_price": 0.45,
        "best_discharge_hour": 19,
        "best_discharge_price": 1.85,
        "potential_profit": 1.33,
        "next_24h": []
    },
    "recommendation": {
        "action": "prepare_for_sale",
        "message": "Ladda nu för att sälja kl 19:00 (pris 1.85 kr)",
        "priority": "high",
        "suggested_power": 5
    },
    "solar": {
        "estimated_today": 45.5,
        "self_consumption_rate": "high"
    }
}
Prediktiv logik: Analyserar 24h framåt, tar hänsyn till batterinivå, verkningsgrad och strategi (egenanvändning/trading).

📊 Priser

GET v1.0.0

Öppet API för elpriser. Kräver ingen API-nyckel. Returnerar priser för valt datum och område.

/api/prices.php
Ingen JSON
Parametrar:
Parameter Typ Beskrivning
area string Elområde (SE1, SE2, SE3, SE4). Default: SE3
date string Datum (YYYY-MM-DD). Default: idag
days integer Antal dagar (max 7). Default: 1
Exempelanrop:
curl "https://www.spotprisoptimering.se/api/prices.php?area=SE4&days=2"
Exempelsvar:
{
    "success": true,
    "area": "SE4",
    "currency": "SEK",
    "data": [
        {
            "date": "2026-03-05",
            "prices": [
                {
                    "hour": 0,
                    "price": 1.137,
                    "level": "NORMAL"
                },
                {
                    "hour": 1,
                    "price": 1.135,
                    "level": "NORMAL"
                },
                {
                    "hour": 2,
                    "price": 1.135,
                    "level": "NORMAL"
                },
                {
                    "hour": 3,
                    "price": 1.138,
                    "level": "NORMAL"
                },
                {
                    "hour": 4,
                    "price": 1.198,
                    "level": "NORMAL"
                },
                {
                    "hour": 5,
                    "price": 1.477,
                    "level": "HIGH"
                },
                {
                    "hour": 6,
                    "price": 1.728,
                    "level": "HIGH"
                },
                {
                    "hour": 7,
                    "price": 1.554,
                    "level": "HIGH"
                },
                {
                    "hour": 8,
                    "price": 1.078,
                    "level": "NORMAL"
                },
                {
                    "hour": 9,
                    "price": 0.746,
                    "level": "NORMAL"
                },
                {
                    "hour": 10,
                    "price": 0.638,
                    "level": "LOW"
                },
                {
                    "hour": 11,
                    "price": 0.638,
                    "level": "LOW"
                },
                {
                    "hour": 12,
                    "price": 0.64,
                    "level": "LOW"
                },
                {
                    "hour": 13,
                    "price": 0.663,
                    "level": "NORMAL"
                },
                {
                    "hour": 14,
                    "price": 0.767,
                    "level": "NORMAL"
                },
                {
                    "hour": 15,
                    "price": 1.248,
                    "level": "NORMAL"
                },
                {
                    "hour": 16,
                    "price": 1.572,
                    "level": "HIGH"
                },
                {
                    "hour": 17,
                    "price": 2.429,
                    "level": "HIGH"
                },
                {
                    "hour": 18,
                    "price": 1.685,
                    "level": "HIGH"
                },
                {
                    "hour": 19,
                    "price": 1.527,
                    "level": "HIGH"
                },
                {
                    "hour": 20,
                    "price": 1.35,
                    "level": "HIGH"
                },
                {
                    "hour": 21,
                    "price": 1.196,
                    "level": "NORMAL"
                },
                {
                    "hour": 22,
                    "price": 1.346,
                    "level": "NORMAL"
                },
                {
                    "hour": 23,
                    "price": 1.178,
                    "level": "NORMAL"
                }
            ],
            "statistics": {
                "min": 0.638,
                "max": 2.429,
                "avg": 1.217
            }
        }
    ]
}

🖥️ cURL

Grundläggande anrop
curl "https://www.spotprisoptimering.se/api/signal.php?api_key=DIN_API_NYCKEL"
Med Bearer header
curl -H "Authorization: Bearer DIN_API_NYCKEL" https://www.spotprisoptimering.se/api/signal.php
Hämta priser
curl "https://www.spotprisoptimering.se/api/prices.php?area=SE3"
Smart batteriladdning
curl "https://www.spotprisoptimering.se/api/solar.php?api_key=DIN_API_NYCKEL&action=optimize"
Prediktiv billaddning
curl "https://www.spotprisoptimering.se/api/car.php?api_key=DIN_API_NYCKEL&hours=24"
Enkel bilsignal
curl "https://www.spotprisoptimering.se/api/car_signal.php?api_key=DIN_API_NYCKEL"

🐘 PHP

Grundläggande
<?php
$api_key = "DIN_API_NYCKEL";
$url = "https://www.spotprisoptimering.se/api/signal.php?api_key=" . $api_key;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo "Signal: " . $data["signal"];
Med Bearer header
<?php
$api_key = "DIN_API_NYCKEL";
$url = "https://www.spotprisoptimering.se/api/car.php";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer " . $api_key
]);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo "Laddningsbehov: " . ($data["signal"] ?? "okänt");
Smart batteri (prediktiv)
<?php
$api_key = "DIN_API_NYCKEL";
$url = "https://www.spotprisoptimering.se/api/solar.php?api_key=" . $api_key;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);

if ($data["recommendation"]["action"] === "prepare_for_sale") {
    echo "⚡ Ladda nu inför toppris kl " . $data["forecast"]["best_discharge_hour"] . ":00";
    echo "💰 Potentiell vinst: " . $data["forecast"]["potential_profit"] . " kr/kWh";
}
Prediktiv billaddning
<?php
$api_key = "DIN_API_NYCKEL";
$url = "https://www.spotprisoptimering.se/api/car.php?api_key=" . $api_key;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);

echo "Nuvarande laddning: " . $data["vehicle"]["current_charge"] . "%\n";
echo "Behöver: " . $data["charging"]["needed_kwh"] . " kWh\n";
echo "Kostnad: " . $data["charging"]["total_cost"] . " kr\n";

if (!empty($data["predictive"]["best_charge_hour"])) {
    echo "Bästa laddningstid: " . $data["predictive"]["best_charge_hour"] . ":00 (pris " . $data["predictive"]["best_charge_price"] . " kr)";
}

🐍 Python

Grundläggande
import requests

api_key = "DIN_API_NYCKEL"
url = f"https://www.spotprisoptimering.se/api/signal.php?api_key={api_key}"

response = requests.get(url)
data = response.json()
print(f"Signal: {data["signal"]}")
print(f"Pris: {data["price"]["current"]} kr")
Med Bearer header
import requests

api_key = "DIN_API_NYCKEL"
url = "https://www.spotprisoptimering.se/api/car.php"
headers = {"Authorization": f"Bearer {api_key}"}

response = requests.get(url, headers=headers)
data = response.json()
print(f"Laddning: {data["signal"]}")
Batteri-prognos
import requests
import json

api_key = "DIN_API_NYCKEL"
url = f"https://www.spotprisoptimering.se/api/solar.php?api_key={api_key}"

response = requests.get(url)
data = response.json()

print(f"🎯 Rekommendation: {data["recommendation"]["message"]}")
print(f"⚡ Ladda kl: {data["forecast"]["best_charge_hour"]}:00")
print(f"💰 Sälj kl: {data["forecast"]["best_discharge_hour"]}:00")
print(f"📈 Potential: {data["forecast"]["potential_profit"]} kr/kWh")
Prediktiv billaddning
import requests

api_key = "DIN_API_NYCKEL"
url = f"https://www.spotprisoptimering.se/api/car.php?api_key={api_key}&hours=24"

response = requests.get(url)
data = response.json()

print(f"🚗 {data["vehicle"]["name"]}")
print(f"🔋 Laddning: {data["vehicle"]["current_charge"]}% → {data["charging"]["final_charge"]}%")
print(f"💰 Kostnad: {data["charging"]["total_cost"]} kr")
if data["predictive"]["best_charge_hour"]:
    print(f"⏰ Bäst att ladda kl {data["predictive"]["best_charge_hour"]}:00")

📱 JavaScript

Fetch API
const apiKey = "DIN_API_NYCKEL";

fetch(`https://www.spotprisoptimering.se/api/signal.php?api_key=${apiKey}`)
  .then(response => response.json())
  .then(data => {
    console.log("Signal:", data.signal);
    console.log("Pris:", data.price.current, "kr");
    console.log("Rekommendation:", data.recommendation.action);
  })
  .catch(error => console.error("Fel:", error));
Med Bearer header
fetch("https://www.spotprisoptimering.se/api/car.php", {
  headers: {
    "Authorization": `Bearer ${apiKey}`
  }
})
  .then(response => response.json())
  .then(data => {
    if (data.alerts.length > 0) {
      console.log("Varning:", data.alerts[0].message);
    }
  });
Async/await med batteridata
async function getBatteryStrategy() {
  const apiKey = "DIN_API_NYCKEL";
  
  try {
    const response = await fetch(`https://www.spotprisoptimering.se/api/solar.php?api_key=${apiKey}`);
    const data = await response.json();
    
    document.getElementById("battery-status").innerHTML = `
      <div style="background: ${data.recommendation.priority === "high" ? "#10b981" : "#f59e0b"}; padding: 1rem; border-radius: 0.5rem;">
        <strong>${data.recommendation.message}</strong><br>
        <small>Ladda vid ${data.forecast.best_charge_hour}:00, sälj vid ${data.forecast.best_discharge_hour}:00</small>
      </div>
    `;
  } catch (error) {
    console.error("Fel vid API-anrop:", error);
  }
}
Prediktiv billaddning
async function getCarCharging() {
  const apiKey = "DIN_API_NYCKEL";
  
  try {
    const response = await fetch(`https://www.spotprisoptimering.se/api/car.php?api_key=${apiKey}`);
    const data = await response.json();
    
    if (data.alerts.length > 0) {
      document.getElementById("car-alert").innerHTML = `
        <div style="background: #fee2e2; color: #991b1b; padding: 1rem; border-radius: 0.5rem;">
          ⚠️ ${data.alerts[0].message}
        </div>
      `;
    }
    
    document.getElementById("car-info").innerHTML = `
      <div>🔋 Nu: ${data.vehicle.current_charge}% → Mål: ${data.vehicle.target_charge}%</div>
      <div>💰 Kostnad: ${data.charging.total_cost} kr</div>
      <div>⏰ Bäst laddning: ${data.predictive.best_charge_hour}:00</div>
    `;
  } catch (error) {
    console.error("Fel:", error);
  }
}

📦 Node.js

Axios
const axios = require("axios");

const apiKey = "DIN_API_NYCKEL";

axios.get(`https://www.spotprisoptimering.se/api/signal.php?api_key=${apiKey}`)
  .then(response => {
    console.log("Signal:", response.data.signal);
    console.log("Pris:", response.data.price.current);
  })
  .catch(error => {
    console.error("API-fel:", error.message);
  });
Express-exempel
const express = require("express");
const axios = require("axios");
const app = express();

app.get("/styr-varmepump", async (req, res) => {
  try {
    const apiKey = process.env.API_KEY;
    const response = await axios.get(
      `https://www.spotprisoptimering.se/api/signal.php?api_key=${apiKey}`
    );
    
    const signal = response.data.signal;
    
    // Styr värmepumpen baserat på signal
    if (signal === "HEAT") {
      // Slå på pumpen
      await styrPump(true);
    } else if (signal === "SAVE") {
      // Sänk temperaturen
      await sänkTemperatur(2);
    }
    
    res.json({ success: true, signal });
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

🏠 Home Assistant

REST Command
# configuration.yaml
rest_command:
  spotpris_signal:
    url: "https://www.spotprisoptimering.se/api/signal.php?api_key=API_NYCKEL"
    
automation:
  - alias: "Styr värmepump efter pris"
    trigger:
      platform: time_pattern
      minutes: "/5"
    action:
      - service: rest_command.spotpris_signal
REST Sensor
# configuration.yaml
sensor:
  - platform: rest
    name: "Spotpris Signal"
    resource: "https://www.spotprisoptimering.se/api/signal.php?api_key=API_NYCKEL"
    value_template: "{{ value_json.signal }}"
    json_attributes:
      - price
      - level
      - recommendation
    scan_interval: 300
    
  - platform: template
    sensors:
      spotpris_action:
        value_template: "{{ state_attr('sensor.spotpris_signal', 'recommendation').action }}"
        friendly_name: "Rekommendation"
Elbilsladdning
# configuration.yaml
rest_command:
  spotpris_car:
    url: "https://www.spotprisoptimering.se/api/car_signal.php?api_key=API_NYCKEL"
    
automation:
  - alias: "Ladda bil vid lågt pris"
    trigger:
      platform: time_pattern
      minutes: "/10"
    condition:
      condition: template
      value_template: "{{ states('sensor.spotpris_car') == 'CHARGE' }}"
    action:
      - service: switch.turn_on
        entity_id: switch.charger

🔌 Shelly Script

Shelly 1/Pro (värmepump)
// Shelly script för värmepumpsstyrning
function checkPrice() {
  Shelly.call("HTTP.GET", {
    url: "https://www.spotprisoptimering.se/api/signal.php?api_key=API_NYCKEL"
  }, function(response) {
    try {
      let data = JSON.parse(response.body);
      let signal = data.signal;
      
      if (signal === "HEAT") {
        // Slå på relä (starta pump)
        Shelly.call("Switch.Set", { id: 0, on: true });
        console.log("Lågt pris - startar pump");
      } else if (signal === "SAVE") {
        // Stäng av relä (stoppa pump)
        Shelly.call("Switch.Set", { id: 0, on: false });
        console.log("Högt pris - stoppar pump");
      }
    } catch (e) {
      console.log("Fel vid parsning:", e);
    }
  });
}

// Kör var 15:e minut
Timer.set(900000, true, checkPrice);
Shelly 1/Pro (bil)
// Shelly script för bil-laddning (prediktiv)
function checkCarSignal() {
  Shelly.call("HTTP.GET", {
    url: "https://www.spotprisoptimering.se/api/car_signal.php?api_key=API_NYCKEL"
  }, function(response) {
    let signal = response.body;  // Ren text
    
    if (signal === "CHARGE" || signal === "CHARGE_NOW") {
      // Slå på relä (starta laddning)
      Shelly.call("Switch.Set", { id: 0, on: true });
      console.log("Laddar bil -", signal);
    } else {
      // Stäng av relä
      Shelly.call("Switch.Set", { id: 0, on: false });
      console.log("Väntar med laddning -", signal);
    }
  });
}

// Kör var 10:e minut
Timer.set(600000, true, checkCarSignal);
Shelly Plus/Pro med temperatur
// Shelly script för varmvatten
function checkWaterHeater() {
  Shelly.call("HTTP.GET", {
    url: "https://www.spotprisoptimering.se/api/water.php?api_key=API_NYCKEL"
  }, function(response) {
    let signal = response.body;
    
    if (signal === "START") {
      Shelly.call("Switch.Set", { id: 0, on: true });
      Shelly.call("Notify", { message: "Värmer vatten - lågt pris" });
    } else if (signal === "STOPP") {
      Shelly.call("Switch.Set", { id: 0, on: false });
    }
  });
}

// Kör var 30:e minut
Timer.set(1800000, true, checkWaterHeater);

Felkoder och felsökning

HTTP Status Felkod Beskrivning Lösning
401 MISSING_API_KEY Ingen API-nyckel skickades med Lägg till ?api_key=DIN_NYCKEL i URL:en eller Authorization: Bearer header
401 INVALID_API_KEY Ogiltig eller inaktiv API-nyckel Kontrollera att nyckeln är rätt och aktiv i dashboarden
402 SUBSCRIPTION_INACTIVE Prenumerationen är inte aktiv Förnya din prenumeration i dashboarden
404 NOT_FOUND Endpoint hittades inte Kontrollera att URL:en är korrekt
405 METHOD_NOT_ALLOWED Fel HTTP-metod användes Använd GET (endast GET stöds)
429 RATE_LIMIT_EXCEEDED För många anrop Max 100 anrop per minut. Vänta en stund.
500 SERVER_ERROR Internt serverfel Försök igen om några sekunder. Kontakta support om problemet kvarstår.
503 DB_ERROR Tillfälligt databasfel Försök igen om några sekunder

💡 Tips vid felsökning

  • Testa med curl först - det ger mest information vid fel
  • Kontrollera API-nyckeln - är den rätt och aktiv i dashboarden?
  • Kolla HTTP-metod - alla våra API:er använder GET
  • Vid CORS-problem - använd server-side-anrop eller proxy
  • Kolla prenumerationsstatus - aktiv prenumeration krävs

🔍 Vanliga problem

"Ingen API-nyckel" Du har glömt att skicka med ?api_key= i URL:en
"Ogiltig API-nyckel" Kontrollera att du kopierat rätt nyckel från dashboarden
"Prenumeration ej aktiv" Förnya din prenumeration i dashboarden
Tomt svar eller HTML Du anropar troligen fel URL - kontrollera att du använder /api/...

Prisnivåer och tröskelvärden

LOW
Pris under 0.65 kr/kWh
👉 START / HEAT / CHARGE
NORMAL
Pris mellan 0.65 - 1.35 kr/kWh
👉 NORMAL / IDLE
HIGH
Pris över 1.35 kr/kWh
👉 STOPP / SAVE / WAIT

⚙️ Anpassningsbara tröskelvärden

Standardvärdena är:

  • Lågpris (LOW): under 0.65 kr/kWh → START / HEAT / CHARGE
  • Normalpris (NORMAL): 0.65 - 1.35 kr/kWh → NORMAL / IDLE
  • Högpris (HIGH): över 1.35 kr/kWh → STOPP / SAVE / WAIT

Dessa värden kan justeras av varje användare i dashboarden under "Inställningar". API:et använder alltid användarens egna tröskelvärden.

🔴 Högt pris (SAVE/STOPP/WAIT)

När priset är högt rekommenderar vi att du:

  • Sänker temperaturen på värmepumpen 2-3°C
  • Aktiverar nattsänkning
  • Väntar med att ladda bilen
  • Väntar med att värma varmvatten
  • Säljer från batteriet om möjligt

🟢 Lågt pris (HEAT/START/CHARGE)

När priset är lågt rekommenderar vi att du:

  • Värm på som vanligt
  • Ladda bilen
  • Värm varmvatten
  • Ladda batteriet (förbered för högt pris)

Vanliga frågor

❓ Vilken API-nyckel ska jag använda?
✅ Du använder samma API-nyckel för alla endpoints (signal, car, water, solar). Hitta din nyckel i dashboarden under "API-nyckel".
❓ Hur ofta kan jag anropa API:et?
✅ Du kan göra upp till 100 anrop per minut. Detta är mer än nog för de flesta användningsfall. Shelly-enheter brukar anropa var 5-15:e minut.
❓ Vad är nytt i solar.php version 2.0?
✅ Smart prediktiv laddning! API:et analyserar 24h prisprognos och rekommenderar när du ska ladda batteriet för att maximera vinst, samt när du ska sälja vid höga priser.
❓ Vad är nytt i car.php version 2.2?
✅ Prediktiv laddning för elbil! API:et analyserar 24h prisprognos, identifierar billigaste laddningstimmarna och schemalägger laddning optimalt. Hanterar även akutladdning (under miniminivå) och tidskritisk laddning när tiden är knapp inför avfärd.
❓ Vad betyder signalerna?
✅ HEAT/START/CHARGE = lågt pris, SAVE/STOPP/WAIT = högt pris, NORMAL = normalpris. För solceller har vi även "prepare_for_sale" som indikerar att du bör ladda batteriet inför ett kommande högt pris. För bil har vi "CHARGE_NOW" vid akut låg batterinivå.
❓ Hur fungerar prediktiv laddning för bil?
✅ Car API 2.2 analyserar prisprognosen för kommande 24 timmar, beräknar hur mycket energi du behöver och schemalägger laddning till de billigaste timmarna. Om batteriet är under miniminivå laddas det omedelbart (akut). Om tiden är knapp inför avfärd prioriteras tid framför pris.
❓ Hur fungerar prediktiv laddning för batteri?
✅ Solar API 2.0 analyserar prisprognosen för kommande 24 timmar, identifierar bästa laddningstid (lägsta pris) och bästa säljtid (högsta pris), och rekommenderar åtgärd baserat på din batterinivå, verkningsgrad och strategi.
❓ Måste jag ha dynamiskt elavtal?
✅ Ja, för att det ska fungera måste du ha ett elavtal där priset varierar per timme (dynamiskt eller timpris).
❓ Kan jag styra flera enheter med samma nyckel?
✅ Ja, en API-nyckel fungerar för alla dina enheter. Du kan ha en värmepump, en bil, en varmvattenberedare och solceller på samma konto.

Har du fler frågor? Kontakta oss på support@spotprisoptimering.se

Home Assistant-integration

v1.0
⚡ KOMPLETT INTEGRATION

Få allt att fungera på 5 minuter

Här hittar du färdiga konfigurationsfiler för Home Assistant. Ladda ner, kopiera till din server, ändra API-nyckel – klart!

Färdiga sensorer
Automatiseringar för allt
Dashboard inkluderad
Push-notiser
📄

configuration.yaml

Grundläggande sensorer för alla API:er

Ladda ner
⚙️

automations.yaml

Automatiseringar för värmepump, bil, varmvatten & batteri

Ladda ner
🔘

input_boolean.yaml

Aktiveringsknappar för olika funktioner

Ladda ner
📊

lovelace-dashboard.yaml

Färdig dashboard med alla sensorer

Ladda ner
📦

spotpris_package.yaml

Allt-i-ett paket (sensorer + automatiseringar)

Ladda ner
📝

home-assistant-guide.md

Steg-för-steg installationsguide

Ladda ner

🔧 Snabbinstallation (kopiera & klistra)

Välj en fil och kopiera innehållet direkt:

⚠️ Viktigt

Glöm inte att byta ut DIN_API_NYCKEL mot din faktiska API-nyckel i alla filer! Du hittar din nyckel i dashboarden.

🚀 Redo att börja bygga?

Få din API-nyckel direkt i dashboarden och börja integrera på 5 minuter. Första månaden gratis! Med vår nya prediktiva batteriladdning och billaddning kan du maximera din solel och spara ännu mer.

Skapa konto gratis Logga in