• RSS
  • Add To My MSN
  • Add To Windows Live
  • Add To My Yahoo
  • Add To Google

IoT, Arduino, REST e Cloud … su HTML.it 

Posted by Paolo Patierno Friday, July 18, 2014 7:53:51 PM
Rate this Content 0 Votes

0871_Cattura_6DB192D2

Giunti al nono capitolo della guida introduttiva su Arduino, possiamo finalmente toccare con mano la nuvola !

In particolare, si parte dalla realizzazione di un semplice client HTTP REST su Arduino attraverso il quale poter trasmettere nel Cloud i valori di temperatura rilevati dal relativo sensore e letti attraverso il driver sviluppato nei capitoli precedenti. La nuvola che ospita il servizio di acquisizione dati è ovviamente Azure attraverso una semplice applicazione ASP.NET MVC4 Web API.

M2Mqtt 3.5 : .Net MQTT client con un miglior supporto SSL/TLS, altri miglioramenti e licenza Apache 2.0 ! 

Posted by Paolo Patierno Friday, July 18, 2014 1:03:04 PM
Rate this Content 0 Votes

Questa volta la libreria M2Mqtt ha subito alcune modifiche “importanti” sia in termini di nuove funzionalità che di bug fixing. Devo ammettere che i miglioramenti sono dovuti soprattutto alle persone che la utilizzano in maniera assidua e mi segnalano nuove funzionalità da aggiungere o bug da risolvere. Oltre ad alcuni problemi segnalati su CodePlex, questa volta anche Clemens Vasters, PM su Microsoft Azure, mi ha sottoposto alcuni miglioramenti da applicare nell’ambito dell’autenticazione SSL/TLS. Infatti, come già twittato molte settimane fa, Clemens ha usato la mia libreria per eseguire i test sul progetto Reykjavik (Device Gateway) presentato a Build 2014 ed io non posso che esserne onorato.

Autenticazione SSL/TLS

In questo caso, il miglioramento è strettamente legato alla versione per .Net Framework, poiché è l’unica versione a supportare quanto è stato aggiunto. In particolare, la classe MqttClient mette disposizione altri costruttori ai quali è possibile fornire le seguenti callback :

  • RemoteCertificateValidationCallback : permette all’utente di effettuare ulteriori controlli sulla validazione del certificato ricevuto dal server oltre a quelli già eseguiti dal sistema. Utile nel caso di debugging e di utilizzo di certificati self-signed, in modo da accettare a prescindere la connessione con il server;
  • LocalCertificateSelectionCallback : permette all’utente di selezionare in maniera opportuna il certificato client da trasferire al server in caso di mutua autenticazione durante l’handshake SSL. Il certificato può essere selezionato da un pool di certificati locali oppure creato “a volo” direttamente nella callback;

Per maggiori informazioni, è possibile fare riferimento alla documentazione MSDN ufficiale.

Nel caso del costruttore più complesso (con entrambe le callback), un esempio di applicazione può essere il seguente :

   1: MqttClient client = new MqttClient("<server_name>", 8883, true, ValidateServerCertificate, SelectClientCertificate);
   2: ...
   3: ...
   4:  
   5: bool ValidateServerCertificate(object sender, 
   6:                         X509Certificate certificate, 
   7:                         X509Chain chain, 
   8:                         SslPolicyErrors sslpolicyerrors)
   9: {
  10:     bool valid;
  11:     // check sslpolicyerrors and execute your certificate validation
  12:     ...
  13:     ...
  14:     return valid;
  15: }
  16:  
  17: X509Certificate SelectClientCertificate(
  18:                       Object sender,
  19:                       string targetHost,
  20:                       X509CertificateCollection localCertificates,
  21:                       X509Certificate remoteCertificate,
  22:                       string[] acceptableIssuers)
  23: {
  24:     X509Certificate cert;
  25:  
  26:     // choose client certificate from local store or creating new one
  27:     ...
  28:     ...
  29:     return cert;
  30: }

Costruttori obsoleti e tracing

Per cercare di semplificare la creazione dell’oggetto client, i costruttori che ricevono in ingresso un IPAddress sono stati “marcati” con l’attributo Obsolete. Infatti, tutti gli altri costruttori permettono di specificare in ingresso un indirizzo IP o un host name in formato stringa; sarò carico del costruttore verificare di che tipo si tratta e nel caso di host name effettuare una conversione ad indirizzo IP attraverso DNS.

Per quanto riguarda il tracing, alcune persone hanno segnalato che nella versione Nuget questa funzionalità non visualizzava il contenuto di ciascuno messaggio scambiato ma il tipo del messaggio; ciò era dovuto al fatto che la libreria Nuget è compilata in modalità Release ma i messaggi di trace erano attivi in Debug. La versione attuale fornisce il tracing sia in debug che release in quanto è legata al simbolo TRACE (e non più al simbolo DEBUG) che è definito in entrambe le configurazioni. Ovviamente, il tracing è sempre legato alla definizione di un TraceListener da parte dell’utilizzatore.

Bug fixing

I principali bug risolti sono stati segnalati sul sito CodePlex da alcuni utenti e di seguito riporto i riferimenti :

Conclusioni

La libreria è in continua evoluzione grazie alla community e molto presto includerà il supporto per MQTT 3.1.1 che tra poche settimane sarà standard OASIS. L’ulteriore passo è la licenza passata da L-GPL ad Apache 2.0 !

Come sempre potete trovare la versione aggiornata su CodePlex, Nuget e Microsoft Code Gallery. Infine, è stato ovviamente aggiornato anche il broker GnatMQ alla versione 0.9.1.0 ed il progetto M2Mqtt4CE.

Windows Developer Program for IoT ufficialmente partito !! 

Posted by Paolo Patierno Saturday, July 12, 2014 2:22:07 PM
Rate this Content 0 Votes

Capture

Seppure ne fosse stata annunciata l’esistenza dopo Build 2014 e subito dopo all’evento O’Reilly Solid, il programma “Windows Developer Program for IoT” è ufficialmente partito ieri !

L’annuncio è stato dato dal program manager, Steve Teixeira, sul blog di Windows sottolineando il lancio del nuovo portale Windows Developer for IoT e l’inizio della spedizione degli evaluation kit costituiti dalle board Intel Galileo con a bordo una versione specifica di Windows che supporta le API Arduino ed un sottoinsieme delle Win32.

Inoltre, sul sito della Microsoft Open Technologies è specificato che l’SDK sarà presto rilasciato in parte come open source.

Per chi si fosse già iscritto al programma, non gli resta che aspettare l’arrivo del kit direttamente a casa ma può iniziare a farsi un giro sul nuovo portale che già mette a disposizione tutte le informazioni sull’SDK con relativi esempi applicativi !

Azure Nodes : i servizi di Microsoft Azure in Node-RED ! 

Posted by Paolo Patierno Wednesday, July 09, 2014 1:20:24 PM
Rate this Content 0 Votes

azurenodes2

Dopo aver scritto l’articolo relativo all’installazione di Node-RED attraverso un Web Site in Microsoft Azure, ho deciso di iniziare un altro “piccolo” progetto open source strettamente legato alla “flow-based programming” con Node-RED utilizzando i servizi di Microsoft Azure.

Partendo dall’ Azure SDK per Node.js mi sono posto la seguente domanda : perché non mettere a disposizione degli utilizzatori di Node-RED tutti i servizi di Microsoft Azure nei loro “flow” ?

Da qui è nata l’idea del progetto Azure Nodes !

Questo progetto, disponibile su GitHub, aggiunge una serie di nodi (di colore “azure”) alla toolbox di Node-RED attraverso i quali poter interagire con i servizi di Microsoft Azure. La versione attuale è ancora in Beta e supporta esclusivamente le funzionalità del Service Bus (queue e topic/subscription) molto utili nell’Internet Of Things.

sample_topic_sub_flow

La documentazione è disponibile nelle pagine di Wiki relative al progetto stesso anche se l’utilizzo dei nodi è notevolmente semplice ed intuitivo.

sb_queue_in_node

Ci sono ancora molti (toppi ?) messaggi di debug visualizzati sulla console di Node.js ma voglio prima capire se il progetto può essere considerato valido ed interessante per gli utilizzatori. Per questo motivo, non esitate a contattarmi e darmi la vostra opinione !

Ovviamente, ho già provveduto ad attivare l’account Twitter @azurenodes !

IoT, breve introduzione alla scelta del protocollo … su HTML.it 

Posted by Paolo Patierno Friday, July 04, 2014 11:32:54 PM
Rate this Content 0 Votes

Capture

Il percorso della guida introduttiva sullo sviluppo su Arduino si fa sempre più interessante, nell’avvicinamento al Cloud. L’ultimo capitolo appena pubblicato è una brevissima discussione sulla scelta del miglior protocollo per l’Internet of Things. Ovviamente, non è possibile ridurre un discorso complesso in pochissime righe ma è fondamentalmente utile per comprenderne l’utilizzo nei capitoli successivi. Il vasto panorama dei protocolli per l’IoT andrebbe affrontato con una guida a parte, considerando la sua ampia gamma di attori in gioco.

Page 6 of 47 << < 1 2 3 4 5 6 7 8 9 10 20 > >>