Recently Insider preview for Windows 10 IoT Core is released, which shows that Microsoft Windows 10 IoT Core team is continuously working to bring a new OS for a specific purpose and providing a series of releases with useful updates. This version of Windows 10 supports x86/x64 and ARM based SOCs thereby providing low cost and small foot print IoT devices. As an Embedded/IoT enthusiastic/ professional, I was curious to know the special features of this version of Windows claimed with a suffix “IoT”. Interestingly I went through an Intel Gateway fact sheet where Windows 10 IoT Core is mentioned as an OS for their gateways. So I thought to evaluate the OS from this aspect. I share my findings here.
A basic functionality of the IoT Gateway
includes devices/sensors connectivity, device management, cloud connectivity,
Edge or local computing and data security in various levels.
Device Connectivity
IoT Gateway support device connectivity protocol
which differs from basic connectivity protocol like a TCP/UDP etc. In addition
to providing basic connectivity it should be able to connect and handle smart
devices. Microsoft integrates a wonderful fast growing IoT framework called Alljoyn
, currently maintained by Allseen
Alliance .Microsoft is a premier member of this alliance. Of course Alljoyn
has SDK for variety of OS and languages but the advantage here is, Windows 10
IoT has adopted the Alljoyn framework as
an inbuilt services and developed a set of managed Alljoyn
APIs which can be accessed through Universal Windows Platform APIs (UWP). Alljoyn
support two type of framework, One is Standard and another is thin client. The
difference is, Standard has a router layer available which is opt choice to run
on gateway devices. Thin client has small foot print and opt choice for small
devices which has limitation on processing and memory capabilities ( For
example, a micro controller based device with low memory running on .NetMF
has a support of Alljoyn Thin client), it doesn’t have a router and it is
depending on a gateway device which routes to other connect devices. You can
see a top level picture of device connectivity on Windows 10 IoT Core gateway.
Fig: Device Connectivity through Alljoyn |
All Alljoyn compliance devices (devices
running Alljoyn standard/thin client on top of it native firmware) can be
connected between them through the Windows 10 IoT Core Gateway device either
through Wired or Wireless. Bluetooth
LE stack, Wi-Fi
are supported to connect wireless devices/sensors and also supports wired
sensors through UART, I2C, SPI, GPIO and PWM buses. In fact all the legacy OS
supporting these buses through drivers but have to develop custom API set to
expose it for application. Otherwise it has to use a standard stream APIs suchs
as CreateFile, Open, DeviceIoControl etc. from your application which requires
dedicated guidance for each OEM/device vendors for accessing these buses (It is
a pain point in even earlier version of Windows Embedded OSs ) in their devices.
The advantage on Windows 10 IoT Core is, all these buses can be accessed
through a pre-defined managed APIs through UWP (for example Windows.Devices.I2c
is a namespace for I2C bus) ).
Device Management
Adding devices to gateway network
Device management involves on-boarding new
devices, it provides a standard way to get Alljoyn compliance devices into a
Wireless network (Gateway’s network). You can find the Sample application for
on boarding the devices from the below github link.
Configure devices
Next step is to configure the device added
in to the Gateway network. Configuration services allows you to configure certain
attributes of the devices. To know more about this, see the Configuration
services in Allseen Alliance. I couldn’t find a sample code for this
configuration services for Windows 10 IoT Core but we have an excellent tool to
generate the library code for alljoyn services using Alljoyncodegenerator.exe, by
simply providing the introspection file as an input to this tool. You can find
the introspection file for alljoyn configuration services in the below link.
Copy the content and save it as an
org.alljoyn.Config.xml and provide this file as an input to the
alljoyncodegenerator.exe command. See the link to know more information about alljoyn code
generator tool.
Alternatively, Alljoyn code generator tool is now an add-in for visual studio which make your work more simple. you can see the below channel 9 msdn post for more details.
Alternatively, Alljoyn code generator tool is now an add-in for visual studio which make your work more simple. you can see the below channel 9 msdn post for more details.
In addition to that we have alljoyn support notification services which allows text-based notifications to be sent and received by devices on the AllJoyn network and a control panel services which allows devices to advertise a virtual control panel to be controlled remotely.
Support for Legacy devices
Okay. We can connect and manage the devices
which are compliance with Alljoyn framework. How about connecting the existing devices
which is already adopting legacy protocols? To address these challenges and broaden the
reach of AllJoyn, Microsoft
developed the concept of a Device System Bridge
(henceforth DSB). The DSB enables
non-AllJoyn devices to be included in the AllJoyn ecosystem. You can find the white paper related to Alljoyn
DSB here. Microsoft provided DSB samples for Zwave Adapters, BACNet Adapters
and a Mock Adapaters. You can find the samples of the Alljoyn DSB in the github
here.
Fig: Connecting Legacy Devices through Alljoyn DSB
|
Cloud Connectivity
Microsoft Azure show cases an end to end dedicated
service for IoT such us service bus,
event hub
and recently Azure
IoT suite is released which includes a special service called IoThub. We can
access these services through HTTP/s, AMQP/s protocols. In fact, the IoT hub can
be accessed through MQTT protocol, where legacy devices are using this. Azure SDKs
are available for accessing these services from Windows 10 IoT Core. Azure also
covers services like stream
analysis for real data analytics (collected through the above services from
the gateway/ sensors Devices) and Machine
Learning based on predictive analysis. Okay, Let’s stop here on IoT cloud
services because that the topic to discuss separately. Here is the SDK links.
Nuget package for Services Bus & Event
hub SDK that can work for Windows 10 IoT Core - https://www.nuget.org/packages/AzureSBLite/
.This is developed by fellow Windows
Embedded MVP Paolo Patierno.
Azure IoT Hub SDK - https://github.com/Azure/azure-iot-sdks/blob/master/csharp/readme.md
Also I have done a demo project for accessing Eventhubs from Windows 10 IoT Core. Here is the link - Windows 10 IoT Core on Raspberry Pi 2 – Adafruit Sensor data to Event Hubs
Also I have done a demo project for accessing Eventhubs from Windows 10 IoT Core. Here is the link - Windows 10 IoT Core on Raspberry Pi 2 – Adafruit Sensor data to Event Hubs
Local/Edge Computing
Gateway should have a capability of
performing edge/local computation on the data collected from sensors for decision
making, filtering the data to be pushed to cloud etc. Windows 10 IoT Core application
development is based on Universal
Windows Platform application which allows you to develop variety of head/headless
application. The advantage of UWP is you can re-use the same application in all
version of Windows 10 covering from PC, mobile to devices like gateways etc. Some useful links related to UWP apps.
- Windows 10 IoT Core Samples
- UWP Github Samples
- HelloWorld Application for Windows 10 IoT Core
- Unavailable Universal API list for Windows 10 IoT Core
Security
Security can be provided at various level
in the gateway. Device connectivity/ Management required security which is
provided by Alljoyn Framework. See the below link to know more about security
provided by the Alljoyn framework.
Cloud Connectivity requires security
features which is supported by Microsoft Azure while accessing the cloud from
the Gateway. You can information about Azure IoThub security here.
Service Bus secure connection - https://msdn.microsoft.com/en-us/library/azure/dd582773.aspx
Windows 10 IoT provides certified application
installation. Windows IoT Team is committed to provide Enterprises grade security
for IoT devices, Soon you will see secured Boot and Bitlocker encryption in the
IoT builds. Please refer the blog “What’s
next for Windows 10 IoT Core” for future updates.
Bottom Line
Hope
I have provided an insight about the capabilities of Windows 10 IoT Core and
why it can be a good choice for building the IoT Gateway devices. But still
Windows 10 IoT Core is under development and at present it supports the limited
number of SOCs
like Raspberry Pi 2 and Minnowboard Max. We can expect more SOCs support for
Windows 10 IoT Core in near future hopefully.
How does Microsoft define the internet of things (IoT)?
ReplyDeletePlease refer this page for details. you can visit this page for cloud based solutions
ReplyDeletehttp://www.microsoft.com/en-in/server-cloud/internet-of-things/overview.aspx
This is for windows On devices.
https://dev.windows.com/en-us/iot