Une intégration personnalisée de Home Assistant pour la gestion locale des appareils basés sur Tuya.
Cette intégration personnalisée met à jour l'état de l'appareil en envoyant des mises à jour au lieu d'une interrogation, de sorte que les mises à jour d'état sont rapides (même lorsqu'elles sont effectuées manuellement). L'intégration prend également en charge les API Tuya IoT Cloud, pour la récupération d'informations et des clés locales des appareils.
REMARQUE : La configuration du compte Cloud API n'est pas obligatoire (LocalTuya peut également fonctionner sans elle) mais est fortement suggérée pour une récupération facile (et une mise à jour automatique après le ré-appairage d'un appareil) des clés_locales. Les appels d'API Cloud sont effectués uniquement au démarrage et lorsqu'une mise à jour local_key est nécessaire.
Les types d'appareils Tuya suivants sont actuellement pris en charge :
La surveillance de l'énergie (tension, courant, watts, etc.) est prise en charge pour les appareils compatibles.
Actuellement, les protocoles Tuya 3.1 à 3.4 sont pris en charge.
Le développement de ce référentiel a commencé sous forme de code de @NameLessJedi, @mileperhour et @TradeFace. Leur code a ensuite été profondément remanié pour fournir une intégration appropriée avec l'environnement Home Assistant, en ajoutant un flux de configuration et d'autres fonctionnalités. Reportez-vous à la section « Merci à » ci-dessous.
Le moyen le plus simple, si vous utilisez HACS, consiste à installer LocalTuya via HACS.
Pour une installation manuelle, copiez le dossier localtuya et tout son contenu dans le dossier custom_components de votre Home Assistant. Ce dossier se trouve généralement dans votre dossier /config
. Si vous exécutez Hass.io, utilisez SAMBA pour copier le dossier. Si vous exécutez Home Assistant Supervised, le dossier custom_components peut se trouver dans /usr/share/hassio/homeassistant
. Vous devrez peut-être créer le dossier custom_components
, puis y copier le dossier localtuya et tout son contenu.
REMARQUE : Vous devez disposer de la clé et de l'identifiant de votre appareil Tuya pour pouvoir utiliser LocalTuya. Le moyen le plus simple consiste à configurer le compte Cloud API dans l'intégration. Si vous choisissez de ne pas le faire, il existe plusieurs façons d'obtenir les clés_locales en fonction de votre environnement et des appareils que vous possédez. Un bon endroit pour commencer à obtenir des informations est https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md ou https://pypi.org/project/tinytuya/.
REMARQUE 2 : Si vous envisagez d'intégrer ces appareils sur un réseau disposant d'Internet et de bloquer leur accès Internet, vous devez également bloquer les requêtes DNS (au serveur DNS local, par exemple 192.168.1.1). Si vous bloquez uniquement l'Internet sortant, l'appareil restera dans un état zombie ; il refusera / ne répondra à aucune connexion avec la clé locale. Par conséquent, vous devez d’abord connecter les appareils avec une connexion Internet active, récupérer la clé locale de chaque appareil et implémenter le blocage.
REMARQUE : à partir de la version 4.0.0, la configuration à l'aide de fichiers YAML n'est plus prise en charge. L'intégration ne peut être configurée qu'à l'aide du flux de configuration.
Pour commencer à configurer l'intégration, appuyez simplement sur le bouton "+AJOUTER UNE INTÉGRATION" dans la page Paramètres - Intégrations et sélectionnez LocalTuya dans le menu déroulant. La page de configuration de l'API Cloud apparaîtra, vous demandant de saisir les informations d'identification de votre compte Tuya IoT Platform :
Pour configurer un compte Tuya IoT Platform et y configurer un projet, reportez-vous aux instructions de l'intégration officielle de Tuya : https://www.home-assistant.io/integrations/tuya/ L'endroit où trouver l'ID client et le secret est décrit dans ce lien (dans le paragraphe « Obtenir la clé d'autorisation »), tandis que l'ID utilisateur peut être trouvé dans le sous-onglet « Lier le compte de l'application Tuya » au sein du projet Cloud :
Remarque : comme indiqué dans le lien ci-dessus, si vous disposez déjà d'un compte et d'un projet IoT, assurez-vous qu'il a été créé après le 25 mai 2021 (en raison des changements introduits dans le cloud pour Tuya 2.0). Sinon, vous devez créer un nouveau projet. Consultez la capture d'écran suivante pour savoir où vérifier la date de création de votre projet :
Après avoir appuyé sur le bouton Soumettre, la première configuration est terminée et l'intégration sera ajoutée.
Remarque : il n'est pas obligatoire de saisir les identifiants Cloud API : vous pouvez choisir de cocher le bouton « Ne pas configurer de compte Cloud API », et l'intégration sera quand même ajoutée.
Une fois l'intégration configurée, les appareils peuvent être ajoutés et configurés en appuyant sur le bouton Configurer dans la page Intégrations :
Le menu de configuration est le suivant :
Dans ce menu, vous pouvez sélectionner « Reconfigurer le compte API Cloud » pour modifier vos informations d'identification et paramètres Tuya Cloud, au cas où ils auraient changé ou si l'intégration a été migrée à partir des versions v.3.xx.
Vous pouvez ensuite procéder à l'ajout ou à la modification de vos appareils Tuya.
Si vous sélectionnez « Ajouter ou modifier un appareil », un menu déroulant apparaîtra contenant la liste des appareils détectés (en utilisant la découverte automatique si l'ajout a été sélectionné, ou la liste des appareils déjà configurés si l'édition a été sélectionnée) : vous pouvez sélectionnez-en un ou saisissez manuellement tous les paramètres en sélectionnant l'option "...".
Remarque : L'application tuya sur votre appareil doit être fermée pour que les étapes suivantes fonctionnent de manière fiable.
Si vous avez sélectionné une entrée, il vous suffit de saisir le nom convivial et la clé locale de l'appareil. Ces valeurs seront automatiquement récupérées si vous avez configuré votre compte Cloud API, sinon vous devrez les saisir manuellement.
La définition de l'intervalle d'analyse est facultative, elle n'est nécessaire que si les valeurs d'énergie/puissance ne sont pas mises à jour assez fréquemment par défaut. Les valeurs inférieures à 10 secondes peuvent entraîner des problèmes de stabilité.
La configuration du « DPS manuel à ajouter » est facultative, elle n'est nécessaire que si l'appareil n'annonce pas correctement le DPS tant que l'entité n'a pas été correctement initialisée. Ce paramètre peut souvent être évité en connectant/initialisant d'abord l'appareil avec l'application Tuya, puis en fermant l'application, puis en ajoutant l'appareil à l'intégration. Remarque : tout DPS ajouté à l'aide de cette option aura une valeur -1 lors de la configuration.
La définition des « DPID à envoyer dans la commande RESET » est facultative. Il est utilisé lorsqu'un appareil ne répond à aucune commande Tuya après un cycle d'alimentation, mais peut être connecté à (état zombie). Ce scénario se produit principalement lorsque l'appareil ne peut pas accéder à Internet. Les DPid varient selon les appareils, mais généralement « 18,19,20 » est utilisé. Si de mauvaises entrées sont ajoutées ici, l'appareil risque de ne pas sortir de l'état zombie. Généralement, seuls les DPID des capteurs sont saisis ici.
Une fois que vous appuyez sur "Soumettre", la connexion est testée pour vérifier que tout fonctionne.
Ensuite, il est temps d'ajouter les entités : cette étape sera répétée plusieurs fois. Tout d’abord, sélectionnez le type d’entité dans le menu déroulant pour le configurer. Après avoir défini toutes les entités nécessaires, laissez la case "Ne plus ajouter d'entités" cochée : cela terminera la procédure.
Pour chaque entité, le DP associé doit être sélectionné. Toutes les options nécessitant de sélectionner un DP fourniront un menu déroulant affichant tous les DP disponibles trouvés sur l'appareil (avec leur état actuel !!) pour une identification facile.
Remarque : Si votre appareil nécessite qu'un LocalTuya envoie une valeur d'initialisation à l'entité pour qu'il fonctionne, cela peut être configuré (dans les entités prises en charge) via l'option « Entité passive ». En option, vous pouvez spécifier la valeur d'initialisation à envoyer
Chaque type d'entité a différentes options à configurer. Voici un exemple pour l'entité « switch » :
Une fois les entités configurées, la procédure est terminée. Vous pouvez désormais associer l'appareil à une zone dans Home Assistant
Si vous mettez à niveau LocalTuya à partir de la version 3.xx ou d'une version antérieure, l'entrée de configuration sera automatiquement migrée vers la nouvelle configuration. Tout devrait fonctionner comme avant la mise à niveau, mis à part le fait que dans l'onglet Intégration, vous ne verrez qu'une seule intégration LocalTuya (indiquant le nombre d'appareils et d'entités configurés) au lieu de plusieurs intégrations regroupées dans la LocalTuya Box. Cela se produira à la fois si l'ancienne configuration a été effectuée à l'aide de fichiers YAML et avec le flux de configuration. Une fois la migration effectuée, vous pouvez simplement saisir les informations d'identification de votre compte Tuya IoT pour activer la prise en charge de l'API Cloud (et bénéficier de la récupération et de la mise à jour automatique de la clé locale) : voir le menu Configuration.
Si vous aviez configuré LocalTuya à l'aide de fichiers YAML, vous pouvez supprimer toutes ses références au sein des fichiers YAML car elles ne seront plus prises en compte et pourraient prêter à confusion (seule la partie configuration du logger doit être conservée, bien sûr, voir Débogage).
Vous pouvez obtenir un suivi énergétique (tension, courant) de deux manières différentes :
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 '
Il existe une multitude de climats basés sur Tuya, à la fois des radiateurs, des thermostats et des climatiseurs. Tout semble être intégré de différentes manières et il est difficile de trouver une cartographie DP commune. Vous trouverez ci-dessous un tableau des mappages DP-produit qui fonctionnent actuellement. Utilisez-le comme guide pour votre propre cartographie et veuillez contribuer à la liste si vous en avez la possibilité.
DP | Moes BHT-002 | Qlima WMS S + SC52 (AB; AF) | Avato |
---|---|---|---|
1 | ID : Activé/Désactivé {vrai, faux} | ID : Activé/Désactivé {vrai, faux} | ID : Activé/Désactivé {vrai, faux} |
2 | Température cible Entier, mise à l'échelle : 0,5 | Température cible Entier, mise à l'échelle 1 | Température cible Entier, mise à l'échelle 1 |
3 | Température actuelle Entier, mise à l'échelle : 0,5 | Température actuelle Entier, mise à l'échelle : 1 | Température actuelle Entier, mise à l'échelle : 1 |
4 | Mode {0, 1} | Mode {"chaud", "vent", "humide", "froid", "auto"} | ? |
5 | Mode éco ? | Mode ventilateur {"fort", "élevé", "moyen", "faible", "auto"} | ? |
15 | Non pris en charge | Pris en charge, inconnu {vrai, faux} | ? |
19 | Non pris en charge | Unité de température {"c", "f"} | ? |
23 | Non pris en charge | Pris en charge, inconnu Entier, par exemple. 68 | ? |
24 | Non pris en charge | Pris en charge, inconnu Entier, par exemple. 64 | ? |
101 | Non pris en charge | Température extérieure Entier. Mise à l'échelle : 1 | ? |
102 | Température du capteur externe Entier, mise à l'échelle : 0,5 | Pris en charge, inconnu Entier, par exemple. 34 | ? |
104 | Pris en charge, inconnu {vrai, faux(?)} | Non pris en charge | ? |
Thermostat Moes BHT 002 Avatto
Chaque fois que vous rédigez un rapport de bug, cela aide énormément si vous incluez directement les journaux de débogage (sinon nous les demanderons simplement et cela prendra plus de temps). Veuillez donc activer les journaux de débogage comme celui-ci et les inclure dans votre problème :
logger :
default : warning
logs :
custom_components.localtuya : debug
custom_components.localtuya.pytuya : debug
Ensuite, modifiez le périphérique qui présente des problèmes et cochez le bouton "Activer le débogage pour ce périphérique".
Créez un capteur (compteur) (bon et précis) pour l'énergie (kWh) - pas seulement la puissance, mais basé sur celle-ci -. Idées : Utiliser : https://www.home-assistant.io/integrations/integration/ et https://www.home-assistant.io/integrations/utility_meter/
Tout ce qui est listé au #15
NameLessJedi https://github.com/NameLessJedi/localtuya-homeassistant et mileperhour https://github.com/mileperhour/localtuya-homeassistant étant les principales sources d'inspiration, et dont le code pour les commutateurs est sensiblement inchangé.
TradeFace, pour être le seul à fournir le bon code pour communiquer avec la couverture (notamment la commande 0x0d pour le statut au lieu du 0x0a, et les besoins associés comme la double réponse à recevoir) : https://github. com/TradeFace/tuya/
sean6541, pour le gestionnaire Python (standard) fonctionnel pour les appareils Tuya.
jasonacox, pour le projet TinyTuya d'où j'ai pu importer le code pour communiquer avec les appareils utilisant le protocole 3.4.
postlund, pour les idées, pour avoir codé 95% du refactoring et amélioré la qualité de ce dépôt à des niveaux difficiles à imaginer (pour moi, du moins) et m'avoir appris BEAUCOUP comment les choses fonctionnent dans Home Assistant.