Arduino Ciao is made of two parts: a simple and lightweight library usable while writing sketches for the MCU and a core developed in python that runs over the CPU/MPU side of the board.
This part of Arduino Ciao is defined Ciao Core: it's a powerful software that receives commands via serial communication from the MCU and interacts with several modules (called connectors) for communicating with network protocols, third-party services and platforms.
Ciao Core is totally modular and configurable. It provides several "connectors" to interact with local resources (filesystem, console, memory) and to communicate with most common protocols (XMPP, HTTP, WebSocket, COAP, etc..) and applications (Jabber, WeChat, Twitter, Facebook, etc.).
The CPU/MPU side of Ciao is composed by the Ciao Core and several connectors. Till now we developed only a few of them but the core component has been designed and developed to support as much connector as you can possibly imagine.
Ciao has a core multi-threaded component developed to interact with MCU and to act as a router with all enabled connectors.
It communicates with MCU via the serial shared with the CPU used like a console (ttyATH0). A simple but effective string encoding has been developed to make MCU communicate with CPU with no limits on the number of enabled/registered connectors.
The Ciao Core is started and handled by the MCU.
A connector is a standalone module that communicate with Ciao Core component via TCP using JSON.
Connectors can be developed in whatever programming language you like.
They are classified in two types:
- managed: started/stopped by the Ciao Core;
- independent: started/stopped manually (or automatically) software that connect to Ciao Core when it's available.
Every connector has at least one configuration file to provide Ciao Core some mandatory information:
- what's the name of the connector?
- is the connector enabled/disabled?
- what features does the connector provide (read, write, writeResponse)?
Such configuration files are stored under the configuration directory of Ciao Library: /usr/lib/python2.7/ciao/conf/
List of Connectors
Please check Ciao Connectors page to discover connectors already available and to learn how to setup them.
Develop new connectors
As stated above Ciao Core has been designed to be modular, in this way anyone can develop one (or more) connector for its own needs.
Connectors can be developed in any programming language, compatible with TCP protocol and JSON strings, available on LininoOS. Further information on how to develop new connectors and to interact with Ciao Core via TCP are provided at the following page.