-- Insert 1min vzorku telemetrie TČ (MIM-B19N). Bez overloadů — při změně
-- signatury drop bez parametrů (konvence CLAUDE.md).

drop function if exists ems.fn_telemetry_heat_pump_sample;

create or replace function ems.fn_telemetry_heat_pump_sample(
  p_site_id int,
  p_heat_pump_id int,
  p_measured_at timestamptz,
  p_power_w int,
  p_outdoor_temp_c double precision,
  p_water_outlet_temp_c double precision,
  p_tuv_tank_temp_c double precision,
  p_operating_mode text,
  p_water_inlet_temp_c double precision default null,
  p_room_temp_c double precision default null,
  p_defrost_active boolean default null,
  p_alarm_code int default null
)
returns void
language sql
as $fn$
  insert into ems.telemetry_heat_pump (
    site_id,
    heat_pump_id,
    measured_at,
    power_w,
    outdoor_temp_c,
    water_outlet_temp_c,
    tuv_tank_temp_c,
    operating_mode,
    water_inlet_temp_c,
    room_temp_c,
    defrost_active,
    alarm_code
  )
  values (
    p_site_id,
    p_heat_pump_id,
    p_measured_at,
    p_power_w,
    p_outdoor_temp_c,
    p_water_outlet_temp_c,
    p_tuv_tank_temp_c,
    p_operating_mode,
    p_water_inlet_temp_c,
    p_room_temp_c,
    p_defrost_active,
    p_alarm_code
  )
  on conflict (heat_pump_id, measured_at) do nothing;
$fn$;

comment on function ems.fn_telemetry_heat_pump_sample is
  'Insert telemetrie TČ z MIM-B19N pollu (voda in/out, TUV, prostorová teplota, defrost, alarm). power_w je NULL — MIM příkon neměří (nutný elektroměr).';
