Skip to content

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