Home Assistant projects
All projects

Router Card

Lovelace card · Network & servers
v1.0.1 · Nov 12, 2026 HA 2024.8.0+ Marketplace

Firewalls, routers and mesh Wi-Fi at a glance, Firewalla, OPNsense, UniFi, TP-Link Deco, MikroTik, ASUS and more.

WAN state, download and upload rates, CPU, RAM, temperatures, uptime, mesh units and access points, clients and Wi-Fi networks for some twenty router integrations, and for the others from what their entities say. The header icon shows the kind of device with the brand's logo as a badge, tinted by the WAN state.

Highlights

  • Firewalla, OPNsense and pfSense firewalls
  • UniFi, Omada, TP-Link, MikroTik, ASUS, NETGEAR, Keenetic, OpenWrt, GL.iNet and Xiaomi routers
  • TP-Link Deco, eero, Linksys Velop and Ruckus mesh systems, every unit with its state and clients
  • Any other router integration, recognised from the kind and the names of its entities
  • Download and upload rates of the WAN with their last 24 hours
  • CPU, RAM and disk gauges with their last 24 hours, temperatures, fans and load average
  • WAN IP, uptime, latency, packet loss and the last speed test
  • Wi-Fi switches turning a network on, or off after a confirmation
  • Restart button with a confirmation, firmware update chip
  • Thresholds you can set, sensors of your choice
  • Compact mini card with a detail view

Cards

router-cardrouter-mini-card
type: custom:router-card

Install

  1. 1Open the repository in the Marketplace with the Add to Marketplace button above, or addgithub.com/juju35/ha-router-card as a custom repository (category Dashboard).
  2. 2Download it from the Marketplace.
  3. 3Reload the browser and add the card from the dashboard editor.

Documentation

From the README

Features

Features

  • Two cards: a full Router Card and a compact Router Mini Card
  • Detail button at the top right of the mini card: it shows the full card in its place (same device and options), and the collapse button, or a click anywhere outside the card, brings the compact view back (zoom: false removes it)
  • Automatic discovery of the router's entities, by the integration's own translation keys and attributes first, then by the kind of each entity (device class, unit) and the words of its key and entity id, in any language. An integration the card does not know still shows what it can recognise
  • Header icon of the kind of device (firewall, router, mesh unit, access point) coloured with the WAN state like the status pill (green online, red offline, grey unavailable; the brand colour when the integration reports no WAN state), with the brand logo as a badge
  • A drawing of the kind of device, in the brand's colour, opening the admin interface; model and firmware under the name; a chip when a firmware update is waiting
  • Download / upload rates of the WAN, in bytes (kB/s, MB/s) or bits (kb/s, Mb/s), with their last 24 hours drawn behind each tile (recorder statistics), on the full card and the mini card
  • WAN IP address, uptime, latency and packet loss, and the last speed test: the router's own (Firewalla, NETGEAR, Linksys Velop), else the Speedtest.net or Fast.com integration's, or another one set in entities
  • System: CPU, RAM and disk usage gauges with their last 24 hours behind them (0-100 % scale), temperature gauges, fans, load average
  • Mesh and network devices: every mesh unit, access point or switch of the router's integration, with its state and its clients (the main unit first on a mesh system)
  • Local network: connected clients (with the wired / Wi-Fi / guest split when the integration gives it), and a tile per Wi-Fi network with a switch that turns it on, or off after a confirmation popup
  • A restart button at the top right of the full card reboots the device, after a confirmation popup; shown only when the integration exposes it
  • Colours turn orange / red when a threshold is crossed (CPU, RAM, disk, temperatures); every threshold can be set
  • Sensors of your choice for the router's values and the speed test, in YAML or in the visual editor (the WAN interface of a MikroTik, say)
  • Click any value to open its Home Assistant history (more-info dialog), the logo to open the brand's website
  • Visual editor in the dashboard UI for both cards (no YAML needed)
  • Light and dark mode, 22 languages (see Translations)
  • Unavailable entities (for example while the router restarts) are shown as unavailable, not as offline or Wi-Fi off; the restart button is disabled meanwhile
  • Sections view: the full card needs at least 9 columns, the mini card 6; on a narrow card the picture gets smaller then hidden, and the status pill shows only its coloured dot
  • Single file, no external dependency: the drawings and brand logos are embedded; only English is in it, the other languages are loaded when needed

Supported integrations

Supported integrations

Each section shows only what the integration exposes. Built-in integrations ship with Home Assistant; custom ones are installed from their repository.

Firewalls#

Integration Discovered
Firewalla Local (firewalla_local, custom) CPU, RAM, uptime, WAN IP and online / total hosts (attributes of the System Status sensor), ping latency and packet loss, speed test, SSID switches, AP7 access points with their clients
OPNsense (opnsense, custom) WAN interface traffic rates, gateway status, delay and loss, CPU, memory, filesystem, load average, boot time, temperatures, firmware update, trackers
pfSense (pfsense, custom) Same as OPNsense

Routers#

Integration Discovered
UniFi Network (unifi, built in) Gateway: WAN port bandwidth, CPU, memory, temperatures, uptime, WAN latency, clients, firmware update, restart; access points and switches with their state and clients; WLAN switches. Pick an access point to see it on its own
TP-Link Omada (tplink_omada, built in) Gateway WAN link, CPU, memory, access points and switches with their state
TP-Link router (tplink_router, custom) CPU, memory, WAN IP and uptime, clients (wired, Wi-Fi, guest), Wi-Fi switches, restart, LTE rates
MikroTik Router (mikrotik_router, custom) and MikroTik (mikrotik, built in) Rates and connection of the WAN interface (an interface named WAN, else set it in entities), CPU, memory, disk, temperatures, fans, uptime, wired / wireless clients, firmware update
ASUSWRT (asuswrt, built in) and AsusRouter (asusrouter, custom) Download / upload speed, CPU, memory, CPU and radio temperatures, boot time, load average, connected devices, WAN state and IP, Wi-Fi switches, restart
NETGEAR (netgear, built in, Orbi included) CPU, memory, speed test (downlink / uplink bandwidth, average ping), guest Wi-Fi switches, firmware update, restart
Keenetic NDMS2 (keenetic_ndms2, built in) Connection state, trackers
OpenWrt (openwrt, custom), OpenWrt (FaserF) (openwrt, custom), OpenWrt ubus (openwrt_ubus, custom) and LuCI (luci, built in, trackers only) WAN rates, CPU, memory, load, uptime, wireless clients, mesh peers, Wi-Fi switches, as each integration exposes them
GL.iNet (glinet, custom) and GL.iNet Router (glinet_router, custom) WAN status, CPU temperature, load, memory, flash, uptime, clients, restart
Xiaomi Mi Wi-Fi (miwifi, custom) WAN download / upload speed, memory, temperature, uptime, devices, Wi-Fi switches

Mesh Wi-Fi and access points#

Integration Discovered
TP-Link Deco (tplink_deco, custom) Total download / upload of the clients, internet state, CPU and memory (smoothed), every Deco with its state and clients, trackers
eero (eero, custom) Public IP, connected clients, every eero with its state and clients
Linksys Velop (linksys_velop, custom) WAN status and IP, online devices, speed test, every node with its state and clients
Ruckus Unleashed (ruckus_unleashed, built in) Clients (trackers)

Any other integration#

Set device to the device id of a router, firewall or access point of another integration (the device page's address ends with it): the card recognises its entities by their kind and their names (download / rx / in, cpu, memory, uptime, wan, clients…) and shows what it finds, in the integration's neutral colours. Open an issue to add the integration's branding and anything the card misses.

Configuration

Configuration

Visual editor#

Edit a dashboard, click Add card and search for Router Card or Router Mini Card. The router is preselected; pick another device in the list if you have several, set an optional title, choose the sections to display, the thresholds, the rate unit and the language. The preview updates live, and options left at their default are kept out of the generated YAML.

Minimal#

type: custom:router-card
type: custom:router-mini-card

Full options#

type: custom:router-card
device: 0123456789abcdef0123456789abcdef
title: Firewall
kind: firewall
admin_url: https://192.168.1.1
show_title: true
show_subtitle: true
show_image: true
show_logo: true
show_network: true
show_history: true
show_speedtest: true
show_system: true
show_nodes: true
show_lan: true
cpu_warning: 80
cpu_critical: 95
ram_warning: 80
ram_critical: 90
disk_warning: 80
disk_critical: 90
temp_warning: 75
temp_critical: 90
rate_unit: bits
language: fr
entities:
  rate_down: sensor.mikrotik_ether1_wan_rx
  rate_up: sensor.mikrotik_ether1_wan_tx
  speedtest:
    download: sensor.librespeed_download
    upload: sensor.librespeed_upload
    ping: sensor.librespeed_ping
type: custom:router-mini-card
device: 0123456789abcdef0123456789abcdef
title: Mesh
show_network: true
show_history: true
show_system: true
zoom: true
rate_unit: bits

Options reference#

Option Card Default Description
device both First router found Device to display: its device id (pick it in the visual editor), or platform:<integration> for an integration with trackers only (Ruckus Unleashed, LuCI)
title both Device name Card title
show_title both true Show the title in the header (e.g. false under a section heading of your own)
show_subtitle both true Show the model and firmware under the title
kind both Detected Kind of device, for the header icon and the drawing: firewall, router, mesh or ap (the integration's, or from the model for UniFi and Omada)
admin_url both Device's own Admin interface opened when clicking the picture (else the device's configuration URL, else the brand's usual address)
show_image both true Show the drawing of the kind of device
show_logo both true Show the header icon, coloured with the WAN state, with the brand logo (opens the brand website when clicked)
show_network both true Download / upload rates (and WAN IP, uptime, latency, speed test on the full card)
show_history both true 24 h curves behind the rate tiles and the CPU / RAM / disk gauges, from the recorder's 5-minute statistics (sensors with a state_class): the curve breaks where the recorder has no data
show_speedtest full true The last speed test in the network section (download, upload and ping; its time on hover)
show_system both true CPU, RAM, disk and temperature gauges, fans and load average (CPU and hottest temperature on the mini card)
show_nodes full true Mesh units, access points and switches of the router's integration
show_lan full true Connected clients and Wi-Fi networks
entities both — Sensors of your choice (see below)
cpu_warning, cpu_critical both 80, 95 CPU usage (%) from which the gauge turns orange, red
ram_warning, ram_critical both 80, 90 RAM usage (%) from which the gauge turns orange, red
disk_warning, disk_critical both 80, 90 Disk usage (% used) from which the gauge turns orange, red
temp_warning, temp_critical both 75, 90 Temperature (°C, whatever the sensor's unit) from which a gauge turns orange, red
zoom mini true Detail button at the top right: shows the full card in place of the mini card, and back
rate_unit both bytes Rates unit: bytes (kB/s, MB/s) or bits (kb/s, Mb/s)
language both Auto Force language: en, fr, de, es, sr, sr-Latn, it, nl, pt, pl, ro, da, sv, bg, ru, uk, hu, sk, cs, sl, lv or el (auto-detects from HA settings)

Sensors of your choice#

The cards find the router's sensors and the speed test by themselves. entities sets others, in YAML or in the visual editor under Sensors of your choice.

Key Value
rate_down, rate_up Download and upload rates of the WAN
wan WAN state (a connectivity binary sensor, or a sensor whose state is online / offline, connected / disconnected, up / down)
ip, boot WAN IP address, uptime (a boot date or a duration)
cpu, ram CPU and RAM usage, in %
clients Number of connected clients
speedtest download, upload and ping sensors of a speed test; set, they replace the one found

How it works

How it works

The cards read the entity and device registries of Home Assistant. A device of a supported integration is a router when its entities tell its traffic, its WAN state or its system (CPU, RAM, uptime…); the editor lists them, the gateway first. Each value of the device is then found:

  1. by the integration's own translation keys, when the card knows them (UniFi device_cpu_utilization, Omada wan_link, Linksys Velop wan_status…);
  2. by the integration's attributes (Firewalla gives its CPU, RAM, uptime, WAN IP and hosts as attributes of its System Status sensor);
  3. by the kind of entity and its words: a data-rate sensor whose key or entity id says rx / in / download is a download rate, a % sensor that says cpu is the CPU usage, a timestamp that says uptime / boot the boot date, a connectivity binary sensor that says wan / internet the WAN state… The integrations without translation keys name their entities in English, so their entity ids are English whatever the user's language; those with translation keys keep English keys in every language.

The WAN is preferred to the other interfaces (a rate that says wan or internet wins over lan, guest or vpn), totals to per-unit values (TP-Link Deco), smoothed values to raw ones, and the rates of an interface device of the router (MikroTik) are used when the router itself has none. A speed test result, a backhaul or a link speed is never taken for traffic.

The network devices are the other devices of the router's integration entry (UniFi access points and switches, Deco, eero and Velop units, Firewalla AP7) that tell their state or their clients; a device with a tracker is a client, not a unit. The clients are the integration's count, else the sum of its wired / Wi-Fi / guest counts, else its trackers at home. On a mesh system whose count is the main unit's own (Deco), the clients of every unit are added up.

Thresholds:

Value Orange Red
CPU 80 % 95 %
RAM 80 % 90 %
Disk 80 % 90 %
Temperatures 75 °C 90 °C

Temperatures are shown in the unit of their sensor (°F with the imperial unit system) and compared to these thresholds after conversion to °C.

Support

Support

If you find this project useful, you can support its development:

Buy Me a Coffee

Changelog

CHANGELOG.md

1.0.1Nov 13, 2026Latest

Fixes

  • eero: the header shows the eero logo as a badge, missing in 1.0.0.

1.0.0Nov 12, 2026

First release: generic Lovelace cards for firewalls, routers and mesh Wi-Fi systems, asked for Firewalla (juju35/ha-internet-box-card#105) and TP-Link Deco (juju35/ha-internet-box-card#106) by ssilence5.

Features

  • Router Card (custom:router-card) and Router Mini Card (custom:router-mini-card), with a detail button that shows the full card in place of the mini card.
  • Supported integrations: Firewalla Local, OPNsense, pfSense, UniFi Network, TP-Link Omada, TP-Link Deco, TP-Link router, MikroTik (core and MikroTik Router), ASUSWRT and AsusRouter, NETGEAR, Keenetic NDMS2, OpenWrt, LuCI, GL.iNet, Xiaomi Mi Wi-Fi, eero, Linksys Velop and Ruckus Unleashed; any other router integration by setting its device.
  • Discovery by the integration's translation keys and attributes, then by the kind and the words of each entity, in any language.
  • WAN state, download / upload rates with their 24 h curves, WAN IP, uptime, latency and packet loss, last speed test.
  • CPU, RAM and disk gauges with their 24 h curves, temperatures, fans, load average.
  • Mesh units, access points and switches with their state and clients; connected clients; Wi-Fi switches, turned off after a confirmation.
  • Restart button with a confirmation popup, firmware update chip.
  • Thresholds for CPU, RAM, disk and temperatures; sensors of your choice (entities); kind of device (kind).
  • Visual editor, light and dark themes, 22 languages loaded on demand.