It's all very well having a set of tools that can be used to build a back end for Internet of Things applications, like Microsoft's Azure IoT Suite. What you also need are devices that are ready to use with it, and more importantly, a path from those prototype devices to products.
So it wasn't surprising to see Microsoft use its recent Build 2016 conference to launch a selection of IoT developer kits based on a range of different chipsets and operating systems.
Microsoft's made the sensible decision to partner with well-known maker companies to launch its first certified devices. They include Seeed, Adafruit, and Sparkfun, with devices based on a range of different chipsets including the popular ESP8266 and Intel's Edison. The kits come with a collection of sensors, as well as online tutorials with sample code hosted on GitHub.
Open the box of one of the starter kits and you'll find a maker board, a selection of sensors and LEDs, as well as jumper wires and connectors. The Edison board comes with a Grove shield and a selection of sensors that plug straight into the shield's connectors -- as well as an LCD display and a set of solenoids.
That means you can start to build devices that have both inputs and outputs, showing users what they're doing in conjunction with the Azure cloud service. The Adafruit and Sparkfun devices come with breadboards so you can start adding your own hardware, designing and building your own sensor sets using devices from any electronics store or catalog.
That's the most important thing about these devices: you're not constrained to building any one project (or for that matter using either of the prebuilt solutions from the Azure IoT Suite).
They're pure 'maker' hardware, ready for freeform experimentation and for engineers to start using as the heart of a sensor project. What's key to them all, however, is that Microsoft has chosen to build its starter kits around connected boards, all with built-in Wi-Fi (or in the case of the Raspberry Pi 2 boards, with bundled USB Wi-Fi adapters).
At Build I had the opportunity to try out one of the Intel Edison-based starter kits, using it to build a simple connected temperature monitor that delivered data via Wi-Fi to a pre-configured Azure IoT Suite service. Microsoft provides Azure IoT Suite users with two sample services: one for predictive maintenance, and one for remote monitoring. The sample remote monitor takes temperature and humidity readings from a device, and uses them to trigger alerts using Azure's Stream Processing and Event Hub services, as well as graphing the results in real time on a hosted web site.
It takes about ten minutes to configure the remote monitoring service, with Azure automatically provisioning the services and websites needed for the application. Once up and running, a set of software-simulated sensors deliver sample data into the service, so you can see how to tune business rules and take appropriate actions based on a stream of data. As well as adding additional simulated sensors to the service, there's the option of adding custom devices. It's here that you can get the information needed to configure connected hardware.
Connecting a device is relatively simple; you need a device ID, an endpoint URL, and a connection key. While the prebuilt solution I was using manually generated the device settings, in practice you'll use the Azure IoT Suite's device management tools to generate a batch of settings which can then be used to provision devices by delivering the appropriate configuration files before deployment.
It's an odd experience using Linux at a Microsoft event, but the Intel Edison hardware we were using doesn't support Microsoft's own Windows 10 IoT Core release. Instead the hardware is preconfigured with Yocto Linux, with an Arduino-compatible board for the Edison module.
Before powering up, I connected a temperature sensor to one of the Grove shield's analog ports. Initial configuration was over a USB serial connection, using the open source PuTTY terminal software. Once connected to the device, I was able to configure its built-in Wi-Fi and then download node.js. Again, while I was using the Yocto Linux's interactive shell, in practice any device configuration would use protocols like TFTP to download appropriate configuration files without any manual intervention. It's impractical to use interactive configuration tooling at scale; any more than ten or so devices really need an automated provisioning process.
Microsoft has provided the files needed for the Azure IoT Suite sample app on GitHub, so you can download them directly onto the device using wget. Once downloaded, I could quickly edit the sample file to add the configuration data I'd generated on Azure, before installing node.js and running the sample code. Once running, the device delivered temperature data to the Azure IoT application, with data logged to the serial terminal as well as over Wi-Fi. Again, this manual approach to setting up device software is impractical at scale, and you'll want to take advantage of the Azure IoT Suite's rapidly improving device management tooling for simplicity and security.
Sample code like this glosses over the complexity of building a service around Azure Stream Analytics and Event Hubs. However, it's an example of the type of IoT application that can be built quickly and cheaply using off-the-shelf hardware. Maker boards like the various IoT start kits Microsoft is selling with its partners are a powerful tool for prototyping hardware and software, before making decisions about the type of devices you'll be deploying in your own Internet of Things.
Microsoft's IoT Starter Kits are a good way of getting to grips with the hardware side of the Azure IoT Suite. They're easy to use, and have enough online documentation to get you started.
By opting for devices with Wi-Fi connectivity, Microsoft is making sure that you're able to build sensor platforms that work directly with its cloud. At the same time, it's also delivering hardware that offers familiar I/O capabilities, and that's compatible with a wide range of shields (and HATs) as well as widely available sensors and actuators.
The resulting solution is an affordable on-ramp to cloud-scale IoT. By focusing on working with Azure IoT Suite, Microsoft is bypassing the hobbyist nature of many IoT implementations in favor of hardware that's designed to solve business solutions at scale. While you may be building one or two device prototypes with an IoT Starter Kit, you're actually starting a process that may well end with thousands of custom devices that are designed to solve a specific business problem.
Microsoft is betting that IoT is no longer purely the domain of hobbyist makers. But it's not forgetting the value of their experience. Instead of bypassing them, by delivering a set of maker-friendly starter kits, it's hoping to link their hardware skills with its Windows-based cloud software platforms. It's a bet that could well pay off for everyone involved.