Secure Power
Com'è nata l'idea
L'idea è nata da un'esigenza di sicurezza: in quel periodo nel mio paese si erano verificati numerosi furti. Ho deciso quindi di creare un piccolo sistema capace di avvisarmi all'accensione del computer per scoraggiare l'utilizzo.
Fase di Sviluppo
Inizialmente il progetto si basava su un bot Telegram che forniva solo la notifica. Il bot rimaneva attivo per tutta la durata di accensione del PC. Successivamente sono state aggiunte nuove funzionalità:
-
Sistema di Verifica:
All'accensione del PC il messaggio conteneva due pulsanti, uno per confermare che fossi io e l'altro per spegnere il computer
-
Sistema di Fotografia:
Utilizzava la fotocamera del computer per scattare una foto a chi fosse davanti ed è stato implementato un sistema di screenshot e di registrazione schermo per monitorare le attività
-
Sistema di Log:
Dentro un file Excel vengono salvati i log segnando data, ora ed azione eseguita
Il 01/08/2024 viene pubblicata la versione 2.0 del progetto. Presenta molte migliorie tra cui il distacco da Telegram e l'introduzione di un'interfaccia web per l'applicazione. Questo è il passo che segna la nascita del mio servizio Web & Websocket ospitato su Render. Infatti il dominio richiama il nome del progetto, ma oltre al suo vero scopo verrà usato per ospitare pagine dinamiche come un pannello admin complesso, un servizio di appunti per studenti di quinta superiore e successivamente il sito che stai appena guardando.
La nuova versione ha portato:
-
Rimozione delle funzioni inutili/inutilizzate:
Funzioni come il sistema fotografico e la registrazione schermo sono state rimosse perché non erano utilizzate inoltre portava molte problematiche nella versione exe
-
Semplicità:
Si è puntato sulla semplicità del progetto e della comunicazione tra dispositivi eliminando funzioni che appesantivano il servizio
-
Nuova gestione notifiche:
Le notifiche sono state gestite dal servizio di Pushbullet
-
Promemoria personalizzati:
Questo sistema permette di avere dei piccoli promemoria quando si accende il computer che vengono mostrati sia sulla notifica del telefono sia sul computer
A Marzo 2026 è stato rimpiazzato il foglio excel con un database locale vero e proprio. In questo modo mantiene lo stesso funzionamento della versione precedente, ma ora permette di aggiungere più dati come le tipologie di log e si possono ottenere più informazioni anche al di fuori della solita accensione: principalmente log dettagliati sullo stato della comunicazione o di richieste in entrata. Sotto è descritto lo schema E/R alla base di questo database:
Ringraziamo Microsoft Copilot per la generazione dell'immagine
Sistema Domotico Integrato
La rete implementa un'architettura IoT gerarchica multilivello, basata esclusivamente su connessioni WebSocket end-to-end.
- Il server centrale ha il compito di smistare le richieste tra i diversi dispositivi connessi. Alla ricezione di un messaggio specifico (formato dal messaggio da inviare e destinazione) il server invia il messaggio alla destinazione. Questa è una delle poche funzioni che offre il servizio WebSocket, di mantenere il server leggero, per motivi di prestazioni (0.5 CPU e 512mb di RAM) e di scalabilità. Esistono dei "sotto-protocolli" tra i dispositivi in cui cambiano solo alcune voci, ma nel complesso sono molto simili all'originale.
-
Il server locale si connette al server centrale e gestisce le informazioni
dei microcontrollori a lui connessi. Attraverso un protocollo di comunicazione (che fa parte dei tanti
sotto-protocolli
citati precedentemente) il dispositivo può inviare messaggi al server centrale o ai suoi client.
Può richiedere i dati a tutti i client per poi inviarli.
Il sistema a doppio server permette il distaccamento tra rete locale e rete internet. Comporta una maggiore scalabilità perché il collegamento dei dispositivi al server locale è molto semplice e non bisogna preoccuparsi della connessione internet di ogni singolo componente. In caso di aggiornamenti futuri, si possono collegare app o altri servizi direttamente al nodo locale. - I microcontrollori (tra esp01/esp8266/esp32) si connettono al server locale e gestiscono massimo due/quattro sensori/attuatori ciascuno. In questo modo si possono identificare facilmente problemi in caso di malfunzionamento e in caso di manutenzione non bisogna mettere mano su circuiti complessi. Lavorando con circuiti semplici, si risparmia spazio ed energia per alimentarli singolarmente. Tuttavia ci sarà un aumento significativo dei costi.
- Il telefono riceve tutti i dati ricevuti ed elaborati dai livelli superiori. Attraverso la comunicazione Websocket, che è alla base di tutto il sistema di comunicazione live, vengono visualizzati su: grafici, indicatori circolari (Circular Progress Indicator) o semplici testi le informazioni ricevute.
Ringraziamo Microsoft Copilot per la generazione dell'immagine
Applicazione Mobile
L'applicazione mobile rappresenta il centro di controllo dell'intero sistema. Sotto l'interfaccia grafica si nasconde la comunicazione tra i diversi dispositivi, gestita in tempo reale.La prima versione è stata sviluppata in Java, scelta naturale per un'app Android. Con l'avanzare del progetto, però, la gestione dell'interfaccia grafica è diventata sempre più complessa e difficile da mantenere.
Nel frattempo, grazie a un'offerta di lavoro che mi ha portato a occuparmi di alcuni processi aziendali, mi sono specializzato nello sviluppo di applicazioni mobile in Flutter. Terminato l'orario lavorativo, dedicavo il tempo libero alla scrittura dell'app: dopo tre settimane è uscita la prima versione. Da allora l'app ha ricevuto soprattutto miglioramenti grafici e alcune ottimizzazioni strutturali a livello di codice.
Qui vengono visualizzati i promemoria seguendo principalmente due principi di ordinamento: importanza e data di creazione. L'importanza è scelta dall'utente alla creazione del promemoria, ne abbiamo di 3 tipi: bassa, media e alta. Nella schermata principale è visualizzato attraverso un pallino colorato. Accanto abbiamo la data di creazione e subito sotto il testo del promemoria. In basso ci sono i bottoni modifica e fatto. Il primo fa tornare alla schermata di impostazione del promemoria con testo, importanza e data già configurati, permettendo così un'effettiva modifica. Il secondo bottone, come dice il nome, conferma che abbia finito l'attività del promemoria e di conseguenza non viene più visualizzato.
Questa schermata viene visualizzata quando viene acceso il computer. Come indicato nel messaggio si deve confermare che sia l'utente ad aver acceso il computer, altrimenti si può spegnere da remoto.
Questa è la pagina in cui vengono impostati i promemoria. La struttura è molto semplice, si presenta con: una casella di testo, il selettore dell'importanza e la data dopo la quale far apprire il promemoria. La data è stata scelta per far apparire il promemoria dopo un certo periodo in caso di attività future
In questa pagina si può visualizzare lo stato del PC che nel momento della foto è acceso.
Si può notare l'id, dato dal software, e la data entrambi legati all'accensione.
Si possono eseguire comandi remoti come lo spegnimento immediato del sistemma
oppure bloccare il PC (stessa cosa di Win+L)
In questa pagina vengono visualizzati temperatura e umidità dell'ambiente. Le informazioni vengono inviate all'ESP8266 attraverso il servizio WebSocket offerto dal server centrale. La spiegazione nel dettaglio è riportata sopra.