-- 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).';