Scelta corretta per gestione periferiche in rete

di il
3 risposte

Scelta corretta per gestione periferiche in rete

Hola,
da tempo gioco con il raspberry e la libreria pi4j . Ora sempre per divertimento sto cercando di spingermi un po oltre alla programmazione di un applicazione che gestisce singolarmente un dispositivo.

Sicuramente il sistema che ho in mente è domotica. Dunque ho la mia idea è di infilare il raspberry in ogni cosa che mi viene in mente dalla macchina del caffè al citofono.
Inizialimente ho pensato di dividere in due blocchi funzionali il sistema, A. l'interfaccia utente B. il server/Driver I/O .

In pratica ho pensato di far comunicare la UI e il server via TCP. La Ui è una interfaccia web, non ho usato le servlet di Java ma assieme ad un amico stiamo usando nodeJ . La UI è il client .

Il Server riceve le richieste, processa le richieste e pilota eventualmente l'hardware. (tutto può stare nello stesso Rasp, quindi la comunicazione tcp avviene in localhost)

Tutto bello se esiste un unico Raspberry.
Ora mettiamo il caso che abbiamo 3 dispositivi, il primo problema è come faccio la propagazione delle informazioni? chi è degli elementi che ha la responsabilità di andare a chiedere in broadcast chi altro c'è e caricarsi in pancia tutti i dispositivi? Ho pensato di farlo fare eventualmente alla UI, ma ogni UI in ogni Raspberry deve andare a chiedere in giro informazioni sugli altri dispositivi... mi sembra una soluzione davvero caotica.

Un altra forma di sviluppo è di creare un server centrale che si occupa di conoscere gli altri dispositivi in rete, ma la trovo statica e riduttiva. La mia idea è che si rompe un dispositivo o per qualche maniera non riesco ad accedere alla sua interfaccia UI, da un altro raspberry magari avevo la possibilità di pilotare comunque l'hardware di quello cionco(sempre che non sia un problema generalizzato della macchina) .

Ricapitolando, in un sistema così fatto:

x.x.x.2 rasp A
x.x.x.3 rasp B
x.x.x.4 rasp C

ogni rasp è sui UI che Server, deve propagare agli altri i sui dispositivi hardware e la sua configurazione locale e deve essere pilotabile da qualunque altro rasp, tipo:

Marco si collega al rasp B e chiede di preparare un caffè al rasp C.
Matteo di collega al rasp A e chiede di preparare un caffè al rasp C.
Così esplode tutto... hahaha... dai metto sicuramente una coda di utilizzo.

Secondo voi è fattibile o sto cercando di creare un modello confusionario? esiste un modello di rete e realizzazione software per qualcosa di simile?

Sto attualmente scrivendo qualcosa su github, ma è tutto da rifare. Mi sono comprato un buon libro di progettazione Uml e Patterns ed ho scoperto che conoscere il codice in fondo serve a poco se non si sa progettare...

Il progetto sarà openSource, se qualcuno vuole divertirsi con noi è ben accetto.
https://github.com/PandoraSyste

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte