Do you have to interact with your devices from the Internet? or from a mobile phone? Tired of building web servers in small microcontrollers only for switching some relays, leds, or controlling a servo? Tired of using platforms where you need to build and submit complete HTTP requests to post data to the Internet? Bored of parsing JSON or XML in your devices? If you have answered to some of this questions to yes, this is your platform, and you can start testing it in https://thinger.io. Just request a beta access key to start connecting your devices.
As a maker and developer, I started connecting things to the internet some years ago. There were not many alternatives to providing fast, easy, and cheap connectivity to our devices, and we were tied to some specific and expensive modules. Nowadays we can find several cheap alternatives, like TI CC3200, and ESP8266, and the tend is to have any device or sensor connected somehow to the Internet (you all know the Internet of Things).
In this transition I started to look the way of connecting things to the Internet, in the way the devices or sensors can be managed remotely (actuating and sensing), or transmitting information or alarms to third party services, mobile phones, push notifications, and so on. I found that there are several alternatives from different vendors to provide closed clouds for the connection (mainly for interoperate with their custom hardware), and some open source initiatives. None of them fits in he idea I have about how a device should be connected to the Internet, mainly from the point of the developer. I get scared when I look at some code examples in different platforms just for turning on and of a led from the internet, or for sending a temperature report. I see tons of platforms relying in the same old idea of making HTTP request to a cloud platform.... or parsing a bunch of JSON data or strings for just discover what is the command to run with their parameters. Who loves working and programming with this platforms and libraries? Not me! (not to mention the poor performance in terms on power and traffic consumption).
In this way, I started to think in different ways of interaction. Something easier for the developers, so doing simple things do not become a nightmare. Something that is compatible with practically any hardware, from small microcontrollers like Arduinos, to devices with more capabilities like Intel Edison or Raspberry Pi. And of course, something that can become an open source platform. This way born the https://thinger.io platform.
At this moment I have been working so hard in the server side (creating a fully C++ ASIO server from scratch), creating some client libraries for the platform (for Arduinos, ESP8266, Raspberry Pi, Intel Edison, etc), defining and creating the encoding protocol between the devices and the server (named as protoson), and creating a frontend so the users can manage and handle their devices easily. Some of this code is already available in Github, but I am in the process of opening the platform in an alpha state to some users... So this is just the beginning on building a open source platform for the IoT.
Here you have two short videos that illustrates the current functioning of the thinger.io platform. The first video is a full example of connecting a ESP8266 device (Node MCU) to the platform for reading a DHT11 sensor from the Internet. The whole process does not requires more than 4 minutes, including registering the device, compiling and uploading the sketch, and interacting with the device from the Internet. It demonstrates how easy is to define new resources in the device and how to interact with them from the Internet.
The second one is a TL;DW example of controlling a led from the Internet using an Arduino Nano with the Adafruit CC3000. You can see more details in the second video.
The thinger.io platform is composed by two different parts at this moment. The first one is the backend, that is a multithreaded server...
Read more »
There has been a great deal of value to me in my involvement with the project. Would like to share it with the speed test orange team so they can also read it and implement something new.