Plugin wifilightV2 Récupérer id/localkey pour Tuya

Tags: #<Tag:0x00007f283cb1eef8>

Tuya n’aime pas trop que l’on court-circuite le cloud car il préfère savoir ce que l’on fait avec ses produits.
La dernière version de l’appli SmartLife 3.14.0 ne permet plus de récupérer id et localkey.

Il arrivera un jour où il ne sera plus possible de contourner les barrières

La procédure utilise exclusivement un appareil android.

1 - Procédure avec Packetcapure
note : avec des téléphones récents, la création du certificat ne fonctionne pas.

-> commencer par ne pas autoriser les mises à jour automatiques dans le playstore android.

Applis nécessaires :
-> Tuya SmartLife la 3.11.0 est OK au dessus à tester (3.14 KO)
pour récupérer la 3.11.0 chercher tuya apk 3.11
note : soyez vigilant c’est un moyen facile de véroler un téléphone.

-> Packetcapture la 1.7.2 est OK à prendre sur le playstore
Lors de l’installation, ajouter le certificat

Lancer SmartLife (et Packet Capture arrêté):

  • Appairer le périphérique selon la procédure du constructeur.
  • Vérifier que ça fonctionne
  • relever le nom du périphérique
  • aller dans le périphérique, sélectionner le crayon puis information appareil :
    relever l’ID virtuel
  • Laisser smartlife tourner

Lancer PacketCapture :

  • appuyer sur la flèche verte sans le 1 (la capture démarre)

Dans Smartlife :

  • dans la page avec les périphériques, glisser vers le bas pour mise à jour de la liste

Dans packet capture :

  • arrêter la capture en sélectionnant le carré rouge
  • ouvrir la dernière capture
  • regarder les packets SmartLife, les plus lourds sont les plus intéressants.
    c’est au format Json (google pour en savoir plus)
    rechercher devid/name/localkey
    le name est celui donné dans smartlife et l’ID est celui déjà récupéré
    ils sont proches les uns des autres et on doit trouver les infos suivantes :
    “devId”: “xxxxxxxxxxxxxxxxxxx”
    “localkey”:“yyyyyyyyyyyyyyy”
    “name”:“zzzzzzzzzzzz”
    Ceci permet aussi de ne pas mélanger plusieurs équipements. Je conseille de faire un par un pour récupérer à chaque fois la localKey.

Il peut y avoir d’autres localkey, qui ne sont pas les bonnes, mais elles sont proches de “id” ou autres.

2 Procédure avec HttpCanary
HttpCanary V3.2.1 est OK à prendre sur le playstore
Lors de l’installation, ajouter le certificat
dans HttpCanary, aller dans “target apps” et selectionner Smartlife (V3.11.0)

Lancer SmartLife (et HttpCanary arrêté):
Appairer le périphérique selon la procédure du constructeur.
Vérifier que ça fonctionne
relever le nom du périphérique
aller dans le périphérique, sélectionner le crayon puis information appareil :
relever l’ID virtuel
Laisser smartlife tourner

Lancer HttpCanary :
lancer la capture avec le bouton bleu en bas a droite

Dans Smartlife :
dans la page avec les périphériques, glisser vers le bas pour mise à jour de la liste

Dans httpCanary :
arrêter la capture en cliquant sur le bouton en bas a droite
regarder les packets SmartLife, les plus lourds sont les plus intéressants.
c’est au format Json (google pour en savoir plus)
rechercher devid/name/localkey dans les “response”
le name est celui donné dans smartlife et l’ID est celui déjà récupéré
ils sont proches les uns des autres et on doit trouver les infos suivantes :
“devId”: “xxxxxxxxxxxxxxxxxxx”
“localkey”:“yyyyyyyyyyyyyyy”
“name”:“zzzzzzzzzzzz”
Ceci permet aussi de ne pas mélanger plusieurs équipements. Je conseille de faire un par un pour récupérer à chaque fois la localKey.

Je ne répondrai pas aux questions.
Ouvert aux suggestions pour améliorer ce petit tuto.
Procédure testée le 2/1/2020 sous Android 9

5 J'aimes

Un grand merci.

Effectivement cela fonctionne parfaitement avec cette version de Smartlife.

@bernardfr.caron

Je viens d’essayer le packet capture avec Smartlife 3.11.0. Tous les paquets sont cryptés SSL (donc pas de data) sauf 1 pour lequel une grand partie est illisible… Pas de données JSON en vu ?

Après plusieurs recherches, c’est ce que semble dire tuyaapi (Cryptage) https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md. J’ai essayer la méthode Linking a Tuya device with Smart Linksans succès!

Une idée ?

faire l’installation du certificat dans packet capture

Ne fonctionne pas avec Android 9. Pour ma part j’ai installé nox player sur windows (https://fr.bignox.com/) qui est un émulateur android. J’ai ensuite suivi la procédure (installer une ancienne version de Smartlife + ancienne version de packet captur) et tout fonctionne ! Les packets ne sont plus cryptés.

1 J'aime

J’ai essayé la manipulation sur plusieurs téléphone, tablettes et même mon pc avec émulateur.

Final effe il faut un vieux téléphone de 3/4 ans et la ça a marché. Merci

BOnjour,

Perso, je récupère tout via mon smartphone actuel (androd 10), avec httpCanary, ça fonctionne nickel.

Bonne journée

c’est très dépendant du tel/OS
moi ça marche même avec packetcapture et android 10 sur un … Nokia

Ca marchait très bien chez moi, et puis la d’un coup ça ne marche plus. Pourtant même tél, smartlife 3.11 et packet capture. A n’y rien comprendre…

Merci pour l’astuce.

sur mon téléphone, je ne pouvais pas mettre de certificats !!

Bonjour à tous,

l’un de vous aurait-il réussi à effectuer cette manip avec du matériel d’Apple. (je n’ai pas d’android, ni de PC).
j’ai essayé plusieurs options trouvées sur le net mais sans succès jusqu’à présent…

merci d’avance.

Bonjour à tous
Je suis en train regarder le fonctionnement de l’api tuya … mais je suis pas certains de consommer les bons web services … savez-vous le endpoint consommé par l’app smartlife.
Moi je me suis basé sur ce endpoint : https://px1.tuyaeu.com
Pour la génération du token : https://px1.tuyaeu.com/homeassistant/auth.do ==> j’ai bien le token
Et pour lister mes équipements : https://px1.tuyaeu.com/homeassistant/skill
J’ai bien la liste de mes equipements, ex résultat pour un équipement :
‹ devices ›: [ { ‹ data ›: { ‹ max_temper ›: 90,
‹ min_temper ›: 55,
‹ online ›: True,
‹ state ›: ‹ false ›,
‹ temp_unit ›: ‹ FAHRENHEIT ›,
‹ temperature ›: 72},
‹ dev_type ›: ‹ climate ›,
‹ ha_type ›: ‹ climate ›,
‹ icon ›: ‹ https://images.tuyaeu.com/smart/icon/1493368574_0.png ›,
‹ id ›: ‹ 01106740cc50e350ad0c ›,
‹ name ›: ‹ Clim chambre Clement ›},
==> toutes les infos ne sont pas présentes et ne sont pas à jour par contre grâce à l’id je peux allumer/eteindre, modifier la température de l’équipement
Mais quand je fais votre procédure pour avoir les infos de l’app smartlife j’ai le résultat suivant pour l’équipement cité plus haut :
{
« devId »: « 01106740cc50e350ad0c »,
« dps »: {
« 1 »: false,
« 4 »: 0,
« 5 »: « 3 »,
« 6 »: 22,
« 8 »: « 0 »,
« 10 »: false,
« 13 »: 0,
« 14 »: 0,
« 15 »: 0,
« 16 »: true,
« 17 »: false,
« 18 »: 72,
« 19 »: false
}
}
Lui par contre à l’air de contenir toutes les infos…
D’ailleurs quel est la différence entre le devId et la localKey ?
Si y en a aucune y a un moyen plus simple de récupérer ces équipements et ID (sans téléphone) via un émulateur online de code python ==> https://github.com/PaulAnnekov/tuyaha/commit/f2aac70c27fdfdede99071a88b8ae195e8acb7aa
Emulateur : https://repl.it/ ==> creer un instance de code Python
Copier/coller le script de connexion tuya : https://github.com/PaulAnnekov/tuyaha/blob/master/tools/debug_discovery.py
Modifier les crédentials : username et password puis executer le code
Exemple de réponse :
image

Bonjour,
j’ai une petite question concernant le plugin.
J’ai vu dans le doc que les détecteurs de mouvements Tuya qui ne fonctionnent plus avec le Cloud ne sont pas compatibles, mais les autres alors c’est bon?
J’ai 2 détecteurs PIR immunisés contre les animaux qui fonctionnent dans SmartLife via le Cloud et l’application me donne un ID Virtuel. Est-ce que vous pensez que je pourrai les intégrer dans le plugin WifilightV2?

merci pour vos réponses