Demo “Supervisione Remota Impianti” LIVE!

Posted by Lorenzo Maiorfi Sunday, September 30, 2012 10:15:53 AM
Rate this Content 5 Votes

Nella sessione di martedì 25 all’interno dell’evento Better Embedded 2012 ho presentato diversi piccoli firmware dimostrativi, tra cui:

  • un piccolo “Salve mondo” per Netduino che, con l’ausilio di IL Disassembler, ci è servito poi per addentrarci un po’ nel modello di esecuzione delle applicazioni, in particolare per quanto concerne la gestione degli interrupt, un aspetto “inedito” per chi si occupa di applicazioni .NET “non-micro”
  • un esempio di “percorso evolutivo” nello sviluppo di un semplice modulo software (un driver per un ADC 12 bit con interfaccia SPI prodotto da Microchip): dalla semplice sperimentazione in laboratorio fino, in quattro “passi” successivi, allo sviluppo di una classe driver che, beneficiando della metodologia di sviluppo a oggetti, relativamente “nuova” nel mondo embedded (ed in particolare degli aspetti riguardanti incapsulamento, ereditarietà e polimorfismo), ha consentito di allestire in pochi secondi un’applicazione firmware di controllo di due istanze di ADC (implementati in maniera differente ma compatibili con la stessa interfaccia programmatica) in perfetto stile “IoC”. La solution contenente i 5 step è scaricabile qui
  • un esempio di applicazione IoT (Internet-of-Things) in cui, con l’ausilio di uno “stack” di soluzioni tecnologiche riassumibili in .NET MF (su mainboard Mountaineer Ethernet, a dir poco “rocciosa”) + SignalR (self-hosted in un Windows Service) + HTML/JS/CSS (Twitter Bootstrap, un po’ di jQueryUI per gli slider, Knockout per il pattern MVVM e Toastr per gli alert), si può controllare un sistema remoto (astratto come un insieme di I/O cui si affiancano N canali “stream” full-duplex) con un’interfaccia web “Push” ma sufficientemente “plain” (e “responsive”) per poter essere navigata praticamente da tutte le combinazioni dispositivo/browser esistenti

Dopo aver pubblicato la presentazione PowerPoint utilizzata durante la sessione (che trovate sulla pagina del talk), mi sono ripromesso di pubblicare l’applicazione di supervisione remota per valutarne l’effettiva robustezza in uno scenario di hosting verosimile e soprattutto per valutare le possibili ricadute sulla responsività del sistema con l’aumentare del numero degli utenti che interagiscono simultaneamente con lo stesso impianto.

Quindi, se volete aiutarmi nella sperimentazione del sistema, non vi resta da sapere che:

  • Il demo è disponibile su http://demo.tinyclr.it/demoiot (hosting Aruba, sul server dedicato di tinyclr.it)
  • L’impianto (simulato, ovviamente) è invece “ospitato” a casa mia (servita da una pessima ADSL a 640 Kbit/s scarsi, per di più con una connessione tra scheda .NET MF e router ADSL fatta tramite “scatolotti” Power-Line (ossia bridge Ethernet/220V) della TP-LINK
  • Una volta scaricato il materiale “statico” da IIS, il browser aprirà una connessione (plain http, con chiamate “long-polling”, unica soluzione simil-websocket disponibile in scenari cross-domain) sulla porta 8080 dello stesso host. Su questa seconda connessione avviene tutta la comunicazione tra client javascript e listener SignalR
  • Nelle condizioni in cui ho testato finora l’applicazione il tempo necessario affinché un’azione compiuta sul browser si rifletta sullo stato “fisico” del sistema è di circa 0.1 secondi (!!!). Il tempo necessario affinché un’azione compiuta sul sistema fisico venga notificata ai browser è anch’esso circa 0.1 secondi. Di conseguenza, il tempo relativo alla notifica del feedback di un’azione richiede circa 0.2 secondi dall’inizio dell’azione (ad es. pressione, e mantenimento, di uno dei pulsanti “blu” del tab “Uscite Digitali”)
  • Nella pagina sono mostrati 4 tab, relativi all’interazione con ingressi digitali, uscite digitali, ingressi analogici e uscite analogiche. Nella parte in basso c’è poi un’interfaccia che consente l’invio di messaggi “libero” (è praticamente poco più che una utility di debugging, in questo momento). Inoltre, le notifiche “push” verso i client vengono visualizzate sotto forma di “toast” azzurri che compaiono in basso a destra
  • Nel simulatore di impianto che ho allestito, gli I/O sono mappati come segue:
    • Ingressi Digitali (grigi se inattivi, arancio se attivi):
      1. Pulsante “user” sulla mainboard Mountaineer
      2. Pulsante esterno
      3. Pulsante esterno
      4. Non connesso
    • Uscite Digitali (blu se inattive, arancio se attive, vengono attivate tenendo premuto il pulsante, disattivate rilasciandolo):
      1. Led Verde
      2. Led Rosso
      3. Led Giallo
      4. Buzzer (sarebbe gradito che non fosse suonato alle 2 di notte!)
    • Ingressi Analogici
      1. Potenziometro
      2. Sensore di temperatura
      3. Sensore di luminosità
      4. Non connesso
    • Uscite Analogiche
      1. Frequenza buzzer (PWM modulato in frequenza), da circa 50 Hz fino a richiamare i cani della zona
      2. Dimming (PWM modulato in duty-cycle) secondo Led Verde
      3. Dimming secondo Led Rosso
      4. Non connesso
  • Il sistema comprende un lettore RFID on-board: quando viene rilevato un TAG in prossimità viene “broadcastata” una notifica in tal senso (ehm, non vi sarà facilissimo provare questa funzionalità, a meno che non mi chiediate di “passare” uno dei braccialetti in silicone che uso come campioni mentre siete davanti al browser)
  • Il sistema invia una notifica di “ping” ogni 60 secondi per simulare un’attività schedulata con invio delle notifiche di esito
  • Potete valutare il broadcasting di tutte le notifiche tenendo aperto più di un browser contemporaneamente, ovviamente anche su PC/tablet/smartphone differenti (con lo stesso tab aperto dovreste vedere “feedback” coordinati a seguito delle vostre azioni, ad es. attivando un’uscita digitale o analogica qualsiasi
  • Se proprio volete vedere cosa state combinando, ho “puntato” una webcam sul sistema. Potete darci un’occhiata navigando su http://maiorfi.no-ip.info:84 ed autenticandovi come “tinyclr” (senza password). Tenete conto che la webcam introduce un ritardo di 8-10 secondi e che, soprattutto, lo streaming consente una sola connessione (se l’immagine è bloccata vuol dire che c’è qualcun’altro collegato)!

 

 

Comments are closed on this post.