Skip to content

Releases: benmac7/network-flow-card

v4.1.0-beta.29

v4.1.0-beta.29 Pre-release
Pre-release

Choose a tag to compare

@benmac7 benmac7 released this 21 Oct 04:08
595aacf
Add files via upload

v4.1.0-beta.28

v4.1.0-beta.28 Pre-release
Pre-release

Choose a tag to compare

@benmac7 benmac7 released this 21 Oct 03:53
c44909b
Add files via upload

v4.0.0 - Hyperbolic Awesomeness, Details Panel, Tablet/Desktop view and more integrations!

Choose a tag to compare

@benmac7 benmac7 released this 08 Oct 00:03
9dc87e9

[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's lan_ip and wan_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 new summary_*_color options.
  • 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 sensor entities 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

Choose a tag to compare

@benmac7 benmac7 released this 30 Sep 13:59
8cfc744

[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 documented round_trip_time_avg attribute). 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/.lan name 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_avg attribute - 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".
  • 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_secondary sensors, added in integration 0.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_secondary entity 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...
Read more

v3.2.0 - Endless Possibilities + discovery for Netgear, Fast.com and Mobile App (all experimental)

Choose a tag to compare

@benmac7 benmac7 released this 22 Sep 07:22
44de9db

[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, and homelabs, 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 further access_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:
    homelabs:
      - entity: sensor.server_a
        security: { dns: true, reverse_proxy: true }
      - entity: sensor.server_b
        security: { vpn: true }
    A Server with no security key shows every item pointed at it,
    exactly as before - additive, not a breaking change.
  • Netgear Auto-Discovery - experimental. Covers the official
    netgear integration (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 (fastdotcom platform,
    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. Its single_config_entry manifest
    flag means at most one Fast.com service will ever be found.
  • Home Assistant Mobile App Auto-Discovery (mobile_app platform,
    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.

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
    homelab Security 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

Choose a tag to compare

@benmac7 benmac7 released this 20 Sep 10:29
cdc67c6

[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_padding arrives as the string "6"
    (config values commonly do), and the extra bottom padding added for
    Show Client Names was computed as pad + 18 - since pad was a
    string, + concatenated rather than added, producing "618" (as in
    618px) instead of 24. Every group box independently carried this
    same broken padding, which is why it affected every box uniformly
    regardless of its own content. pad is 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 (the style attribute or a
    stylesheet), not as a plain XML attribute value, which is how width
    and height were set on the dashed-border rect drawn behind the
    Clients box and each of its sub-groups. Moved both into the style
    attribute alongside rx/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-start instead of stretch on 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

Choose a tag to compare

@benmac7 benmac7 released this 19 Sep 12:07
c1ad655

[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

Choose a tag to compare

@benmac7 benmac7 released this 19 Sep 11:46
6b6625f

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

Choose a tag to compare

@benmac7 benmac7 released this 19 Sep 11:16
f65d50c

[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's model field against known Ubiquiti product-family
    prefixes; Omada exposes its own device type directly on the device
    tracker's type attribute, 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's guest attribute 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 lookup ha-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-question to mdi: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!

Choose a tag to compare

@benmac7 benmac7 released this 17 Sep 15:22
2dca26f

[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 underlying individual_devices config 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's model field 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's device_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 - not connection_type / download_speed /
    upload_speed / client_count as originally assumed. Discovery also
    now skips these sensors when they're disabled (several forks ship
    them disabled by default) and falls back to reading connection_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 the connection and connection_type attribute names,
    fixing incorrect "wireless" grouping/backhaul display where only the
    latter was present.