add statistices
This commit is contained in:
parent
79ee9898e7
commit
da76cf5f6f
@ -30,3 +30,44 @@ create view pv_stats_v as
|
|||||||
factor, angle, voltage, current
|
factor, angle, voltage, current
|
||||||
from pv_power_measurement_t
|
from pv_power_measurement_t
|
||||||
order by time;
|
order by time;
|
||||||
|
|
||||||
|
|
||||||
|
create table pv_stats_t (
|
||||||
|
id serial not null primary key,
|
||||||
|
"date" date not null,
|
||||||
|
dateType varchar(5) not null,
|
||||||
|
first double precision not null,
|
||||||
|
total double precision default 0
|
||||||
|
);
|
||||||
|
|
||||||
|
grant insert, select, update on pv_stats_t to nodered;
|
||||||
|
grant select, update on pv_stats_t_id_seq to nodered;
|
||||||
|
|
||||||
|
create or replace function pv_stats_func ()
|
||||||
|
returns trigger
|
||||||
|
language plpgsql
|
||||||
|
as $$
|
||||||
|
declare
|
||||||
|
v_stat_id pv_stats_t.id%TYPE;
|
||||||
|
v_dateTypes varchar[] := array['day', 'month', 'year'];
|
||||||
|
v_dateType varchar;
|
||||||
|
begin
|
||||||
|
foreach v_dateType in array v_dateTypes
|
||||||
|
loop
|
||||||
|
select id from pv_stats_t into v_stat_id where "date" = date_trunc(v_dateType, NEW.time::date) and dateType = v_dateType;
|
||||||
|
if not found then
|
||||||
|
insert into pv_stats_t ("date", dateType, first) values (date_trunc(v_dateType, NEW.time::date), v_dateType, NEW.exportEnergyActive);
|
||||||
|
else
|
||||||
|
update pv_stats_t set total = NEW.exportEnergyActive - first where id = v_stat_id;
|
||||||
|
end if;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
return NEW;
|
||||||
|
end;
|
||||||
|
$$
|
||||||
|
|
||||||
|
create trigger pv_stats_trig
|
||||||
|
after insert on pv_power_measurement_t
|
||||||
|
for each row
|
||||||
|
execute function pv_stats_func();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user