Eine benutzerdefinierte Home Assistant-Integration für die lokale Verwaltung von Tuya-basierten Geräten.
Diese benutzerdefinierte Integration aktualisiert den Gerätestatus durch Push-Aktualisierungen statt durch Abfragen, sodass Statusaktualisierungen schnell erfolgen (auch bei manueller Durchführung). Die Integration unterstützt auch die Tuya IoT Cloud APIs zum Abrufen von Informationen und lokalen Schlüsseln der Geräte.
HINWEIS: Die Konfiguration des Cloud-API-Kontos ist nicht obligatorisch (LocalTuya kann auch ohne funktionieren), wird jedoch dringend empfohlen, um den lokalen Schlüssel einfach abzurufen (und automatisch nach dem erneuten Koppeln eines Geräts zu aktualisieren). Cloud-API-Aufrufe werden nur beim Start ausgeführt und wenn eine Aktualisierung des lokalen Schlüssels erforderlich ist.
Die folgenden Tuya-Gerätetypen werden derzeit unterstützt:
Die Energieüberwachung (Spannung, Strom, Watt usw.) wird für kompatible Geräte unterstützt.
Derzeit werden Tuya-Protokolle von 3.1 bis 3.4 unterstützt.
Die Entwicklung dieses Repositorys begann als Code von @NameLessJedi, @mileperhour und @TradeFace. Ihr Code wurde dann grundlegend überarbeitet, um eine ordnungsgemäße Integration in die Home Assistant-Umgebung zu ermöglichen, indem Konfigurationsablauf und andere Funktionen hinzugefügt wurden. Weitere Informationen finden Sie im Abschnitt „Danke an“ weiter unten.
Wenn Sie HACS verwenden, ist es am einfachsten, LocalTuya über HACS zu installieren.
Für die manuelle Installation kopieren Sie den Ordner „localtuya“ und seinen gesamten Inhalt in den Ordner „custom_components“ Ihres Home Assistant. Dieser Ordner befindet sich normalerweise in Ihrem /config
Ordner. Wenn Sie Hass.io ausführen, kopieren Sie den Ordner mit SAMBA. Wenn Sie Home Assistant Supervised ausführen, befindet sich der Ordner „custom_components“ möglicherweise unter /usr/share/hassio/homeassistant
. Möglicherweise müssen Sie den Ordner custom_components
erstellen und dann den Ordner „localtuya“ und seinen gesamten Inhalt dorthin kopieren.
HINWEIS: Sie müssen über den Schlüssel und die ID Ihres Tuya-Geräts verfügen, um LocalTuya verwenden zu können. Am einfachsten ist es, das Cloud-API-Konto in der Integration zu konfigurieren. Wenn Sie dies nicht tun möchten, gibt es abhängig von Ihrer Umgebung und den Geräten, die Sie besitzen, mehrere Möglichkeiten, die local_keys abzurufen. Ein guter Ort, um Informationen zu erhalten, ist https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md oder https://pypi.org/project/tinytuya/.
HINWEIS 2: Wenn Sie planen, diese Geräte in ein Netzwerk mit Internet zu integrieren und ihren Internetzugang zu blockieren, müssen Sie auch DNS-Anfragen blockieren (an den lokalen DNS-Server, z. B. 192.168.1.1). Wenn Sie nur ausgehendes Internet blockieren, befindet sich das Gerät in einem Zombie-Zustand. Es wird jegliche Verbindung mit dem lokalen Schlüssel verweigern bzw. nicht darauf reagieren. Daher müssen Sie zunächst die Geräte mit einer aktiven Internetverbindung verbinden, den lokalen Schlüssel jedes Geräts abrufen und den Block implementieren.
HINWEIS: Ab Version 4.0.0 wird die Konfiguration mithilfe von YAML-Dateien nicht mehr unterstützt. Die Integration kann nur über den Konfigurationsfluss konfiguriert werden.
Um mit der Konfiguration der Integration zu beginnen, klicken Sie einfach auf die Schaltfläche „+INTEGRATION HINZUFÜGEN“ auf der Seite „Einstellungen – Integrationen“ und wählen Sie „LocalTuya“ aus dem Dropdown-Menü aus. Die Cloud-API-Konfigurationsseite wird angezeigt und fordert Sie zur Eingabe Ihrer Tuya IoT Platform-Kontoanmeldeinformationen auf:
Informationen zum Einrichten eines Tuya IoT Platform-Kontos und zum Einrichten eines Projekts darin finden Sie in den Anweisungen für die offizielle Tuya-Integration: https://www.home-assistant.io/integrations/tuya/. Der Ort, an dem Sie die Client-ID und das Geheimnis finden, ist beschrieben in diesem Link (im Abschnitt „Autorisierungsschlüssel abrufen“), während die Benutzer-ID auf der Unterregisterkarte „Tuya-App-Konto verknüpfen“ im Cloud-Projekt zu finden ist:
Hinweis: Wenn Sie bereits über ein Konto und ein IoT-Projekt verfügen, stellen Sie, wie im obigen Link angegeben, sicher, dass dieses nach dem 25. Mai 2021 erstellt wurde (aufgrund der in der Cloud für Tuya 2.0 eingeführten Änderungen). Andernfalls müssen Sie ein neues Projekt erstellen. Im folgenden Screenshot sehen Sie, wo Sie das Erstellungsdatum Ihres Projekts überprüfen können:
Nachdem Sie auf die Schaltfläche „Senden“ geklickt haben, ist die erste Einrichtung abgeschlossen und die Integration wird hinzugefügt.
Hinweis: Es ist nicht zwingend erforderlich, die Cloud-API-Anmeldeinformationen einzugeben: Sie können die Schaltfläche „Kein Cloud-API-Konto konfigurieren“ aktivieren und die Integration wird trotzdem hinzugefügt.
Nachdem die Integration eingerichtet wurde, können Geräte hinzugefügt und konfiguriert werden, indem Sie auf der Seite „Integrationen“ auf die Schaltfläche „Konfigurieren“ klicken:
Das Konfigurationsmenü ist das Folgende:
In diesem Menü können Sie „Cloud-API-Konto neu konfigurieren“ auswählen, um Ihre Tuya Cloud-Anmeldeinformationen und -Einstellungen zu bearbeiten, falls sich diese geändert haben oder die Integration von Versionen v.3.xx migriert wurde.
Anschließend können Sie mit dem Hinzufügen oder Bearbeiten Ihrer Tuya-Geräte fortfahren.
Wenn Sie „Ein Gerät hinzufügen oder bearbeiten“ auswählen, wird ein Dropdown-Menü mit der Liste der erkannten Geräte angezeigt (unter Verwendung der automatischen Erkennung, wenn „Hinzufügen“ ausgewählt wurde, oder der Liste bereits konfigurierter Geräte, wenn „Bearbeiten“ ausgewählt wurde): Sie können Wählen Sie einen dieser Parameter aus oder geben Sie alle Parameter manuell ein, indem Sie die Option „…“ auswählen.
Hinweis: Die Tuya-App auf Ihrem Gerät muss geschlossen sein, damit die folgenden Schritte zuverlässig funktionieren.
Wenn Sie einen Eintrag ausgewählt haben, müssen Sie nur den Anzeigenamen und den lokalen Schlüssel des Geräts eingeben. Diese Werte werden automatisch abgerufen, wenn Sie Ihr Cloud-API-Konto konfiguriert haben. Andernfalls müssen Sie sie manuell eingeben.
Das Festlegen des Scan-Intervalls ist optional und wird nur benötigt, wenn die Energie-/Leistungswerte standardmäßig nicht häufig genug aktualisiert werden. Werte unter 10 Sekunden können zu Stabilitätsproblemen führen.
Das Festlegen von „Manueller DPS zum Hinzufügen“ ist optional und wird nur benötigt, wenn das Gerät den DPS nicht korrekt ankündigt, bis die Entität ordnungsgemäß initialisiert wurde. Diese Einstellung lässt sich oft vermeiden, indem man das Gerät zunächst mit der Tuya-App verbindet/initialisiert, dann die App schließt und dann das Gerät zur Integration hinzufügt. Hinweis: Alle mit dieser Option hinzugefügten DPS haben während der Einrichtung einen Wert von -1.
Das Festlegen der „DPIDs zum Senden im RESET-Befehl“ ist optional. Es wird verwendet, wenn ein Gerät nach einem Aus- und Wiedereinschalten nicht auf Tuya-Befehle reagiert, aber eine Verbindung herstellen kann (Zombie-Status). Dieses Szenario tritt meist dann auf, wenn das Gerät nicht auf das Internet zugreifen kann. Die DPids variieren je nach Gerät, normalerweise wird jedoch „18,19,20“ verwendet. Wenn hier die falschen Einträge hinzugefügt werden, kann es sein, dass das Gerät den Zombie-Zustand nicht verlässt. Normalerweise werden hier nur Sensor-DPIDs eingegeben.
Sobald Sie auf „Senden“ klicken, wird die Verbindung getestet, um sicherzustellen, dass alles funktioniert.
Dann ist es an der Zeit, die Entitäten hinzuzufügen: Dieser Schritt wird mehrmals durchgeführt. Wählen Sie zunächst den Entitätstyp aus dem Dropdown-Menü aus, um ihn einzurichten. Nachdem Sie alle benötigten Entitäten definiert haben, lassen Sie das Kontrollkästchen „Keine weiteren Entitäten hinzufügen“ aktiviert: Damit ist der Vorgang abgeschlossen.
Für jede Entität muss der zugehörige DP ausgewählt werden. Alle Optionen, die die Auswahl eines DP erfordern, bieten ein Dropdown-Menü mit allen verfügbaren DPs auf dem Gerät (mit ihrem aktuellen Status!!) zur einfachen Identifizierung.
Hinweis: Wenn Ihr Gerät erfordert, dass LocalTuya einen Initialisierungswert an die Entität sendet, damit es funktioniert, kann dies (in unterstützten Entitäten) über die Option „Passive Entität“ konfiguriert werden. Optional können Sie den zu sendenden Initialisierungswert angeben
Für jeden Entitätstyp müssen unterschiedliche Optionen konfiguriert werden. Hier ist ein Beispiel für die Entität „switch“:
Sobald Sie die Entitäten konfiguriert haben, ist der Vorgang abgeschlossen. Sie können das Gerät jetzt einem Bereich in Home Assistant zuordnen
Wenn Sie LocalTuya von v3.xx oder älter aktualisieren, wird der Konfigurationseintrag automatisch auf das neue Setup migriert. Alles sollte wie vor dem Upgrade funktionieren, abgesehen von der Tatsache, dass Sie auf der Registerkarte „Integration“ nur eine LocalTuya-Integration sehen (mit der Anzahl der konfigurierten Geräte und Entitäten) anstelle mehrerer in der LocalTuya-Box gruppierter Integrationen. Dies geschieht sowohl, wenn die alte Konfiguration mithilfe von YAML-Dateien durchgeführt wurde, als auch mit dem Konfigurationsablauf. Nach der Migration können Sie einfach Ihre Tuya IoT-Kontoanmeldeinformationen eingeben, um die Unterstützung für die Cloud-API zu aktivieren (und vom Abruf des lokalen Schlüssels und der automatischen Aktualisierung zu profitieren): siehe Konfigurationsmenü.
Wenn Sie LocalTuya mithilfe von YAML-Dateien konfiguriert haben, können Sie alle seine Verweise aus den YAML-Dateien löschen, da sie nicht mehr berücksichtigt werden und möglicherweise Verwirrung stiften (nur der Logger-Konfigurationsteil muss natürlich beibehalten werden, siehe Debuggen).
Sie können die Energieüberwachung (Spannung, Strom) auf zwei verschiedene Arten erhalten:
sensor :
- platform : template
sensors :
tuya-sw01_voltage :
value_template : >-
{{ states.switch.sw01.attributes.voltage }}
unit_of_measurement : ' V '
tuya-sw01_current :
value_template : >-
{{ states.switch.sw01.attributes.current }}
unit_of_measurement : ' mA '
tuya-sw01_current_consumption :
value_template : >-
{{ states.switch.sw01.attributes.current_consumption }}
unit_of_measurement : ' W '
Es gibt eine Vielzahl von Tuya-basierten Klimageräten, sowohl Heizungen als auch Thermostate und Klimaanlagen. Alles scheint auf unterschiedliche Weise integriert zu sein und es ist schwierig, eine gemeinsame DP-Zuordnung zu finden. Nachfolgend finden Sie eine Tabelle mit der DP-zu-Produkt-Zuordnung, die derzeit funktioniert. Nutzen Sie es als Leitfaden für Ihre eigene Kartierung und tragen Sie bitte zur Liste bei, wenn Sie die Möglichkeit dazu haben.
DP | Moes BHT 002 | Qlima WMS S + SC52 (AB;AF) | Avatto |
---|---|---|---|
1 | ID: Ein/Aus {wahr, falsch} | ID: Ein/Aus {wahr, falsch} | ID: Ein/Aus {wahr, falsch} |
2 | Zieltemperatur Ganzzahl, Skalierung: 0,5 | Zieltemperatur Ganzzahl, Skalierung 1 | Zieltemperatur Ganzzahl, Skalierung 1 |
3 | Aktuelle Temperatur Ganzzahl, Skalierung: 0,5 | Aktuelle Temperatur Ganzzahl, Skalierung: 1 | Aktuelle Temperatur Ganzzahl, Skalierung: 1 |
4 | Modus {0, 1} | Modus {"heiß", "wind", "nass", "kalt", "auto"} | ? |
5 | Eco-Modus ? | Lüftermodus {"stark", "hoch", "mittel", "niedrig", "auto"} | ? |
15 | Nicht unterstützt | Unterstützt, unbekannt {wahr, falsch} | ? |
19 | Nicht unterstützt | Temperatureinheit {"c", "f"} | ? |
23 | Nicht unterstützt | Unterstützt, unbekannt Ganzzahl, z. B. 68 | ? |
24 | Nicht unterstützt | Unterstützt, unbekannt Ganzzahl, z. B. 64 | ? |
101 | Nicht unterstützt | Außentemperatur Ganze Zahl. Skalierung: 1 | ? |
102 | Temperatur des externen Sensors Ganzzahl, Skalierung: 0,5 | Unterstützt, unbekannt Ganzzahl, z. B. 34 | ? |
104 | Unterstützt, unbekannt {wahr, falsch(?)} | Nicht unterstützt | ? |
Moes BHT 002 Avatto Thermostat
Wann immer Sie einen Fehlerbericht schreiben, ist es enorm hilfreich, wenn Sie Debug-Protokolle direkt einbinden (ansonsten fragen wir einfach danach und es dauert länger). Bitte aktivieren Sie daher Debug-Protokolle wie dieses und fügen Sie sie in Ihr Problem ein:
logger :
default : warning
logs :
custom_components.localtuya : debug
custom_components.localtuya.pytuya : debug
Bearbeiten Sie dann das Gerät, bei dem Probleme auftreten, und aktivieren Sie die Schaltfläche „Debugging für dieses Gerät aktivieren“.
Erstellen Sie einen (guten und präzisen) Sensor (Zähler) für Energie (kWh) – nicht nur für Leistung, sondern darauf basierend. Ideen: Verwenden Sie: https://www.home-assistant.io/integrations/integration/ und https://www.home-assistant.io/integrations/utility_meter/
Alles, was in #15 aufgeführt ist
NameLessJedi https://github.com/NameLessJedi/localtuya-homeassistant und Mileperhour https://github.com/mileperhour/localtuya-homeassistant sind die Hauptinspirationsquellen und deren Code für Schalter ist im Wesentlichen unverändert.
TradeFace ist das einzige Unternehmen, das den korrekten Code für die Kommunikation mit dem Cover bereitstellt (insbesondere den Befehl 0x0d für den Status anstelle von 0x0a und damit verbundene Anforderungen wie den Empfang einer doppelten Antwort): https://github. com/TradeFace/tuya/
sean6541, für den funktionierenden (Standard-)Python-Handler für Tuya-Geräte.
jasonacox, für das TinyTuya-Projekt, von dem ich den Code importieren konnte, um mit Geräten über Protokoll 3.4 zu kommunizieren.
Postlund, für die Ideen, für die Codierung von 95 % des Refactorings und für die Steigerung der Qualität dieses Repos auf ein Niveau, das (zumindest für mich) kaum vorstellbar ist, und dafür, dass Sie mir VIEL beigebracht haben, wie die Dinge in Home Assistant funktionieren.