feat: add Z-Wave network scan via MQTT gateway

Import a Z-Wave JS UI (zwavejs2mqtt) network over the MQTT gateway API,
mirroring the existing Zigbee pipeline:

- New Z-Wave Import modal + sidebar entry (broker, prefix, gateway name)
- coordinator/router/end-device typing with mesh tree from node neighbors
- import to Pending section or straight to canvas
- Pending Devices gains a Z-Wave source filter
- shared mqtt_common helpers extracted from the zigbee service

ha-relevant: yes
This commit is contained in:
Pouzor
2026-06-26 11:19:37 +02:00
parent c6076d133a
commit 8faf5c1c79
23 changed files with 2638 additions and 53 deletions
@@ -70,6 +70,7 @@ const defaultProps = {
onAddText: vi.fn(),
onScan: vi.fn(),
onZigbeeImport: vi.fn(),
onZwaveImport: vi.fn(),
onSave: vi.fn(),
onOpenSettings: vi.fn(),
onOpenHistory: vi.fn(),
@@ -184,6 +185,12 @@ describe('Sidebar', () => {
expect(defaultProps.onAddGroupRect).toHaveBeenCalledOnce()
})
it('calls onZwaveImport when Z-Wave Import is clicked', () => {
render(<Sidebar {...defaultProps} />)
fireEvent.click(screen.getByText('Z-Wave Import'))
expect(defaultProps.onZwaveImport).toHaveBeenCalledOnce()
})
it('calls onSave when Save Canvas is clicked', () => {
render(<Sidebar {...defaultProps} />)
fireEvent.click(screen.getByText('Save Canvas'))