V0.1.1 LIVE HARDWARE
v0.1.1 Live Hardware Increment
v0.1.1 turns the initial request-driven hardware inventory into a continuously running edge agent. It does not expand the product boundary into industrial protocol decoding, Fleet control or OTA.
Data flow¶
Linux / sysfs / /dev
|
v
background inventory refresh
|
+---- topology/state change ----> SSE event stream
| |
| +--> local dashboard
| +--> Nodra event topic
|
+---- cached inventory ----------> REST / Prometheus / Fleet projection
sensor plugin scheduler
|
+---- canonical SensorSample ----> REST / dashboard
|
+--> Nodra per-sensor topic
Inventory snapshots are refreshed without browser traffic. High-churn telemetry
such as uptime, byte counters and temperature values updates the cached snapshot
without creating an inventory.changed event every refresh. Events are reserved
for material changes such as interface state/address changes, USB hotplug, bus
topology or kernel/device identity changes.
Nodra topic layout¶
For a device whose serial is ZY-REF-0001 and the default prefix:
zyvor/device/ZY-REF-0001/inventory retained hardware snapshot
zyvor/device/ZY-REF-0001/status retained agent status
zyvor/device/ZY-REF-0001/telemetry v0.1 compatibility snapshot
zyvor/device/ZY-REF-0001/sensors/cabinet-temperature
zyvor/device/ZY-REF-0001/events/inventory.changed
zyvor/device/ZY-REF-0001/events/nodra.connected
Nodra still owns durable WAN store-and-forward and industrial protocol adapters. Device Agent only publishes its local hardware/sensor contract.
First real sensor plugin¶
examples/i2c_temperature.py supports LM75-compatible and TMP102-compatible
temperature registers using Linux /dev/i2c-*. It accesses only the bus and
7-bit address provided in the plugin manifest. There is intentionally no I2C
address scan.
Validate decoding without hardware:
python3 examples/i2c_temperature.py --self-test
Install the package, confirm the board wiring/BSP device node, then edit
/etc/zyvor/device-agent/plugins.d/i2c-temperature.json and change
"enabled": false to true.
Field acceptance¶
1. agent starts before any browser connects
2. inventory generation remains stable when only uptime/counters change
3. unplug/replug USB -> inventory.changed event
4. link/address change -> inventory.changed event
5. I2C temperature sample appears under /api/v1/sensors
6. same sample appears under the Nodra per-sensor MQTT topic
7. disconnect WAN -> local sampling/UI continue
8. reconnect WAN -> Nodra remains responsible for upstream WAL replay
9. Fleet projection contains IP addresses + hardware metadata