Skip to content

v4.7.0 — MQTT Push Updates für SmartLife

Choose a tag to compare

@moag1000 moag1000 released this 03 May 23:09

Highlights

Sofortige State-Updates über MQTT-Push

Der SmartLife-Coordinator nutzt jetzt den SharingDeviceListener aus tuya-device-sharing-sdk. State-Changes vom Gerät (physischer Knopfdruck, Programmwechsel, Scheduler) erscheinen in HA innerhalb ~500 ms statt bis zu 30 Sekunden.

Optimistic-Lock Hard-Release auf bestätigten Push

Wenn ein MQTT-Push den geschriebenen Wert bestätigt, wird der Lock sofort gelöst — vor dem nächsten Read-Path. UI fühlt sich spürbar responsiver an.

Additiv, nicht ersetzend

30s-Polling bleibt aktiv als Fallback bei MQTT-Disconnect. Kein Single-Point-of-Failure.

Architektur

  • Push Dispatcher in clients/tuya_sharing_client.py: Single _KKTSharingDeviceListener registriert sich einmal pro SmartLife-Account am SDK-Manager und dispatcht per device_id an Coordinator-Callbacks. Translation von code-keyed device.status zu DP-id-keyed Dict via device.local_strategy. Thread-safe via hass.loop.call_soon_threadsafe (SDK MQTT läuft in eigenem Thread).
  • Coordinator Push-Handler in hybrid_coordinator.py: _handle_push_update (callback-decorated synchronous) merged DPs, ruft async_set_updated_data. Sauberer Lifecycle: async_register_push (aufgerufen aus _async_background_connect) + async_shutdown deregistriert.
  • Entity Hard-Release in base_entity.py: _handle_coordinator_update prüft coordinator.last_update_was_push für aggressive Optimistic-Lock-Releases.

Backwards-Compat

  • SmartLife / Hybrid: Profitiert automatisch — keine Konfig-Änderung nötig
  • Local-Only / Manual: Unverändert — kein SDK, kein MQTT, weiter reines Polling

Test-Suite

238/238 passing — 12 neue Tests (10 Push-Dispatcher, 7 Coordinator-Lifecycle inkl. End-to-End-Integration, 3 Hard-Release).

Roadmap (v4.8)

Push-primär mit reduziertem Polling-Intervall, sobald v4.7 in Production stabil läuft.

Upgrade

HACS → Updates → KKT Kolbe → Update → Restart Home Assistant