generated from Damorck/Best-README-Template
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Danny Morck Jensen edited this page May 11, 2023
·
11 revisions
Dette er en node-red baseret exporter til is2iot.
Den kan trække gateways og devices ud og skrive dem til et par tabeller i postgres
Installation og konfiguration består i grove træk af følgende: - database setup - OS2iot setup - node-red setup
Opret tabeller som vist herunder. Opret en rolle der kan skrive til tabellerne.
CREATE TABLE public.gateways ( id varchar NOT NULL, "name" varchar NULL, description varchar NULL, lat float8 NULL, lon float8 NULL, altitude numeric NULL, last_seen_at timestamptz NULL, "owner" varchar NOT NULL, updated timestamptz NULL, geom geometry NULL, CONSTRAINT gateways_pk PRIMARY KEY (id, owner) ); CREATE INDEX gateways_owner_idx ON public.gateways USING btree (owner);
CREATE TABLE public.devices ( "name" varchar NULL, lat float8 NULL, lon float8 NULL, comment_on_location varchar NULL, "comment" varchar NULL, metadata jsonb NULL, device_eui varchar NULL, id varchar NOT NULL, sent_time timestamptz NULL, app_id int4 NOT NULL DEFAULT '-1'::integer, device_status_battery float4 NULL, "owner" varchar NOT NULL, updated timestamptz NULL, geom geometry NULL, CONSTRAINT devices_pk PRIMARY KEY (id, owner) ); CREATE INDEX devices_app_id_idx ON public.devices USING btree (app_id); CREATE INDEX devices_owner_idx ON public.devices USING btree (owner);
-- OBS: <kommunenavn-som-skrevet på os2-iot> skal kun have fornavnet med stort forbogstav - f.eks. Albertslund eller Høje Tåstrup
<br>
CREATE OR REPLACE VIEW install.<kommunenavn_view>
AS SELECT sensor_data.id,
sensor_data.devnavn,
sensor_data.deveui,
sensor_data.kommune,
sensor_data.case_,
sensor_data.beskrivelse_placering,
sensor_data.lon,
sensor_data.lat,
sensor_data.geom,
sensor_data.ts,
sensor_data.data
FROM install.sensor_data
WHERE sensor_data.kommune::text = '<kommunenavn-som-skrevet på os2-iot>'::text;
<br>
-- Permissions
ALTER TABLE install.<kommunenavn_view> OWNER TO postgres;
GRANT ALL ON TABLE install.<kommunenavn_view> TO postgres;
GRANT SELECT ON TABLE install.<kommunenavn_view> TO install_readonly;
-- LAV POINT UD FRA lat og lon (HVIS IKKE ALLEREDE LAVET TIDLIGERE OPPE) --
CREATE OR REPLACE FUNCTION <skema-navn>.function_update()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
BEGIN
new.geom := ST_SetSRID(ST_MakePoint(new.lon, new.lat), 4326);
RETURN new;
END;
$function$
;
create trigger nytpoint before
insert
on
<skema-navn>.<tabelnavn> for each row execute procedure <skema-navn>.function_update()
Rens data før det udgives: F.eks: delete from sensor_data where kommune = 'Høje Taastrup' and case_ = 'indeklima';
# OS2iot
opret API nøgler [her](https://portal.os2iot.gate21.dk/admin/api-key) til de organisationer der skal eksporteres udstyr fra. Nøglerne behøver kun læseadgang. En API nøgle ligner et uuid. fx `38af78ce-5079-4bca-9e0d-8b03398db740`
# node-red
## installer en fungerende version af `node-red-contrib-postgres-multi`
I node-red bruger vi noden `node-red-contrib-postgres-multi`
men den er ikke opdateret i npm, og virker derfor ikke
fix:
nu har du en fil `node-red-contrib-postgres-multi-0.2.0.tgz`
den kan importeres i node-red:
![image](https://user-images.githubusercontent.com/1478704/236916351-a3eb6f81-bd67-43a3-a0ef-2239e2ddf571.png)
## indlæs flow fra repo
Importer `nodered-flow.json` fra dette repo i node-red. Det ser sådan her ud. Åben `Configuration` noden
![image](https://user-images.githubusercontent.com/1478704/218124841-4eb5b35d-a3e8-4987-bbf1-12ab5666f8b3.png)
Indsæt url til os2iot instans i api.base_url. Indsæt api nøgle fra os2iot ved bullerby, og ret lige navnet til noget andet også - ingen bor i Bullerby.
Der kan indsættes yderligere api nøgle hvis der er behov. (hvis man gerne vil eksportere fra flere organisationer)
![image](https://user-images.githubusercontent.com/1478704/218126231-566aa7b1-eed0-40f2-b237-71bcf3d858eb.png)
Til sidst skal adgangen til databasen konfigureres. Åben en af database noderne:
![image](https://user-images.githubusercontent.com/1478704/218127458-a9d5ffd3-f9b3-4ad8-a83c-576c5dbd289f.png)
Udfyld med det der passer til din database:
![image](https://user-images.githubusercontent.com/1478704/218127746-c527a98f-4342-463a-9b20-087b61c0488e.png)