Monitor and control your MikroTik router from Home Assistant.
Community-maintained fork with active bug fixes for HA 2025.12+ compatibility, RouterOS 7 support, and more.
Stable release rolling up the v2.3.20 beta cycle. Both new features were validated live — PoE-out energy on real metering hardware (#59, thanks @Dillton) and netwatch naming on a multi-entry deployment (#70, thanks @L2jLiga).
- PoE energy for the Energy Dashboard — per-port energy sensors (kWh,
total_increasing) + a device total, restart-persistent. Enable the existing PoE sensors option. Addresses #59. - Estimated energy on non-metering hardware — where a PoE-out port powers a device that has no wattage reading, energy is estimated from the device's datasheet rating (via Neighbor Discovery) and labelled
power_source: estimated— a coarse upper bound, not a measurement. - Netwatch entities named by their netwatch
name— if you set a distinctnameon each netwatch entry, that name is now shown in Home Assistant instead of a sharedcomment, so entries that share a comment are no longer indistinguishable. Entries with no name keep showing their comment (or "Netwatch" if neither is set). Your entity IDs and automations are unchanged. Addresses #70. - Correct librouteros
login_methodhandling (ISS-260417) + HA deprecation cleanup (device_trackerScannerEntity, config-flow reload).
Stable release rolling up the read-only and quality-scale fixes since v2.3.18. Validated live against a multi-device RouterOS deployment before tagging.
- Read-only users now get wireless / CAPsMAN / PPP data — on RouterOS 7.x, an HA user without write/policy/reboot rights previously saw zero wireless clients. The firmware version is now read from
/system/resource, so capability detection works without granting write access. Thanks to @ahharvey for the fix and wifi-qcom testing. Addresses #82. - Reauthentication flow — if your router credentials change, re-enter them via the normal Home Assistant reauth prompt instead of deleting and re-adding the integration.
- Cleaner entity names — distinct device-trackers and per-VLAN DHCP-server sensors no longer collide into
_2/_3names (e.g. several devices all reporting the hostnamelwip0).unique_ids are unchanged, so existing entity IDs and automations are preserved. - Environment sensors no longer get stuck
unavailable— empty or transient RouterOS global script variables (e.g.defconfMode, cleared on reboot) no longer create empty-state or orphaned entities. - HA Quality Scale: Silver — Bronze + Silver tiers met and declared (typed runtime-data, per-platform parallel updates, reauthentication).
- More diagnosable firmware detection — version-gated polling paths now log at debug instead of silently doing nothing while the firmware version is briefly unknown.
- Quality & process — documented release validation (CI test suite + live per-sensor-class cross-check against real RouterOS hardware) and review gates (multi-agent audit panels + specialized passes).
- Internal: test-suite hardening and CI resilience.
- CAPsMAN now works on legacy-wireless routers — RouterOS 7.13+ devices still running the legacy
wirelesspackage weren't detecting CAPsMAN wireless clients. Fixed. Addresses #68. - See which AP a wireless client is on — new
capsman-interfaceattribute on device trackers (e.g.Slaapkamer), useful for per-room automations. Works even when DHCP/ARP claimed the host first. Existinginterface/sourceattributes unchanged. - Thanks to @fuecy for the diagnostics and clean-install testing.
- API concurrency fix —
set_value/executenow hold the API lock around the librouteros response iteration, preventing a race with the 30s coordinator poll that could disconnect the integration on rapid switch toggles. Addresses #64. - HA 2026.5.0 / Python 3.14 not yet validated — testing planned; see
docs/ISSUES.md.
- UPS without configured device no longer breaks the integration —
/system/upsempty path stopped triggering "Mikrotik Disconnected". Addresses #61. - PoE out current value corrected — Native unit was AMPERE while RouterOS reports mA, causing values 1000× too large. Now declared as MILLIAMPERE. Addresses #60.
- Hotfix — Pin
librouteros<4.0to prevent integration failure after librouteros 4.0.1 release (connect()kwarg rename). Addresses #55 and #56.
- Wireless client detection fix — Clients on routers with empty WiFi registration tables (e.g. hAP ac2) now correctly detected as wireless via bridge host table lookup
- DHCP server sensors — New status and lease count sensors per DHCP server instance
- Documentation — Comprehensive data store schema, sensor gap analysis, and community feature poll
- Faster startup — No longer blocks HA startup by pinging every tracked host sequentially; uses ARP table for instant first-run availability
- Parallel MAC lookups — Vendor resolution now runs concurrently instead of one-by-one
- Entity cleanup services —
cleanup_entitiesremoves orphaned entities;cleanup_stale_hostsreports/removes stale device trackers - Bug fixes — Firmware v7+ client traffic comparison fix, timezone-aware datetimes, API parser type hint fix
- Attribute cleanup — Entity attributes now only show information relevant to each port type (SFP diagnostics on SFP ports only, PoE on PoE-capable ports only, wireless metrics on wireless clients only)
- Mangle fix — Rules differing only by interface were silently dropped as duplicates
- Device tracker fix — ARP
"incomplete"status no longer falsely shows devices as "home" (PR #38)
- Firewall RAW switches — enable/disable individual RAW rules (upstream #310)
- Container monitoring — monitor and start/stop MikroTik containers, RouterOS 7.4+ (upstream #334)
- DHCP client sensors — WAN IP, gateway, DNS, lease expiry per interface (upstream #321)
- Script env refresh — environment variables update immediately after script execution (upstream #298)
- Device tracking fix — disabled duplicate entity registration that caused thousands of "does not generate unique IDs" log errors every 30s
- ARP filtering — failed ARP entries no longer cause false "home" status (#17)
- ARP failed-status filtering moved to
async_process_host()for correct bridge-interface lookups
- Options flow crash fixed — config panel now works on HA 2025.12+ (upstream #470, #471)
- Deadlock fix —
run_script()lock leak permanently freezing the integration is resolved - Blocking I/O eliminated — switch toggles, button presses, and firmware updates no longer freeze the HA UI
- Deprecated API cleanup — updated
DeviceInfoparams and added missing PoE translation
- Interfaces: enable/disable, SFP info, PoE-Out control & power monitoring, RX/TX traffic, device presence
- NAT / Mangle / Filter / RAW / Simple Queue rule switches
- Container monitoring and control (RouterOS 7.4+)
- DHCP client sensors (WAN IP, gateway, DNS, lease expiry)
- PPP user monitoring and control
- Kid Control
- Client traffic monitoring (Accounting on v6, Kid Control Devices on v7+)
- Device tracker for all network hosts
- System sensors (CPU, Memory, HDD, Temperature, Voltage, Fan speed)
- RouterOS and firmware update sensors
- Script execution
- Environment variables
- GPS and UPS monitoring
- Configurable scan interval and traffic units
- Documentation
- Configuration
- Report a Bug
- Suggest an idea
- Upstream repo (original by tomaae)
