Veniamo all'implementazione software di netToken.
Il codice è composto da un loop principale dove viene verificata la chiamata da un client esterno, cioè dal browser. Il microservo agisce semplicemente quando la pagina web generata da Arduino viene chiamata in HTTP GET, senza alcuna necessità di passare parametri nell'url.
Ovviamente questa tecnica è molto primitiva, ma non avendo altra necessità oltre a quella di far muovere il braccetto fino a premere il pulsante del token per poi farlo ritornare in posizione iniziale, non ho previsto la possibilità di interpretare comandi inviati dal client.
Visualizzazione post con etichetta Domotica. Mostra tutti i post
Visualizzazione post con etichetta Domotica. Mostra tutti i post
lunedì 8 dicembre 2014
netToken - parte 1: il progetto
Questo strano progetto nasce dall'esigenza di condividere tra più persone un token crittografico. Cos'è un token crittografico si fa presto a dirlo: è un piccolo dispositivo dotato di un display numerico che in modo temporizzato offre all'utente un numero valido per pochi secondi, che deve essere utilizzato per le operazioni di internet banking (cioè una one-time-password).
E' tipicamente usati sia dai siti di onbanking che dalle molte app mobile che ormai tutte le banche mettono a disposizione ai clienti in un'ottica di multicanalità.
Tale numero è univoco e viene generato in un certo istante da quel particolare token con una validità di pochissimi secondi, il che permette alla banca di garantire che chi usa quel numero per accedere sia per forza fisicamente in possesso di quel token, che tradotto in criteri di sicurezza significa avere una certezza in più che la persona che accede è probabilmente il cliente che possiede il token crittografico.
Per chi ne volesse sapere di più, passo la palla a wikipedia, non era questo l'argomento che volevo approfondire. Sappiate solo che il token non comunica con alcunchè ed è semplicemente sincronizzato alla nascita con un server.
Completo il quadro dicendo che la mia azienda si occupa tra l'altro proprio di sviluppo di app mobile per il settore internet banking.
Ebbene, proprio per questo nel mio ufficio ci sono più programmatori che lavorano sulla stessa app contemporaneamente (su due piattaforme: iOS ed Android) e per testare quello che scrivono utilizzano un ambiente di test che la banca ha messo a disposizione con delle credenziali di prova che simulano in tutto e per tutto l'ambiente reale. E come non poteva mancare il token crittografico dato che il tutto deve essere il più realistico possibile?
Immaginate ora queste persone che devono continuamente passarsi l'un l'altro il token per fare test diversi sulla stessa utenza! Semplicemente scomodo ed inefficiente.
Come risolvere il problema? Con questo semplice "coso", che ho chiamato semplicemente netToken.
netToken serve per controllare remotamente via web il token, in modo da permettere la pressione del tastino che lo fa accendere e mostrare per qualche secondo un nuovo numero, catturandone l'immagine remota via webcam, il tutto utilizzabile sia dal un browser desktop che dal un dispositivo mobile.
E' tipicamente usati sia dai siti di onbanking che dalle molte app mobile che ormai tutte le banche mettono a disposizione ai clienti in un'ottica di multicanalità.
Per chi ne volesse sapere di più, passo la palla a wikipedia, non era questo l'argomento che volevo approfondire. Sappiate solo che il token non comunica con alcunchè ed è semplicemente sincronizzato alla nascita con un server.
Completo il quadro dicendo che la mia azienda si occupa tra l'altro proprio di sviluppo di app mobile per il settore internet banking.
Ebbene, proprio per questo nel mio ufficio ci sono più programmatori che lavorano sulla stessa app contemporaneamente (su due piattaforme: iOS ed Android) e per testare quello che scrivono utilizzano un ambiente di test che la banca ha messo a disposizione con delle credenziali di prova che simulano in tutto e per tutto l'ambiente reale. E come non poteva mancare il token crittografico dato che il tutto deve essere il più realistico possibile?
Immaginate ora queste persone che devono continuamente passarsi l'un l'altro il token per fare test diversi sulla stessa utenza! Semplicemente scomodo ed inefficiente.
Come risolvere il problema? Con questo semplice "coso", che ho chiamato semplicemente netToken.
domenica 26 gennaio 2014
Interfacciare Arduino alle Philips Hue - parte 2 - il progetto
Prosegue la mia sperimentazione con le Philips Hue. L'idea di base era quella di rimpiazzare una lampada rotta in ufficio dotata di sensore di movimento (pir) e di luce, in grado di autonomamente determinare la presenza di una persona e di accendere le lampade fluorescenti dimmerandone la luminosità in funzione della reale illuminazione naturale della stanza.
Per replicare il funzionamento ho pensato di interfacciare le Phlips Hue con una scheda Arduino Ethernet, un sensore di presenza di tipo infrarosso (pir) e un sensore di luce.
Questa volta ho fatto la spesa su Exp-Tech che ha prezzi in linea con il resto del mercato, ma con un assortimento e disponibilità decisamente sopra la media.
Per una contenuta spesa di 71 euro ho portato a casa anche una Skeleton Box, ovvero un piccolo case trasparente in metallo e plexyglass tutto montabile senza viti, con dei semplici rivetti in plastica a pressione.
Il primo prototipo lo potete vedere in questa foto:
Come ben visibile, i due sensori li ho volutamente lasciati appesi all'esterno con del filo di ferro, in modo da poterne facilmente variare l'orientamento.
In particolare il sensore PIR è quello più delicato, in quanto pur avendo una copertura su quasi 180°, di fatto ha una copertura "a macchia di leopardo", per cui è bene avere ampia libertà di posizionamento per evitare poi malfunzionamenti una volta posizionato in modo definitivo il case.
domenica 12 gennaio 2014
Interfacciare Arduino alle Philips Hue - parte 1 - le REST API
Sono arrivate in ufficio questa settimana le Philips Hue, per la precisione lo started kit acquistabile sull'Apple Store.
Non sono delle comuni lampade a led, bensì della lampade dotate di trasmettitore a standard ZigBee a sua volta interfacciato con un accessorio denominato Bridge, che ha il compito di dialogare con tutte le lampade "a tiro di fucile" e mettere a disposizione il controllo delle stesse su rete Ethernet.
Per gli utenti meno smaliziati è disponibile una app gratuita chiamata appunto Philips Hue, che permette di pilotare le lampade singolarmente o a gruppi (fino a un massimo di 50 lampade), scegliendo la colorazione in base a una qualsiasi foto caricabile nell'app e trascinando le icone rappresentanti le lampade sul punto desiderato all'interno dell'immagine o foto. Il risultato, immediato, è il cambio di colorazione della lampada con l'esatta tonalità scelta.
Questo il video ufficiale di Philips:
Questo il video ufficiale di Philips:
lunedì 23 dicembre 2013
Domotica in mezzora: dimmerare un led dall'ipad via wifi (NetIO app) - parte 2
L'app NetIO su iPad non necessita praticamente di alcuna configurazione.
E' necessario esclusivamente utilizzare lo stesso account usato sul sito http://netio.davideickhoff.de/editor per poter caricare l'interfaccia disegnata con il designer UI.
Appena lanciata l'applicazione è sufficiente "scrollare" l'iPad per aprire il menu di gestione. In alternativa è possibile fare uno swipe a 2 dita dal basso verso l'alto, tecnica sconsigliata perchè è davvero facile che l'iPad interpreti il comando mostrando il menu rapido di iPad introdotto con iOS7.
dopo aver inserito le credenziali, appariranno i layout salvati online.
Il file di configurazione in formato json può essere salvato dal web tramite il pulsante Download.
Questo il mio layout mostrato nel post precedente:
{
"name": "test1",
"connections": [
{
"host": "192.168.5.50",
"port": 2560,
"name": "board",
"initialsend": "Local"
}
],
"version": 1.3,
"device": "iPad",
"type": "NetIOConfiguration",
"pages": [
{
"sound": "active",
"name": "Arduino",
"items": [
{
"comment": "Fire light ON button",
"sends": [
"LED9 on"
],
"top": 20,
"height": 80,
"width": 160,
"shape": "rounded",
"left": 20,
"type": "button",
"icon": "lamp_on",
"interval": 2000
},
{
"comment": "Fire light OFF button",
"sends": [
"LED9 off"
],
"top": 110,
"height": 80,
"width": 160,
"shape": "rounded",
"left": 20,
"label": "",
"type": "button",
"icon": "lamp_off"
},
{
"comment": "Fire lights slider",
"minValue": 0,
"textcolor": "0,0,0",
"sends": "set brightness {value}",
"parseResponse": "\\d+",
"top": 300,
"maxValue": 255,
"height": 450,
"width": 30,
"reads": "get brightness",
"showValue": true,
"type": "slider",
"left": 20
},
{
"offSend": "LED9 off",
"parseResponse": "\\d+",
"top": 200,
"offText": "Off",
"height": 50,
"width": 100,
"reads": "LED9 status",
"onValue": "1",
"onText": "On",
"onSend": "LED9 on",
"type": "switch",
"formatResponse": "{0}",
"left": 20
}
],
"label": "Home",
"width": 1024,
"connection": "board",
"background": "NetIOTest iPadbackground.png",
"sounds": "keyboardsetting",
"height": 768
}
],
"orientation": "landscape",
"navigation": "fix",
"pagebuttonwidth": "static"
}
Dopo il caricamento i comandi saranno subito operativi, a patto che il vostro server arduino risponda correttamente via rete. In caso di comunicazione non possibile, tutti i controlli della vostra interfaccia rimarranno inesorabilmente in stato disabilitato e quindi di colore grigio.
Purtroppo non ho trovato il modo per gestire dinamicamente l'indirizzo direttamente dall'iPad, per modificare l'indirizzo del server è necessario modificare l'oggetto Connection da Designer UI e poi ricaricare il layout sull'iPad. Un'altra cosa su cui stare attenti è che non è sufficiente uscire e rientrare in NetIO per veder caricata la nuova versione dell'interfaccia, ma è necessario aprire il menu, aggiornare (tasto con le frecce) e ricliccare sull'interfaccia da caricare.
Test del sistema
Per effettuare il test del sistema agite sui bottoni:
i due pulsanti in alto permetteranno di accendere e spegnere il led. L'interruttore farà esattamente la stessa cosa. Lo slider rappresenta la funzione più interessante perchè ci permetterà di dimmerare, ovvero accendere parzialmente il led, modificandone la luminosità proporzionalmente alla posizione dello slider. Se torniamo al codice del post precedente, si può notare come semplicemente il valore dello slider viene letto come valore nel range 0-255, che viene poi inviato alla porta 9 come valore analogico, e quindi come segnale pwm.
sabato 21 dicembre 2013
Domotica in mezzora: dimmerare un led dall'ipad via wifi (NetIO app) - parte 1
Un piccolo esempio di domotica: voglio controllare l'accensione/spegnimento e luminosità di un led pilotato da Arduino, tramite iPad in rete wifi.
Potrebbe essere l'esempio per un sistema base per il controllo delle luci in un ambiente o per altre periferiche tipiche dei sistemi domotici (porte, finestre, climatizzatore, ecc).
L'esempio è molto semplice e non richiede la programmazione su iPad. Infatti la programmazione in ambiente iOS richieste conoscenze specifiche e l'ambiente XCode. Al di là della difficoltà di approcciare a un ambiente IDE diverso da quello di Arduino, anche presupponendo di saper programmare in objC in ambiente XCode, è richiesto un certificato per sviluppatori per poter installare l'app creata sul proprio device, senza questo è possibile unicamente utilizzare l'emulatore sul Mac.
Per riuscire in mezzora a creare una app utilizzabile da tutti senza scrivere mezza riga di codice, utilizzerò l'app NetIO disponibile in AppStore a questo indirizzo https://itunes.apple.com/it/app/netio/id464924297?mt=8 . Il costo è modesto, meno di 7 euro, e considerato i risultati che permette di ottenere in pochissimi minuti la consiglio caldamente.
Iscriviti a:
Post (Atom)



