Some IoT fun with AllJoyn and Microsoft

On July 2nd the AllSeen Alliance announced that Microsoft has joined the group’s multi-company effort as a Premier Member to make it easier for a broad range of everyday devices, objects and services to interoperate seamlessly and intelligently.

AllSeen Alliance members are collaborating on a universal software framework and an underlying peer-2-peer protocol that allows devices to autonomously discover and interact with nearby products regardless of their underlying proprietary technology or communications protocols. Both, framework and protocol-implementations in this framework are made available as part of the AllJoyn open source code project.

I’ve been lucky to take a part in internal Microsoft IoT hackfest in Paris with collogues from all over the world: @joshholmes, @tomconte, @mszcool, @reichenseer, @jmspring, @timpark, @irjudson, @ankoduizer, @rachelyehe and daniele-colonna

In this week we got together, brought a few devices like Intel Galileo, Aurduino, Rasberry PI and Beagleboard. The main purpose was to explore what AllJoyn is about and what we can do with it in combination with Microsoft platform. In the picture below you can see the Beagleboard running the LightLed services, the LightLed Client running on the PC. It was a very interesting and exciting week, we learned a lot. I invite you to read my colleague’s blogs about our learnings and achievements and start implementing IoT scenarios with AllJoyn and Microsoft platform.

Beagleboard

This is the first blog post in a series of my team’s blog posts. In this blog post I will start with explaining what AllJoyn is all about, it’s conceptual model and what a developer has to understand before starting to write code. It is important to mention my resource is the document published by the AllSeen Alliance: Introduction to the AllJoyn™ Framework.

The AllJoyn framework is an open source software system that provides an environment for distributed applications running across different device to communicate together. This system defines a peer-2-peer protocol on-top of existing network protocols as well as an implementation of that protocol in an open-source framework for a variety of platforms.

The AllJoyn system handles the hard problems inherent in heterogeneous distributed systems and addresses the unique issues that arise when mobility enters the equation. This leaves application developers free to concentrate on the core problems of the application they are building.

At its core, the AllJoyn protocol and framework can be used to build up a distributed system, based on DBUS, IP (TCP and UDP) and “Remote Procedure Call” (RPC), when one process running on one device can invoke methods from other process, running on different device[MS1] .

The most basic abstraction of the AllJoyn system is the AllJoyn bus. Processes running on different devices are communicating through the bus. In other words the bus is the communication channel between two different processes regardless of where physical they are running.

In an AllJoyn Network there must be a service (or daemon) running on one of the devices in the AllJoyn Network. The service is connected to the bus where other process can connect to it and communicate. The bus by itself is just a special service (or daemon) that is used as a central communications hub (as mentioned above).

Additionally, the AllJoyn framework, includes a mechanism for Advertisements and discovery. When a service is started on a local device, it advertises its existence to other devices in its network.  Later, client application declare their interest in a specific service and can discover it. All this happens through this bus with a special communications protocol implemented using DBUS and UDP.

The AllJoyn discovery and communication is based on interfaces. Every AllJoyn app, service or client, should implement an interface. The interface is the way for a service to publish what API calls he provides, and for the client to discover the desired service.

After understanding what is the bus, services (daemon) and client process, and interfaces you are ready to start writing some code.

I invite you to read some more about AllJoyn and AllSeen Alliance as well with reading my very smart and talented collogues blog posts planned series:

How-to: setup an AllJoyn Dev Environment on Windows by Rachel Yehezkel

How-to: compile AllJoyn SDK with Visual Studio 2013 on Windows by Mario Szpuszta

How-to: compile AllJoyn Thin SDK with Visual Studio 2013 on Windows by Thomas Conte’

How-to: create a basic Intel Galileo App with VS2013 based on Windows-builds by Daniele Colonna and Thomas Conte’

 Rachel Yehezkel

Rachel Yehezkel, Technical Evangelist, Microsoft