Home Assistant & Tuya zéro cloud

On le sait tous, la domotique nous fait acheter beaucoup de bricoles qui souvent deviennent obsolètes, bref il y a toujours mieux. Par exemple les prises et autres objets Tuya ou Sonoff qui nécessitent le cloud, alors qu'un prise Shelly dispose de base de MQTT, peut être flashée avec ce que l'on souhaite et dans tous les cas fonctionne en local. Bien sur on ne va pas parler des prises en RF433 genre DIO mise au rebus faute de retour d'état, pas plus que des solutions Zigbee qui se traitent autrement. Tuya c'est du matériel OEM disponibles en marque blanche que des entreprises peuvent distribuer sous leur étiquette. Je trouve d'ailleurs scandaleux qu'une marques comme Konyks soit labelisée French Tech alors qu'il se contente de distribuer de produits chinois sous leurs marque sans aucune R&D... Bref !

EDIT 10/08/2021 : Pour ceux que ça intéresse il existe maintenant un développement officiel Tuya2 réalisé par Tuya en accord avec les équipes Home Assistant. A terme ce projet devrait remplacer l'intégration Tuya native et supporter le mode local, comme le fait maintenant Sonoff.

Nous avons donc en Wi-Fi...

  • L'écosystème Sonoff : en dehors de quelques modèles DIY, il faudra en général ouvrir et souder pour flasher. Heureusement il existe une intégration qui permet leur utilisation en local / cloud. En gros l'intégration mets à jour à intervalles réguliers ce qu'il trouve sur le cloud Sonoff et les actions sont ensuite locales.
  • L'écosystème Tuya : de base 100% cloud et géré nativement par HA, mais on va voir plus loin comment contourner ça.
  • L'écosystème Shelly : Cloud ou 100% nativement local et MQTT, flashable si vous aimez ça. C'est clairement ce que je vous conseille pour de nouveaux achats.

Tuya sans cloud

Heureusement il y a des petits malins qui adorent faire du reverse engineering, ce qui va nous permettre d'utiliser nos produits Tuya localement avec bien souvent plus de fonctionnalités, comme par exemple la remontée des information de consommation qui ne se fait pas de base sous HA.

Dans tous les cas, comme pour les produits Xiaomi/Aqara, il faudra trouver la clé... Au fil du temps les méthodes changent, mais aujourd'hui ça n'a jamais été aussi facile. Je vous conseille donc de récupérer vos clés, même si vous ne comptez pas les utiliser tout de suite.

On part du principe que vous avez un compte Tuya/ SmartLife (ou une application OEM comme celle de Konyks, c'est la même chose) et que vos équipements y sont enregistrés. En substance on va passer par la plateforme IoT de Tuya sur lequel vous allez vous créer un compte développeur et suivre les instructions de cet article dont je me suis inspiré. (Je ne suis pas sur que tout soit utile, vous me direz...).

  1. Créez un nouveau compte sur iot.tuya.com et assurez-vous que vous êtes connecté. Allez dans Cloud -> Projet dans le tiroir de navigation de gauche et cliquez sur "Create". Après avoir créé un nouveau projet, cliquez dessus. L'ID d'accès et la clé d'accès sont équivalents à la clé d'API et aux valeurs secrètes d'API requises.
  2. Allez dans App -> App SDK -> Development dans le tiroir de navigation. Cliquez sur "Create" et entrez ce que vous voulez pour les noms de package et Channel ID (pour le nom du package Android, vous devez entrer une chaîne commençant par com.). Prenez note de l' ID de chaîne que vous avez entré. Cela équivaut à la valeur schema requise plus loin. Ignorez les clés d'application et les valeurs secrètes d'application que vous voyez dans cette section car elles ne sont pas utilisées.
  3. Allez dans Cloud -> Projet et cliquez sur le projet que vous avez créé précédemment. Cliquez ensuite sur "Link Device". Cliquez sur l'onglet «Link devices by Apps», puis sur «Add Apps». Vérifiez l'application que vous venez de créer et cliquez sur "Ok".
  4. Toujours dans Cloud -> Projet et cliquez sur le projet que vous avez créé précédemment. Cliquez ensuite sur "Link Device". Cliquez sur l'onglet «Link devices by App Account», puis Add App Account et ajouter votre compte Tuya/SmartLife et vous devriez retrouver vos petits....
  5. Sur la même page, cliquez sur "Groupe d'API" sur le côté gauche. Modifiez le statut en Ouvert pour les trois groupes d'API suivants en cliquant sur "Appliquer" pour chaque ligne, en saisissant une raison quelconque et en cliquant sur "OK": "Authorization Management", "Device Management", "Device Control", "User Management", "Network Management", "Data Service", "Home Management", "Device User Mangement" and "Device Statistics".. Cela peut prendre 10 à 15 minutes pour que ces modifications prennent effet.
  6. Ensuite sur Device List / App Account / Europe vous listez vos devices et vous récupérez les devices ID
  7. Enfin on va dans API Explorer / Get Device details, on choisit Europe et on rentre le device ID et par magie la local_key apparaitra.
{
  "result": {
    "active_time": 1609598200,
    "biz_type": 0,
    "category": "cz",
    "create_time": 1609598200,
    "icon": "smart/icon/154028815822y4yx2k5jz_0.jpg",
    "id": "871720fsdfsdfsfd8e997fec",
    "ip": "70.22.16.3",
    "local_key": "8dfsdfsdfsgggsg10ecb6",
    "name": "Konyks Priska Plus 6",
    "online": true,
    "owner_id": "19956557",
    "product_id": "j6cVsdgfsdfgsdfsdfeYpli",
    "product_name": "Konyks Priska Plus",
    "status": [
      {
        "code": "switch_1",
        "value": false
      },
      {
        "code": "countdown_1",
        "value": 0
      },
      {
        "code": "cur_current",
        "value": 0
      },
      {
        "code": "cur_power",
        "value": 0
      },
      {
        "code": "cur_voltage",
        "value": 2339
      }
    ],
    "sub": false,
    "time_zone": "+01:00",
    "uid": "eu15345fgsdfsdfdsf9crK3G",
    "update_time": 1609565564,
    "uuid": "8717244465sd6f46sdf7fec"
  },
  "success": true,
  "t": 1609606041296
}

Ceux qui sont familiers de Node JS pourront lancer le script comme décrit ici et obtenir toute les clés en une seule manipulation.

Ensuite on a deux solutions :

  • La première, Trade Face Tuya Gateway est indépendante de la solution domotique choisie car full MQTT, elle peut s'installer dans un Docker et nos amis encore sous Jeedom pourront ainsi en profiter.
  • La seconde, Local Tuya, est une simple intégration pour Home Assistant qui permettra de reconnaitre nos équipements en quelques clics et s'installe depuis HACS. Le discovery fera le reste et il faudra juste tâtonner un peu quand on configure un équipement Tuya pour faire correspondre les bonnes valeurs, mais c'est expliqué ici.

Vous aurez compris, ce qui compte encore une fois c'est d'avoir les clés. Ensuite il existe surement d'autre solutions pour exploiter. Attention : Pour toutes ces manips pensez à fermer l'application mobile (Tuya/SmartLife) car un équipement Tuya ne supporte qu'une seule connexion simultanée.

Merci Yvon pour cette exploration nocturne et conjointe d'un jour de l'an sous couvre-feu !

EDIT 04/01/2021 : Il y a un soucis dans le v3.2 ou on perd certains équipement au reboot. Revenir à la 3.1 résout le problème en attendant mieux.

EDIT 21/02/2021 : Contrairement aux Shelly les appareils Tuya ne fournissent que la consommation instantanée. Donc pas exploitable directement avec un utility_meter: par exemple. Il va donc falloir ruser un peu :

  1. Sortir la consommation instantanée disponible en attribut pour en faire un sensor :
    sensor:
      - platform: template
        sensors:
          tuya_plug_1_current_consumption:
            value_template: >-
              {{ states.switch.tuya_plug_1.attributes.current_consumption }}
            unit_of_measurement: 'W'
  2. Utiliser l'intégration Riemann pour convertir la la consommation instantanée (en Watts) en consommation cumulée (en kW/h)
    sensor:
      - platform: integration
        source: sensor.tuya_plug_1_current_consumption
        name: 'Tuya Plug 1 : Cumul'
        unit_prefix: k
        round: 2
        method: left
  3. Si l'on souhaite conserver l'historique (ici année et année précédente) on va utiliser un utility_meter:
    utility_meter:
      tuya_plug_1_energy_yearly:
        source: sensor.tuya_plug_1_cumul
        cycle: yearly


Enjoy ;-)

 

 

Commentaires (36) -

  • Attention, l'intégration de base Tuya et sa V2 apparue en octobre n'ont rien à voir avec LocalTuya. Et il ne faut pas utiliser les deux en même temps.
    • Et désolé pour e com de Nicolas que j'ai supprimé par erreur...
      • Pas de souci Lionel, merci pour ta réponse.
        J'ai finalement réussi a utiliser les deux boutons de mon interrupteur.
  • Merci pour vos articles
    je tape bien laid de mon device mais la local key apparait ou? c'est le t=
    • Oui ? (on n'est pas sur Facebook ici, alors développe ta question...).
  • Bonjour,
    j'ai reussi à intégrer les switch dans local tuya.
    Par contre pouvez vous expliquer un peu plus en détail ou et comment vous faites pour avoir la consommation dans home asisstant ?
    merci d'avance
    • Je l'ai expliqué dans le EDIT2.
      Ceci étant TUYA est une source continue de problèmes et en ce qui me concerne j'ai replacé mes prises par des Shelly Plug S ou tout est natif.
      • Je comprend pas ou placer la config (lignes) que vous évoquez et comment faire correspondre telle prise.
        Tout le monde n'est pas un pro comme vous ;)

        Vous pouvez me répondre sur mon email si vous souhaitez
        • Si vous n'avez pas créé de fichier dédié pour les sensor: et utility_meter:, vous pouvez les coller dans configuration.yaml
          • Merci
            J'ai intégré vos configs dans le fichier yaml.
            Ou peut-on voir la consommation dans HA ?
            • Tu trouveras les infos ici et ailleurs...
              https://www.canaletto.fr/post/home-assistant-shelly-and-energy
              • Merci mais j'ai des "tuya" et non votre system.
                En plus, vu la complexité, je lache l'affaire et reste avec le basique ON/OFF qui au moins à le mérite de fonctionner ;)
  • Merci mais j'ai des "tuya" et non votre system.
    En plus, vu la complexité, je lache l'affaire et reste avec le basique ON/OFF qui au moins à le mérite de fonctionner ;)

    • Ce n'est pas si complexe... mais il faut un peu de ténacité pour aller jusqu'au bout et en tirer une satisfaction... L'alternative est de ne pas faire de DIY et de se contenter des fonctionnalités grand public offertes avec l'application Tuya.
      Pour y revenir, l'intégration utility_meter: dans Home Assistant est générique et fonctionne avec tous les objets qui fournissent une conso en entrée.
      • J'ai essayé bcp de chose mais aucune remontée de watts...
        C'est pénible et en plus il faut rebooter à chaque test... ggrrrr

        Dans la config sensor  que doit-in mettre exactement à la place de "tuya_plug_1" (id de tuya ou de HA ou autre ) ?
        idem pour  "switch.tuya_plug_1" :on met quoi ? switch. avec la variable précédente ou c'est encore un autre id à trouver ?
        • Tu as 3 étapes dans EDIT 2 :
          1) Le sensor qui va extraire la conso de l'attribut. Le nom de l'entité dans le template. (Si ton switch Tuya a pour nom d'entité switch.toto tu mets states.switch.toto.attributes.current_consumption dans le template)
          2) Le sensor qui va convertir les W (instantané) en kW/h ou tu reprends le nom du sensor précédent.
          3) L'utility_meter: pour conserver l'historique. Idem

          • Ca ne marche pas.
            Avez vous essayé en vrai ?
            si oui pouvez vous mettre votre vrai config (changer des lettres si besoins)

            Sinon quand je lis ca, je me dis que je ne suis pas le seul
            https://community.home-assistant.io/t/tuya-local-with-energy-monitoring-and-without-tuya-convert/173564/45
            • Que les choses soient claires. Ce que je partage ici ce sont des choses qui résultent de mon expérience, donc que j’ai réalisée sur mon installation et qui fonctionnent au quotidien. Et d’autres l’ont fait fonctionner.
              Après comme je l’ai dit plusieurs fois, Tuya est fait pour fonctionner en mode cloud, et l’intégration Tuya Local officieuse reste du bricolage qui peut ne plus fonctionner si Tuya le décide. C’est pourquoi je ne saurait que conseiller d’utiliser l’application officielle. Personnellement j’ai faut le choix d’éviter Tuya et d’utiliser des prises Shelly ou Zigbee. D’ailleurs j’ai tout un lot de prises Tuya à revendre bientôt….
              • J'ai réussi à avoir la conso mais c'est pas grâce à vous.
                Merci quand même et bonne continuation avec vos copié-collés
                • Au lieu de faire ce genre de remarques, s'eut été bien d'expliquer ce qui ne fonctionnait pas...
  • Bonjour,

    Je suis tout nouveau dans HA.... ça paraît cool et intuitif...

    A l'heure actuelle (29/12/21), avec une installation toute nouvelle de HA sur un ESXi (VMWARE) avec le vmdk fourni sur le site.

    Installation nickel

    Je créé le compte : OK

    Il me trouve plein d'items  : génial !
    Je vois un item Tuya .... Re-génial c'est ce que j'ai !

    Une 10zaine de tuto plus tard, j'ai mon compte sur Tuya IOT cloud et tous mes devices reconnus sur le site (1 caméra IP, une passerelle zigbee et 35 devices zigbee associés.

    Tout fonctionne bien aussi avec Tuya Smart (sur mon tél).

    Je configure donc mon item Tuya avec toutes les infos :

    - Pays
    - Client Id
    - Client Secret
    - mon email sur Tuya
    - mon mot de passe.

    Re-re-génial, il me dit que la configuration est complète !

    Exité comme une puce, je m'attends à ce que HA voit mes devices.... mais .... bouhhhhhhh ..... Rien ! Même pas un !

    En fait, (en tout cas pour un nouveau comme moi), il y a tellement de tutos différents, que je ne sais plus à quel saint me vouer....

    Bref, si une personne à un tuto up-to-date pour récupérer mes devices, il sera béni !

    Sinon, bah .... je vends une caméra IP neuve Tuya et j'achète une clé Zigbee pour virer ma passerelle tuya.

    HELPPPPPPPPPPPPPPPPPPPPPPPPP !
    • Pourtant je t'assure que ça fonctionne très bien si tu suit la procédure.
      • Il découvre bien la caméra mais :

        - Au lieu du deviceId, il me remonte le uuid. Si j'essaye de le configurer (LocalKey) j'ai un message d'erreur : Connection to device succeeded but no datapoints found, please try again. Create a new issue and include debug logs if problem persists.

        - Si j'essaye de tout renter manuellement (Avec le deviceId référencé sur le coud), j'ai le même message d'erreur.

        Je tenterai bien de saisir manuellement les infos mais je ne vois pas comment trouver tout ce qu'il faut pour déclarer toutes les entités.
        • A ce que je sache LocalTuya est fait pour des ampoules, prises, mais pas des flux video....
          • J'ai bien ce dont j'avais peur...

            J'ai réussi à l'intégrer avec motionEye je récupère bien mes flux mais les autres entités ne semble pas fonctionner correctement (Le flag Activation/Désactivation de la détection de mouvement ne se fait pas sur la caméra...

            A priori ça ne vient pas de la caméra : j'ai testé deux types de caméras  différentes et le problème est identique.

            Ceci me laisse donc dubitatif quant à Tuya en général :

            - Un environnement Tuya Cloud quasi-obligatoire pour intégrer les composants autres de lumières et switchs,
            - Une centrale d'alarme certes très fonctionnelle et complète pour le prix mais absolument pas intégrable dans HA (Dixit leur support).

            Bref dommage pour eux mais je déconseille à titre personnel Tuya.
            • Tuya c'est du gadget pas cher dans un eco système clos.

              Perso j'ai viré plein d'équipements Tuya, j'ai par exemple remplacé les prises par des Shelly totalement en local sans reverse engienering.

              Pour les cams soit elles sortent un flux RSTP et c'est exploitable, soit ce n'est pas le cas. Il y a plein de cam sur le marché qui fonctionnent bien et sans cloud.
              • +1 Moi aussi j'ai viré ma passerelle zigbee Tuya pour une Combee2.

                Au niveau des caméras, récupérer la vidéo c'est bien mais exploiter certains paramètres c'est pas toujours évident (je pense notamment à la configuration du mode privé et à la détection de mouvement).
  • J'ai mis en place ce tuto en mars dernier (encore MERCI!!), avec succès. J'ai pu tout récupérer les ID et autres clés local pour mes équipements: 5 spots+1prise+1ampoule (LSC Smart Connect de chez Action).
    Début décembre, le courant à sauté dans la nuit. Il y a eu 3 relances successives du système ENEDIS/EDF, ce qui a provoqué la mise en appairage de mon Ampoule. (J'avais ouvert le disjoncteur des spots, donc ils ont été épargnés ouf!)

    J'ai été obligé de refaire la connexion de l'Ampoule avec l'appli Smart Home, pour quelle arrête de clignoter. Jusque là c'est bête et simple.
    Mais dans HA l'Ampoule n'est plus disponible. J'ai "Rechargé", "Mis à jour", tenté plein de truc, impossible de retrouver sa disponibilité. J'ai fini par supprimé l'élément pour le remettre.
    LocalTuya Integration voit l'élément, mais les l'ID + Local key ne semblent plus fonctionner...c'est possible ça ?
    Donc je suis impeccable de raccrocher cet Ampoule qui marchait il y a 3semaines. Une idée ?

    suis-je obligé de passé par la v2 Tuya "officiel" ?
    • Dans ton cas il faut peut être faire un reset des devices (dans l'application Tuya ou SmartLife) ensuite relancer la procédure en supprimant Local Tuya et en l'ajoutant à nouveau.
      • J'ai essayé la version Tuya "officielle". Bien sure ça fonctionne bien, et c'est un peu plus simple. Mais évidement ça ne fonctionne pas en local. Si je débranche l'adsl, plus rien de fonctionne ! CQFD
        Lionel merci pour l'idée, oui pourquoi pas.... J'avoue que je ne suis pas très chaud pour supprimer mes devices de Local Tuya, j'ai peur qu'ils ne "raccrochent" pas par la suite.
        Ci-joint le message qd j'essai de mettre mon ampoule Bureau: "Failed to authenticate with device. Verify that device id and local key are correct."

        Hypothèse: est-ce que Tuya aurait pu télécharger une mise à jour de cet équipement quand j'ai refait l'appairage qui viendrait brider l'accès ? (et donc forcer l'utilisation de son appli officielle)
        Ou mon hypothèse est farfelue/parano
        • J'ai trouvé, Oh miracle !
          Curieusement ma clé (local key) a changée, sur 1  ampoule uniquement...

          Pour se faire retour sur le site Tyua IoT Plateform:
          Cloud > Mon projet > sous onglet Overview
          sélectionner "Configurer" en face de Cloud Authorization IP Allowlist
          ici j'ai ajouté mon IP du moment (mon IP avait changé depuis fév.2021)

          Ensuite j'ai repris la procédure étape 7/
          L'interface à un peu évoluée, ça se passe ici:
          API Explorer / General Devices Management / Get Device Information

          Et la surprise, une nouvelle Local Key !
          Résultat toute mon intégration sous Local Tuya est opérationnelle, de nouveau.
          J'ai supprimé Tuya_v2

          Enjoy ;-)

          Astuce: je viens de changer de fournisseur internet passant de Sosh à Free.
          Pour ne pas trop galérer avec ces devices WIFI, je conseille de renommer l'SSID à l'identique (pour ma part MyLiveboxOrange, avec le même MdP) ainsi tous les devices se raccroche, sinon....on perd tout.
          Une raison de plus pour adopter le zigbee ou le zwave !!
          • Oui quand on refait l'appairage d'un device la clé change.

            Et oui pour le WIFI la première chose à faire est de définir un SSID perso et de le refaire quand on change de box. Mais si on a bcp de module il faut envisager un véritable AP à part car les box ne supportent qu'un nombre limité de clients.
  • Guy
    Salut Lionel, Merci pour ton post j'ai installé et configuré localtuya tout fonctionne :D  
    En revanche je n'arrive pas à comprendre comment ajouter la surveillance de la consommation électrique? J'ai crée un fichier sensors.yaml et j'ai mis dedans le code ci-dessous...j'ai tout faux?
    - platform: template
      sensors:
                 prise_wifi_voltage:
                   value_template: >-
                     {{ states.prise_wifi.attributes.voltage }}
                   unit_of_measurement: 'V'
                 prise_wifi_current:
                   value_template: >-
                     {{ states.prise_wifi.attributes.current }}
                   unit_of_measurement: 'mA'
                 prise_wifi_current_consumption:
                   value_template: >-
                     {{ states.prise_wifi.attributes.current_consumption }}
                   unit_of_measurement: 'W'

    - platform: integration
      source: sensor.prise_wifi.attributes.current_consumption
      name: prise_wifi
      unit_prefix: k
      unit: kWh
      round: 2
    • Hello !
      Je n'utilise plus ces prises (je préfère du Zigbee ou du Shelly en WIFI) mais j'ai corrigé la dernière partie de l'article et ça fonctionne. Je t'ai mis mon fichier package ici : https://github.com/mycanaletto/hass-canaletto/blob/main/package/tuya.yaml
      • Guy
        C'est nickel un grand merci ça fonctionne grâce à ton aide merci encore :) Pour info, avant de passer au zigbee j'avais acheté ces prises et après avoir eu connaissance de LocalTuya je me suis dis que c'était le bon moment pour les ressusciter ;)
  • Merci pour ce très bon tuto bien expliqué.
    J'ai juste un problème pour récupérer la consommation.
    Dans la partie Configure Entitity
    Je doit choisir une liste déroulante pour le current consomption
    1 (value : True) 9 (value:0) 17(value:1) 18(value:0) 19 (value:0) 20 (value:2175) 21 (value:1) 22 (value:610) 23(value:31212)
    Suivant ce je choisi, je me retrouve avec des valeurs différentes.
    Si quelqu'un à déjà eu le cas ?
    Merci beaucoup

Ajouter un commentaire

Loading