L'obiettivo del progetto è stato quello di realizzare un applicativo IoT completo, ovvero, partendo dall'acquisizione dei dati tramite sensori si è arrivati al loro salvataggio e, infine, alla loro visualizzazione.
Il progetto è composto da dei dispositivi, componenti e software da dover utilizzare obbligatoriamente e da dei requisiti da dover rispettare. Il tutto è riassumibile nella seguente tabella:
La repository è composta da 5 directory:
- arduino : contiene le versioni degli script realizzati per la board Arduino. Gli script realizzati utilizzano la libreria FreeRTOS
- backend : contiene il backend dell'applicazione, ovvero la componente che permette di interagire con il database, il quale, ha al suo interno gli eventi rilevati da Arduino. Questa parte è stata realizzata tramite Node JS e, in particolare, utilizzando le librerie Express per la gestione delle rotte e Sequelize per l'interfacciamento con il Database
- mqtt-client-angular : contiene la parte front-end dell'applicazione. Essa è stata realizzata in Angular perché è un framework che implementa al suo interno la programmazione reattiva e ad eventi. Difatti, Angular è stato utilizzato come un client MQTT sottoscritto a tutti i topic. Tramite una sezione apposita, vengono mostrati, alla ricezione di nuovi eventi, i dati aggiornati. L'applicazione è costituita da un'altra sezione che utilizza il backend per recuperare i dati storici, permettendo il filtraggio per topic, valore del topic e data.
- mqtt-client-db : contiene il client MQTT che è sottoscritto a tutti i topic e resta in attesa di nuovi eventi. Alla ricezione di eventi li aggiunge al database.
- raspberry: contiene al suo interno due script. Uno che permette di recuperare gli eventi inviati da Arduino tramite seriale e li pubblica sui topic. L'altro contiene lo script che permette di sincronizzare l'RTC.
Un'immagine semplificativa dei collegamenti tra i dispositivi è mostrata di seguito:
- Installare Mosquitto
sudo apt install mosquitto mosquitto-clients -y- Modificare il file di configurazione
sudo nano /etc/mosquitto/mosquitto.conf-
Copiare il contenuto accessibile da questo link e incollarlo nell'editor appena aperto. Chiudere e salvare il file attraverso CTRL+O e poi CTRL+X
-
Caricare il file di configurazione appena modificato
sudo systemctl stop mosquitto
sudo mosquitto -c /etc/mosquitto/mosquitto.conf -v
(verificare il corretto avvio e premere CTRL+C per fermarlo)- Riavviare e abilitare l'avvio di mosquitto al boot del sistema operativo
sudo systemctl restart mosquitto
sudo systemctl enable mosquitto- Per verificare lo stato del servizio in qualsiasi momento
sudo systemctl status mosquitto- Installare MySQL Server
sudo apt install mysql-server
- Installare Apache2
sudo apt-get install apache2
- Verificare lo stato dei servizi
sudo systemctl status mysql sudo systemctl status apache2
- Installare PHP
sudo apt install php
- Installare PhpMyAdmin
sudo apt install phpmyadmin nei menu che compaiono: -> apache2 (premere barra spaziatrice) e OK -> yes -> password: 123456 - Abilitare mbstring (per gestione stringhe in PHP) e riavviare apache2
sudo phpenmod mbstring sudo systemctl restart apache2
- Creazione di un utente MySQL (root_sod) con tutti i privilegi (password scelta: mysqlserver2023)
# accesso tramite utente root sudo mysql -u root -p -> password: 12345678 (la stessa definita prima) # si entra nella shell mysql sql> CREATE USER 'root_sod'@'%' IDENTIFIED BY 'mysqlserver2023'; sql> GRANT ALL PRIVILEGES ON '*.*' TO 'root_sod'@'%' WITH GRANT OPTION; sql> FLUSH PRIVILEGES; sql> EXIT;
- Accedere da browser all'indirizzo http://localhost/phpmyadmin/ con le credenziali dell'utente appena creato

