esp_iot_framework  v0.2.1
© 2026 AmakeSasha, distributed under a license Apache-2.0
esp_iot_framework Documentation

esp_iot_framework v0.2.1

A framework for building scalable IoT ecosystems, custom nodes, and smart end-devices

esp32esp32s2esp32s3esp32c2esp32c3esp32c6

Core Architecture Concept

The framework is built around three fundamental concepts, decoupling the infrastructure from your business logic:

  • CORE (esp_iot_framework_core) - The ecosystem engine. It handles connectivity, security, and device resilience, abstracting away low-level services like Wi-Fi, NVS, and TLS. Anything built on top of CORE inherits these critical properties for free.

  • Nodes – Architectural components built on top of CORE. A Node encapsulates a specific environment or interaction model for the device-such as hosting a server, initiating client requests, or executing isolated scripts. It offloads all low-level routine and routing, providing a clean interface for business logic development.

    Examples of nodes:

    • SERVER (esp_iot_framework_server) - A framework node for deploying a standalone HTTP(S) server directly on the device to handle incoming requests.
    • CLIENT (esp_iot_framework_client) - A framework node for enabling the device to initiate outbound HTTP(S) connections and send requests to other devices.

  • End Devices – The final products built by combining CORE with one or multiple Nodes and your specific business logic. Smart bulbs, relays, or complex controllers - any target scenario boils down to implementing unique product logic on top of the selected node stack.

    You can see examples of end devices in the examples folder.


Example of use

#include <esp_err.h>
#include <esp_http_server.h>
#include <esp_iot_framework_core.h>
#include <esp_iot_framework_server.h>
esp_err_t hello_world(httpd_req_t *req) {
const char *resp = "Hello World, from esp_iot_framework!";
httpd_resp_send(req, resp, HTTPD_RESP_USE_STRLEN);
return ESP_OK;
}
static const httpd_uri_t my_uris[] = {
{ .uri = "/hello", .method = HTTP_GET, .handler = hello_world }
};
void app_main(void) {
ESP_ERROR_CHECK(eif_core_initialize());
ESP_ERROR_CHECK(eif_server_initialize());
ESP_ERROR_CHECK(eif_nvs_initialize());
ESP_ERROR_CHECK(eif_set_uri_handlers(my_uris, 1));
ESP_ERROR_CHECK(eif_wifi_initialize());
while (1) {
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
esp_err_t eif_nvs_initialize(void)
Initialize Non-Volatile Storage (NVS) and framework data.
esp_err_t eif_core_initialize(void)
Initializes the CORE of the framework.
esp_err_t eif_wifi_initialize(void)
Launch the Wi-Fi subsystem and automated network services.
esp_err_t eif_server_initialize(void)
Configures system-wide services and prepares the server networking environment.

Storage, documentation and mirrors

To protect against network restrictions, blockages, and infrastructure failures, the project source code and technical documentation are synchronized between independent platforms.

Platform Links
SourceCraft (main) 🔗 Source code
📄 Documentation
GitHub (mirror) 🔗 Source code
📄 Documentation
GitCore (mirror) 🔗 Source code
Without documentation
GitVerse (mirror) 🔗 Source code
📄 Documentation

Third-Party Components

This framework bundles the following third-party components inside the components/ directory:

  • json2 - JSON in JavaScript (Public Domain or CC0-1.0, at your discretion)
  • jsmn - JSMN: minimalistic JSON parser in C (MIT license)
  • json_generator - A simple JSON (JavasScript Object Notation) generator with flushing capability (Apache 2.0 license)

License

This project is licensed under the Apache 2.0 License.

Please also refer to the NOTICE file.