Skip to content
Snippets Groups Projects
Commit 55b70b85 authored by Astisme's avatar Astisme
Browse files

altri fix sporadici

parent 401d39ad
No related branches found
No related tags found
No related merge requests found
# Introduzione # Introduzione
Il progetto presentato dal gruppo2 si occupa di fornire ad un utente funzionalità di domotica in una LAN. Le funzionalità sviluppate sono le seguenti: controllo remoto delle luci, sistema di antifurto e metodo di deterrenza delle intrusioni. Il progetto presentato dal gruppo2 si occupa di fornire ad un utente funzionalità di domotica in una LAN, controllabili anche dall'esterno.
Le funzionalità sviluppate e implementate nei microservizi sono le seguenti:
- Controllo remoto delle luci
- Sistema di antifurto
- Metodo di deterrenza delle intrusioni
Inoltre sono state implementate le seguenti … collaterali:
- Sistema di autenticazione per l'accesso ai servizi basato su token JWT
- Webserver e la relativa Webapp per l'interfaccia utente
- Domain Manager (DM) per la gestione dei domini e dei relativi servizi
- Broker MQTT per la comunicazione tra i servizi (in bridging con smartcity-challenge)
# 1. Specifiche funzionali # 1. Specifiche funzionali
## 1.1. Controllo tramite sensori ed attuatori ## 1.1. Controllo tramite sensori ed attuatori
Il sistema nella LAN è costituito da una beaglebone (con attuatori e led) e un arduino (che presenta un sensore di luminosità). Il sistema nella LAN è costituito da una BeagleBone (BB), con attuatori e led; e un arduino, che presenta un sensore di luminosità.
Gli attuatori simulano gli interruttori e i sensori di movimento. I sensori di movimento permettono il controllo dell'allarme dell'antifurto e, assieme agli interruttori e al sensore di luminosità, dello stato delle luci. Gli attuatori simulano gli interruttori e i sensori di movimento. I sensori di movimento permettono il controllo dell'allarme dell'antifurto e, assieme agli interruttori e al sensore di luminosità, dello stato delle luci.
## 1.2. Accessibilita' via internet ## 1.2. Accessibilità via internet
I servizi in cloud consistono di un server che fornisce una webapp, con la quale è possibile controllare gli elementi della LAN; il servizio di autenticazione con Keycloak; il domain manager, responsabile di mantenere la consistenza dei dati; e il cloud app manager, il quale s'interfaccia con il broker mosquitto che è connesso in bridge con la beaglebone della LAN. I servizi in cloud consistono di un server che fornisce una webapp, con la quale è possibile controllare gli elementi della LAN; il servizio di autenticazione con Keycloak; il DM, responsabile di mantenere la consistenza dei dati; e il Cloud App Manager (CAM), il quale s'interfaccia con il broker mosquitto che è connesso in bridge con la BB della LAN.
I servizi sono stati resi sicuri con l'implementazione di HTTPS e per il broker con TLS (e WSS). I servizi sono stati resi sicuri con l'implementazione di HTTPS e per il broker con TLS (e WSS).
# 2. Analisi # 2. Analisi
## 2.1. Installazione del sistema in reti private ## 2.1. Installazione del sistema in reti private
L'installazione del sistema avviene senza configurazioni particolari poiché l'uso di mosquitto, con la configurazione da noi impostata, rende il sistema plug-n-play, ovvero è sufficiente collegarlo alla rete domestica per avere le funzionalità richieste disponibili. L'installazione del sistema avviene senza configurazioni particolari poiché l'uso di mosquitto, con la configurazione da noi impostata, rende il sistema plug-n-play, ovvero è sufficiente collegarlo alla rete domestica per avere le funzionalità richieste disponibili.
## 2.2. Accessibilita' da rete pubblica e da rete privata ## 2.2. Accessibilità da rete pubblica e da rete privata
La connettibilità è indistintamente garantita sia all'interno della LAN sia al suo esterno grazie all'impiego di brokers Mosquitto, tutti connessi grazie all'utilizzo del bridging. Questo permette ai microservizi di comunicare come se fossero nella stessa LAN. La connettibilità è indistintamente garantita sia all'interno della LAN sia al suo esterno grazie all'impiego di brokers Mosquitto, tutti connessi grazie all'utilizzo del bridging. Questo permette ai microservizi di comunicare come se fossero nella stessa LAN.
In ogni caso, per accedere al servizio, l'utente deve autenticarsi sia per osservare lo stato dei microservizi che per inviare comandi. Il login è gestito grazie a Keycloak che autorizza l'accesso alla webapp, interfacciata al resto del sistema. In ogni caso, per accedere al servizio, l'utente deve autenticarsi sia per osservare lo stato dei microservizi che per inviare comandi. Il login è gestito grazie a Keycloak che autorizza l'accesso alla webapp, interfacciata al resto del sistema.
...@@ -40,13 +51,13 @@ Anche la manutenibilità migliora. <!-- => spiegare --> ...@@ -40,13 +51,13 @@ Anche la manutenibilità migliora. <!-- => spiegare -->
### 4.1.1. Webserver e Webapp ### 4.1.1. Webserver e Webapp
Il Webserver, configurato per usare HTTPS, fornisce la Webapp al client grazie all'uso di API REST. Il Webserver è in grado di gestire molteplici sessioni allo stesso tempo grazie all'implementazione di Threads. Il Webserver, configurato per usare HTTPS, fornisce la Webapp al client grazie all'uso di API REST. Il Webserver è in grado di gestire molteplici sessioni allo stesso tempo grazie all'implementazione di Threads.
La Webapp può comunicare con il Message Broker grazie al protocollo MQTT, con il server di autenticazione (Keycloak) con l'utilizzo di token JWT e con il Domain Manager grazie all'uso di API REST. La Webapp può comunicare con il Message Broker grazie al protocollo MQTT, con il server di autenticazione (Keycloak) con l'utilizzo di token JWT e con il DM grazie all'uso di API REST.
### 4.1.2. Keycloak ### 4.1.2. Keycloak
<!--DA FARE elisa--> <!--DA FARE elisa-->
### 4.1.3. Domain Manager ### 4.1.3. Domain Manager
Il Domain Manager è un microservizio che opera in cloud, con funzionalità sia da server REST sia da client che interagisce con il database (DB) dell'intero sistema. Si occupa di soddisfare le richieste provenienti dalla Webapp, controllandone la validità e la consistenza con il DB e inoltrarle al Cloud App Manager (CAM). Dopo aver verificato l'autorizzazione tramite token di Keycloak interagisce con il DB ed effettua la chiamata al CAM. Terminate queste due interazioni, viene servita la risposta alla Webapp. Il DM è un microservizio che opera in cloud, con funzionalità sia da server REST sia da client che interagisce con il database (DB) dell'intero sistema. Si occupa di soddisfare le richieste provenienti dalla Webapp, controllandone la validità e la consistenza con il DB e inoltrarle al CAM. Dopo aver verificato l'autorizzazione tramite token di Keycloak interagisce con il DB ed effettua la chiamata al CAM. Terminate queste due interazioni, viene servita la risposta alla Webapp.
=> poco chiaro (Alfredo) => poco chiaro (Alfredo)
### 4.1.4. BeagleBone (BB) ### 4.1.4. BeagleBone
- Luci - Luci
Microservizio che opera in LAN che si occupa di gestire l'accensione e lo spegnimento delle lampadine sia tramite interruttore sia tramite sensori di movimento. I comandi e gli stati delle lampadine vengono letti e scritti su due topic distinti del broker Mosquitto presente sulla BB. La persistenza dello stato del microservizio è mantenuta in locale su un file testuale in formato JSON, che viene aggiornato ad ogni variazione dello stato, ad esempio accensione o spegnimento di una lampadina, aggiunta di una nuova lampadina e modifica del sensore di movimento. Microservizio che opera in LAN che si occupa di gestire l'accensione e lo spegnimento delle lampadine sia tramite interruttore sia tramite sensori di movimento. I comandi e gli stati delle lampadine vengono letti e scritti su due topic distinti del broker Mosquitto presente sulla BB. La persistenza dello stato del microservizio è mantenuta in locale su un file testuale in formato JSON, che viene aggiornato ad ogni variazione dello stato, ad esempio accensione o spegnimento di una lampadina, aggiunta di una nuova lampadina e modifica del sensore di movimento.
...@@ -71,9 +82,9 @@ Questo componente della LAN scrive sul broker Mosquitto della BB i valori del se ...@@ -71,9 +82,9 @@ Questo componente della LAN scrive sul broker Mosquitto della BB i valori del se
(davvero dobbiamo scriverlo un altra volta?)--> (davvero dobbiamo scriverlo un altra volta?)-->
# 5. Descrizione dell'implementazione # 5. Descrizione dell'implementazione
## 5.1. UML delle classi implementate ## 5.1. UML delle classi implementate
- DomainManager - Domain Manager
La classe principale del DomainManager è Domain.java. Essa funge da server REST su Https. La classe principale del DM è Domain.java. Essa funge da server REST su Https.
Espone le rotte che vengono richiamate dalla WebApp per avviare, installare, creare ed eliminare i domini, oltre a fornire servizi per la corretta visualizazione degli elementi in app. Espone le rotte che vengono richiamate dalla WebApp per avviare, installare, creare ed eliminare i domini, oltre a fornire servizi per la corretta visualizazione degli elementi in app.
Prima di operare da server esso effettua una chiamata al nostro repository gitlab per popolare la tabella dei moduli del DB. Prima di operare da server esso effettua una chiamata al nostro repository gitlab per popolare la tabella dei moduli del DB.
In qualità di server si avvale di un threadPoolExecutor e per ogni nuova chiamata istanzia un nuovo thread per servirla. In qualità di server si avvale di un threadPoolExecutor e per ogni nuova chiamata istanzia un nuovo thread per servirla.
...@@ -100,7 +111,7 @@ Ad ogni modifica dello stato delle luci corrisponde una modifica del file di sta ...@@ -100,7 +111,7 @@ Ad ogni modifica dello stato delle luci corrisponde una modifica del file di sta
- Webserver <!--DA FARE elisa integra con la tua parte (keycloak)--> - Webserver <!--DA FARE elisa integra con la tua parte (keycloak)-->
Come il Domain Manager, anche il webserver espone delle API REST su HTTPS. Queste API sono richiamate dalla WebApp per ottenere i dati necessari per la visualizzazione delle pagine; in particolare restituiscono le pagine HTML, le immagini, i file CSS e JavaScript. Ogni richiesta viene gestita da un nuovo Thread, che legge il file e lo restituisce; una volta che il Thread ha terminato di rispondere ad una richiesta, viene eliminato; in questo modo il webserver non occupa risorse inutilmente ed è in grado di gestire molte richieste contemporaneamente. È anche presente la classe Helper, che permette di inviare le risposte HTTPS alla Webapp e di fare controlli ripetuti in varie altre classi. Come il DM, anche il webserver espone delle API REST su HTTPS. Queste API sono richiamate dalla WebApp per ottenere i dati necessari per la visualizzazione delle pagine; in particolare restituiscono le pagine HTML, le immagini, i file CSS e JavaScript. Ogni richiesta viene gestita da un nuovo Thread, che legge il file e lo restituisce; una volta che il Thread ha terminato di rispondere ad una richiesta, viene eliminato; in questo modo il webserver non occupa risorse inutilmente ed è in grado di gestire molte richieste contemporaneamente. È anche presente la classe Helper, che permette di inviare le risposte HTTPS alla Webapp e di fare controlli ripetuti in varie altre classi.
- Scenari - Scenari
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment