Configuration du plugin Smartthings suite mise à jour (création du jeton)

Bonjour,

Impossible de faire afficher « Client ID » et « Client SECRET » en cliquant sur « SE CONNECTER », il inscrit à chaque fois « ERREUR LORS DE LA RECUERATION DU JETON » malgré avoir suivi la procédure décrite dans la documentation.

Pièce jointe en annexe.

Ai-je raté un truc ???

Merci de votre aide,

Laurent


Informations Jeedom

Core : 4.4.19 (master)
DNS Jeedom : oui

Plugin : SmartThings
Version : 2025-01-27 19:29:54 (beta)

Bonjour.

Pas d’espace avant ou après le jeton PAT ?

Il me faut les logs en debug pour commencer à chercher le problème.

Bonjour,

Non, aucun espace. J’ai vérifié.

Voici les logs :
smartthings_bis.txt (144,8 Ko)
smartthings.txt (183,8 Ko)

Merci,

Laurent

Je vois déjà un appareil qui n’a pas de deviceId, (Identifiant appareil)
Capture d’écran 2025-04-16 à 10.32.10
Supprime-le et relance une synchronisation.

Ensuite, je vois que tu as rajouté des scope manuellement :

r:locations:*,w:customcapability,x:rules:*,r:customcapability,w:rules:*,w:installedapps:*,r:installedapps:*,r:audiovideo:images,r:schedules,w:deviceprofiles,r:rules:*,x:devices:*,l:devices,w:locations:*,x:locations:*,r:channels:*,r:deviceprofiles,w:audiovideo:images,w:invitations,l:installedapps,r:audiovideo:clips,r:scenes:*,w:schedules,x:notifications:*,r:audiovideo:streams,x:scenes:*,w:channels:*,r:invitations,w:audiovideo:streams,r:drivers:*,r:devices:*,w:devices:*,w:drivers:*,l:scenes,r:apps:*,w:apps:*,w:audiovideo:clips

Et qu’à cause de ça, la requête échoue :

[2025-04-16 10:26:18][DEBUG] : sendRequest - CODE : 422 RESPONSE : {"requestId":"809131799917689037","error":{"code":"ConstraintViolationError","message":"The request is malformed.","details":[{"code":"NotValidValue","target":"oauthScope[r:locations:*,w:customcapability,x:rules:*,r:customcapability,w:rules:*,w:installedapps:*,r:installedapps:*,r:audiovideo:images,r:schedules,w:deviceprofiles,r:rules:*,x:devices:*,l:devices,w:locations:*,x:locations:*,r:channels:*,r:deviceprofiles,w:audiovideo:images,w:invitations,l:installedapps,r:audiovideo:clips,r:scenes:*,w:schedules,x:notifications:*,r:audiovideo:streams,x:scenes:*,w:channels:*,r:invitations,w:audiovideo:streams,r:drivers:*,r:devices:*,w:devices:*,w:drivers:*,l:scenes,r:apps:*,w:apps:*,w:audiovideo:clips]","message":"Invalid scope definition.","details":[]}]}}

C’est exactement le même problème qu’ici : Le deviceid ne peut pas être vide - #36 par alex43_b

Laisse les scope, par défaut.
Puis ajoutes-en quelques-uns et teste une connexion.
Les scopes par défaut suffisent amplement à permettre à la smartapp d’accéder aux infos pour le plugin.

Je n’ai trouvé aucun ID d’appareil manquant dans ma liste d’équipement.
Hormis peut-être un équipement injoignable (TV de la chambre qui n’a plus été utilisée mais son ID est tout de même présent).
Je viens de recréer un jeton avec les applications par défaut. Problème identique (voici les logs joint suite à la modification)
smartthings_ter.txt (44,2 Ko)

Bonjour,
Après désinstallation de tous les appareils, ensuite réappairage des équipements dans l’application refaite.
Recréation d’un nouveau jeton avec uniquement Appareils et Lieux.
Toujours la même réponse d’impossibilité de création.
Annexes jointes.
Merci de votre aide,
Laurent


smartthings.txt (33,4 Ko)

[2025-04-19 07:17:53][DEBUG] : Début checkAndCreateApp
[2025-04-19 07:17:53][DEBUG] : Étape 1 
[2025-04-19 07:17:53][DEBUG] : sendRequest - URL : https://api.smartthings.com/v1/apps METHODE : GET
[2025-04-19 07:17:54][DEBUG] : sendRequest - CODE : 403 RESPONSE : 
[2025-04-19 07:17:54][DEBUG] : La requête vers https://api.smartthings.com/v1/apps a retourné un code d'erreur 403 résultat = 
[2025-04-19 07:17:54][DEBUG] : Accès à cette ressource non autorisé ou appareil non lié à cet utilisateur. L'authentification a été acceptée mais les droits d'accès ne permettent pas au client d'accéder à la ressource.

Pour ta dernière tentative, il faut mettre les droits Applications, comme indiqué dans la doc (Configuration du plugin SmartThings pour Jeedom - Flobul-Domotique)
D’où l’erreur ci-dessus.

Tu mets en scopes :

r:locations:*,l:installedapps,r:scenes:*,w:installedapps:*,x:scenes:*,r:installedapps:*,x:devices:*,l:devices,w:locations:*,r:devices:*,w:devices:*,x:locations:*,l:scenes,r:apps:*,w:apps:*

et smartthings répond :

...
{"code":"NotValidValue",
"target":"oauthScope[r:locations:*,l:installedapps,r:scenes:*,w:installedapps:*,x:scenes:*,r:installedapps:*,x:devices:*,l:devices,w:locations:*,r:devices:*,w:devices:*,x:locations:*,l:scenes,r:apps:*,w:apps:*]",
"message":"Invalid scope definition.","details":[]}]}}

Les scope par défaut du plugin sont :

r:hubs:* r:locations:* r:rules:* r:scenes:* x:devices:* w:rules:* w:locations:* w:devices:* r:devices:* x:locations:* x:scenes:*

Pourquoi vouloir les changer ?
Je vais retirer la possibilité de les modifier, ça m’évitera de débugguer pendant des heures.

Après plus de 30 essais avec les scopes définis dans la doc, mon soucis est toujours présent.

smartthings.txt (33,8 Ko)

Si tu mets juste ces scope, qu’est-ce que ça donne ?

Toujours pareil, par contre que veux dire RULES? Je ne vois pas quel est l’option qui permet de voir cela.
smartthings.txt (2,3 Ko)

Non, ce n’est pas pareil.

Quels sont les droits de ton jeton PAT ?

[2025-04-21 10:37:22][DEBUG] : La requête vers https://api.smartthings.com/v1/apps a retourné un code d'erreur 403 résultat = 
[2025-04-21 10:37:22][DEBUG] : Accès à cette ressource non autorisé ou appareil non lié à cet utilisateur. L'authentification a été acceptée mais les droits d'accès ne permettent pas au client d'accéder à la ressource.

Clairement, tu n’as pas les droits Application dans le jeton PAT.

Où peut-on voir ces droits?

Il faut ces droits sur le jeton PAT :

Oui, J’ai déjà fait cela des milliers de fois de différentes manières mais j’ai toujours une erreur de connexion.

Je peux pas t’aider plus, tes logs disent que le jeton est bien lié à l’utilisateur mais que tu n’as pas les droits sur applications.

Le Jeedom2 est celui que j’utilise pour tester…

Je viens de faire la procédure complète sur ma maquette.

J’ai créé un jeton PAT avec les droits ci-dessus.
Aucun problème.

[2025-04-21 11:22:03] DEBUG  sendRequest - URL : https://api.smartthings.com/v1/apps METHODE : GET
[2025-04-21 11:22:03] DEBUG  sendRequest - CODE : 200 RESPONSE : {"items":[],"_links":{}}
[2025-04-21 11:22:03] DEBUG  checkAndCreateApp 1 $foundApp= $sameApp=
[2025-04-21 11:22:03] DEBUG  checkAndCreateApp 2 $foundApp=
[2025-04-21 11:22:03] DEBUG  checkAndCreateApp smartapp n'existe pas
[2025-04-21 11:22:03] DEBUG  checkAndCreateApp body {"appName":"jeedom_plugin_smartthings1745227323","displayName":"jeedom_plugin_smartthings","description":"SmartApp API_ONLY for Jeedom plugin.","appType":"API_ONLY","singleInstance":false,"classifications":["CONNECTED_SERVICE","AUTOMATION"],"iconImage":{"url":"https://github.com/Flobul/Jeedom-SmartThings/raw/master/plugin_info/smartthings_icon.png"},"oauth":{"clientName":"my_jeedom","scope":["r:hubs:*","r:locations:*","r:rules:*","r:scenes:*","x:devices:*","w:rules:*","w:locations:*","w:devices:*","r:devices:*","x:locations:*","x:scenes:*"],"redirectUris":["https://moip/jeedom/plugins/smartthings/core/php/callback.php?apikey=XXXXXXXXX"]},"apiOnly":{"targetUrl":"https://mon-ip/jeedom/plugins/smartthings/core/php/callback.php?apikey=u4d0iwCst1rKpsJ0YtdquACEODm8ktCpZwsDY8Aas2yGIafNmrPeF6OVHVVGhSJY"}}
[2025-04-21 11:22:03] DEBUG  sendRequest - URL : https://api.smartthings.com/v1/apps METHODE : POST
[2025-04-21 11:22:04] DEBUG  sendRequest - CODE : 200 RESPONSE : {"app":{"appName":"jeedom_plugin_smartthings1745227323","appId":"7783f362-a8bb-4724-9198-ab6577b761a4","appType":"API_ONLY","principalType":"LOCATION","classifications":["CONNECTED_SERVICE","AUTOMATION"],"displayName":"jeedom_plugin_smartthings","description":"SmartApp API_ONLY for Jeedom plugin.","singleInstance":false,"iconImage":{"url":"https://github.com/Flobul/Jeedom-SmartThings/raw/master/plugin_info/smartthings_icon.png"},"installMetadata":{},"owner":{"ownerType":"USER","ownerId":"1c1a9d2c-197a-6f56-3196-cffc7917ef1a"},"createdDate":"2025-04-21T09:22:03Z","lastUpdatedDate":"2025-04-21T09:22:03Z","apiOnly":{"subscription":{"targetUrl":"https://mon-ip/jeedom/plugins/smartthings/core/php/callback.php?apikey=XXXXXXXXX","targetStatus":"PENDING"}}},"oauthClientId":"b7398a53-ef91-41d4-8ad9-732525d62822","oauthClientSecret":"f3385c74-e265-439a-8e9e-8cc5f08122b3"}
[2025-04-21 11:22:04] DEBUG  checkAndCreateApp $createApp {"app":{"appName":"jeedom_plugin_smartthings1745227323","appId":"7783f362-a8bb-4724-9198-ab6577b761a4","appType":"API_ONLY","principalType":"LOCATION","classifications":["CONNECTED_SERVICE","AUTOMATION"],"displayName":"jeedom_plugin_smartthings","description":"SmartApp API_ONLY for Jeedom plugin.","singleInstance":false,"iconImage":{"url":"https:\/\/github.com\/Flobul\/Jeedom-SmartThings\/raw\/master\/plugin_info\/smartthings_icon.png"},"installMetadata":[],"owner":{"ownerType":"USER","ownerId":"XXXXXXXX-197a-6f56-3196-cffc7917ef1a"},"createdDate":"2025-04-21T09:22:03Z","lastUpdatedDate":"2025-04-21T09:22:03Z","apiOnly":{"subscription":{"targetUrl":"https:\/\/mon-ip\/jeedom\/plugins\/smartthings\/core\/php\/callback.php?apikey=XXXXXXXXXXXXXXXXXX","targetStatus":"PENDING"}}},"oauthClientId":"XXXXXXXXX-ef91-41d4-8ad9-XXXXXXXXX","oauthClientSecret":"XXXXXXXX-e265-439a-8e9e-XXXXXXXXX"}
[2025-04-21 11:22:04] DEBUG  checkAndCreateApp 3 $foundApp=7783f362-a8bb-4724-9198-ab6577b761a4
[2025-04-21 11:22:04] DEBUG  checkAndCreateApp  smartapp existe
[2025-04-21 11:22:04] DEBUG  sendRequest - URL : https://api.smartthings.com/v1/apps/7783f362-a8bb-4724-9198-ab6577b761a4 METHODE : GET
[2025-04-21 11:22:04] DEBUG  sendRequest - CODE : 200 RESPONSE : {"appName":"jeedom_plugin_smartthings1745227323","appId":"7783f362-a8bb-4724-9198-ab6577b761a4","appType":"API_ONLY","principalType":"LOCATION","classifications":["CONNECTED_SERVICE","AUTOMATION"],"displayName":"jeedom_plugin_smartthings","description":"SmartApp API_ONLY for Jeedom plugin.","singleInstance":false,"iconImage":{"url":"https://github.com/Flobul/Jeedom-SmartThings/raw/master/plugin_info/smartthings_icon.png"},"installMetadata":{},"owner":{"ownerType":"USER","ownerId":"1c1a9d2c-197a-6f56-3196-cffc7917ef1a"},"createdDate":"2025-04-21T09:22:03Z","lastUpdatedDate":"2025-04-21T09:22:03Z","apiOnly":{"subscription":{"targetUrl":"https://mon-ip/jeedom/plugins/smartthings/core/php/callback.php?apikey=XXXXXXXXX","targetStatus":"PENDING"}},"ui":{"pluginUri":"","dashboardCardsEnabled":false,"preInstallDashboardCardsEnabled":false}}
[2025-04-21 11:22:04] DEBUG  checkAndCreateApp checkApp {"appName":"jeedom_plugin_smartthings1745227323","appId":"7783f362-a8bb-4724-9198-ab6577b761a4","appType":"API_ONLY","principalType":"LOCATION","classifications":["CONNECTED_SERVICE","AUTOMATION"],"displayName":"jeedom_plugin_smartthings","description":"SmartApp API_ONLY for Jeedom plugin.","singleInstance":false,"iconImage":{"url":"https:\/\/github.com\/Flobul\/Jeedom-SmartThings\/raw\/master\/plugin_info\/smartthings_icon.png"},"installMetadata":[],"owner":{"ownerType":"USER","ownerId":"XXXXXXXXX-197a-6f56-3196-XXXXXXXXX"},"createdDate":"2025-04-21T09:22:03Z","lastUpdatedDate":"2025-04-21T09:22:03Z","apiOnly":{"subscription":{"targetUrl":"https:\/\/mon-ip\/jeedom\/plugins\/smartthings\/core\/php\/callback.php?apikey=XXXXXXXXXXXXXXX","targetStatus":"PENDING"}},"ui":{"pluginUri":"","dashboardCardsEnabled":false,"preInstallDashboardCardsEnabled":false}}
[2025-04-21 11:22:04] DEBUG  Étape 2
...

Ouiiii, merci moi aussi.
J’ai trouvé mon erreur à l’instant…

En fait, je créais mon jeton et je copiais-coller les infos des droits dans jeedom. Hors qu’il fallait reprendre ceci : « r:hubs:* r:locations:* r:rules:* r:scenes:* x:devices:* w:rules:* w:locations:* w:devices:* r:devices:* x:locations:* x:scenes:* »
Maintenant cela fonctionne.
Merci

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.