Sloj za prikupljanje podataka
Struktura sloja za prikupljanje podataka u podsistemu Data Platform, njegovi demoni, principi razmene podataka i interakcija sa upravljačkim slojem.
Struktura i sastav sloja za prikupljanje podataka
Sloj za prikupljanje podataka ključna je komponenta podsistema Data Platform koja obezbeđuje integraciju sa uređajima. Obuhvata skup specijalizovanih aplikacija, od kojih je svaka projektovana za interakciju sa određenim tipom IoT uređaja (merila, senzori itd.). Ove aplikacije rade kao mrežni servisi koji preko namenskih portova obrađuju dolazne veze i upravljaju prenosom podataka između uređaja i platforme. Ovakva arhitektura garantuje skalabilnost i fleksibilnost pri radu sa raznorodnom opremom.
Struktura i sastav aplikacija sloja za prikupljanje podataka sažeto su prikazani u nastavku:
flowchart TD
A(Kućna merila potrošnje energije) <-->|Prenos podataka| B("Demon za prikupljanje podataka (Type-J)")
C(Industrijska merila potrošnje energije) <-->|Prenos podataka| D("Demon za prikupljanje podataka (Type-T)")
E(Pametni senzori) <-->|Prenos 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 očitavanje uređaja" }
end
I{"Uravnoteženje opterećenja (Pgbouncer)"} <--> J[(DBMS PostgreSQL)]
Razmena podataka sa krajnjim uređajima odvija se preko TCP veze, pri čemu svaki demon za prikupljanje podataka (pozadinski proces, daemon) implementira sopstveni aplikacioni protokol razmene kojim opslužuje određeni tip IoT uređaja.
Ovi demoni imaju nekoliko zajedničkih arhitektonskih osobina, opisanih u nastavku.
Karakteristike arhitekture
- Svaki kontejner sadrži aplikaciju specijalizovanu 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 je moguće izgraditi i za operativni sistem korisnika. - Za upravljanje zavisnostima između servisa (na primer, pristupom bazi podataka) u konfiguraciji Docker Compose navode se odeljci
depends_onihealth-check. - Demoni se u konfiguraciji Docker Compose pokreću u više instanci (replika) radi raspodele opterećenja. Pri tome svaki demon za prikupljanje podataka može istovremeno da opslužuje desetine hiljada veza.
- Sistem za uravnoteženje opterećenja (load balancer) – HAProxy ili Nginx Stream – usmerava saobraćaj ka dostupnim demonima pomoću algoritama Round Robin ili Least Connections.
- U okruženjima u oblaku možete da dodate automatsko skaliranje na osnovu metrika (CPU, broj veza).
- Sva komunikacija sa uređajima detaljno se beleži u fajlove, pa može da se analizira ako se otkriju problemi i otkazi.
Principi razmene podataka
U nastavku je dijagram komunikacione 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 timeRazmena podataka organizovana je po sledećim principima:
-
Pokretanje komunikacione sesije.
Komunikacionu sesiju uvek pokreće IoT uređaj. Pošto uspostavi vezu sa demonom za prikupljanje podataka, uređaj šalje identifikacioni paket. -
Postupak autentifikacije
Demon za prikupljanje podataka autentifikuje uređaj. Ako je autentifikacija uspešna, demon:- Preuzima sačuvanu konfiguraciju uređaja iz baze podataka.
- Šalje uređaju trenutna podešavanja interfejsa.
-
Prenos podataka
Na osnovu primljenog zahteva uređaj prenosi serveru za prikupljanje podataka:- Trenutna očitavanja uređaja.
- Arhivske zapise (ako postoje).
-
Zakazivanje sledeće sesije
Kada se prijem podataka završi, demon za prikupljanje podataka:- Generiše vremensku oznaku sledeće sesije.
- Šalje uređaju vremensku oznaku sledeće sesije.
- Pokreće zatvaranje veze.
-
Obrada i čuvanje podataka
Primljene informacije:- Objedinjuju se u strukturirane JSON objekte.
- Čuvaju se u posrednoj bazi podataka PostgreSQL.
- Formatiraju se u skladu sa specifikacijom protokola konkretnog demona.
-
Integracija sa upravljačkim slojem
Podaci postaju dostupni gornjem nivou sistema (upravljačkoj komponenti) za:- Dalju analitičku obradu.
- Vizuelizaciju u upravljačkim interfejsima.
- Generisanje automatizovanih izveštaja.
Interakcija sa upravljačkim slojem platforme
Arhitektura povezivanja komponenti
Demoni za prikupljanje podataka integrišu se sa sistemom najvišeg nivoa (upravljačkim slojem) preko posredne baze podataka. Da bi ta interakcija bila moguća, koristi se Docker kontejner sa instaliranim sistemom za upravljanje bazama podataka (DBMS) PostgreSQL.
Rezultate uspešne interakcije sa uređajima demoni automatski upisuju u namensku tabelu u istoj bazi podataka, čime se obezbeđuje transparentnost prenosa podataka između upravljačkog nivoa i uređaja.
Šema interakcije komponenti prikazana je u nastavku:
flowchart LR
A@{ shape: procs, label: "Komponenta za očitavanje uređaja"} -->|Podaci očitavanja| B[(DBMS PostgreSQL)]
B[(DBMS PostgreSQL)] -->|Konfiguracija| A@{ shape: procs, label: "Komponenta za očitavanje uređaja"}
B[(DBMS PostgreSQL)] -->|Podaci očitavanja| C@{ shape: procs, label: "Upravljačka komponenta"}
C@{ shape: procs, label: "Upravljačka komponenta"} -->|Konfiguracija| B[(DBMS PostgreSQL)]Konfiguracija uređaja
Konfiguracija uređaja obuhvata sledeće informacije:
- Datumi poslednjih očitavanja po arhivama: satna, dnevna, mesečna. Ovi parametri pokazuju od kog datuma treba očitati podatke odgovarajuće arhive.
- Kod mernog uređaja (za IoT uređaje koji koriste protokol Type-T). Ovaj parametar potreban je samo demonima za prikupljanje podataka koji opslužuju protokol Type-T, a serveru za prikupljanje podataka saopštava koji algoritam treba da koristi za rad sa uređajem.
- Brzina serijskog porta (za IoT uređaje koji rade po protokolu Type-T). Ovaj parametar saopštava IoT uređaju kojom brzinom treba da komunicira sa merilom. Demon za prikupljanje podataka šalje ga na početku sesije razmene podataka.
- Raspored komunikacije. Upravljačka komponenta upisuje sve rasporede u posrednu bazu podataka, a demon za prikupljanje podataka na osnovu primljenih rasporeda izračunava najbliži datum i šalje ga uređaju.
- Komande za upravljanje uređajem. U zavisnosti od tipa IoT uređaja i njegovih mogućnosti, upravljačke komande obuhvataju:
- Komandu za ažuriranje softvera telemetrijskog dela IoT uređaja. Kada primi ovu komandu, uređaj preuzima novi firmver sa servera i ažurira se.
- Komandu za očitavanje konfiguracije mernog uređaja.
- Komandu za zatvaranje ili otvaranje ventila (ako ventil postoji i ako ga softver IoT uređaja podržava).
- Komandu za podešavanje radnih parametara mernog uređaja (zavisi od modela).
- Komandu za ponovno pokretanje IoT uređaja.
Glavni deo konfiguracije uređaja čuva se u posrednoj bazi podataka u formatu JSON.
Primer konfiguracije prikazan je u nastavku:
{
"settings": "1",
"day_event": 1706140800,
"hour_event": 1706140800,
"month_event": 1673857740,
"net_address": 58
}Ovde su day_event, hour_event i month_event vremenske oznake u formatu unixtime za poslednje sačuvane zapise dnevne, satne i mesečne arhive, tim redom.
Rasporedi se čuvaju odvojeno, takođe u formatu JSON. Sam zapis rasporeda formira se i obrađuje u formatu CRON. Ovakav pristup obezbeđuje fleksibilnost pri podešavanju i obradi proizvoljnih rasporeda.
U nastavku je primer čuvanja nekoliko rasporeda za jedan uređaj:
[
{ "crontab": "10 * * * *", "schedule_id": 6 },
{ "crontab": "40 * * * *", "schedule_id": 7 }
]Prema ovim rasporedima, uređaj treba da se povezuje 10 i 40 minuta posle svakog punog sata. U trenutku komunikacije sa uređajem demon sam određuje najpogodniji raspored i šalje uređaju najbliži termin.
Povezane teme
Da li vam je ova stranica bila korisna?
Hvala vam na povratnoj informaciji!