@@ -99,6 +99,7 @@ Questo componente della LAN scrive sul broker Mosquitto della BB i valori del se
- Domain Manager

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.
Prima di operare da server esso effettua una chiamata al nostro repository gitlab per popolare la tabella dei moduli del DB.
...
...
@@ -112,6 +113,7 @@ La persistenza del sistema è affidata ad un DB SQLite locale.
- Luci

Il microservizio Luci opera in LAN e serve a gestire l'accensione e spegnimento delle lampade nella casa.
la classe principale è Luci.java che opera su un ArrayList di oggetti di tipo Luce, che è la struttura dati fondamentale per il funzionamento del microservizio.
L'oggetto Luce è definito dal quartetto input, output, stato e nome.
...
...
@@ -128,11 +130,13 @@ Ad ogni modifica dello stato delle luci corrisponde una modifica del file di sta
- Webserver <!--DA FARE elisa integra con la tua parte (keycloak)-->

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

Il microservizio degli scenari contiene 4 classi fondamentali: Scenari, Automa, SubscribeCallback ed Esecutore.
Scenari è la classe principale: fa partire il microservizio ed espone alle altre classi il metodo per l'invio dei messaggi MQTT, il path delle cartelle di configurazione e di risorse (nella quale si trova la cartella in cui sono salvati gli scenari) e gli IN e OUT in uso sulla GPIO.
L'automa gestisce lo stato in cui si trova il microservizio, che può essere uno dei seguenti: spento, in fase di apprendimento e in fase di esecuzione. Questa classe espone i getter e setter dello stato, permettendo alle altre classi d'interfacciarsi. Per salvaguardare la persistenza, l'automa salva lo stato in cui si trova in un file di testo.
...
...
@@ -144,9 +148,11 @@ Sono inoltre presenti 2 classi di utilità: UserChangeSync ed Helper. La prima p
## 5.2. Descrizione della UI
### 5.2.1. Autenticazione

La prima pagina che viene fornita serve per ridirigere l'utente alla pagina di login su Keycloak; per questo motivo è interamente vuota.
### 5.2.2. Lista di domini

In questa pagina vengono mostrati tutti i domini appartenenti all'utente autenticato. Nel caso in cui questi sia amministratore di un dominio, a destra dello stato viene mostrato un cestino, per poterlo eliminare; inoltre il bottone dello stato è cliccabile, consentento la sua attivazione/spegnimento. Al contrario, se non è un amministratore e il dominio è attualmente attivo, egli può solamente accedere alla pagina d'interazione.
### 5.2.3. Interazione con il proprio dominio
Questa è la pagina principale del progetto, in cui si possono vedere tutti i dettagli del dominio installato. In alto si trovano fino a 3 bottoni che rappresentano i microservizi installati nel dominio scelto. Alla loro pressione, mostrano la UI relativa al loro microservizio, con la quale interagire per apportare modifiche.
...
...
@@ -154,6 +160,7 @@ Questa è la pagina principale del progetto, in cui si possono vedere tutti i de
- Visione d'insieme

La pagina principale della Webapp permette l'interazione completa con il sistema. Questo significa che il suo utilizzo permette di avere sia una visione real-time di ciò che accade nella LAN, sia di comandare da remoto gli attuatori connessi.
All'avvio della Webapp, viene fatta una RPC ad ogni microservizio installato nel dominio per mostrare correttamente tutti i dati disponibili all'utente; inoltre viene richiesto al server se l'utente è in realtà l'amministratore del dominio, per mostrare funzionalità aggiuntive.