Repository navigation
Releases: benmac7/network-flow-card
Release list
v4.1.0-beta.29
Add files via upload
v4.1.0-beta.28
Add files via upload
v4.0.0 - Hyperbolic Awesomeness, Details Panel, Tablet/Desktop view and more integrations!
[4.0.0]
A major release. The headline is a second way to see your network - the
Hyperbolic view, an explorable tree - and a details panel for every
device, available in both views. The classic Flat diagram is still there and
looks as it did. Also includes everything drafted for 3.3.1, which never
shipped on its own: MikroTik and OPNsense Auto-Discovery, and the Summary
badge colours moving into the Summary section.
Added
Auto-Discovery (from the unreleased 3.3.1)
- MikroTik - three integrations: the core MikroTik integration,
MikroTik Router (mikrotik_router) and MikroTik Extended
(mikrotik_extended). Each finds the device as a Router/Gateway and,
because nothing tells a router from a wireless bridge, also offers it as an
Access Point node, plus its clients. MikroTik Router and MikroTik Extended
also fill in the Router's Real-time Download/Upload from the WAN
interface's traffic sensors, and MikroTik Extended fills in the WAN IP
too (its cloud public address, or the WAN interface's address). - OPNsense - finds the Router/Gateway from its WAN interface status, with
the WAN's Real-time Download/Upload (the interface's in and out
kilobytes per second), and its clients. Its built-in speed test is now a
speed test source ("OPNsense (built-in)"); its Unbound Blocklist
switches (the single legacy toggle and any individually named DNSBL rules)
appear as DNS Filtering candidates; and its VPN status sensors, which report
"up", count as active.
Hyperbolic view
- View Mode: choose Flat (the original diagram) or Hyperbolic from
two tiles at the top of the Layout and Discover pages. - An explorable, zoomable tree of the whole network on a Poincare disk, with
the Router at the centre. Drag to pan, pinch or use + / - to zoom, tap a
node to centre it, tap it again to open it, and use the target button to
return to the centre. - Every device type is a node: Internet (with its quota ring), Router, LAN,
Switches, Access Points, Servers and their VMs and containers, count
circles, individual clients, monitored services, and an Unknown node for
clients that can't be placed. - Clients layout: attach clients to the access point or switch they are
connected to, or collect them in groups. - Node Sizes: one slider for all nodes, plus a slider per type.
- Tree Appearance: outline and background colours with their own
transparency, an optional Glass style (frosted, with adjustable blur),
and a transparent card background. - Offline Nodes: colours for the "!" badge on an offline node and for the
dotted line leading to it. - Arrangement: Auto, Phone or Tablet. On a tablet the tree can be sized to
fill the screen height exactly ("fit tree to screen height") or to a width of
your choice.
Details panel (Hyperbolic view, and Flat view when switched on)
- Select any node to see its details: name and state, live throughput, IP
addresses (WAN, secondary WAN, LAN, and a device's own), VPN, firewall and
DNS-filtering state. - Device Page button: opens the device in Settings > Devices, under the
integration it comes from. A node with no device (or a user without access to
Settings) gets More Info instead. Choose between the two with
Header Button. - Clients list: every client connected to the selected device, with a dot in
its online or offline colour, online ones first. Tap one to jump to it. - Client Info: for a single client - status and since when, last online,
connected to, IP, MAC, hostname, SSID, VLAN, switch port, band, channel,
signal, link speed, traffic, uptime, manufacturer, guest network, area, and
any other attributes the tracker reports. - Device statistics: CPU, RAM, temperature, traffic received and sent, PoE
power, ports up, uptime, firmware and model, for any device that reports them
(UniFi Device Info and similar). - PoE Ports: a switch's PoE ports with the watts each is delivering,
busiest first, from the switch's own attributes or from per-port PoE sensors. - Servers: CPU, memory, disk, uptime, temperature, load and network
readings from the sensors on the server's device, plus a Services list of
its VMs and containers headed by a total, for example "11 of 12 online". The
total comes from count entities you choose, from count sensors on the device,
from the guests the integration lists, or from a Home Assistant label you
put on the guests (works with any integration). - History graphs: Throughput, Latency (ping and jitter), Connected clients,
Response time, Resources (CPU, memory and disk for a server; CPU and memory
for a VM or container) and a client's own Throughput. Each has its own
timescale buttons (5m, 30m, 1h, 12h, 24h, 72h); the choice is remembered on
that device. The graphs follow live readings as they arrive. - Graph Colors: a colour for each kind of series - Download, Upload, Ping,
Jitter, Connected Clients, Response Time, CPU, Memory and Disk. - Show as Pop-up: show the panel as a sheet that slides up from the bottom
instead of beside or below the diagram. On a tablet the summary then moves to
the top and the diagram takes the whole card. - Panel background and outline colours, and card shape and shadow that follow
your theme (--border-radius,--box-shadow).
Flat view with details
- Show Details Panel for the Flat view: the diagram sits beside (tablet) or
above (phone) a summary card and the same details panel. Tap a circle to see
its details and again to open it; the selected circle gets a ring in its own
border colour.
Summary
- The summary is now a card of its own: optional Summary title, background
and outline colours, and up to six items (it was five). - With no details panel beside it (switched off, or shown as a pop-up), the
summary's badges are centred across the card instead of left-aligned.
Clients
- Sub-Group Width: Even - every sub-group exactly the same width, one equal
column per group across the whole Clients box.
IP addresses and discovery
- Managed switches and servers can show their IP address as a pill above
their circle, with an IP Address Entity setting and badge colours. If none
is set, the card finds the address itself: the device's own attributes, a
sensor on the same device, or the host in the device's web address. - A gateway's LAN IP and WAN IP are read from the right attributes (for
example UniFi Device Info'slan_ipandwan_ip), so one sensor can supply
both. - UniFi Device Info discovery now pairs a gateway with its WAN sensor and
carries each switch's address into the configuration.
Changed
- Summary badge colours moved to the Summary section (from the unreleased
3.3.1). The Speed Test Download, Speed Test Upload, Real-time Download,
Real-time Upload and Latency and Jitter badges each have a Badge Color and
Badge Icon Color under Layout > Summary, shown for the items you have
chosen, and they apply to the whole card. The Real-time badges now have
their own pair (they used to share the Download and Upload colours). The
Internet page no longer has Download Badge Background Color, Download
Badge Icon Color, Upload Badge Background Color, Upload Badge Icon
Color, Ping Badge Background Color, Ping Badge Icon Color, or
Download Line and Upload Line. Colours you set in those fields
(internet.colors.download_badge,download_badge_icon,upload_badge,
upload_badge_icon,ping_badge,ping_badge_icon) are not carried over:
the badges start from the defaults (green, pink and cyan, with
theme-coloured icons) unless you set the newsummary_*_coloroptions. - The Internet connection line follows the global Flow Line Color (from the
unreleased 3.3.1), like every other line on the card. It used the Internet's
own Download and Upload line colours. - Summary Position offers Top and Bottom only. Left and Right had
stopped doing anything in the Hyperbolic view and the Flat view with a details
panel (both placed the summary as Bottom would). A Left or Right saved by an
older version is still shown, marked as an older setting, and the classic Flat
strip still honours it. - Advanced is now Layout, rebuilt as collapsible sections: General,
Graph, Summary, Details Panel, and Sizing and Animations. Show IP
Addressing moved from General to Graph. - The wording "Connected Devices" / "Devices" is now "Connected Clients" /
"Clients" throughout. Configuration keys are unchanged, so existing
configurations keep working. - With no quota entities set, the Internet circle's ring now uses its Border
Color (it used the Quota Remaining Color). - A text state that happens to start with a number (an uptime such as
"3d 4h") is no longer shown as that number. - Tree circles are opaque, so a line never shows through a node.
Fixed
- Speed test discovery only considers
sensorentities of the speed test
integrations (from the unreleased 3.3.1), so the other entities some of them
create are no longer offered as readings.
v3.3.0 - More integrations, more internet, more ways to display
[3.3.0]
A major release built around Monitoring: bring Uptime Kuma, Ping,
Gatus, and UptimeRobot straight into the diagram as their own badges
and circles, not just router-brand integrations. Also adds a
Secondary Internet entity for a backup or genuine second
connection, real-time Download/Upload summary items sourced from the
Router itself, a Card Size control (Compact, Fit to Width, or a
manual Scaled percentage) aimed at fitting large networks on a phone
screen, keyword search across every Auto-Discovery list, and
support for additional integrations.
Added
- Monitoring - a new main menu, and a new way of drawing a service's
status directly on the diagram rather than only on the device that
runs it. Auto-discovery covers four integrations, each confirmed
against home-assistant/core's own test suite where one exists:
Uptime Kuma, Gatus, and UptimeRobot (all three checked
directly against their real entity/snapshot test fixtures), and
Ping (from its documentedround_trip_time_avgattribute). Each
discovered or hand-added service gets its own entity, name override,
icon, and border/icon colors (with separate colors while it's down),
plus a Type of Auto, External, or Internal:- External services draw in a new dashed box above Internet,
joined to it by dotted lines - one per circle when a Secondary
Internet is configured. - Internal services can be assigned to Clients (their own
"Monitored" sub-group) or to any device or client already
configured anywhere on the card, not just Router and Servers -
Internet, LAN, the Core Switch, any Switch or Access Point at any
depth, any Server, or any individual Client. A device with several
services shows the worst state among them. - Auto resolves live, from the monitor's own data: its tags,
then the address it checks (a public address is External; a
private range, single-word host, or.local/.lanname is
Internal). Gatus exposes neither, so Auto falls back to checking
its name for a keyword like "External" or "Internal" (Gatus puts
its group name into the entity name); UptimeRobot, with nothing to
go on, defaults to External, since a cloud checker can only be
watching something reachable from the internet. The discovery list
and the service editor both flag a service Auto can't classify. - An optional response-time badge, per service (Show Response
Time Badge), at the bottom of its own circle (not on a device
badge) - from its Response Time entity, or a status entity's own
round_trip_time_avgattribute - colored globally by the same
single-color-or-threshold choice PoE badges use. - A down badge flashes, following the card's own Enable Animations
switch like every other animation on the card. - Global settings: badge colors and icons by state (up/down/pending/
maintenance), badge location, the icon shown when several services
share one device badge, how an unavailable entity is treated
(Pending by default, or Down), Box Border Color/Radius for the
External box, and Show Monitored Names - independent of the
Clients page's own Show Names, so either can be on without the
other. - Both the auto-discovery list and the list of services already
added can be filtered by integration, each showing how many of
each it found; filtering the already-added list also turns "Delete
All" into "Delete Shown".
- External services draw in a new dashed box above Internet,
- Real-time Download / Upload summary items, sourced from two new
entity pickers on the Router page (Download Speed Entity,
Upload Speed Entity). With no Router configured, they fall back
to the Primary Access Point's own Download/Upload entities instead;
a Router that is configured but has no speed entity for a direction
shows nothing for that direction rather than borrowing the Primary
AP's. Router discovery for FRITZ!Box, pfSense, ASUSWRT,
and AsusRouter (already supported for the router entity itself)
now also fills these in automatically where each integration exposes
live throughput: FRITZ!Box's and pfSense's own WAN rate sensors
(pfSense from the default gateway's interface specifically, both
directions from the same WAN), and ASUSWRT's and AsusRouter's
"Download/Upload speed" sensors - both confirmed against
home-assistant/core's own test fixtures, including which sensors are
enabled by default and which are only created for interfaces
selected in AsusRouter's own options. ASUSWRT's speed sensors carry
a caution in the discovery list, since they're reported to read 0 or
identical values on some routers. They're now the default Summary
Item 1 and 2, ahead of the plain Speedtest-sourced Download/Upload. - Secondary WAN IP Address, a new Router-page field shown only once
a Secondary Internet exists, displayed under the secondary circle the
same way the primary's WAN Address already is. AsusRouter fills it in
automatically - confirmed against its own official change log
(wan_ip/wan_ip_secondarysensors, added in integration0.24.0
alongside its secondary-WAN support). Checked as well against UniFi
and TP-Link (Omada, Deco, Router): neither exposes a distinct
secondary WAN address in any integration this card already supports,
so there's nothing to auto-fill there yet. - Card Size (Advanced → Layout) - one choice replacing the size
sliders as the way to fit more on a small screen:- Normal - no change; the size sliders below work as set.
- Compact - every circle, badge, and icon shrinks to its
slider's own minimum, the column gap tightens to its minimum, and
every name on the card - client, monitored-service, and the label
inside a Router/Switch/AP/LAN/Server circle alike - hides, all
without touching the size sliders themselves, so switching back to
Normal is instant. - Fit to Width - automatically zooms the whole diagram down just
enough to fit the card's width, recalculating whenever the card
resizes or the network changes, down to a 40% floor. - Scaled - a manual zoom percentage (40-100%), remembered on its
own even when switching to another Card Size and back. - A separate Horizontal Scroll toggle applies to every Card Size
except Fit to Width (already sized not to need it) - lets a
diagram wider than the card pan sideways, in both directions, to
reach content that overflows on either side, instead of it being
clipped by the card's own edge, which it previously always was,
silently, with no way to see the rest. - A separate Hide Names toggle (Advanced → Layout) is a global
override independent of Card Size or either page's own Show Names:
on, it hides every name on the card at once, everywhere Compact
does, without switching the rest of Compact's sizing on too.
- Secondary Internet: a second
internet_secondaryentity draws
alongside the primary, with the same fields (bandwidth, quota,
colors) and its own dashed circle outline, for a backup line or a
genuine second connection - always the same Circle and Icon Size as
the primary, so the one pair of sliders governs both. Edited from
inside the Internet page itself (Primary/Secondary tabs) rather than
a separate menu entry, and Speedtest discovery adds or removes it
with the same plain buttons as the primary, acting on whichever tab
is open. A Mode choice - Active/Active or Active/Standby,
defaulting to Active/Standby - decides whether the secondary is drawn
solid and animated (carrying its own traffic) or dashed and still (a
backup, showing no flow at all while idle); in Active/Standby, it
switches to solid and starts animating automatically the moment the
primary actually goes down and the secondary is the one carrying
traffic, then back to dashed and still once the primary recovers.
Every line in the assembly - both drop lines, the T-bar, and the stem
into whatever sits below it - uses the one global Flow Line Color
rather than the Internet's own Download/Upload colors, at the same
tighter spacing a typical Access Point's own dual line uses, and the
T-bar reaches the true outer edge of a paired download/upload line
rather than stopping short of it. Where the Primary AP itself sits
directly under Internet with no Router or Switch between them, its
line uses the normal line color and its own Download/Upload entities
to decide a single or double line, rather than Internet's. - Keyword search, alongside the integration filter, on every
Auto-Discovery list on the card - Speedtest, ISP, pfSense, AdGuard,
Routers, Main Switches, Nodes, Clients, Containers, and Monitoring -
matching a candidate by its name or its entity id. Where a list
already has an integration filter, search narrows within it rather
than replacing it. - ASUSWRT Auto-Discovery - experimental (the built-in
asuswrt
integration, confirmed against home-assistant/core's own source; not
the same as the community AsusRouter integration already supported,
and the two can be installed side by side). Router: uses the
integration's own "Devices connected" sensor, which is enabled by
default, tied to the router's own device, and goes unavailable
whenever the router can't be polled - so it's a genuine router-status
entity, and also fills in the Router's LAN Connected Devices count.
Only if that sensor has been disabled does it fall back to a client
tracker as a best-effort proxy. Every configured ASUSWRT router is
offered as its own candidate. Clients: every tracked device - by
default only devices that report a name, unless "Track unknown
devices" is turned on in the integration itself. Nothing is offe...
v3.2.0 - Endless Possibilities + discovery for Netgear, Fast.com and Mobile App (all experimental)
[3.2.0]
Adds unlimited-depth tiers (a fed Switch, and now an Access Point too,
can feed further Switches/Access Points/Servers to any depth), renames
Homelab to Server everywhere it's shown, per-server Security targeting,
Netgear and Fast.com Auto-Discovery, a real expandable tree for the
Nodes editor page with reordering and continuous numbering at every
tier, a "Core Switch" rename for the top-level Switch menu, and a
confirmed fix for bandwidth connectors drawing a phantom second strand
whenever only one of Download/Upload was configured.
Added
- Unlimited tiers. A fed Switch can carry its own
access_points,
fed_switches, andhomelabs, and those can carry theirs, to any
depth - not just the one level of Fed Switches supported previously.
Every extra level adds one row to the diagram between the Access
Point row and Connected Devices. A Switch/AP feeding several children
is centred over every column beneath it, with its own stem and mini
bus-line; offline state cascades down the whole chain; PoE totals sum
Access Points, Servers, and Switches at every depth. - An Access Point can be a parent too. Straight off the bus or
nested under a Switch, an Access Point can now feed its own
fed_switches,homelabs, and furtheraccess_points(a wireless
mesh) - everywhere a Switch could feed something, an Access Point now
can as well. An Access Point that feeds anything also gets its own
dotted line down to the Clients box, the same as a Primary AP in
Tiered layout, with its Connected Devices circle hanging off that
line if it has one. - A Server can hang off anything, not only sit at the top level -
under any Switch or Access Point, at any depth, with its own
Containers/VMs, PoE, and Connected Devices intact. (See the Homelab →
Server rename below.) - Per-server Security targeting. VPN, Firewall, DNS Filtering, and
Reverse Proxy are still configured once and pointed at a device type
(Server among them), but each Server can now choose which of those
items it actually shows:A Server with nohomelabs: - entity: sensor.server_a security: { dns: true, reverse_proxy: true } - entity: sensor.server_b security: { vpn: true }
securitykey shows every item pointed at it,
exactly as before - additive, not a breaking change. - Netgear Auto-Discovery - experimental. Covers the official
netgearintegration (Orbi, Nighthawk, and other pynetgear-supported
routers), confirmed against home-assistant/core's own source. Offers
a Router candidate via one of its connected devices' trackers as a
reachability proxy - the same technique OpenWrt (LuCI) already uses,
since Netgear has no dedicated router-status entity, and its
one enabled-by-default entity (the firmware Update entity) reports
"off"when simply up to date - which this card's offline check
would otherwise misread as offline. Every attached device is offered
as a Client; Netgear's own integration never distinguishes a
satellite, switch, or AP from an ordinary phone or laptop, so nothing
from it is ever offered as a Switch/AP node. Marked experimental
because of the client-proxy reachability check and less real-world
mileage than the router integrations already supported. - Fast.com added to Speedtest Auto-Discovery (
fastdotcomplatform,
confirmed against home-assistant/core's own source) - a single
Download-only sensor, no Ping/Jitter/Upload/ISP, since that's the
only figure fast.com measures. Itssingle_config_entrymanifest
flag means at most one Fast.com service will ever be found. - Home Assistant Mobile App Auto-Discovery (
mobile_appplatform,
confirmed against home-assistant/core's own source) - every device
running the official Companion app gets one device_tracker entity,
offered on the Clients page. Clients-only: unlike every router-brand
integration above, there's no Router/Node concept here at all - a
phone or tablet is always a personal device, never network hardware. - Editor: the Nodes page is a real expandable tree.
- Every Switch or Access Point row has a chevron that expands it in
place, with a live online/offline dot and a count of everything
below it. - "+ Access Point / + Switch / + Server" sit directly inside the same
card as the row they add to, ahead of its children, instead of at
the bottom of a long flat list. - "Add AP / Add Switch / Add Server" are three separate buttons at
the bottom of the page, each creating the right node type directly,
instead of one "Add Node" button that always defaulted to an
Access Point. - Move up/down now works at every tier, not just the top level - an
Access Point, fed Switch, or Server reorders among its own siblings
of the same kind under the same parent (Access Points, Switches,
and Servers are always drawn as three separate blocks, so that's
the only reordering that's meaningful). - Fallback labels ("Switch 3", "AP 4", ...) now share one running
count per kind across the whole tree, instead of restarting at 1
under every new parent. - A discovered candidate's "Add as" dropdown now lists every eligible
Switch/Access Point in the tree, with a breadcrumb ("D-Link ›
Workshop PoE"), not only top-level Nodes - this also lets a
discovered Proxmox Server attach under an existing node instead of
only ever becoming a new one. - Deleting a Switch/AP with devices below it asks for confirmation
first. Only one Access Point can be Primary, wherever it sits in
the tree.
- Every Switch or Access Point row has a chevron that expands it in
Changed
- "Homelab" is now "Server" everywhere it's shown - buttons,
headers, tooltips, dropdown options, and the diagram's own fallback
label text. Display-only: the YAML keys (homelab,homelabs, the
homelabSecurity target value, ...) are unchanged, so no existing
config needs to change. - The top-level "Switch" menu is now "Core Switch" - its entry in
the menu list and its own page header only. Every Node-level "Switch"
(Fed Switches, the node-type dropdown, "Main Switch" as a Security
target, tree labels, ...) is unchanged, since that's a distinct,
still-called-Switch concept from the one Core element between
Router/Gateway and Nodes. - A Switch's mini bus-line is now drawn as one exact centre-to-centre
stretch per child, instead of a single line inset by a fixed amount
from the group's edges - this replaces the previous inset-based
adjustment, which could still overshoot the last drop by a few pixels
in a mixed AP/Fed-Switch row. - Four long inline descriptions became hover tooltips (the same small
(i) icon already used elsewhere), instead of a paragraph sitting
underneath the control: Clients page - Grouping, Show Client Names;
Advanced page - Show IP Addressing, Enable Animations.
Known limitations
- A Switch that feeds other devices doesn't show its own Connected
Devices circle - there's no free row for it. An Access Point in the
same position does (see "Added" above). - A Primary AP anywhere but straight off the bus (inside a Switch's
group, or hanging off another Access Point) still renders Flat, not
Tiered. - Each Security item (VPN, Firewall, DNS, Reverse Proxy) still has one
entity; Servers can each choose whether to show it, not point it at a
different entity per server. - Auto-Discovery still never knows which switch physically feeds which
switch/AP - no supported integration exposes that uplink topology to
Home Assistant - so a deep, discovered tree still has to be assembled
by hand via the attach-to-existing dropdown or the Node editor.
Netgear's own integration goes a step further and can't tell a
satellite, switch, or AP apart from an ordinary client at all, so its
devices only ever show up as Clients. - The Nodes tree's expanded/collapsed state lives only in the open
editor session; reordering or deleting inside a Switch collapses
whatever was expanded beneath it.
v3.1.7 - zip file fix, client names, device area groupings etc
[3.1.7]
Fixed
- Client sub-group boxes rendered enormous whenever Show Client
Names was on - root-caused via direct browser DevTools inspection
after an initial layout-based fix didn't resolve it. The actual
cause was a JavaScript string-concatenation bug in 3.1.6:
individual_devices_group_paddingarrives as the string"6"
(config values commonly do), and the extra bottom padding added for
Show Client Names was computed aspad + 18- sincepadwas a
string,+concatenated rather than added, producing"618"(as in
618px) instead of24. Every group box independently carried this
same broken padding, which is why it affected every box uniformly
regardless of its own content.padis now coerced to a real Number
at its source, not just at the one call site that happened to do
arithmetic on it, so the same class of bug can't resurface through
some other future use of the same variable. - Invalid
<rect>attribute errors on every Clients box render
("Invalid value for <rect> attribute width="calc(100% - 2px)"",
visible in the browser console) -calc()is only valid for SVG
geometry properties when set through CSS (thestyleattribute or a
stylesheet), not as a plain XML attribute value, which is howwidth
andheightwere set on the dashed-border rect drawn behind the
Clients box and each of its sub-groups. Moved both into thestyle
attribute alongsiderx/ry, which were already handled correctly
this way. A real, confirmed bug, but a cosmetic one on its own - the
SVG's own outer size was already correct via CSS regardless, so this
didn't contribute to the height issue above. - Sub-group boxes no longer stretch to match whichever sibling is
tallest (align-items: flex-startinstead ofstretchon their
shared flex container). This turned out not to be the cause of the
height issue above, but is a real fix in its own right: without it,
one heavily-populated group wrapping onto multiple rows could still
impose its height on every sibling regardless of their own content. - The Internet circle's outline now defaults to the Billing
Remaining color when no billing entities are configured at all,
instead of falling back to the Internet circle's general theme
color. Previously, once billing entities were set, the plain circle
border went transparent in favor of the SVG progress ring drawn on
top of it (colored by Billing Remaining/Billing Progress) - but
without billing configured, the border fell back to whatever generic
color the Internet circle otherwise uses, which read as unrelated
to billing styling entirely. This distinguishes "billing configured
but a sensor value is temporarily unavailable" (still falls back to
the general circle color, unchanged, so the border doesn't flicker
colors as a sensor briefly goes unavailable) from "billing was never
configured for this Internet entity" (now uses Billing Remaining
color specifically). - The editor is no longer a separate lazily-loaded file -
v3.1.2 - Switch only fix
[3.1.2]
Fixed
- A bus made entirely of Switch nodes rendered crushed toward the
bottom whenever no Access Point existed anywhere on the diagram -
the grid row reserved for a Fed Switch's own circle and connector was
sized by whether any Access Point existed (hasAnyAp), while the
content actually placed into that row was correctly gated by whether
an Access Point or a Fed Switch existed (hasApRow). An
Access-Point-free, Switch/Fed-Switch-only bus had real content
rendered into a row deliberately sized to 0px, squashing every Fed
Switch and the Clients box beneath it upward into an overlapping
mess. Row height now uses the same condition that gates the content.
v3.1.1 - Editor bug fix
Fixed
- Router page's WAN Address Entity picker rendered as broken raw
text (".label=WAN Address Entity @value-changed=..." visible
directly in the editor) instead of an entity picker - introduced
earlier in this same cycle by the info-tooltip conversion above,
which accidentally dropped the picker's own opening
v3.1.0 - Discover all the things! Unifi, Omada, Synology, and AsusRouter autodiscovery + Performance Enhancements
[3.1.0]
Adds Auto-Discovery for UniFi Network and TP-Link Omada across Router,
Switch, Nodes, and Clients, catches up this changelog on the
Synology SRM and AsusRouter (AiMesh) discovery already in the codebase
but never previously documented, adds the ability to attach a
discovered Access Point or Switch under an already-configured Node
instead of always creating a new one, Client grouping by Home Assistant
Area, an optional "Show Client Names" label, and a substantial editor
and rendering performance pass aimed at the Companion app.
Added
- Synology SRM and AsusRouter (AiMesh) Auto-Discovery, present in
the codebase but never previously documented in this changelog:
Synology SRM for Router/Gateway and Clients - like LuCI, it has no
dedicated router-status entity of its own, so its candidate uses one
of its client-tracker entities as a reachability proxy too, though
best-effort only, since this integration's older polling model
doesn't guarantee it goes unavailable the moment the router drops the
way LuCI's does. AsusRouter for Router/Gateway (a real connectivity
sensor on its main AiMesh unit, as reliable as TP-Link's), its
satellite units as Access Point Nodes (defaulting to Primary AP when
added, same as a TP-Link Deco satellite), and its Clients. - UniFi Network and TP-Link Omada Auto-Discovery for Router/Gateway,
Switches, Access Points, and Clients, confirmed directly against each
integration's own source. UniFi has no dedicated "device type"
attribute, so classification goes by matching the HA device
registry'smodelfield against known Ubiquiti product-family
prefixes; Omada exposes its own device type directly on the device
tracker'stypeattribute, so its classification is exact. Neither
integration exposes uplink/topology data to Home Assistant, so
results are flat lists, same as every other integration this card
supports - grouping a switch under the node it actually feeds is
still up to you (see the next item). Client grouping, Guest Network
badge detection, and wired/SSID/VLAN sub-grouping were all extended
to recognize Omada's attribute names (guest,switch_mac,ssid,
vlan_id) and AsusRouter'sguestattribute alongside the existing
TP-Link Deco/UniFi ones. - Attach a discovered Access Point or Switch under an existing Node
instead of always creating a new one - a per-candidate dropdown on
the Nodes discovery list sends it straight into an already-configured
Node's Access Points or Fed Switches. Only Nodes that already have
their own Switch are offered, since Access Points/Fed Switches only
ever hang off a Node's Switch. - Auto-Discovery on the Switch page: finds devices UniFi or Omada
have already classified as switches - the same classification used
for Fed Switch and Nodes discovery, not a separate check of its own.
No other integration this card supports models a distinct switch
role, so nothing else is scanned here. - Group Clients by Device Area - a new "Device Area" option
alongside SSID/VLAN/Connected AP, resolving each client's assigned
Home Assistant Area (falling back to its device's Area if the entity
itself has none), independent of any integration. - Show Client Names toggle (Clients → Layout) - displays each
client's name in small text directly below its circle. Off by
default, since it noticeably increases visual density on a Clients
box with a lot of devices; the full name remains available on
tap/hover either way.
Changed
- Icon rendering switched from
<ha-icon>to<ha-svg-icon>for
every fixed/default icon on the card (badges, node circles, the
offline "X" marker) - skips the async icon-metadata lookupha-icon
performs per instance, worthwhile since a populated topology can put
40-80 icons on screen at once. Any icon overridden with a custom
string still renders via<ha-icon>as before, so customizability is
unaffected. - The card and editor are now minified as part of the release
build (Rollup + Terser) rather than shipping full readable source -
previously only the bundled Lit library was minified; the card's own
several thousand lines of source shipped completely untouched,
roughly doubling the JavaScript the browser had to parse. - Discover page section order: Router/Gateway now comes before
Security · DNS Filtering, which in turn comes before Nodes. - Clients page reorganized: the "Labels" section is gone - "Show
Client Names" now lives under a renamed "Layout" section (previously
"Box & Connector"). Sub-sections now run Clients → Auto-Discovery →
Grouping → Guest Network → Layout. - Guest Network badge default icon changed from
mdi:account-questiontomdi:account. - Long explanatory paragraphs under section headings throughout the
editor (the Auto-Discovery blocks especially) are now a small info
icon carrying the same text as a hover tooltip, instead of
always-visible text pushing that section's actual controls further
down the page.
v3.0.1 - IMPORTANT: Now locally bundled, and enhanced auto discovery!
[3.0.1]
A major release built around Auto-Discovery: scan a supported
integration directly from the editor to populate Router, Nodes,
Clients, Internet, Security, and Homelab, instead of hand-picking
every entity yourself. Also introduces IP Address badges and renames
Individual Devices to Clients.
Added
- Auto-Discovery framework across most editor pages, all following
the same pattern: scan, review a list of what was found, select the
ones you want, add. Nothing is ever applied without an explicit
choice, and re-selecting a different candidate than the one already
in place prompts for confirmation before overwriting anything. - Router/Gateway discovery: TP-Link Router, TP-Link Deco (its
master unit), and OpenWrt via the LuCI integration (which has no
dedicated router-status entity of its own, so its candidate uses one
of its client trackers as a reachability proxy - a legitimate signal
since HA marks every entity on that integration unavailable together
the moment the router can't be reached). All candidates are listed
together so you choose between them - e.g. a TP-Link Router acting as
gateway with a Deco mesh riding behind it - rather than one being
silently preferred. TP-Link Router discovery also finds its WAN/LAN
IPv4 sensors and its "Total wired clients" sensor (wired into LAN
Connected Devices) alongside the router pick itself. - Nodes discovery: one "Scan for Nodes" button covers TP-Link Deco
(satellite units, added as Access Points with Backhaul Type/Speed,
Connected Devices, Download/Upload, and IP Address all wired up
automatically from each unit's own entities) and Proxmox VE
(physical/cluster nodes, added as Homelab Server nodes with their
VMs/Containers attached as badges automatically). Results filter by
Integration and by Type (Access Point / Switch / Homelab - Switch
reserved for a future scanner). A Deco master unit is included as a
selectable candidate here too, in case you'd rather add it as a Node
than use it as Router, and defaults to Primary AP when added. - Clients discovery (formerly "Individual Devices" - see Changed):
TP-Link Deco, TP-Link Router, and OpenWrt (LuCI) client trackers,
filterable by integration, with Select All and pagination (10 per
page). Each added Client can be manually named, defaulting to its
entity's Friendly Name. - Internet discovery: Speedtest.net, Ookla Speedtest, Cloudflare
Speed Test, and LibreSpeed for Ping, Jitter, Download, and Upload
(plus ISP name as a one-time default for the Name Override); Aussie
Broadband, Starlink, and Start.ca for Billing Total, Billing
Remaining, Total Downloaded, Total Uploaded, and (Starlink) the
Internet connectivity entity itself. Every service found on every
matching integration is listed separately - including multiple
services on one account, such as several Aussie Broadband lines - so
you pick the right one instead of one being assumed. - Security discovery: AdGuard Home's "queries blocked" sensor for
the DNS Filtering entity, listing every instance found (e.g. a
primary and a secondary DNS server). - Homelab discovery: "Scan for Container/VM" on a Homelab node
combines Portainer (Docker containers) and Proxmox VE (VMs and LXC
containers) into one list. - IP Address badges: optional WAN/LAN address badges on the Router
(WAN centered below Internet, LAN centered below Router) and an
address badge on every Access Point (above the circle for a
non-Primary AP and for a Flat-layout Primary AP; below the circle for
a Tiered-layout Primary AP), plus a WAN badge below Internet when the
Primary AP itself is acting as the router. Gated by a new "Show IP
Addressing" toggle (Advanced → Layout, off by default), sized to
match PoE badges, with independent background/text color pickers on
both the Router and each Access Point, and a new IP Address Badge
Opacity slider (0-100%, default 100%, Advanced → Layout). - Delete All button for Clients, with a confirmation prompt.
- Remove action on every already-applied auto-discovered candidate
(Router, Security/AdGuard, Clients, Nodes, Container/VM) - replaces
the old static "Selected"/"Already added" label with an actionable
button, styled in the secondary text color, that clears exactly the
fields that candidate contributed and makes it selectable again after
a confirmation prompt.
Changed
- "Individual Devices" renamed to "Clients" throughout the editor
and menus. The underlyingindividual_devicesconfig key is
unchanged, so existing configs and dashboards keep working. - Discovery buttons renamed from "Use this" to "Select", for
consistency across every discovery list. - Primary AP layout now defaults to Flat (previously Tiered) for
new cards; existing configs with an explicit layout are unaffected. - Primary AP's own IP Address badge always renders above its
circle, regardless of Tiered/Flat layout. - Primary AP's backhaul is always treated as wired, regardless of
any Backhaul Type entity - it's the mesh's own connection point to
the router, not a hop backhauling through another AP. - "PoE Badge Size" and "PoE Badge Font Size" renamed to "IP/PoE
Badge Size" and "IP/PoE Font Size", reflecting that IP Address
badges now share the same sizing. - The Router-to-Primary-AP connector (Tiered layout) is 50% taller
whenever Show IP Addressing is on, since the Router's LAN badge and
the Primary AP's own badge sit at opposite ends of that segment and
would otherwise overlap. - IP Address badges are now plain text with no icon (previously
included a small IP-network icon). - The card now ships with lit bundled directly into the file,
rather than importing it from a CDN at runtime.
Fixed
- TP-Link Router and Deco auto-discovery found nothing. The
original classification relied on the Home Assistant device
registry'smodelfield containing a hint like "deco" or "router" -
but real TP-Link Router/Deco devices report bare model numbers (e.g.
"BE25") with no such hint, so it never matched. Router and Node
discovery now use attributes confirmed directly against real device
data instead: TP-Link Deco'sdevice_type("deco" vs "client") and
master(true/false) attributes, and, for TP-Link Router, splitting
purely by entity domain (device_tracker= clients, everything else
on that device = router candidates, explicitly excluding buttons so a
reboot button can never be mistaken for a status entity). - TP-Link Router used the wrong entities. "Total Clients" was being
used for both the Router status entity and the LAN Connected Devices
entity; now uses "Connection Type" for Router and "Total wired
clients" for LAN Connected Devices. - Backhaul Type/Speed and node metrics used the wrong entity
suffixes for TP-Link Deco. Entity IDs are slugified from the
sensor's display name, not its internal key, so the real suffixes are
backhaul_type/backhaul_speed/_down/_up/
connected_clients- notconnection_type/download_speed/
upload_speed/client_countas originally assumed. Discovery also
now skips these sensors when they're disabled (several forks ship
them disabled by default) and falls back to readingconnection_type
as an attribute directly on the unit's own tracker entity, which is
always live. - "Select All" on a filtered Clients or Nodes list added devices from
every integration, not just the filtered one. Select All now only
affects entities in the currently visible (filtered) list, and
preserves selections made under a different filter instead of
discarding them. - Wired-connection detection missed some TP-Link Deco setups. Now
checks both theconnectionandconnection_typeattribute names,
fixing incorrect "wireless" grouping/backhaul display where only the
latter was present.