evid3nt / System-For-Monitoring-Class-Attendance

GNU General Public License v3.0
0 stars 0 forks source link

[Web] Dogovoriti korištenu tehnologiju za backend aplikaciju #6

Closed bk53409 closed 1 month ago

bk53409 commented 1 month ago

Dogovoriti koja će se tehnologija koristiti za izradu backend dijela sustava. Balansirati između korisnosti tehnologije za naše potrebe i znanja koje imamo za tu tehnologiju (tipa, nećemo radit backend u C-u, al opet, ak većina ne zna Python, nećemo uzet Django).

Napisat ovdje što će se od tehnologija koristiti. Imati na umu da će backend komunicirati sa:

bk53409 commented 1 month ago

Jel mi može netko detaljnije pojasnit na koji način backend komunicira s ThingsBoardom

Karlito16 commented 1 month ago

Jel mi može netko detaljnije pojasnit na koji način backend komunicira s ThingsBoardom

Da, to bi nas se nekoliko trebalo naći i dogovoriti kako ćemo to. Ja sam istražio mogućnosti ThingsBoarda i imamo generalno dvije mogućnosti:

Ako se mene pita, prvi pristup bi mogao bit loš jer bi za svaki request morali trčati preko REST API-a na ThingsBoard i dohvaćati veliku količinu podataka. Primjerice, kako ćemo provjeriti je li student bio na predavanju 12.12.2012. u 12:15 u D2, a svi telemetry podaci su nam na platformi...

Drugi pristup je ideja da backend sluša promjene na thingsboardu i čim dođe novi telemetry data, backend to dohvati preko MQTT-a i lokalno pohrani kod sebe u svoju bazu (tablica Telemetry iz one slike kaj smo profesoru prezentirali). Ovime bi onda svu logiku radili na backendu i sve potrebne podatke bi imali kod sebe, u jednoj bazi.

Karlito16 commented 1 month ago

Jel mi može netko detaljnije pojasnit na koji način backend komunicira s ThingsBoardom

Da, to bi nas se nekoliko trebalo naći i dogovoriti kako ćemo to. Ja sam istražio mogućnosti ThingsBoarda i imamo generalno dvije mogućnosti:

* koristiti REST API koji ThingsBoard pruža, preko njega možemo dohvatiti telemetry data pojedinog uređaja (TKO se KADA skenirao u KOJOJ dvorani)

* koristiti MQTT - backend bi imao dodatan proces (dretvu) koja bi se subscribeala na ThingsBoard MQTT broker i slušala potrebne topicse za telemetry data

Ako se mene pita, prvi pristup bi mogao bit loš jer bi za svaki request morali trčati preko REST API-a na ThingsBoard i dohvaćati veliku količinu podataka. Primjerice, kako ćemo provjeriti je li student bio na predavanju 12.12.2012. u 12:15 u D2, a svi telemetry podaci su nam na platformi...

Drugi pristup je ideja da backend sluša promjene na thingsboardu i čim dođe novi telemetry data, backend to dohvati preko MQTT-a i lokalno pohrani kod sebe u svoju bazu (tablica Telemetry iz one slike kaj smo profesoru prezentirali). Ovime bi onda svu logiku radili na backendu i sve potrebne podatke bi imali kod sebe, u jednoj bazi.

P.S. Možda postoji i treća mogućnost, slobodno pišite :)

Karlito16 commented 1 month ago

Jel mi može netko detaljnije pojasnit na koji način backend komunicira s ThingsBoardom

Da, to bi nas se nekoliko trebalo naći i dogovoriti kako ćemo to. Ja sam istražio mogućnosti ThingsBoarda i imamo generalno dvije mogućnosti:

* koristiti REST API koji ThingsBoard pruža, preko njega možemo dohvatiti telemetry data pojedinog uređaja (TKO se KADA skenirao u KOJOJ dvorani)

* koristiti MQTT - backend bi imao dodatan proces (dretvu) koja bi se subscribeala na ThingsBoard MQTT broker i slušala potrebne topicse za telemetry data

Ako se mene pita, prvi pristup bi mogao bit loš jer bi za svaki request morali trčati preko REST API-a na ThingsBoard i dohvaćati veliku količinu podataka. Primjerice, kako ćemo provjeriti je li student bio na predavanju 12.12.2012. u 12:15 u D2, a svi telemetry podaci su nam na platformi...

Drugi pristup je ideja da backend sluša promjene na thingsboardu i čim dođe novi telemetry data, backend to dohvati preko MQTT-a i lokalno pohrani kod sebe u svoju bazu (tablica Telemetry iz one slike kaj smo profesoru prezentirali). Ovime bi onda svu logiku radili na backendu i sve potrebne podatke bi imali kod sebe, u jednoj bazi.

Eto mi treće ideje na pamet: u slučaju da imamo MQTT client koji će syncati našu bazu s telemetry podacima s IoT platforme, ne mora to nužno bit implementirano na backendu. Može se napravit neka mala skriptica koja će se spojit na MQTT, subscribeat na topicse koje dogovorimo i kad god primi neki novi podatak, parsira ga i ovisno o podacima, napravi insert/update u našu bazu, i to je to. Možda još i bolje rješenje jer ne ovisimo o tehnologiji backenda i ne opterećujemo dodatno backend.