IOTTLY + Arduino / Raspberry Pi / Udoo (and similar boards) = IoT project for business, education and creativity will be as easy as pie
WHAT IS IoT AND WHY DO WE CARE
- something in between a walkie-talkie and a universal remote control for the things of everyday life, operating via internet
- a collection of technologies that will enable the control and use of any object of everyday life, even those which have not been built for that purpose
- a technological revolution, in which we would like the largest possible number of people to be able to participate in now, so that everyone, understanding how it works, may play an active role in it
WHAT WE AIM: THE IOTTLY PROJECT
The IoT Openness
If you search for "Internet of Things" (IoT) on Google, you get a zillion hits. Even without reading all the technical reports produced by analysts and research organizations operating in the IT world it is clear that currently this is the subject of much talk, accompanied by bold predictions, complex definitions and elaborate comments. It is not easy, at the same time, to fully comprehend what this new buzzword implies, and how it will find its proper place in society and in the world of business.
For us, "IoT" is all about enabling individuals and business companies to control, manage, and communicate with remote objects in a creative and productive way, whether it be for profit or just for fun.
As we all know, the Internet changed everything by connecting computers at first, and then by connecting people, thus affecting the way we live and how we do business. Now the time has come to connect also with the infinite number of "things" that make up our daily lives. And this change is going to impact our world in a much more dramatic way. Right now “IoT Platform” is a label associated with all kinds of systems: from closed to proprietary systems, from partial to industrial systems. Systems entirely operated by third parties, or systems that require a set of highly specialized technical skills.
We are convinced that, because of the disruptive nature of this technology, it is essential that we work towards making it accessible to the largest possible number of people, with the help of tools that share the following qualities: interoperability, usability, ethical transparency and environmental safety.
We define this community commitment the “IoT Openness”
This is the reason why we are developing the IOTTLY project, to achieve IoT Openness with two significant steps:
- By creating an IoT platform
designed as an Open Source Software Distribution (Distro) that supports the creation and development of Internet of Things projects, making it easy to connect, manage and program board like Arduino, Raspberry Pi, Udoo via Internet.
- By supporting a community that is going to collaborate
to further develop this Distro, and share IOT projects which can be for professional prototyping or for DIY
IOTTLY will enable professionals, educators and makers to implementat IoT projects in the same way that distributions like Ubuntu have made it easy for millions of people to use Linux. It should be easy for technical experts to focus on the core aspects of a specific ICT project (and entrust IOTTLY with the communication details), and, at the same time, it should be easy for the average users (non technicians are welcome!), so that one of the building blocks of the new technological revolution can be truly accessible to everyone.
- Are you a professional? IOTTLY provides an on-line code editor together with the Over-The-Air firmware upgrade, enabling the develop-deploy-test paradigm, getting firmware development close to the Dev-Ops and Continuous Integration approaches.
- Are you an educator? IOTTLY provides an on-line App to control your interactive projects, which is the ideal tool for educational programs that foster the creation and refinement of relevant skills, applicable to Internet data communication with and among physical objects.
- Are you a maker? IOTTLY provides an on-line, easy to use code generator, compatible with all the Arduino/Raspberry Pi/UDOO Libs already available. Seamlessly adapt your sketches to make them Internet-enabled.
Moreover, IOTTLY is fully Open Source, so that you can install a copy of it on your server or on your notebook.
Before we get to the IOTTLY Distro's technical insights, we need to provide a few more details.
What is an Internet of Things project?
To develop the Internet of Things we first need "Things", animate or inanimate, such as a sprinkler that waters the lawn only when needed, or a house gate that opens whenever a familiar guest arrives, or an umbrella stand that warns us when it starts raining, or a shoe that tells us where we walked, or a thermostat that knows which room we are going to next, etc. Things that, for one reason or another, we want to make smarter and use more efficiently by enabling a remote Internet connection.
Those “things” include two groups:
- “Native smart things” which can be a device (like Nest, Peeple, etc.), or can be attached to another device, such as a smartphone (like Parrot Flower Power, AwareCar, etc.). Normally these things already have a control/management system or a dedicated app.
- “Adoptive smart things” which are connected to a board, or to sensors (e.g. a humidity sensor to check if a lawn needs to be watered) and actuators (like the mechanism that turns on your sprinklers), that are connected to a board.
The range of possible examples goes from DIY house projects to industrial applications. To allow "Adoptive smart things" to communicate (which is what we are interested in), we usually need a Board, such as:
- a Microcontroller Board (Arduino, Teensy, Touch Board, Particle Core, WiPy, etc.)
- or a Single Board PC (Raspberry Pi, UDOO, CHIP, Arduino Yun, etc.)
- or a proprietary board for various industrial uses (Siemens, ST, Oregon Scientific, etc.)
The Board allows you to "talk" with the Things. These are the preconditions:
- the board must be connected to the Internet via LAN, WiFi or a cellular network (at least this is the case for IoT project);
- the board must follow a "Communication Protocol" (such as MQTT, COAP, XMPP, HTTP, etc.);
- you must teach the board a "language" to define the meaning of the messages that will be exchanged using the communication protocol.
Imagine a letter delivered by airmail (the Internet), which is contained in a special type of envelope (the communication protocol), and contains a message encoded in the language of the reader.
The language and the communication protocol are transferred onto the board by uploading an appropriate firmware. The firmware, in addition to the communication component, also includes the logic component, which enables it to perform its functions reliably. This is very important, because a Thing communicating via Internet is definitely an example of IoT, but if it has nothing to do, then it is... Internet of no-thing!
Generally the IoT platforms available on the market today leave it to the user to program and perform this task, which often requires fairly advanced skills.
At this point, the Board is able to make the Thing “talk” via Internet with the help of a communication software that can be installed in the cloud, on a server, or on your device. Everything is managed via a web application or a resident application.
WHY IOT PROJECTS ARE SO HARD
Because they are made up from hardware, firmware, communication and useful functions for the users. Moreover, logic and useful functions cannot just “live in the cloud”. They should be implemented “on the field”, near to whatever relevant is happening out there:
- to benefit from real-time high frequency data captured by sensors
- to build reliable solutions for critical industrial applications
- to reduce action latency and bandwidth consumption
- to make the data actionable even if the connection is discontinuous
But maintaining and changing useful functions while they live on the field, raises important issues:
- what happens if the device won’t reboot?
- what happens if firmware is corrupted during transfer?
Ultimately we know that an IoT project will stuck against firmware issues as soon as it matures from a prototype to a critical application and … putting it on the cloud won’t just be enough. And even if a prototype is enough, you’ll need to get involved with firmware development anyway.
IOTTLY - IoT Open Source Distro
Designed for industrial applications (general service areas and advanced production), for makers (current and future), and for anything or anyone in between.
WHY OPEN SOURCE
- open source plays a key role in building a truly interoperable IoT solution
- open source enables collaboration and collective creativity
- open source puts the user and his freedom at the center of software development and we are committed in contributing a step forward in the direction of accessibility
- “Not only cloud”: with open source it comes the freedom to use IOTTLY on our cloud, or to deploy it on your cloud, or install it wherever you like (on premise)
WHY AN IoT PLATFORM AS “DISTRO”
The creation of a new IoT project starts with the selection of a board from a preset list:
- IOTTLY-enabled firmwares are made available for download and can be flashed onto the board (done via USB only once, at the beginning).
- As soon as a board is switched on, it connects automatically to IOTTLY. From that point on the Over-The-Air firmware upgrade is enabled.
- Messages are drafted and annotated by using the Message Designer. IOTTLY automatically generates the firmware code to handle all incoming and outgoing messages.
- The code editor allows the user to edit the code and add the necessary business logic to the firmware. IOTTLY integrates with git and GitHub, to enable the collaborative management of firmware sources from within the editor itself.
- IOTTLY takes care of compiling the firmware code on the server, maintaining all the configurations for each preset Board compiler.
- The Device Admin Console is automatically configured with previously defined messages, and, by relying on the built-in functionality of the firmware upgrade, newly developed functions can be instantly deployed and tested.
Key features of IOTTLY:
- IOTTLY handles communication with the boards, taking care of all the technical aspects (protocols, security, project-specific message semantics);
- IOTTLY supports developers and makers in the full cycle of coding > building > deploying over the air;
- IOTTLY features true bidirectional communication with the boards.
The IOTTLY core provides a secure and reliable communication and management layer:
We are well aware that some people (including a famous leader of the current technological revolution), looking at the diagram above might say that “it looks like every other IOT stack out there.”
However, a careful consideration of the technical details allows you to grasp the uniqueness of the whole project. The main ideas are described in detail in the links included in the following list.
- IOTTLY overall specifications Implementation details.
- IOTTLY Brokers are server-side physical implementations of communication protocols.
- IOTTLY DATA MODEL Model describes the fundamental entities involved in the design and management of IoT projects, and the relationships among such entities.
- IOTTLY Reliable Message Queue All the building blocks of the IOTTLY Distribution will communicate using IOTTLY's Reliable Message Queue.
- IOTTLY Polyglot implements the interaction between IOTTLY Core and each IOTTLY broker.
- IOTTLY History storage is the physical database where incoming messages from the devices are stored.
- IOTTLY Trust is the integrated security layer responsible for authenticating and authorizing every single actor communicating within IOTTLY.
- IOTTLY RESTful APIs are the way IOTTLY exposes its core functionalities to third-party applications and IOTTLY tools.
- IOTTLY Message designer is an editor which helps project creators draft and annotate the messages which will be exchanged with the devices.
- Device admin console provides real-time administrative control of the devices.
- Config tools are the pages used to configure specific data for Organizations and Projects.
- Ready-to-use control app IOTTLY provides a ready-to-use web Control App, available on both desktop and mobile devices.
- Custom logic flows provide server side programming and execution of event driven logics
The Kickstarter campaign (the first step of the IOTTLY project)
A project like ours is very ambitious, but, if its development is carried out in isolation, it cannot achieve its target of contributing to the realization of IoT Openness. For this reason it is essential to have a community that collaborates and supports this process. We believe that collaboration always leads to improved innovation. We value the contribution from all the great minds of the Kickstarter community, and we need your support and feedback in order to make our project better and stronger. Do you have any suggestions? Then be a part of our community and send us your comments as soon as you can. We cannot succeed without you! Without your support, all our efforts and energies would be spent in vain. We need you!
Without your support, all our efforts and energies would be spent in vain. We need you!
HOW WE WANT TO DEVELOP WITH YOUR HELP
IOTTLY for Makers as the lite release of IOTTLY.
The diagram shown below indicates what we want to achieve during the initial stages of our project, with the help of the funds generated by this campaign:Click here to watch a short tutorial about how to use IOTTLY to manage a LEGO motor from the Internet and to try the example by yourself.
We will use the funds raised from you to build the following:
* well, first of all ... the IOTTLY for Makers !!!
* IOTTLY library for Arduino IDE
* Python libraries for Raspberry Pi and UDOO
* IOTTLY customized Raspberry Pi image (based on Raspbian)
* Distro IOTTLY for Makers, available in the cloud on iottly.org
* Publishing the source code of IOTTLY for Makers on Github
How to use IOTTLY for MAKERS
IOTTLY for MAKERS is super easy to use!!
You are ready to use the control App to send and receive messages from your board in five simple steps:
IOTTLY for MAKERS automatically writes the code that allows you to send to a board the commands it must execute and the answers it should send back: the code is translated into C/Wiring for Arduino, and Python for Raspberry Pi and UDOO.
IOTTLY for Makers Community
Our aim is to establish around IOTTLY a seamless educational and professional community that would grow according to the functional challenges posed by IoT technologies. We will support that community through the creation of an educational website that will provide resources to get up and running with IOTTLY and its developing tools at different levels of expertise, with examples that makers will be able to share and elaborate on. Instructors and students will be supported in their teaching and learning efforts.
Pietro Terna Retired Professor of Economics, University of Torino
Dmitriy Ofman BS in Computer Engineering, Embedded software engineer and web developer
Thanks, thanks, thanks!!!
Many thanks to our dear friends for their pertinent suggestions. We owe several beers to these people: Giancarlo Capella, for his competence and intuition when it comes to firmware problems and their solution; Raffaele Passannanti, for his creativity and vision in front-end development and scalable architectures; Piermassimo Aversano, our lifesaver in the stormy seas of tax issues.
We wish to thank above all our families (Elena, Lorenzo, Francesco, Elisa, Leonardo and Alessia, Mariachiara, Francesco, Tommaso)! They have supported us and they have been extremely tolerant during the last three months, when we disappeared from their everyday lives to work on this campaign. You are the best families that anyone could ever have.
Finally, we wish to express how grateful we are to have been working together, because whatever the outcome of this adventure will be, we will always share the memories of the most exciting experience of our lives and of our enduring friendship.
Stefano e Daniele
Risks and challenges
Based on their many years of professional success in delivering challenging and large-scale IoT/Machine Learning projects, our team, with his long-established collaborations with freelancers, is confident that the IOTTLY for Makers will be released on schedule. Progress updates will be announced to all our backers, including possible drawbacks affecting the planned software release timeline.Learn about accountability on Kickstarter
- (38 days)