Gadgeteer Internet of Things API
I came across this CodePlex project recently, and given Gadgeteer is pretty cool, the Internet of Things is pretty cool and have lots of source is cool, well...
Internet of Things is emerging as a reality as we are moving into an era where technology and internet connectivity is becoming ubiquitous and pervasive. Internet of Things has received significant attention from 2008 when Cisco announced that the number of things connected to the Internet has exceeded the number of people on the world. Furthermore, Intel Corporation has predicted that the number of these things connected to internet will be 31 billion by 2020. Currently, many cloud based services are offered for Internet of Things, but these platforms do not have native support for the .Net Gadgeteer platform. Therefore, this project is aimed at providing Internet of Things API and services for .NET Gadgeteer prototyping platform to ease the development effort involved in creating IoT based application.
Gadgeteer Internet of Things API (Application Programming Interface) is developed with having the vision of creating a network of globally connected devices and providing a rich feature set in the form of APIs to simplify device discovery, device registration, logging sensor derived data and data retrieval functionality for Gadgeteer and other hardware platforms. This project offers well-documented APIs and libraries to developers with medium level programming skills to get them started with developing applications based on Internet of Things.
Microsoft Research has sponsored this project to investigate the use of Microsoft .NET Gadgeteer Platform and analyse the difficulties involved in data management, visualization and privacy issues associated with projects related to IoT and .NET Gadgeteer Platform. The main deliverable of this project includes Internet of Things APIs which provides data logging functionality through cloud-based web service and APIs to retrieve the data for performing big data analytics and visualization. Additionally, another important deliverable of this project is the Gadgeteer library, which provides functionalities like data buffering in case of network connectivity failure, data logging and other library methods to facilitate easy and seamless communication with the cloud services; thus simplifying the process of data management and application development of a hardware developer. Moreover, the deliverables also comprise of some use case scenarios which will be discussed further in section 5.8 of the group report. These use cases demonstrate how to use the APIs and Gadgeteer library to implement different scenarios with ease. Another stand out feature of this project is the intuitive design of the website where a lot of effort has been put to make it as user friendly as possible.
This project contributes to Microsoft .NET Gadgeteer community with APIs and libraries which developers can use to create a network of connected devices with ease; this includes device management, device status monitoring, data management, notification management and library for .NET Gadgeteer platform. A number of students from UCL CS department work on .NET Gadgeteer platform every year and they spend significant time on setting up the infrastructure for gathering data from the hardware devices. This project will help in addressing those difficulties by using our platform and API to reduce their development effort and let them concentrate more on their application. In addition to .NET Gadgeteer devices, this system also supports a wide range of other hardware devices such as Engduino, Arduino and Android by adopting a generic and scalable architecture using REST. This project is published as an open-source project in Codeplex through which other developers can contribute to this project and also make use of the services and libraries that we have developed.
Make sure you check out the Documentation
1. Technical User Guide
This section aims to help developers who wish to extend this project in the future. Our project consists of different layers, the website, the web service API and the Gadgeteer library. It takes a great deal of effort to recreate the development environment for all these layers to extend their functionalities in nature. Code management is one of the hardest tasks in software engineering and having understood this, we have listed all the software requirements and steps involved to setup the development environment for all these layers.
1.1. Web Service
The web service project is an azure cloud service project which can be easily packaged and deployed in azure. Since it is a cloud service project, it has certificates and keys associated with corresponding azure accounts. Therefore this project cannot be used within another account. In this section we will discuss about software requirements, steps to setup the environment and the required configuration changes to run the application.
• Windows Azure Account
• Windows Azure SDK for .NET 2.0
• Visual Studio 2012 Update 3
• Pusher Sandbox Account
• Azure SQL database
• Azure virtual machine
• MongoDB server
1.1.2. Steps to setup the Project:
I mentioned code?
Now get building!