-- =============================================================
-- V003__seed_site_home01.sql
-- EMS Platform – seed data první lokality home-01
--
-- Deye Modbus (holding, SUN-20K) – viz docs/04-modules/telemetry.md:
--   0x0215 PV W, 0x0103 SoC %, 0x0105 bat W, 0x0101 bat V×0.1,
--   0x0169 grid W, 0x016F grid L1 V×0.1, 0x0213 load W,
--   0x0220 inv temp ×0.1, 0x0168 mode, 0x0180 fault
-- Teltonika / Samsung registry: TODO – doplnit z dokumentace / Loxone šablony
-- =============================================================

-- ============================================================
-- LOKALITA
-- ============================================================

INSERT INTO ems.site (code, name, timezone, latitude, longitude, active, notes)
VALUES (
    'home-01',
    'Hlavní objekt',
    'Europe/Prague',
    49.24466967511591,
    17.40658656876068,
    true,
    'První instalace. Deye 20kW + 64kWh baterie + 2x Teltonika EV + Samsung TČ.'
);

-- ============================================================
-- ENDPOINTY
-- ============================================================

-- Deye střídač přes Waveshare RS485→TCP
INSERT INTO ems.site_endpoint (site_id, endpoint_type, host, port, protocol, unit_id, enabled, notes)
SELECT id, 'modbus_tcp', '172.16.1.10', 502, 'modbus_tcp', 1, true, 'Waveshare WS-ETH pro Deye SUN-20K. Unit ID dle DIP přepínače.'
FROM ems.site WHERE code = 'home-01';

-- Teltonika EV nabíječka 1 přes Waveshare
INSERT INTO ems.site_endpoint (site_id, endpoint_type, host, port, protocol, unit_id, enabled, notes)
SELECT id, 'modbus_tcp', '192.168.1.101', 502, 'modbus_tcp', 1, true, 'Waveshare pro Teltonika TeltoCharge #1.'
FROM ems.site WHERE code = 'home-01';

-- Teltonika EV nabíječka 2 přes Waveshare
INSERT INTO ems.site_endpoint (site_id, endpoint_type, host, port, protocol, unit_id, enabled, notes)
SELECT id, 'modbus_tcp', '192.168.1.102', 502, 'modbus_tcp', 1, true, 'Waveshare pro Teltonika TeltoCharge #2.'
FROM ems.site WHERE code = 'home-01';

-- Samsung tepelné čerpadlo přes Waveshare
INSERT INTO ems.site_endpoint (site_id, endpoint_type, host, port, protocol, unit_id, enabled, notes)
SELECT id, 'modbus_tcp', '192.168.1.103', 502, 'modbus_tcp', 1, true, 'Waveshare pro Samsung tepelné čerpadlo.'
FROM ems.site WHERE code = 'home-01';

-- Loxone Miniserver
INSERT INTO ems.site_endpoint (site_id, endpoint_type, host, port, protocol, unit_id, enabled, notes)
SELECT id, 'loxone_http', '192.168.1.10', 80, 'http', NULL, true, 'Loxone Miniserver – příjem setpointů přes Virtual HTTP Inputs.'
FROM ems.site WHERE code = 'home-01';

-- ============================================================
-- SÍŤOVÉ PŘIPOJENÍ
-- ============================================================

INSERT INTO ems.site_grid_connection (site_id, max_import_power_w, max_export_power_w, no_export, reserved_capacity_w, notes)
SELECT id, 22000, 20000, false, 0, 'Třífázová přípojka. Limity upřesnit dle smlouvy s distributorem.'
FROM ems.site WHERE code = 'home-01';

-- ============================================================
-- TRŽNÍ KONFIGURACE
-- ============================================================

INSERT INTO ems.site_market_config (
    site_id, purchase_pricing_mode, sale_pricing_mode,
    buy_margin_fixed_czk, buy_margin_percent,
    sell_margin_fixed_czk, sell_margin_percent,
    currency, valid_from, valid_to, notes
)
SELECT
    id, 'spot', 'spot',
    0.050,  -- 5 haléřů/kWh nákupní marže (distribuce, poplatky)
    0,
    -0.020, -- 2 haléře/kWh srážka z prodejní ceny
    0,
    'CZK', now(), NULL, 'Výchozí konfigurace. Upřesnit dle skutečné smlouvy.'
FROM ems.site WHERE code = 'home-01';

-- ============================================================
-- AKTIVA – STŘÍDAČ
-- ============================================================

INSERT INTO ems.asset_inverter (site_id, code, manufacturer, model, endpoint_id, max_charge_power_w, max_discharge_power_w, max_export_power_w, controllable, notes)
SELECT
    s.id, 'deye-main', 'Deye', 'SUN-20K-SG01LP1-EU',
    ep.id,
    18000, 18000, 18000,
    true,
    'Hlavní hybridní střídač 20kW LV. RS485 Modbus RTU přes Waveshare.'
FROM ems.site s
JOIN ems.site_endpoint ep ON ep.site_id = s.id AND ep.notes LIKE '%Deye%'
WHERE s.code = 'home-01';

-- Ongridový střídač na GEN portu (autonomní, neřídíme)
INSERT INTO ems.asset_inverter (site_id, code, manufacturer, model, endpoint_id, max_export_power_w, controllable, notes)
SELECT
    id, 'ongrid-gen', NULL, NULL, NULL, 10000, false,
    'Ongridový střídač zapojený do GEN portu Deye. Autonomní provoz, EMS neřídí.'
FROM ems.site WHERE code = 'home-01';

-- ============================================================
-- AKTIVA – BATERIE
-- ============================================================

INSERT INTO ems.asset_battery (site_id, inverter_id, code, usable_capacity_wh, min_soc_percent, reserve_soc_percent, max_soc_percent, charge_efficiency, discharge_efficiency, degradation_cost_czk_kwh)
SELECT
    s.id, inv.id, 'bat-main',
    64000,  -- 64 kWh
    10,     -- min SoC 10 %
    20,     -- rezerva 20 % pro výpadek sítě
    95,     -- max SoC 95 %
    0.95, 0.95,
    0.50    -- Kč/kWh degradace, upřesnit dle záruky výrobce
FROM ems.site s
JOIN ems.asset_inverter inv ON inv.site_id = s.id AND inv.code = 'deye-main'
WHERE s.code = 'home-01';

-- ============================================================
-- AKTIVA – FVE POLE
-- ============================================================

-- Pole A – řízené Deye střídačem
INSERT INTO ems.asset_pv_array (site_id, inverter_id, code, name, nominal_power_wp, azimuth_deg, tilt_deg, module_count, shading_factor, controllable, notes)
SELECT
    s.id, inv.id, 'pv-a', 'FVE pole A',
    10000,   -- 10 kWp
    184,
    22,      -- sklon odhad; upřesnit dle střechy
    18,
    1.0,
    true,
    'Hlavní FVE pole řízené Deye střídačem.'
FROM ems.site s
JOIN ems.asset_inverter inv ON inv.site_id = s.id AND inv.code = 'deye-main'
WHERE s.code = 'home-01';

-- Pole B – ongridový, autonomní
INSERT INTO ems.asset_pv_array (site_id, inverter_id, code, name, nominal_power_wp, azimuth_deg, tilt_deg, module_count, shading_factor, controllable, notes)
SELECT
    s.id, inv.id, 'pv-b', 'FVE pole B (ongrid)',
    10000,
    184,
    35,
    NULL,
    1.0,
    false,
    'Ongridový střídač na GEN portu Deye. EMS neřídí, výkon se projeví v telemetrii Deye jako součást pv_power_w.'
FROM ems.site s
JOIN ems.asset_inverter inv ON inv.site_id = s.id AND inv.code = 'ongrid-gen'
WHERE s.code = 'home-01';

-- ============================================================
-- AKTIVA – EV NABÍJEČKY
-- ============================================================

INSERT INTO ems.asset_ev_charger (site_id, code, manufacturer, model, endpoint_id, max_power_w, min_power_w, phases, connector_count, schedulable, notes)
SELECT
    s.id, 'ev-charger-1', 'Teltonika', 'TeltoCharge 22kW',
    ep.id,
    22000, 1380, 3, 1, true,
    'EV nabíječka č. 1. Modbus TCP přes Waveshare. Ověřit Modbus registry z dokumentace Teltonika.'
FROM ems.site s
JOIN ems.site_endpoint ep ON ep.site_id = s.id AND ep.notes LIKE '%TeltoCharge #1%'
WHERE s.code = 'home-01';

INSERT INTO ems.asset_ev_charger (site_id, code, manufacturer, model, endpoint_id, max_power_w, min_power_w, phases, connector_count, schedulable, notes)
SELECT
    s.id, 'ev-charger-2', 'Teltonika', 'TeltoCharge 22kW',
    ep.id,
    22000, 1380, 3, 1, true,
    'EV nabíječka č. 2. Modbus TCP přes Waveshare.'
FROM ems.site s
JOIN ems.site_endpoint ep ON ep.site_id = s.id AND ep.notes LIKE '%TeltoCharge #2%'
WHERE s.code = 'home-01';

-- ============================================================
-- AKTIVA – TEPELNÉ ČERPADLO
-- ============================================================

INSERT INTO ems.asset_heat_pump (
    site_id, code, manufacturer, model, endpoint_id,
    rated_heating_power_w, cop_rated, cop_temp_reference_c,
    min_run_duration_min, min_stop_duration_min,
    tuv_tank_volume_l, tuv_min_temp_c, tuv_max_temp_c, tuv_target_temp_c,
    tuv_temp_sensor_ref, schedulable, notes
)
SELECT
    s.id, 'hp-samsung', 'Samsung', 'EHS Mono (placeholder)',
    ep.id,
    12000,  -- jmenovitý topný výkon W – upřesnit z datasheetu
    3.20,   -- COP @ 7 °C – upřesnit
    7.0,    -- referenční teplota A7/W35
    30, 15,
    200,    -- objem TUV zásobníku (l) – upřesnit
    45, 60, 55,
    'TODO: Loxone / Modbus čidlo TUV',
    true,
    'Samsung tepelné čerpadlo s Modbus modulem. Řídit dle COP a venkovní teploty (výhodné kolem poledne v chladných měsících).'
FROM ems.site s
JOIN ems.site_endpoint ep ON ep.site_id = s.id AND ep.notes LIKE '%Samsung%'
WHERE s.code = 'home-01';
