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
  • (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.

lightbulb_outline View ideas list


  • c
  • python
  • javascript
  • networking
  • machine learning


comment IRC Channel
email Mailing list
mail_outline Contact email

Soletta Project 2016 Projects

  • kamidi_preetham
    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...
  • Vladimir
    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...
  • bsmelo
    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...