Index <= Page index / Phase => Phase 1 – Slice radio (non sécu)

Détails – Phase 1 – Slice radio (non sécu)

État : prérequis en place (endpoints, stockage simple, sketch ESP32 à finaliser).

Procédure de test (serveur + ESP32)

1) Lancer le nœud FastAPI (Station K sur PC)

cd backend/obambu_node
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

Vérification rapide :

curl http://localhost:8000/health

2) Tester le flux device côté API

curl -X POST http://localhost:8000/api/v1/device/hello \
  -H "Content-Type: application/json" \
  -d '{"device_id":"DEV-001","fw_version":"0.0.1","station_type":"S"}'

curl "http://localhost:8000/api/v1/device/config?device_id=DEV-001"

curl -X POST http://localhost:8000/api/v1/device/content_index

3) Flasher l’ESP32 avec le sketch minimal

Remplir WIFI_SSID, WIFI_PASS et API_BASE puis flasher :

// ESP32 Station S – Sketch minimal de test (Wi-Fi + /health)
// Renseigner WIFI_SSID, WIFI_PASS et API_BASE avant flash.

#include <WiFi.h>
#include <HTTPClient.h>

const char* WIFI_SSID = "YOUR_WIFI_SSID";
const char* WIFI_PASS = "YOUR_WIFI_PASSWORD";
const char* API_BASE  = "http://192.168.1.10:8000"; // IP du nœud FastAPI

const int LED_PIN = 2; // LED intégrée ESP32 DevKit

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);

  connectWiFi();
  pingHealth();
}

void loop() {
  delay(5000);
  pingHealth();
}

void connectWiFi() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  Serial.print("WiFi...");
  int retries = 0;
  while (WiFi.status() != WL_CONNECTED && retries < 30) {
    delay(500);
    Serial.print(".");
    retries++;
  }
  
if (WiFi.status() == WL_CONNECTED) {
  Serial.println(" OK");
  Serial.print("SSID: "); Serial.println(WiFi.SSID());
  Serial.print("IP: "); Serial.println(WiFi.localIP());
  digitalWrite(LED_PIN, HIGH);
} else {
  Serial.println(" FAIL");
}

}

void pingHealth() {
  if (WiFi.status() != WL_CONNECTED) {
    Serial.println("WiFi non connecté");
    return;
  }
  HTTPClient http;
  String url = String(API_BASE) + "/health";
  http.begin(url);
  int code = http.GET();
  Serial.printf("/health -> %d\n", code);
  if (code > 0) {
    String body = http.getString();
    Serial.println(body);
  }
  http.end();
}

Source complète disponible dans plan-details/details-blockchain-security_code-per-device/esp32_station_s_min.ino/esp32_station_s_min.ino.

Résultat connexion Wi-Fi sketch minimal Phase 1

THIS IS NOT GOOD : "Heath - 1" commectoin o, mais requête échouée..s

Endpoints device : hello, config, content_index, content

Objectif

Implémentation actuelle

À surveiller / suites

Stockage JSON simple (devices.json, dossier docs/)

Objectif

Implémentation actuelle

À surveiller / suites

ESP32 : Wi-Fi dur, hello, config, contenu, LED

Objectif

État

À finir

Implémentation API + sketch ESP32

Travaux à finir

Choix à documenter