What's Changed
Performance
- Concurrent status checks — nodes are now checked in parallel via
asyncio.gatherinstead of sequentially, preventing the scheduler "maximum instances reached" log spam on larger setups
Features
- Improved IoT device detection — two-phase nmap scan (ARP sweep first, then port scan) now finds devices like Shelly, Sonoff, and Tapo that have no open TCP ports
- mDNS/Bonjour discovery — passively listens for
_shelly._tcp,_esphomelib._tcp,_hap._tcp(HomeKit),_mqtt._tcpand more, running in parallel with nmap - Richer IoT fingerprinting — 20+ IoT vendor MAC OUIs added (Shelly, Espressif/ESP32, Sonoff, Tapo, Philips Hue, IKEA Tradfri, Tuya), CoAP ports (5683, 5684, 4915) added, IoT type now ranked above generic server
Bug Fixes
- LXC/VM container mode UX — attaching a node to a Proxmox in container mode no longer creates a spurious edge; nesting and un-nesting is now instant without requiring a save+reload
- Scheduler reliability — fixed mypy errors, stale ORM object (DetachedInstanceError), duplicate timestamps, shutdown error handling, and interval validation
- CI quality gate — fixed mypy failures that were causing the Quality workflow to fail on every push
Dependencies
- Added
zeroconf==0.131.0for mDNS discovery
Full changelog: v1.7.0...v1.7.1