Few days ago Microsoft was included in the ranking of the 10 most innovative companies of 2015 as part of the Internet of Things and this result can not be absolutely considered a case. Most likely, the main reasons that have enabled Microsoft to achieve this great result are two :
The announcement of an operating system like Windows 10 that is able to run on any kind of device, from embedded systems, smartphones, tablets, gaming consoles and finally to the PC;
The wide Microsoft Azure cloud services offer through which you can "accommodate" and analyze in real time the huge amount of data from the "things";
The Microsoft offer for the Internet of Things covers everything from embedded device (the "T") to the Cloud (the "I") failing to provide a solution under one "hat".
What are the available technologies ? How can we really "bring" our "things" in the Cloud and make them an integral part of the Internet of "Your" Things as it was renamed by Microsoft ...
Finally the new M2Mqtt 4.1 version is out !
In the last months, my library was under pressure thanks to my friends Olivier Vigliengo (from Adeneo) and Nicolas Besson (Microsoft MVP on Windows Embedded, from Adeneo). They used the MQTT client for their hobbistic projects and stressed it a lot !
After exchanging a lot of emails with log traces, I fixed some bugs and added some improvements to the library.
In this post we'll see a big difference on "string interning" mechanism between .Net Framework and .Net Micro Framework ...
Developing on all versions of the .Net Framework (full, compact and micro) I have always the portability problem and I avoid to use methods that are not available in one of three framework or using directives for precompilation.
It never happened a case where the method exists in all the frameworks but the parameters have a different meaning ... are even reversed !!
The method in question is the overload Regex.Split(String, String, RegexOptions) !
After about a month of work during my free time, it's finally time to release the new version of the M2Mqtt library (126.96.36.199) and the related GnatMQ broker (0.9.3.0 Beta) with the MQTT OASIS 3.1.1specification support (in addition to some bug fixes).
Who knows the MQTT protocol, used in the Internet of Things market, also knows that the reference project for it is Paho of the Eclipse Foundation.
In this large list, until a few days ago, an implementation in C# usable on .Net and WinRT platforms was missing . This gap was filled with my M2Mqtt project that is now officially under Paho umbrella for which I’m officially a committer !
This time the M2Mqtt library has undergone some "important" changes in terms of new features and bug fixing. I have to admit that the improvements are mainly due to the people who use it and report me to add new features or bugs to fix. In addition to several issues reported on CodePlex, this time also Clemens Vasters, PM on Microsoft Azure, submitted some improvements to be applied in the context of SSL / TLS authentication. In fact, as already tweeted several weeks ago, Clemens used my library to run tests on the Reykjavik project (Device Gateway) presented at Build in 2014 and I can only be honored.
In this case, the improvement is closely related to the .Net Framework version, since it is the only version to support what has been added. In particular, the MqttClient class makes available other constructors which can provide the following callbacks :
RemoteCertificateValidationCallback : allows the user to execute further checks on the validation of the ...
The M2Mqtt library is now at 188.8.131.52 release with the new tracing feature in debugging mode.
The project has the new Trace class that exposes the static member TraceListener declared as the following delegate :
1: // delegate for writing trace
2: public delegate void WriteTrace(string format, params object args);
In this way, it is possibile to chose our preferred tracing mode setting a method to this delegate. Furthermore, it is possibile to set the tracing level using thet static member TraceLevel with the following possible values :
1: /// <summary>
2: /// Tracing levels
3: /// </summary>
4: public enum TraceLevel
6: Error = 0x01,
7: Warning = 0x02,
8: Information = 0x04,
9: Verbose = 0x0F,
10: Frame = 0x10
A simple example of tracing usage could be the following :
1: Trace.TraceLevel = MqttUtility.TraceLevel.Verbose | MqttUtility.TraceLevel.Frame;
2: Trace.T ...
Finally, the M2Mqtt project, which includes the client library and the GnatMQ broker, has its official website !
In addition to a dedicated blog, there is a documentation section that currently contains the architecture description of the client library, the main advantages in using it and a simple application example. As for the broker, are the main features implemented and future.
In addition, the download section lists all the link to download the project (CodePlex, Nuget and Microsoft Code Gallery).
My objective is also to add a "case study" section with application examples, hobbistic or professional, and/or demos of those who are using the library and/or the broker. Obviously, anyone who wants to participate can contact through the contact section !
Development of M2Mqtt library continues .... now reached the version 184.108.40.206 !
This time the new features are related to two requests from people who are using it.
First, I added more overloads for Connect() method, because from when I removed the default parameters (for compatibility with older versions of the .Net Framework) I left the more complex constructor that requires all parameters. Many people, not knowing well the MQTT protocol, found themselves in difficulty in deciding what values to pass to lesser known parameters (will message, clean session, ...).
A further new feature concerns the client disconnected event (from the MQTT broker) that was requested on the official CodePlex web site. The MqttClient class exposes MqttMsgDisconnected event that is raised when a condition of connection failure with the broker is detected and typically in two cases :
when there isn’t network traffic, when client sends the PINGREQ message (relative to the keep-alive) it doesn’t receive ...