#include #include #include "Globals.h" #include "NodeContext.h" #include "NetworkManager.h" #include "ClusterManager.h" #include "ApiServer.h" #include "TaskManager.h" // Services #include "services/NodeService.h" #include "services/NetworkService.h" #include "services/ClusterService.h" #include "services/TaskService.h" #include "RelayService.h" using namespace std; // Choose a default relay pin. For ESP-01 this is GPIO0. Adjust as needed for your board. #ifndef RELAY_PIN #define RELAY_PIN 0 #endif NodeContext ctx({ {"app", "relay"}, {"device", "actuator"}, {"pin", String(RELAY_PIN)} }); NetworkManager network(ctx); TaskManager taskManager(ctx); ClusterManager cluster(ctx, taskManager); ApiServer apiServer(ctx, taskManager, ctx.config.api_server_port); // Create services NodeService nodeService(ctx, apiServer); NetworkService networkService(network); ClusterService clusterService(ctx); TaskService taskService(taskManager); RelayService relayService(taskManager, RELAY_PIN); void setup() { Serial.begin(115200); // Setup WiFi first network.setupWiFi(); // Initialize and start all tasks taskManager.initialize(); // Register services and start API server apiServer.addService(nodeService); apiServer.addService(networkService); apiServer.addService(clusterService); apiServer.addService(taskService); apiServer.addService(relayService); apiServer.begin(); // Print initial task status taskManager.printTaskStatus(); } void loop() { taskManager.execute(); yield(); }