Month: February 2014

MQTT Client + Inflight Queue = M2Mqtt 3.0 !

La mia libraria open source M2Mqtt è finalmente giunta alla versione 3.0 con due novità importanti !

In primo luogo le operazioni di publish, subscribe ed unsubscribe sono diventate completamente asincrone. Fino alla versione precedente, i corrispondenti metodi erano sincroni seppur la libreria sollevasse i relativi eventi di messaggio pubblicato e sottoscrizione/desottoscrizione avvenuta. In particolare, nel metodo Publish() veniva gestito lo scambio di messaggi con il broker per garantire il QoS richiesto (PUBACK per QoS 1, PUBREC, PUBREL e PUBCOMP per QoS2) mentre nei metodi Subscribe() ed Unsubscribe() veniva gestito l’acknowledge (SUBACK e UNSUBACK). Adesso, questi metodi si preoccupano di inserire un messaggio in una coda e ritornano immediatamente l’id del messaggio stesso; per questo motivo c’è un “breaking change” sul metodo Subscribe() che non ritorna più l’array con i QoS level “granted”. Tale array viene comunque fornito al termine dell’operazione asincrona nell’event args del corrispondente evento.

Ho parlato di coda ? Ebbene si ! Ho aggiunto la gestione della inflight queue !

Il concetto di inflight queue è ben presente nel mondo MQTT e viene utilizzata per gestire tutti i messaggi relativi alle operazioni di publish, subscribe ed unsubscribe. La nuova versione della libreria ha un thread dedicato che si occupa di gestire questa coda, garantendo l’esecuzione asincrona delle operazioni suddette e lo scambio dei messaggi di acknowledge con il broker in base al QoS desiderato. Grazie a questa coda, inoltre, nel caso del QoS Level 2, il flusso viene ripreso dal punto in cui era stato interrotto qualora cadesse la connessione con il broker (non è comunque gestita la persistenza della coda).

Un’ulteriore modifica riguarda l’aggiunta di un unico thread per sollevare gli eventi della libreria (nella precedente versione veniva creato un thread “a volo” per ciascun evento).

Spero di aver fatto cosa gradita per tutti coloro che usano questa libreria….ed a quanto pare non sono pochi !

Ovviamente, è come sempre disponibile su CodePlex, Nuget e nella Microsoft Code Gallery !

Microsoft Embedded Conference 2014 : anche la seconda edizione è andata alla grande !

Sabato 15 Febbraio è andata in scena la seconda edizione della Microsoft Embedded Conference che si è tenuta presso l’Holiday Inn di Napoli ed organizzata dalla community DotNetCampania di cui sono membro insieme a TinyCLR.it ed Embedded101, la community online di riferimento su Windows Embedded di cui, a partire da Novembre 2013, sono un “board of director” member.

Anche quest’anno c’è stata una buona affluenza di partecipanti nonostante fosse Sabato, anche perché l’argomento principe era l’Internet of Things e la M2M Communication di cui si sente parlare insistentemente nell’ultimo periodo come il business del futuro per la grande rete.

8750.1798736_10202466587658439_1394143997_n_thumb_137C73D8 1307.WP_20140215_08_58_39_Pro_thumb_668710FC
6406.WP_20140215_09_05_37_Pro_thumb_1EC58815 5100.WP_20140215_09_35_49_Pro_thumb_5703FF2D

Alle ore 8:00, il team era già pronto per i preparativi e l’organizzazione in modo da poter accogliere egregiamente i partecipanti e garantirne l’inizio in perfetto orario. Come per tutti gli eventi, abbiamo iniziato con la keynote del nostro presidente Michele Aponte, che ha presentato la nostra community, ed al quale ho dato supporto io per la parte di descrizione dell’agenda della giornata.

7585.WP_20140215_09_05_05_Pro_thumb_2433F8B9 4035.WP_20140215_09_42_35_Pro_thumb_2765E0A1
8640.1660895_10202466530457009_1226687914_n_thumb_268D7AB7 8233.WP_20140215_11_09_09_Pro_thumb_1A8B8A83
5025.WP_20140215_10_50_42_Pro_thumb_31D68EF4 7563.WP_20140215_10_34_38_Pro_thumb_30FE290A
7266.WP_20140215_09_04_44_Pro_thumb_693CA022 8156.1797336_10202466548937471_1904813788_n_thumb_68643A38
0825.1653735_10202466528416958_982574380_n_thumb_7C7D56C1 5025.WP_20140215_11_46_52_Pro_thumb_34BBCDDA

La mattinata è iniziata con la sessione di Valter Minute, come sempre un ottimo mix di conoscenza ed esperienza oltre che ilarità. Valter ha introdotto l’Internet of Things prendendo come spunto un potenziale “flirt” tra una lavatrice ed uno scaldabagno che in un futuro prossimo potranno comunicare senza alcun problema. Interessante la sua demo sull’interconnessione di una board Toradex al Cloud (in questo caso quello di Amazon). A seguire, la prima parte della sessione che ho tenuto io insieme a Lorenzo Maiorfi e Mirco Vanini; è stata completamente teorica ed ha visto protagonisti i principali protocolli per l’IoT, tra cui in evidenza MQTT, ed il fantastico strumento per la realizzazione di flussi quale è NodeRed. Dopo l’intervallo e la mini sessione del nostro sponsor “principe”, AVNET Embedded, con Cesare De Siena, la nostra sessione è ripresa con tutta la parte pratica relativa alla demo con lampade, ventole e buzzer che si azionavano grazie al sistema messo in piedi per l’occasione !!

8168.1947871_10152160961833567_567087922_n_thumb_53FE74AD 1881.IMG_20140215_144446_thumb_1A0F31C1
1222.WP_20140215_15_28_28_Pro_thumb_6B49791E 4540.WP_20140215_15_28_36_Pro_thumb_3F68FF62
3858.WP_20140215_16_31_27_Pro_thumb_77A7767A 7266.IMG_20140215_163200_thumb_16EA1D4E

Subito dopo la pausa pranzo, con l’immancabile pizza tra “amici”, il pomeriggio è ripreso con la sessione di Beppe Platania e Gianni Rosa Gallina sul sistema  Sense3 per show-room e congressi basato su Kinect e realizzato dalla BEPS Engineering. L’ultima sessione “italiana” ha visto protagonista Marco Dal Pino, con un’interessantissima introduzione alle nuove POS API per Windows 8.1. Ho parlato di ultima sessione “italiana”, perché la giornata è stata conclusa nel miglior modo possibile da una sessione online, direttamente dagli USA, di Samuel Phung, uno dei principali MVP su Windows Embedded a livello mondiale. Grazie a Live Meeting abbiamo potuto azzerare le distanze che ci separano ed averlo “virtualmente” con noi.

Nel complesso, l’evento ha avuto un ottimo riscontro sempre in relazione ai complimenti ricevuti dai partecipanti al suo termine. Un grazie particolare va ad Antonio Liccardi per la gestione della logistica, a Michele Aponte e Carmine Alfano per tutta la parte Web ed al resto della community che ha pubblicizzato al meglio l’evento. Siamo veramente un gran bel team !

Ovviamente, un grazie a tutti gli speaker, che a titolo completamente gratuito e con lo spirito “community” che li contraddistingue hanno portato con se il loro enorme bagaglio di conoscenza ed esperienza (non dimentichiamoci che erano presenti tutti gli MVP italiani su Windows Embedded). Infine, un grazie agli sponsor che hanno permesso e garantito l’organizzazione dell’evento stesso !!

A breve saranno disponibili le slide e le demo delle sessioni sul sito ufficiale dell’evento, nell’attesa che trascorra un altro anno per poter organizzare la terza edizione !!!

Channel9 : libreria NFC per tutte le piattaforme Windows Embedded su Coding4Fun

2548.Cattura_thumb_20B302B0

Questa volta Creg Duncan ha dovuto dare più spiegazioni del solito per giustificare la prima presenza molto assidua sul blog Coding4Fun !

“Today’s Hardware Friday post is another project from our Friend of the Blog, Paolo Patierno (yeah, yeah, I know, it seems like I’m posting his stuff all the time, but hey, it’s cool stuff) !”

Sono contento che i miei “piccoli” progetti open source riscuotano un discreto successo e questa volta è toccato alla libreria uNFC che implementa il supporto al chip NFC PN532 della NXP per tutte le piattaforme Windows Embedded (dal .Net Micro Framework a Windows Embedded 8 passando per Windows Embedded Compact).

A proposito…questa libreria domani sarà protagonista alla Microsoft Embedded Conference a Napoli in una demo di Smart Home & Smart Factory System !

Come sempre….è un piacere esserci !!

🙂

Il .Net Micro Framework 4.3 QFE1 è tra noi !!

Dopo mesi di attesa ad osservare quotidianamente questo post sul blog ufficiale del team del .Net Micro Framework….finalmente la versione 4.3 QFE1 è sta rilasciata ufficialmente !!

E’ passato più di un anno dall’ultimo rilascio 4.3 in versione RTM ma si spera che con l’avvento dell’Internet of Things, la Microsoft riprenda a supportare al meglio questo prodotto che ha enormi margini di crescita.

Rispetto alla RTM, questi sono i bug fix :

  • Work Item: 1874 – Interop compilation fail for project name with dot (‘.’)
  • Work Item: 509 – Add BitConverter
  • Work Item: 1951 – StringBuilder.Replace Exception
  • Work Item: 2012 – StringBuilder.Replace previous bug resurfaced again
  • Work Item: 1784 – Array.BinarySearch() not accepting null comparer
  • Work Item: 1855 – SDK Installer for 4.3 shows incorrect error message
  • Work Item: 1400 – URI parsing fails when :XX sequence appears and no explicit port is used
  • Work Item: 1738 – var uri = new Uri(value) throws exception if value contains a whitespace at the beginning
  • Work Item: 1904 – System.Uri does not work with “ws” scheme

Si tratta di un rilascio ufficiale e definitivo e l’SDK per l’installazione è ovviamente disponibile su CodePlex !

VS2012 e Platform Builder : “fatal error ! Microsoft.NET Framework v4.x must be installed on your machine”

Oggi, preparando un’immagine di Windows Embedded Compact 2013 per una eBox 3310A e per la demo alla Microsoft Embedded Conference 2014 di Febbraio, il sistema operativo Windows 7 (su una macchina virtuale) decide di aggiornare la versione del .Net Framework dalla 4.5 alla 4.5.1.

Riavvio il sistema e riprendo il lavoro ma … il sistema di build di Visual Studio 2012 è impazzito ed il successivo tentativo di compilazione fallisce !!

2235.fatalerror_thumb_01D24A53

Un warning segnala che il .Net Framework 4.5 non è più installato nel sistema ed un ovvio errore fatale indica che la compilazione non può essere eseguita !

Non ho trovato alcuna notizia ufficiale da parte della Microsoft per risolvere questo problema ma ho aggirato il problema nel modo seguente….

In primo luogo apro il file indicato dall’errore fatale, ossia il sources.ce nel percorso C:\WINCE800\public\common\oak\misc, il quale segnala l’errore nel caso in cui la variabile d’ambiente _DOTNET40ROOT risulta vuota.

!IF “$(_DOTNET40ROOT)” == “”
!   ERROR Error: Microsoft.NET Framework v4.x must be installed on your machine.
!ENDIF

In testa al file, imposto questa varibile al percorso del .Net Framework ossia uguale a C:\Windows\Microsoft.NET\Framework\v4.0.30319.

_DOTNET40ROOT=C:\Windows\Microsoft.NET\Framework\v4.0.30319

Questo primo passo mi permette di superare il blocco nella prima fase di SYSGEN ma il build fallisce ancora, in quanto MSBuild ancora “non vede” il .Net Framework. La soluzione più semplice è quella di impostare il percorso del .Net Framework anche nella variabile PATH (attraverso il pannello di controllo).

7610.cp_thumb_60E3F90D

Dopo questa ulteriore passo, il sistema di build ritorna in se e riprende a funzionare correttamente !

Nell’attesa di un intervento ufficiale da parte di Microsoft, spero che questo workaround possa essere utili a quanti come me si sono trovati davanti questo problema.