Install and choose a target
Install FlovaSDK for Arduino, PlatformIO, Linux, or a portable C++11 device.
FlovaSDK is distributed as an Arduino and PlatformIO library for ESP32 and ESP8266. Linux applications use the CMake package. A portable device can use the embedded core with its own platform services.
Pick the integration model first
| You have | Start with | The application owns |
|---|---|---|
| A board and no device application | FlovaUniversalEsp32 or FlovaUniversalEsp8266 | Your template and product dashboard |
| An existing Arduino application | FlovaEsp32 or FlovaEsp8266 | Wi-Fi, GPIO, sensors, setup, and the main loop |
| A Raspberry Pi or Linux host | FlovaLinux | The process, event loop, service supervisor, and hardware |
| Another C++11 board or gateway | flova::Device | Link, storage, clock, logger, and board integration |
Use the Quick start if you want a working ESP32 device first. Use this page when you need to select a target or set up a new project.
Arduino IDE and PlatformIO
ESP32 and ESP8266
- Open Tools > Board > Boards Manager.
- Search for
esp32by Espressif Systems and install the board package. - Open Tools > Manage Libraries and install
FlovaSDK. - Select the board and USB port under Tools > Board and Tools > Port.
- Include the common entry point:
#include <FlovaSDK.h>The header selects the ESP32 facade for the selected board. Use
FlovaUniversalEsp32 for a complete device or FlovaEsp32 for an existing
application.
Universal firmware
Use a universal composition when Flova should own the complete device image:
#include <Arduino.h>
#include <FlovaSDK.h>
FlovaUniversalEsp32 device;
void setup() {
Serial.begin(115200);
device.begin();
}
void loop() {
device.run();
}For ESP8266, use FlovaUniversalEsp8266. Universal firmware includes the board
composition, setup path, hardware mapping, OTA policy, and restart policy
provided by that target. It is the shortest path for a standard Wi-Fi product.
Linux and Raspberry Pi
Install the native dependencies and build the package from the firmware repository:
sudo apt install cmake libssl-dev
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr/local
cmake --build build
sudo cmake --install buildLink the installed package from your application:
find_package(FlovaLinux CONFIG REQUIRED)
target_link_libraries(my_device PRIVATE Flova::Linux)Then use the same typed datastream model:
#include <FlovaLinux.h>
FlovaLinux device;
auto relay = FLOVA_DATASTREAM(device, bool, "relay");
int main() {
if (!device.begin()) return 1;
for (;;) device.run();
}run() performs one bounded step. Put it in the application's poll or event
loop instead of giving the SDK ownership of the process.
Portable boards
The portable core has no Arduino, ESP, Wi-Fi, filesystem, exception, or RTTI
requirement in its public include path. A custom port supplies
flova::Link, flova::Storage, flova::Clock, and flova::Logger, then
constructs flova::Device.
Use Advanced firmware when the target needs a custom network, gateway, Ethernet chip, or service supervisor.
Installation checks
After installation, check the following before debugging application logic:
- The board package matches the physical board.
- The selected serial port changes when you unplug and reconnect the board.
- The project can compile an empty sketch with
#include <FlovaSDK.h>. - The selected target matches the class in the sketch.
- The device has a published template before it tries to bind datastreams.
If the library is found but the board does not connect, inspect Wi-Fi readiness, time or TLS readiness, provisioning state, and the device status separately.