Network Inventory keeps a small, human-maintained catalog of local network devices in Home Assistant and checks each device with ICMP ping. Every inventory item becomes a Home Assistant device with a connectivity binary sensor, diagnostic metadata, and an editable quick note.
- IPv4, IPv6, and hostname reachability checks
- Bounded concurrent ping processes, configurable 10–300 second interval
- One missed-ping grace period to reduce transient offline events
- Stable device identity across MAC address changes
- MAC, host, duplicate, date, battery, and power-data validation
- Native Home Assistant area picker plus a separate location label
- Optional manufacturer, model, date, battery, and PSU inventory data
- Immediate add, edit, remove, and settings saves—no hidden final save step
- Automatic migration from version 1 without changing existing entity IDs
- Static inventory sensors do not subscribe to every ping refresh
- Home Assistant 2026.8.0 or newer
- The
pingexecutable available inside the Home Assistant runtime (included in standard Home Assistant OS and Container images) - Target devices configured to answer ICMP echo requests
- In HACS, open Custom repositories.
- Add
https://github.com/PolarRaccoon/ha-netinventoryas an Integration repository. - Install Network Inventory and restart Home Assistant.
Copy custom_components/netinventory into your Home Assistant configuration:
<config>/custom_components/netinventory/
Restart Home Assistant after copying or upgrading the files.
- Open Settings → Devices & services → Add integration.
- Search for Network Inventory and choose a scan interval.
- On the integration card, choose Configure.
- Add devices and their optional inventory or power metadata.
Each completed action is saved immediately. Removing a device requires a confirmation step and cleans up its integration-owned registry entries.
For DC supplies, entering exactly two of voltage, current, and power calculates the third. If all three are supplied, they must agree within 5%. AC values are stored as entered; frequency is rejected for DC supplies.
| Entity | Default | Purpose |
|---|---|---|
| Connectivity | Enabled | Current ICMP reachability |
| IP address | Enabled | Configured IP address or hostname |
| MAC address | Enabled | Canonical network MAC address |
| Connection type | Enabled | Wired or wireless inventory label |
| Manufacturer | Enabled | Optional manufacturer metadata |
| Model | Enabled | Optional model metadata |
| Location | Enabled | Optional free-form location label |
| Date added | Enabled | Inventory date |
| Quick note | Enabled | Editable note up to 255 characters |
| Power supply | Disabled | Optional PSU summary and attributes |
| Rated battery capacity | Disabled | Optional static mAh rating and type |
Long-form details are retained in integration configuration instead of an entity state, avoiding Home Assistant's 255-character state limit.
Version 2 migrates the existing entry automatically on first load. It derives each legacy internal device ID from the existing MAC address, preserving device and entity unique IDs. Legacy notes longer than 255 characters are copied into the detailed-notes field before the quick note is shortened.
Back up your Home Assistant configuration before any custom integration update.
- Always offline: verify the device answers
pingfrom the Home Assistant host or container. Some firewalls and sleep modes block ICMP. - Hostname fails but IP works: verify DNS or mDNS resolution inside the Home Assistant runtime.
- Temporary packet loss: a device that was online remains online for one failed cycle and changes to offline after the second consecutive failure.
- Integration unavailable: check Home Assistant logs for an operating-system ping error. If every ping process cannot start, the coordinator reports the runtime problem instead of marking every device offline.
python -m pip install -r requirements_test.txt
ruff check .
pytest --cov=custom_components.netinventoryThe repository includes HACS and hassfest validation workflows.
