The Cloud and the Internet of Things (IoT) are two of the most exciting areas of computer science right now. The Internet of Things (IoT) is all about small devices with sensors and other components that can both gather data from and interact with the real world. The Cloud is the platform perfect for aggregating together all the data from these IoT devices so it can be analyzed using the clouds massive compute and storage resources.
Microsoft has been positioning itself as a leader in the cloud with the Azure Platform since its initial public availability in the beginning of 2010. Since that time, Microsoft has built out the PaaS, IaaS and SaaS features of Azure to be the enterprise data center of the future. The Azure Platform supports any compute, storage, security and server configuration an enterprise would require without needing to build and maintain an expensive internal data center. Azure offers all this while simultaneously offering a far more affordable and superior SLA.
The Internet of Things (IoT) is an exciting area of computer science with hardware such as Raspberry Pi 2, Arduino, MinnowBoard Max, Intel Galileo and other DIY style devices available today. The IoT ecosystem has reached a really exciting time where the developer/engineer of IoT devices and systems are no longer required to be engineers that need to design all the hardware themselves. Which ever hardware platform you choose there are plenty of “off the shelf” components that can be easily integrated. This “off the self” or commodity hardware for IoT has made the technology more accessible today than ever before!
What is an IoT Device?
An IoT device is any network connected device that can integrate sensors, motors or some other hardware with the network connected pieces of the entire system. A few hardware devices such as Raspberry PI 2, Arduino and MinnowBoard were mentioned above, but these are just a single set of hardware that could be used as IoT devices. The Internet of Things is about far more than just these hardware platforms.
With the release of Windows 10, Microsoft is offering a free version called Windows 10 IoT Core. The Windows 10 IoT Core is a platform that offers the use of all the excellent developer tools from Microsoft (Visual Studio, .NET Framework, C#, etc) for use when developing IoT solutions on top of the various IoT hardware mentioned previously. The combination of Windows 10, developer tools and hardware provide an unprecedented lowering of the barrier to entry for building IoT solutions.
Any network connected device could be used as an IoT device. This means that any PC or Smartphone could be used as an IoT device, in addition to the other custom built devices.
Where does the Microsoft Azure platform fit into all this? IoT is about much more than just some small devices with sensors, motors, etc. All IoT solutions require some sort of backend servers to provide storage and computing resources for analyzing all the data gathered by these devices in addition to controlling / coordinating carried out by these various devices. This is where the Microsoft Azure cloud platform fits in perfectly.
Below is a sample solution architecture to better convey how the Internet of Things (IoT) and Microsoft Azure could fit together within an enterprise.
High Level Example of an Azure IoT Solution
Services like Bing Maps and companies like UPS or FedEx are what most people think of first when discussing Location tracking. However, another type of Location tracking that comes to play for enterprises is tracking personnel and/or assets within a building, not just across the globe. RFID is a technology that can be used for this type of tracking, since GPS generally isn’t accurate down to the level of detail necessary within a building.
To track personnel and assets within a building you first give each one an RFID tag. Then RFID readers are placed at key locations within the building. When ever a person or asset passes an RFID reader the unique identifier of the RFID tag is picked up and then can be logged in a database. On the surface this is a fairly simple solution for tracking the movements and locations of each entity assigned an RFID tag.
The position of the RFID readers within the building are best in areas just inside doorways to rooms, as well as in hallways and even just outside building exits. The room readers will be able to read what RFIDs enter the room. The hallway readers will be able to read RFIDs that approach a room, or just log movement across the building. Lastly the readers just outside building exits will track when personnel and assets might be leaving the premises.
In addition to the readers mentioned, handheld RFID readers (such as connected to an iPhone/iPod, Android or Windows Phone) can be used to specifically scan assets manually. This would be tied to software that would allow for inventory to be periodically taken and for item locations to be updated when they are placed. The software on the handheld device could use an additional RFID tag or barcode to allow the user to easily enter the storage location as well as the assets identifier.
This type of system would be made up of a number of custom built hardware devices (the RFID readers), the handheld mobile devices connected with Wifi, as well as software built to integrate the system with Azure hosted services.
The RFID readers could be built using Raspberry Pi 2 hardware with the software written as a Universal Windows App running on the Free Windows 10 IoT Core operating system. These would also be connected to the local network using Ethernet, as it’s much more reliable than Wifi. The reader would pick up RFID tag readings and send then to Azure Storage. Azure Table storage (or another NoSQL storage solution) would be better than an Azure SQL database since this system is likely to fit into the realm of Big Data. In addition to storing the raw scan data in NoSQL storage, the reading event message would be sent into an Azure Service Bus Queue so that a subsequent message reader can perform any actions that may be necessary based on the personnel or asset that triggered the event.
The Mobile App on the handheld, mobile RFID reader software would be built on the mobile platform chosen (iPhone/iPod, Android or Windows Phone) in a similar fashion to the RFID readers in the way they send the data to be persisted into the NoSQL storage solution. In addition to this, however, the handheld devices would also implement Azure Mobile Services so they can both receive notifications and store data on the local device with additional reporting functionality. It would also be good to integrate an offline mode on the handheld devices so they can still be used if they are unable to connect to the Wifi network for short periods of time.
Once all the data is being scanned and stored up into Azure, the analysis and processing of the data to gain intelligence on it can be done. The first thing required with processing the data would be to implement one or more Message Receivers hosted as an Azure Web Job that monitor the Azure Service Bus Queue for new messages and then store, process and initiate the necessary actions based on the data.
Basic reporting and tracking of the personnel/assets that would be implemented as an ASP.NET MVC application (so it works across platforms/devices on the web) that is hosted as an Azure Web App. This application would provide the primary interface for this functionality, in addition to the some of this same functionality being implemented in the Mobile App on the handheld devices as necessary.
With all of the above built, there are a couple of really innovative Azure services that could be added to this solution to really enhance the overall Business Intelligence over the data. Azure Machine Learning could be integrated to give some predictive analytics over the data, such as tracking the future movements of certain personnel or assets. Second, Azure Stream Analytics could be implemented to better implement real-time analytics over the data as Azure Stream Analytics is built specifically for processing massive amounts of Internet of Things (IoT) data in real-time.
This is just one of a nearly infinite number of potential Enterpirse IoT systems, and is the above is far from a complete solutions architecture document. However, hopefully this paints enough detail on how Microsoft Azure and the Internet of Things (IoT) can be use together to build some really innovative solutions.
Azure and IoT are the Future
Internet of Things (IoT) is still mostly a buzz word, as most people are still working at figuring out what it really means. There have been IoT devices and solutions built for at least the last 20 years, but they have traditionally been fairly expensive to both build and maintain. Additionally, IoT solutions have been fairly difficult to build until the more recent availability of Microsoft Azure and most of it’s services mentioned in the above IoT use case example.
Another driving factor of making IoT cheaper in recent years has been the availability of hardware development platforms like the Raspberry Pi and Arduino. Some may think these aren’t really ready for the Enterprise yet, but their much cheaper price tag surely makes them rather appealing.
Data is a key component to learning how to improve any business. The larger the amount of accurate data, the more intelligent reporting can be done. With the integration of Microsoft Azure and IoT, enterprises can gather “Big Data” amounts of data and utilize services such as Microsoft Azure Machine Learning and Azure Stream Analytics to get the answers to necessary questions that couldn’t be answered before.
Super informative post, Chris! Nice job.