diff --git a/public/assets/events.png b/public/assets/events.png new file mode 100644 index 0000000..98f93e0 Binary files /dev/null and b/public/assets/events.png differ diff --git a/public/assets/firmware.png b/public/assets/firmware.png index dfca4be..92d7a3b 100644 Binary files a/public/assets/firmware.png and b/public/assets/firmware.png differ diff --git a/public/index.html b/public/index.html index 886fb5f..eba223d 100644 --- a/public/index.html +++ b/public/index.html @@ -25,6 +25,8 @@
+Gateway service providing UDP-based node discovery, cluster management, and API endpoints
+ + +UDP-based discovery listens for heartbeat messages from SPORE nodes on port 4210 with automatic cluster membership
+Real-time node status tracking, primary node selection, and automatic failover for high availability
+Real-time cluster updates and event broadcasting to all connected WebSocket clients
+Subscribe to all MQTT topics and forward messages to WebSocket clients for unified event streaming
+Orchestrated firmware updates across multiple nodes with parallel processing and progress tracking
+Generic proxy calls to SPORE node capabilities with automatic failover and load balancing
+SPORE Gateway acts as the central orchestrator for the SPORE cluster, bridging the gap between SPORE nodes and the UI. It integrates seamlessly with the SPORE ecosystem and external systems through multiple protocols.
+Enable MQTT integration to stream events from external IoT devices and systems:
+# Start gateway with MQTT integration
+./spore-gateway -mqtt tcp://localhost:1883
+
+# With authentication
+MQTT_USER=username MQTT_PASSWORD=password \
+ ./spore-gateway -mqtt tcp://broker.example.com:1883
+ When enabled, the gateway subscribes to all MQTT topics (#) and forwards messages to connected WebSocket clients, allowing the UI to display both SPORE cluster events and external MQTT events in real-time.
+The rollout system manages parallel firmware updates across multiple SPORE nodes:
+Storage backend and update server for managing versioned firmware binaries
+ + +Firmware binaries stored in hierarchical structure: registry/{name}/{version}/firmware.bin with semantic versioning support
+Metadata storage with labels for flexible querying, version management, and deployment tracking
+Simple HTTP endpoints for upload, listing, download, and update operations with full CRUD support
+Seamlessly integrated with Gateway for orchestrated firmware deployment across cluster nodes
+Semantic versioning support with unique name-version constraints and version history tracking
+Flexible key-value labels for organizing and querying firmware by app, role, or custom attributes
+SPORE Registry serves as the central firmware storage and management system for the SPORE ecosystem. It provides versioned storage for firmware binaries, enabling the Gateway to orchestrate firmware rollouts across cluster nodes. The registry integrates seamlessly with the Gateway's rollout system, providing the firmware binaries needed for over-the-air updates.
+Firmware is stored hierarchically in the file system:
+registry/
+├── base/
+│ ├── 1.0.0/
+│ │ └── firmware.bin
+│ └── 1.1.0/
+│ └── firmware.bin
+└── sensor/
+ └── 2.0.0/
+ └── firmware.bin
+ This structure allows easy organization and access to firmware versions by name and version number.
+The registry is tightly integrated with the Gateway's rollout system:
+# Upload firmware
+curl -X POST http://localhost:3002/firmware \
+ -F "metadata={\"name\":\"base\",\"version\":\"1.0.0\",\"labels\":{\"app\":\"base\"}}" \
+ -F "firmware=@firmware.bin"
+
+# List firmware
+curl http://localhost:3002/firmware
+
+# Download firmware
+curl http://localhost:3002/firmware/base/1.0.0 -o firmware.bin
+
+# Health check
+curl http://localhost:3002/health
+ The registry supports the following configuration via environment variables:
+
Real-time cluster member overview with auto-discovery
+ Real-time event flow visualization with interactive graph
+
Network topology visualization with node relationships
@@ -162,6 +361,8 @@ void loop() {Application suite built on SPORE
@@ -275,11 +476,30 @@ void loop() {# Build and flash firmware
./ctl.sh build target esp01
./ctl.sh flash target esp01
+ # Build and start
+go mod tidy
+go build
+./spore-gateway
+
+# With MQTT integration
+./spore-gateway -mqtt tcp://localhost:1883
+ # Build and start
+go mod download
+go run main.go
+
+# Or build and run
+go build -o spore-registry
+./spore-registry
Source: spore · + spore-gateway · + spore-registry · spore-ui · spore-ledlab