v4.7.0 — MQTT Push Updates für SmartLife
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_KKTSharingDeviceListenerregistriert sich einmal pro SmartLife-Account am SDK-Manager und dispatcht perdevice_idan Coordinator-Callbacks. Translation von code-keyeddevice.statuszu DP-id-keyed Dict viadevice.local_strategy. Thread-safe viahass.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, ruftasync_set_updated_data. Sauberer Lifecycle:async_register_push(aufgerufen aus_async_background_connect) +async_shutdownderegistriert. - Entity Hard-Release in
base_entity.py:_handle_coordinator_updateprüftcoordinator.last_update_was_pushfü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