Version History - MiWiFi XiaoHack Edition


📡 Automatic releases from GitHub

The latest versions are synchronized automatically from GitHub.

Showing 6–10 of 57 releases

📦 v3.5.4 – XiaoHack Edition

Date: 2026-01-28 19:16:32
View original release on GitHub

📝 Changelog — MiWiFi Integration

📦 Version v3.5.4 – 2026-01-28


✅ Fixes & Stability

  • 🔁 Fixed repeated “Unexpected error fetching MiWiFi updater data” loops
  • Implemented a safe request wrapper to handle the common httpx “client has been closed” condition.
  • Requests are retried once after recreating the HTTP client via Home Assistant’s shared client factory, preventing log spam and repeated coordinator failures.
  • 🧼 Mitigated potential long-run memory growth related to unmanaged HTTP clients
  • All HTTP requests now consistently reuse Home Assistant’s shared httpx client (get_async_client) through a client_factory, avoiding ad-hoc client creation.
  • A user reported this change corrected a severe memory growth issue that saturated their system roughly every ~48h after updating to the previous version (suggesting the integration was contributing to the increasing memory usage).
  • 🔐 Improved protocol stability (AUTO → HTTP/HTTPS) without breaking legacy setups
  • Protocol detection remains compatible while requests are now executed through the retry-safe wrapper.
  • 🙌 Community contribution
  • Thanks to @pacorola for the upstream improvements and real-world testing that helped identify and validate this fix.

⚙️ Improvements

  • 🧩 More resilient networking layer
  • The Luci client can recover from closed-client states during reloads/reconnections by recreating the HA-managed client on demand.

✅ Compatibility

  • No breaking changes expected.
  • Works with existing AUTO/HTTP/HTTPS configurations and keeps current endpoint mappings intact.

📘 How to Update

  1. Update the integration files (HACS or manual).
  2. Restart Home Assistant.
  3. (Recommended) Check logs after restart to confirm the updater no longer spams:
  • “Unexpected error fetching MiWiFi updater data”
  1. If you previously experienced memory growth, monitor HA memory usage over the next days to confirm stability.

ℹ️ Información adicional

  • If your router firmware is unstable or reboots often, the new retry-safe client logic helps prevent transient closed-client errors from cascading into repeated failures.

💖 Support & Donations

If you find this integration useful and want to support continued development:


🔄 Summary of changes

AreaChange
NetworkingRetry-safe requests + HA shared client factory
StabilityReduced updater log loops during closed-client scenarios
MemoryReduced risk of resource accumulation from unmanaged HTTP clients
CreditsContribution + validation by @pacorola

📦 v3.5.3 – XiaoHack Edition

Date: 2026-01-25 18:14:09
View original release on GitHub

📝 Changelog — MiWiFi Integration

📦 Version v3.5.3 – 2026-01-25


✅ Fixes & Stability

  • 🧩 Fixed duplicated device_tracker entities/devices in Mesh setups
  • Client trackers now use a stable Unique ID based only on the client MAC, not the router entry_id.
  • Prevents HA creating *_2, *_3 duplicates when a device roams between nodes.
  • 🧱 Fixed Home Assistant warning about invalid __HTML_PLACEHOLDER_0__ references (HA 2025.12+)
  • Ensures the referenced router/node device exists in the device registry before linking clients via via_device.
  • Eliminates: device_registry.async_get_or_create referencing a non existing via_device.
  • 🧹 Improved cleanup/migration for legacy client sensors
  • Automatically removes old per-device sensor unique_id schemes that caused duplicates across Mesh routers.
  • ⚙️ Fixed “Create device sensors” option not being applied correctly
  • The option is now respected on startup and after restarts, preventing unexpected behavior where sensors were skipped even when enabled.

⚙️ Improvements

  • 📡 Per-device sensors are now Mesh-safe and consistent
  • When “Create device sensors” is enabled:
  • Sensors are created using a stable MAC-based unique_id (so they don’t duplicate when roaming).
  • Sensors are created as disabled by default (opt-in), matching best practices.
  • When disabled:
  • Any existing per-device sensors are purged/removed automatically.
  • 🔗 Added/standardized “Connected via” data for Mesh visibility
  • Device tracker entities expose the “connected via node/router” data so the panel can always identify the current node even if device sensors are not enabled.
  • 🧰 Kept key debug logs for troubleshooting
  • Restored/kept the sensor startup debug that prints is_main, device_sensors_enabled, and device counts to diagnose edge cases quickly.

✅ Compatibility

  • ✅ Compatible with Home Assistant 2026.1.0+
  • ✅ Forward-compatible with Home Assistant 2025.12+ device-registry via_device validation changes.
  • 🧩 Designed for Mesh (multi-router) deployments: clients roam without duplicate devices/entities.

📘 How to Update

  1. Replace all files inside custom_components/miwifi/ with the contents of this release.
  2. Restart Home Assistant.
  3. If you previously had duplicates:
  • Check Settings → Devices & Services → Entities for leftover old entries (this release will auto-clean most of them).
  1. If you want per-device sensors:
  • Enable “Create device sensors” in the integration options.
  • Then selectively enable the client sensors you actually want (they are disabled by default).

ℹ️ Additional Information

  • Client devices in Mesh should now exist once in Home Assistant, while still showing which node they are connected through.
  • This release focuses on stability + entity identity. Next step is aligning the MiWiFi Panel to display node assignment and device entities consistently.

💖 Support & Donations

If you find this integration useful and want to support continued development:


🔎 Summary of changes (v3.5.2 → v3.5.3)

AreaBeforeAfter
Mesh client identityDuplicate devices/entities on roamingStable MAC-based unique IDs
via_device linkageWarning + future breakage riskSafe linking (router device ensured)
Per-device sensorsNot created / inconsistent, duplicates possibleCreated only when enabled, stable IDs, disabled by default
Service block_deviceCould fail due to main-router capability detection mismatchUses main router consistently and correct capability check
Debug visibilityKey sensor startup logs missingLogs kept for troubleshooting

📦 v3.5.2 – XiaoHack Edition

Date: 2026-01-18 18:27:15
View original release on GitHub

📝 Changelog — MiWiFi Integration

📦 Version v3.5.2 – 2026-01-18


✅ Fixes & Stability

  • 🧯 Fixed config entry setup cancellations (AX6000 / slow LUCI endpoints)
  • Error resolved:
  • Setup of config entry ... cancelled
  • asyncio.exceptions.CancelledError
  • Root cause: certain firmwares can hang on wifi_macfilter_info during the first refresh, causing Home Assistant bootstrap timeouts.
  • Fix: added per-call timeout support in LUCI requests and enforced a short timeout for macfilter_info() to fail fast and avoid bootstrap cancellation.
  • 🧩 Fixed MiWiFi Panel showing 0 connected devices (device_tracker not adding entities)
  • Error resolved:
  • Error adding entity device_tracker.miwifi_* ...
  • AttributeError: 'MiWifiDeviceTracker' object has no attribute '__attr_name'
  • Root cause: missing / incorrect _attr_name initialization referenced by device_info during entity add.
  • Fix: ensured _attr_name is always set and consistently referenced, restoring stable device_tracker entity creation.
  • 🔁 Prevented duplicated client sensors in mesh roaming scenarios
  • Issue resolved:
  • sensors being created as sensor.<name> and sensor.<name>_2 depending on which mesh node the client connected to.
  • Root cause: per-device sensor identity was derived from router entry context or name-based entity_id, causing collisions when clients roam between nodes.
  • Fix:
  • device sensor unique_id is now derived from MAC + sensor key, independent of router entry.
  • entity_id is now stable: sensor.miwifi_<mac>_<key>.
  • 🧰 PR #239 improvements (merged with XiaoHack adjustments)
  • Integrated upstream fixes and stability improvements from PR #239, with minimal, compatibility-safe adaptations to the XiaoHack codebase.
  • Ensured the new behavior remains non-breaking for existing installs while improving reliability on newer Home Assistant versions.

⚙️ Improvements

  • 🔧 New global switch for client sensors (disabled by default)
  • Added enable_device_sensors (default: false) in the integration options.
  • Behavior:
  • When OFF: no per-device client sensors are created (and legacy duplicates are cleaned from the main router).
  • When ON: per-device sensors are created only from the main router to avoid duplicates in mesh, and remain disabled-by-default in the entity registry so users enable only what they want.
  • 🧭 UI labels added for new option
  • Added friendly option label in strings.json so the setting is visible and understandable from the UI.

✅ Compatibility

  • ✅ Home Assistant 2026.1+ (Python 3.13 cancellation behavior / bootstrap timeouts)
  • ✅ Mesh environments (stable identity for roaming clients)
  • ✅ Routers with partial/slow LUCI endpoints (fail-fast behavior for problematic endpoints)

📘 How to Update

HACS (recommended)

  1. HACS → Integrations → MiWiFi XiaoHack Edition
  2. Update to v3.5.2
  3. Restart Home Assistant

Manual

  1. Replace /config/custom_components/miwifi/ with the v3.5.2 release
  2. Restart Home Assistant

Optional (client sensors)

  • Settings → Devices & services → MiWiFi → Configure
  • Enable: Create device sensors (clients)

Note: client sensors remain disabled-by-default in the Entity Registry. Enable only the entities you want.


ℹ️ Additional Information

  • Recommended defaults:
  • Keep enable_device_sensors = false unless you explicitly need per-device sensors.
  • Migration/cleanup:
  • Legacy per-device sensor duplicates tied to router entry context are automatically cleaned from the main router.

💖 Support & Donations

If you find this integration useful and want to support continued development:


🙌 Credits

  • Thanks to @pacorola for contributing the improvements included via PR #239.

🔎 Summary of changes

AreaChangeFile(s)Impact
LUCI / BootstrapFail-fast timeout for macfilter_info to prevent setup cancellationluci.py, updater.pyPrevents bootstrap-stage cancellations on slow firmwares
Device TrackerFix _attr_name / device_info crash + restore stable namingdevice_tracker.pyPanel shows clients again; entities add reliably
Client SensorsMesh-safe unique_id and stable entity_id by MAC + keysensor.pyEliminates duplicate _2 sensors during roaming
Options / UIGlobal switch to enable/disable client sensors (default OFF)const.py, config_flow.py, strings.jsonUser-controlled creation of per-device sensors
UpstreamPR #239 merged (XiaoHack-adapted)luci.py, updater.py, device_tracker.pyStability and HA async best practices improvements

📦 v3.5.1 – XiaoHack Edition

Date: 2026-01-04 20:40:08
View original release on GitHub

📝 Changelog — MiWiFi Integration

📦 Version v3.5.1 – 2026-01-04


✅ Fixes & Stability

  • 🧵 Fixed Home Assistant “blocking call” warning (SSL / certifi)
  • Warning resolved:
  • Detected blocking call to load_verify_locations... inside the event loop
  • Root cause: direct httpx.AsyncClient() creation inside the event loop in MiWifiPanelUpdate.async_release_notes().
  • Fix: switched to Home Assistant’s recommended shared client (get_async_client(self.hass)) to avoid blocking SSLContext.load_verify_locations. #227
  • 🐞 Fixed __HTML_PLACEHOLDER_0__ when adding entities
  • Warning resolved:
  • RuntimeWarning: coroutine 'EntityPlatform.async_add_entities' was never awaited
  • Root cause: platform.async_add_entities(to_add) called from a @callback context (non-async) in sensor.py.
  • Fix: safely schedules the coroutine via hass.async_create_task(...) when needed.

⚙️ Improvements

  • 🧩 Compatibility-safe fallbacks
  • Added a safe fallback when homeassistant.helpers.httpx_client.get_async_client is not available (very old Home Assistant), preserving legacy behavior without breaking modern async best practices.

✅ Compatibility

  • ✅ Home Assistant: compatible with current versions where event-loop blocking calls are detected and where EntityPlatform.async_add_entities is async.
  • 🛡️ Legacy-friendly: includes fallback logic for older installations.

📘 How to Update

HACS (recommended)

  1. HACS → Integrations → MiWiFi XiaoHack Edition
  2. Update to v3.5.1
  3. Restart Home Assistant

Manual

  1. Replace /config/custom_components/miwifi/ with the v3.5.1 release
  2. Restart Home Assistant

ℹ️ Additional Information

  • No configuration changes.
  • No migrations.
  • This release focuses on eliminating async warnings that can impact stability/performance in modern Home Assistant environments.

💖 Support & Donations

If you find this integration useful and want to support continued development:


🔎 Summary of changes

AreaChangeFile(s)Impact
Async / SSLRemove blocking load_verify_locations from event loopupdate.pyEliminates HA “blocking call” warning
EntitiesProperly schedule async_add_entities from callbackssensor.pyEliminates “coroutine was never awaited” warning

📦 v3.5.0 – XiaoHack Edition

Date: 2026-01-03 18:23:14
View original release on GitHub

📝 Changelog — MiWiFi Integration

📦 Version v3.5.0 – 2026-01-03


✅ Fixes & Stability

  • 🧠 Stable per-device metrics exposure: device traffic/usage metrics are now exposed through dedicated sensor entities (instead of relying only on device_tracker attributes), improving compatibility across dashboards and automations.
  • 🔄 Reliable dynamic updates: new device sensors are created automatically when a new client is detected, without requiring a Home Assistant restart (hooked to the same internal update/signaling flow).
  • 🧹 Cleaner entity lifecycle: device sensors follow the same cleanup logic as tracked devices, avoiding orphan entities after purges.

⚙️ Improvements

  • 📡 New per-device sensors (one set per client entity), built from the same authoritative source (updater.devices) used by the tracker:
  • sensor.<entity>_down_speed
  • sensor.<entity>_up_speed
  • sensor.<entity>_total_usage
  • sensor.<entity>_signal_quality
  • sensor.<entity>_signal
  • sensor.<entity>_ip
  • sensor.<entity>_connection
  • sensor.<entity>_online
  • sensor.<entity>_last_activity
  • sensor.<entity>_first_seen
  • sensor.<entity>_internet_blocked
  • 📏 Human-readable units (recommended HA approach):
  • Device speeds are exposed as DATA_RATE with native units in Bytes/s, allowing Home Assistant to automatically display kB/s / MB/s when appropriate.
  • Total usage is exposed as DATA_SIZE with native units in Bytes, allowing Home Assistant to automatically display MB / GB based on the value.
  • 🔗 Device registry consistency: sensors are linked to the same client device entry (per MAC), improving the device page experience and entity grouping.

✅ Compatibility

  • ✅ Fully compatible with existing device_tracker.miwifi_* entities.
  • ✅ No breaking changes in tracker attributes; sensors are additive.
  • ✅ Uses Home Assistant best practices (device_class, state_class) to preserve statistics, history and UI formatting.

📘 How to Update

  1. Update the integration files to v3.5.0.
  2. Restart Home Assistant.
  3. Optional (recommended if you previously tested earlier versions):
  • If you notice old units still displayed, check the entity settings (custom unit overrides) or remove the affected entities from the Entity Registry and restart again.

ℹ️ Información adicional

Example: new per-device entities
  • Before: traffic/usage only available inside device_tracker attributes.
  • Now: you can build dashboards/automations directly using sensors like:
  • sensor.servidor_down_speed
  • sensor.servidor_total_usage
Notes
  • Speeds and usage are exposed with stable native units; Home Assistant takes care of the readable scaling (MB/s, GB, etc.) in the UI.

💖 Support & Donations

If you find this integration useful and want to support continued development:


🧾 Summary of changes

AreaChange
SensorsAdded per-device sensors for speeds, usage, signal, connection and timestamps
UnitsAdopted HA-recommended DATA_RATE / DATA_SIZE for automatic human-readable scaling
LifecycleAuto-create sensors on new devices and clean them up during purges
CompatibilityAdditive update, keeps existing tracker entities intact
Xiaohack Chatbot Asistente XiaoHack

Xiaohack V 3.3 | © Copyright 2024 | Users Online: 0 | Estado: Offline