Skip to content
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

Database

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

UDLÅN - view til hver kommune/organisation

-- 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:
git clone https://github.com/BruceFletcher/node-red-contrib-postgres-multi cd node-red-contrib-postgres-multi/ npm pack
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)
Clone this wiki locally