Files
ems/db/routines/R__049_fn_telemetry_inverter_sample.sql

71 lines
1.7 KiB
SQL

DROP FUNCTION IF EXISTS ems.fn_telemetry_inverter_sample;
CREATE OR REPLACE FUNCTION ems.fn_telemetry_inverter_sample(
p_site_id int,
p_inverter_id int,
p_measured_at timestamptz,
p_pv_power_w int,
p_pv1_power_w int,
p_pv2_power_w int,
p_gen_port_power_w int,
p_battery_soc_percent double precision,
p_battery_power_w int,
p_batt_charge_today_wh int,
p_batt_discharge_today_wh int,
p_grid_power_w int,
p_load_power_w int,
p_grid_import_total_wh bigint,
p_grid_export_total_wh bigint,
p_run_state int,
p_is_export_limited boolean DEFAULT NULL,
p_pv_derating_flags int DEFAULT NULL
)
RETURNS void
LANGUAGE sql
AS $fn$
INSERT INTO ems.telemetry_inverter (
site_id,
inverter_id,
measured_at,
pv_power_w,
pv1_power_w,
pv2_power_w,
gen_port_power_w,
battery_soc_percent,
battery_power_w,
batt_charge_today_wh,
batt_discharge_today_wh,
grid_power_w,
load_power_w,
grid_import_total_wh,
grid_export_total_wh,
run_state,
is_export_limited,
pv_derating_flags
)
VALUES (
p_site_id,
p_inverter_id,
p_measured_at,
p_pv_power_w,
p_pv1_power_w,
p_pv2_power_w,
p_gen_port_power_w,
p_battery_soc_percent,
p_battery_power_w,
p_batt_charge_today_wh,
p_batt_discharge_today_wh,
p_grid_power_w,
p_load_power_w,
p_grid_import_total_wh,
p_grid_export_total_wh,
p_run_state,
p_is_export_limited,
p_pv_derating_flags
)
ON CONFLICT (inverter_id, measured_at) DO NOTHING;
$fn$;
COMMENT ON FUNCTION ems.fn_telemetry_inverter_sample IS
'Insert jednoho vzorku telemetrie střídače (telemetry_collector). Volitelně is_export_limited / pv_derating_flags (Deye reg 145/179) pro vyloučení slotů z učení PV delty.';