fel-x Posté(e) dimanche à 15:31 Signaler Posté(e) dimanche à 15:31 (modifié) Salut la communauté. Les beaux jours reviennent et je vais sortir mon jacuzzi extérieur d'hivernage. Maintenant que j'ai une HC3, j'en découvre la puissance et je voudrais intégrer les paramètres de la sonde BLUE CONNECT qui flotte dans l'eau. Il y a quelques années, un membre avait tenté le coup sur HC2 mais entretemps, la société BlueRiiot a supprimé le support de l'IFTTT et je pense que ce n'est plus une bonne piste. De mon côté, j'y arrive très bien en bidouillant sur ma raspberry, car plusieurs codes sont disponibles sur GitHub en JS ou Python pour exploiter l'API de BlueRiiot. En reprenant celui-ci par exemple, je parviens à me connecter à l'API, à récupérer un TOKEN et à demander les dernières mesures. Le résultat est correct et correspond parfaitement à ce que fournit l'application BlueRiiot sur iOS : Avant, j'aurais complété mon script JS pour exporter les valeurs reçues vers un fichier et vers des variables sur ma HCL. C'est toujours faisable facilement sur HC3 ! Mais ça c'était avant... Comme je découvre la HC3 et le LUA, je me suis dit qu'il faudrait "traduire" mon script en LUA, ce sera plus "propre". Et c'est là que ça devient compliqué car il faut remplacer tous les appels à des bibliothèques et des fonctions externes par un code unique en LUA. J'ai réussi à écrire un scénario en LUA et à récupérer mon Token : [DEBUG] [SCENE123]: ✅ Token reçu : eyJraWQi...pT9Kw Mais après c'est galère, il faut récupérer plein d'autres valeurs (ACCESS_KEY, SECRET_KEY,...) en envoyant des requêtes HTTP signées en AWS, et ça je ne sais pas le faire. Je reçois donc : [DEBUG] [SCENE123]: Mesures reçues : {"message":"Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header. (Hashed with SHA-256 and encoded with Base64) Authorization=Pr8kW1psrF9y....Q6vfqA"} Si certains d'entre vous sont intéressés par ce projet, je suis prêt à apprendre et partager ce que j'ai déjà. Je n'ai pas trop de temps libre mais je suis motivé Sinon je continuerai à chercher de mon côté et un jour je sortirai une QA... Pour info, voici ce qu'est un Blue Connect : https://www.blueriiot.com/eu-fr A bientôt ! Modifié lundi à 06:07 par fel-x
fel-x Posté(e) dimanche à 21:41 Auteur Signaler Posté(e) dimanche à 21:41 Finalement j'ai pu aller plus loin et récupérer les valeurs des Credentials (session_token, access_key et secret_key). Mais je ne sais pas comment les envoyer correctement puisque l'erreur retournée est : Mesures reçues : {"message":"Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. (Hashed with SHA-256 and encoded with Base64) Authorization=/4IItnRn5MiD....7+QQa0tFbQoEI="} Voici mon extrait de code, si jamais quelqu'un a déjà eu à se connecter de cette manière ? net.HTTPClient():request(measure_url, { options = { method = 'POST', headers = { ["Authorization"] = auth_string, ["X-Amz-Date"] = os.date("!%Y%m%dT%H%M%SZ"), ["Credential"] = je_mets_quoi_ici_?, ["Signature"] = je_mets_quoi_ici_?, ["SignedHeaders"] = je_mets_quoi_ici_?, ["Content-Type"] = "application/json" }, timeout = 5000 }, success = function(response) hub.debug("Connexion Blue Riiot", "Mesures reçues : " .. response.data) end, error = function(err) hub.debug("Connexion Blue Riiot", "❌ Erreur lors de la demande des mesures : " .. err) end })
Messages recommandés