Read-only access to the Z-Wave network topology for apps?

Hi all,

I develop Network Visualizer (`no.arvebjoe.network-visualizer`), an app that draws the Homey’s Zigbee, Thread & Matter and Z-Wave networks as a map: each device’s route back to Homey and the quality of every link.

Zigbee and Thread work well, but for Z-Wave an app can’t read the mesh. `ManagerZwave.getState()` gives every node and its TX counters, but no neighbours and no routes. Homey’s own developer tools get those from `ManagerZwave.runCommand` with `getNetworkTopology` and `getFailedNodes`, but `runCommand` requires the `homey.system` scope. An app with `homey:manager:api` only gets `homey.system.readonly`, so both calls fail with `Missing Scopes`.

Opening `runCommand` to apps would be a bad idea, since it also reaches `factoryReset` and `removeNode`. What I’m asking for is a read-only way to get the same data, like `ManagerThread.getNetworkTopology()` already gives for Thread.

I’ve filed it here, with the details and a code sample that reproduces it:

This is where the app gives up on the mesh and draws Z-Wave as a star, every device joined straight to Homey:

Two questions:

1. To Athom’s developers: is a read-only Z-Wave topology call something you would consider? I’m happy to test anything on my own Homey with 16 Z-Wave nodes.

2. Has anyone found another way for an app to read Z-Wave neighbours or routes that I’ve missed?

Thanks,
Arve