Schnellstart: UESPA mit ESP32 / Mikrocontroller
Wrapper: uespa-embedded (C-ABI, no_std) · Ziele: ESP32-C3/C5/C6/P4 (ESP-IDF), STM32, RISC-V
1. Konto, App-ID und LicenseCert
Lege im Developer-Portal eine App mit der App-ID deiner Anwendung an und stelle ein LicenseCert aus. Das Zertifikat ist 294 Byte groß, wird offline geprüft und gilt nur für genau diese App-ID. Details: Lizenzen, App-IDs & Mandanten.
2. Einbinden
ESP-IDF-Komponente einbinden
bash
cp -r uespa-embedded/esp-idf/components/uespa my-firmware/components/
# libuespa_embedded.a für das Ziel bauen, z. B. ESP32-C5:
cargo build -p uespa-embedded --release --target riscv32imac-unknown-none-elf3. Initialisieren und senden
c
#include "uespa_embedded.h"
static const uint8_t LICENSE[294] = { /* aus dem Developer-Portal */ };
static const uint8_t LINKS[] = { UESPA_LINK_WIFI_DIRECT, UESPA_LINK_BLE, UESPA_LINK_INTERNET };
uespa_hal_t hal = { .user = NULL, .send = my_send, .recv = my_recv, .now_ms = my_ms,
.unix_secs = my_unix, .fill_random = my_rng, .battery_pct = my_batt };
int32_t st;
uespa_node_t *node = uespa_node_new(&hal, LINKS, sizeof LINKS, "com.example.doorbell",
LICENSE, sizeof LICENSE, device_seed, &st);
if (st != UESPA_OK) { /* UESPA_ERR_LICENSE: Zertifikat/app_id prüfen */ }
uespa_node_bus_subscribe(node, "door/+/cmd");
for (;;) {
uespa_node_tick(node);
uespa_event_t ev;
while (uespa_node_poll_event(node, &ev) == UESPA_OK) { /* ev.kind … */ }
vTaskDelay(pdMS_TO_TICKS(20));
}Hinweise
- Heap kommt über malloc/free der Firmware; battery_pct < 0 meldet Netzteil (Full-Hop).
- firmware_id muss der app_id des Zertifikats entsprechen.
- Das Gerät leitet immer auch Pakete anderer Apps verschlüsselt weiter (Zwangs-Hop) – zugestellt wird nur im eigenen Namespace.
- Rendezvous für Internet-P2P: rendezvous.uespa.io:47401 (UDP), Authority: https://uespa.io/v1/authority.