Introduzione

Il cantiere è un luogo di lavoro caratterizzato sempre da un’ evoluzione nel tempo delle caratteristiche dell’ambiente e delle lavorazioni svolte. In questo contesto, viene determinata una maggiore difficoltà nel definire e mantenere le corrette procedure di lavoro in sicurezza, inoltre si aggiunge, che spesso le attività svolte sono caratterizzate da rilevanti rischi di infortunio (si pensi ai lavori in quota scavi, sollevamento e movimentazione di carichi). Garantire la sicurezza nei cantieri è pertanto una sfida che coinvolge competenza, professionalità ed esperienza di tutte le figure che operano in tali contesti.

È per i motivi sopra elencati che è richiesto lo sviluppo di diversi applicativi in grado di controllare/gestire in tempo reale tutto ciò che riguarda la sicurezza di un cantiere.

CantieriApp si occupa proprio di questo. È nato come progetto stage per la mia tesi di laurea triennale di Informatica ed è composto da diversi componenti hardware e software:

Nome Tipologia Descrizione
Smartbadage Hardware Un badge indossabile dagli operai, simile a un cellulare che registra ogni loro azione.
Beacons Hardware Una serie di beacon che possono rappresentare macchinari edili o dispositivi di protezione individuali (D.P.I) indossabili come caschi o scarpe.
Server dei badge Software È un server hostato su macchina virtuale accessibile da tutti gli smartbadge; il quale salverà tutti i dati ricevuti da esso.
Server di controllo Software È un server che si interfaccia con il database del progetto ed esegue una serie di operazioni di controllo e monitoraggio.
CantieriWork Software È un applicazione Android specifica per essere installata sui telefono degli operai. Con questa è possibile richiedere aiuto o ricevere avvisi dai responsabili.
CantieriManager Software È un applicazione Android specifica per essere installata sul tablet dei responsabili del cantiere. Con questa è possibile monitorare il cantiere.
Console admin Software È un piccolo applicativo server che permette di compiere operazioni da amministratori sul database, come ad esempio la cancellazione dei dati.

Fasi del progetto

Analisi e pianificazione

Come prima è stato definito quale fosse l’obiettivo principale del progetto, ovvero la sicurezza nei cantieri, quindi oltre all’utilizzo dei dispositivi e dei software sopra citati, il progetto doveva soddisfare i seguenti requisiti obbligatori:

Requisito Descrizione
Vicinanza a un mezzo pericoloso e controllo all’uso del macchinario. Il device (smartbadge) deve essere in grado, tramite i beacon o una serie di altri device, di riconoscere luoghi o macchinari non consentiti per l’operaio. L’applicazione mobile del telefono dell’operaio lo deve avvisare tempestivamente che quest’ultimo non ha il permesso di trovarsi in quella determinata area di cantiere o di usare quel particolare macchinario. La notifica verrà inviata in maniera automatica dal server.
Rilevamento caduta Il device deve essere in grado, tramite accelerometro, di rilevare se l’operaio cade. In tal caso una notifica urgente verrà inviata ai responsabili e alle persone vicine al luogo dell’incidente.
Rilevamento operaio fermo o in posizione non compatibile con il lavoro programmato Il device deve capire se l’operaio è fermo, sdraiato, è caduto o semplicemente non ha il device con sé; in tal caso verrà avvisato tramite l’app.
Geolocalizzazione dell’operaio Il device, rilevando tutto ciò che fa l’operaio, fornirà sufficienti dati al server per far sì che i responsabili abbiano la loro geolocalizzazione quasi in tempo reale della sua posizione.
Configurazione dei device I device devono poter essere configurati per poter assegnare una sorta di identificativo all’operaio che lo sta utilizzando o altre impostazioni aggiuntive utili al device. Tali informazioni possono essere modificate solo dai responsabili.
Salvataggio dei dati su cloud o sistema annesso e visibilità agli admin. Tutti i dati che il device registra verranno inviati ad un server, il quale li deve inviare su una qualche sorta di piattaforma per memorizzarli. Il capo-cantiere o semplicemente una serie di responsabili devono essere in grado di reperire e monitorare questi dati.

Sviluppo

Le applicazioni Android sono state scritte interamente in Kotlin. Lato back-end abbiamo usato Firebase, in quanto:

  • Possiede il realtime database, ovvero un database dove ogni modifica viene notificata in tempo reale a tutte le istanze software collegate ad esso;
  • Possiede un sistema integrato in real-time per la creazione, la gestione e l’invio di notifiche push tra il server e le varie applicazioni Android;
  • Possiede un sistema di autenticazione completo;
  • Possiede SDK sia per Android che per JavaScript.

Per la parte server sono stati usati interamente JavaScript e Node JS. Il server dei badge è hostato invece su macchina virtuale Ubuntu, raggiungibile pubblicamente dallo smartbadge tramite il suo modulo 4G/LTE integrato.

Test & Debugging

Essendo un progetto molto vasto, abbiamo creato una piccola console di amministratore che abbiamo utilizzato per creare dati fittizi e informazioni al fine di testare ogni singolo componente del progetto.


Presentazione del progetto

Smartbadge & Beacons

Per smartbadge all’interno del progetto intendiamo un dispositivo indossabile dotato di tutte le componentistiche hardware di un telefono cellulare (modulo 4G/LTE, accelerometro, pulsanti, speaker, etc.) che noi abbiamo usato per tracciare e registrare le operazioni dell’operaio che lo ha indosso.

In particolare il badge registra:

  • la posizione in tempo reale dell’operaio;
  • Un eventuale caduta (fall detection) dell’operaio all’interno del cantiere;
  • L’invio manuale di SOS tramite il pulsante.

Il beacon all’interno del progetto copre un ruolo fondamentale.

Nel nostro caso esistono due tipi di beacon:

  • Beacon macchinario, che rappresenta un macchinario che è possibile trovare all’interno del cantiere come ad esempio ruspe o escavatrici;
  • Beacon indossabile, che rappresenta un DPI indossabile dall’operaio, come ad esempio un casco o un paio di scarpe.

Qua sotto riporto foto e link del badge e del beacon che ci è stato fornito per lo sviluppo di questo progetto:

Nome Link
Teltonika GH5200 https://teltonika-gps.com/products/trackers/assets-workforce/gh5200
Beacon Blu COIN ID https://elainnovation.com/en/catalogue/blue-coin-id-en/

Server del badge

Il server del badge è un piccolo server raggiungibile pubblicamente da ogni badge che riceverà tutti i dati che esso invia.

Il processo di invio e di salvataggio dei dati mandati dai badge può essere riassunto nei seguenti passaggi:

  1. Ricezione da parte del server di tutti i dati registrati dal badge sotto forma di codice esadecimale, come ad esempio:
000000000000007f8e020000018cf8de9d21000545fdda1b0283e2006900f110000001810001000000000000000000010181001711211ca92e23f0874df7b9a2fd4b716a4bf606290000be0000018cf8de9d20000545fdda1b0283e2006900f1100000000000060003001503007132012f0000030011001c0012ffef001303d40000000000000200008207
  1. Tramite un algoritmo viene trasformato il codice esadecimale in un file .json che racchiude tutte le informazioni registrate da ogni badge;
  2. Da questo file .json vengono estratte solo le informazioni rilevanti per il progetto, come la posizione ed eventuali eventi registrati dai badge (come ad esempio cadute o SOS);
  3. Si registrano su database le informazioni estrapolate.

Server di controllo

Il server di controllo consiste semplicemente in un server Node JS che ogni 60 secondi esegue una serie di algoritmi di controllo e monitora il cantiere. Esegue operazioni come:

  • Aggiornamento delle statistiche del cantiere;
  • Controllo DPI di tutti gli operai;
  • Controllo vicinanza mezzi pericolosi;
  • Controllo e aggiornamento del workStatus (se l’utente sta lavorando o è a riposo) di tutti gli operai in base ai loro turni lavorativi (impostati dai responsabili);
  • Controllo di eventuali richieste SOS effettuate dagli utenti tramite l’applicazione mobile;
  • Aggiornamento dei wearStatus (se l’utente sta indossando i DPI o meno) di tutti i dispositivi associati ad ogni utente.

Tra le operazioni sopra elencate ve ne sono alcune che hanno maggiore priorità rispetto ad altre. È possibile configurare nelle impostazioni del server l’intervallo dei secondi necessari a far partire ogni controllo. Per fare ciò ho creato uno scheduler che decide quale controllo far partire.

Cantieri Work

CantieriWork è l’applicazione Android creata appositamente per gli operai.

Schermata di log-in/sign-up

È possibile registrarsi tramite un codice inviato da un responsabile o accedere al proprio account con e-mail e password.

Schermata notifiche

In questa schermata si ricevono le notifiche dal server, dai responsabili o richieste di aiuto da parte di colleghi.

Schermata dispositivi ed elenco mansioni assegnate all’utente

Schermata turni

Qua si può visualizzare il turno attuale, quando sarà il prossimo turno di lavoro e la tabella turni dell’utente.

Schermata opzioni

CantieriManager

Schermata di login

In questa schermata si può accedere con l’account da amministratore con i dati definiti nel file di configurazione del server.

Schermata home

Qua vi è una panoramica del cantiere con le statistiche (quasi) in tempo reale e uno storico di quello che viene rilevato nel cantiere.

Schermata utenti

Qui è possibile visualizzare la lista degli utenti del sistema ed è possibile creare nuovi utenti. Nella creazione dell’utente è necessario assegnare un codice di registrazione (che l’operaio userà per registrarsi) e l’elenco delle mansioni che si vuole assegnare all’operaio.

Cliccando su un utente si apre il suo profilo dove è possibile:

  1. Visualizzare le sue informazioni
  2. Modificare i dati del profilo e le mansioni assegnate
  3. Assegnare dispositivi wearable o smartbadge

Schermata dispositivi

È possibile inserire nel sistema un dispositivo registrato dal server. Per dispositivo registrato si intende uno smartbadge o un beacon le cui informazioni sono arrivate al server, ma tale device non è ancora stato registrato nel sistema di CantieriManager. La schermata “crea device” si occupa proprio di questo.

Schermata Notifiche

In questa schermata è possibile visionare le notifiche generate dal server e le notifiche di SOS inviate dagli utenti. Le notifiche possono essere di 4 tipologie:

  • Un utente che invia un SOS o il badge rileva una caduta
  • Un utente che si avvicina senza autorizzazione a un macchinario pericoloso
  • Un utente che non sta indossando un DPI
  • Un utente che ha compilato il modulo di assistenza

Schermata Mappa

È possibile visualizzare nella mappa (che eventualmente verrebbe impostata nel luogo del cantiere) le ultime posizioni rilevate degli utenti dai loro smartbadge o i beacon macchinari.

Schermata gestione turni

In questa schermata i responsabili hanno la possibilità di creare turni di lavoro ad hoc per ogni utente o per gruppi di utenti. Una volta creato il gruppo è possibile assegnare a ciascun utente il proprio turno.

Schermata avvisi

In questa schermata i responsabili hanno la facoltà di generare annunci in broadcast a tutti gli utenti.

Schermata attività server

Quest’ultima schermata è stata creata per permettere ai responsabili di tener sotto controllo tutte le operazioni server che vengono svolte nel sistema.


Demo

È possibile richiedere una demo del progetto contattando uno degli sviluppatori.

Tecnologie utilizzate

Kotlin

Compose

Javascript

Node JS

Firebase

Gradle

JUnit

Illustrator

After Effects


Autori del progetto

Nome Ruolo Links
Gabriele Lizzos Scrittura dei due server e lato-back-end delle due app. Creazione contenuti e testing. Github Linkedin
Loris Farrauto Scrittura lato front-end, creazione grafica, creazione contenuti e testing. Github Linkedin Email