Soletta Project

Soletta Project is an open source framework for making IoT applications

Technologies
c, python, javascript, machine learning, networking
Topics
robotics, internet of things, drones, portable, makers
Soletta Project is an open source framework for making IoT applications

Soletta Project is a framework for making IoT devices. With Soletta Project's libraries developers can easily write software for devices that control actuators/sensors (I2C, SPI, UART, GPIO, ADC, PWM and others) and communicate using standard technologies (OIC, CoAP, HTTP, MQTT, LWM2M, Mavlink and others). It enables adding smartness even on the smallest edge devices.

Portable and scalable, it abstracts details of hardware and OS, enabling developers to reuse their code and knowledge on different targets. The framework has ports done to the following targets:

  • Linux
  • Zephyr OS
  • RIOT OS
  • (Partially) Contiki OS

By writing a Soletta application, it's a matter of parametrising specific OS values, like GPIO pin numbers and such (Soletta already eases that task) and, with a makefile that builds with the respective toolchains/SDKs, the same application would be functional for all supported targets.

One of the ways Soletta exposes of writing applications is by flow-based programming (FBP), which allows the programmer to express business logic as a directional graph of nodes connected to type-specific ports.

The connected node ports will exchange information packets (IP) that will be used to run the flow. The packet can be either empty, used just to trigger an action, or carry a value such as booleans, integers, floats and even complex data types such as blobs. Ports can decide if the packets they produce will be queued or replaced if they were not consumed by target ports when a new packet is to be produced.

For those used to traditional object oriented programming (OOP) it's like using the observer pattern on source nodes, calling the associated data getter which is then forwarded to target nodes by calling their setter. However this is done by the core in an efficient and safe way as no memory leaks, type mismatch or invalid memory access can happen.

Besides that, Soletta exposes all its functionality on a C API, so that FBP is not mandatory.

2016 Program

Successful Projects

Contributor
Vladimir
Mentor
cmarcelo, Bruno Dilly, ceolin
Organization
Soletta Project
Implement go bindings for soletta
Go is a programming language with a design focused on simplicity, effectiveness and performance, that is widely used in all kind of projects. With...
Contributor
bsmelo
Mentor
Bruno Dilly, Gui.Iscaro, Iscaro
Organization
Soletta Project
sol-lwm2m: Implement missing features
Soletta has its own implementation of the lightweight machine to machine (LWM2M) protocol. The LWM2M protocol is used to remotely control IoT...
Contributor
kamidi_preetham
Mentor
Bruno Bottazzini, Bruno Dilly
Organization
Soletta Project
Implement Auto-complete for Soletta Dev-App
The project aims to implement live auto-complete support for Soletta Dev-App. Soletta Dev-App uses Ace editor which already has auto-complete...