Sloj za prikupljanje podataka

Struktura sloja za prikupljanje podataka u podsustavu Data Platform, njegovi demoni, načela razmjene podataka i interakcija s upravljačkim slojem.

Struktura i sastav sloja za prikupljanje podataka

Sloj za prikupljanje podataka ključna je komponenta podsustava Data Platform koja osigurava integraciju s uređajima. Obuhvaća skup specijaliziranih aplikacija, od kojih je svaka projektirana za interakciju s određenim tipom IoT uređaja (mjerila, senzori itd.). Ove aplikacije rade kao mrežne usluge koje preko namjenskih portova obrađuju dolazne veze i upravljaju prijenosom podataka između uređaja i platforme. Ovakva arhitektura jamči skalabilnost i fleksibilnost pri radu s raznorodnom opremom.

Struktura i sastav aplikacija sloja za prikupljanje podataka sažeto su prikazani u nastavku:

flowchart TD
    A(Kućna mjerila potrošnje energije) <-->|Prijenos podataka| B("Demon za prikupljanje podataka (Type-J)")
    C(Industrijska mjerila potrošnje energije) <-->|Prijenos podataka| D("Demon za prikupljanje podataka (Type-T)")
    E(Pametni senzori) <-->|Prijenos podataka| F("Demon za prikupljanje podataka (DDT)")
    subgraph " "
    B("Demon za prikupljanje podataka (Type-J)") <--> I{"Uravnoteženje opterećenja (Pgbouncer)"}
    D("Demon za prikupljanje podataka (Type-T)") <--> I{"Uravnoteženje opterećenja (Pgbouncer)"}
    F("Demon za prikupljanje podataka (DDT)") <--> I{"Uravnoteženje opterećenja (Pgbouncer)"}
    X@{ shape: braces, label: "Komponenta za prozivanje uređaja" }
    end
    I{"Uravnoteženje opterećenja (Pgbouncer)"} <--> J[(DBMS PostgreSQL)]

Razmjena podataka s krajnjim uređajima odvija se preko TCP veze, pri čemu svaki demon za prikupljanje podataka (pozadinski proces, daemon) implementira vlastiti aplikacijski protokol razmjene kojim poslužuje određeni tip IoT uređaja.

Ovi demoni imaju nekoliko zajedničkih značajki arhitekture, opisanih u nastavku.

Značajke arhitekture

  • Svaki kontejner sadrži aplikaciju specijaliziranu za određeni protokol.
  • Koriste se lagane osnovne slike (image), u osnovnoj konfiguraciji alpine, kako bi se dodatno opterećenje svelo na minimum. Ipak, slike se mogu izgraditi i za operacijski sustav korisnika.
  • Za upravljanje ovisnostima između usluga (na primjer, pristupom bazi podataka) u konfiguraciji Docker Compose navode se odjeljci depends_on i health-check.
  • Demoni se u konfiguraciji Docker Compose pokreću u više instanci (replika) radi raspodjele opterećenja. Pritom svaki demon za prikupljanje podataka može istodobno posluživati desetke tisuća veza.
  • Sustav za uravnoteženje opterećenja (load balancer) – HAProxy ili Nginx Stream – usmjerava promet prema dostupnim demonima pomoću algoritama Round Robin ili Least Connections.
  • U okruženjima u oblaku možete dodati automatsko skaliranje na temelju metrika (CPU, broj veza).
  • Sva komunikacija s uređajima detaljno se bilježi u datoteke, pa se može analizirati ako se otkriju problemi i kvarovi.

Načela razmjene podataka

U nastavku je dijagram komunikacijske sesije između IoT uređaja i demona za prikupljanje podataka:

sequenceDiagram
    autonumber
    participant D as IoT device
    participant I as Data collection <br/>daemon
    Note over I,D: Stages of interaction
    D->>I: Session start, authentication
    I-->>D: Sending request parameters
    D->>I: Data acquisition
    I-->>D: Sending the next session time

Razmjena podataka organizirana je prema sljedećim načelima:

  • Pokretanje komunikacijske sesije.
    Komunikacijsku sesiju uvijek pokreće IoT uređaj. Nakon što uspostavi vezu s demonom za prikupljanje podataka, uređaj šalje identifikacijski paket.

  • Postupak autentifikacije
    Demon za prikupljanje podataka autentificira uređaj. Ako je autentifikacija uspješna, demon:

    • Dohvaća spremljenu konfiguraciju uređaja iz baze podataka.
    • Šalje uređaju trenutačne postavke sučelja.
  • Prijenos podataka
    Na temelju primljenog zahtjeva uređaj prenosi poslužitelju za prikupljanje podataka:

    • Trenutačna očitanja uređaja.
    • Arhivske zapise (ako postoje).
  • Zakazivanje sljedeće sesije
    Kada se primanje podataka završi, demon za prikupljanje podataka:

    • Generira vremensku oznaku sljedeće sesije.
    • Šalje uređaju vremensku oznaku sljedeće sesije.
    • Pokreće zatvaranje veze.
  • Obrada i pohrana podataka
    Primljene informacije:

    • Objedinjuju se u strukturirane JSON objekte.
    • Pohranjuju se u posrednoj bazi podataka PostgreSQL.
    • Formatiraju se u skladu sa specifikacijom protokola konkretnog demona.
  • Integracija s upravljačkim slojem
    Podaci postaju dostupni gornjoj razini sustava (upravljačkoj komponenti) za:

    • Daljnju analitičku obradu.
    • Vizualizaciju u upravljačkim sučeljima.
    • Generiranje automatiziranih izvješća.

Interakcija s upravljačkim slojem platforme

Arhitektura povezivanja komponenti

Demoni za prikupljanje podataka integriraju se sa sustavom najviše razine (upravljačkim slojem) preko posredne baze podataka. Kako bi ta interakcija bila moguća, koristi se Docker kontejner s instaliranim sustavom za upravljanje bazama podataka (DBMS) PostgreSQL.

Rezultate uspješne interakcije s uređajima demoni automatski upisuju u namjensku tablicu u istoj bazi podataka, čime se osigurava transparentnost prijenosa podataka između upravljačke razine i uređaja.

Shema interakcije komponenti prikazana je u nastavku:

flowchart LR
A@{ shape: procs, label: "Komponenta za prozivanje uređaja"} -->|Podaci očitanja| B[(DBMS PostgreSQL)]
B[(DBMS PostgreSQL)] -->|Konfiguracija| A@{ shape: procs, label: "Komponenta za prozivanje uređaja"}
B[(DBMS PostgreSQL)] -->|Podaci očitanja| C@{ shape: procs, label: "Upravljačka komponenta"}
C@{ shape: procs, label: "Upravljačka komponenta"} -->|Konfiguracija| B[(DBMS PostgreSQL)]

Konfiguracija uređaja

Konfiguracija uređaja obuhvaća sljedeće informacije:

  • Datumi posljednjih očitanja po arhivama: satna, dnevna, mjesečna. Ovi parametri pokazuju od kojeg datuma treba očitati podatke odgovarajuće arhive.
  • Kod mjernog uređaja (za IoT uređaje koji koriste protokol Type-T). Ovaj parametar potreban je samo demonima za prikupljanje podataka koji poslužuju protokol Type-T, a poslužitelju za prikupljanje podataka javlja koji algoritam treba koristiti za rad s uređajem.
  • Brzina serijskog porta (za IoT uređaje koji rade prema protokolu Type-T). Ovaj parametar javlja IoT uređaju kojom brzinom treba komunicirati s mjerilom. Demon za prikupljanje podataka šalje ga na početku sesije razmjene podataka.
  • Raspored komunikacije. Upravljačka komponenta upisuje sve rasporede u posrednu bazu podataka, a demon za prikupljanje podataka na temelju primljenih rasporeda izračunava najbliži datum i šalje ga uređaju.
  • Naredbe za upravljanje uređajem. Ovisno o tipu IoT uređaja i njegovim mogućnostima, upravljačke naredbe obuhvaćaju:
    • Naredbu za ažuriranje softvera telemetrijskog dijela IoT uređaja. Kada primi tu naredbu, uređaj preuzima novi firmver s poslužitelja i ažurira se.
    • Naredbu za očitavanje konfiguracije mjernog uređaja.
    • Naredbu za zatvaranje ili otvaranje ventila (ako ventil postoji i ako ga softver IoT uređaja podržava).
    • Naredbu za postavljanje radnih parametara mjernog uređaja (ovisi o modelu).
    • Naredbu za ponovno pokretanje IoT uređaja.

Glavni dio konfiguracije uređaja pohranjuje se u posrednoj bazi podataka u formatu JSON.

Primjer konfiguracije prikazan je u nastavku:

json
{
  "settings": "1",
  "day_event": 1706140800,
  "hour_event": 1706140800,
  "month_event": 1673857740,
  "net_address": 58
}

Ovdje su day_event, hour_event i month_event vremenske oznake u formatu unixtime za posljednje spremljene zapise dnevne, satne i mjesečne arhive, tim redom.

Rasporedi se pohranjuju odvojeno, također u formatu JSON. Sam zapis rasporeda oblikuje se i obrađuje u formatu CRON. Ovakav pristup osigurava fleksibilnost pri definiranju i obradi proizvoljnih rasporeda.

U nastavku je primjer pohrane nekoliko rasporeda za jedan uređaj:

json
[
  { "crontab": "10 * * * *", "schedule_id": 6 },
  { "crontab": "40 * * * *", "schedule_id": 7 }
]

Prema ovim rasporedima, uređaj se treba povezivati 10 i 40 minuta nakon svakog punog sata. U trenutku komunikacije s uređajem demon sam određuje najprikladniji raspored i šalje uređaju najbliži termin.

Povezane teme

Posljednji put ažurirano

Je li vam ova stranica bila korisna?