fel-x Posté(e) le 30 mars Signaler Posté(e) le 30 mars (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é le 31 mars par fel-x
fel-x Posté(e) le 30 mars Auteur Signaler Posté(e) le 30 mars 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 })
fel-x Posté(e) le 11 mai Auteur Signaler Posté(e) le 11 mai Ça m’a pris des semaines mais j’y suis parvenu J’ai un script LUA complet et fonctionnel qui récupère toutes les valeurs en temps réel via l’API. je voudrais en faire une QA mais je n’ai pas encore compris les QA au point d’en écrire une. Si quelqu’un est intéressé par ce code et la conversion en QA.. je veux bien un coup de main.
jojo Posté(e) le 19 mai Signaler Posté(e) le 19 mai je serais intéressé par cette solution. Que devrais-je acheter ? Juste ceci ? où également un batterie rechargeable (durée de vie entre 2 recharges ?); un kit WiFi ? L'api est-elle locale, ou via le cloud ? Et quid de l'étalonnage des sondes de pH et rédox ? Je croyais que tu avais acheté une HC3L et pas une HC3... Tu dis que tu as fait le code LUA, mais pas le QA ??? (où alors le LUA et comment l'as-tu testé ? => tu as probablement fait un QA sans le savoir)
fel-x Posté(e) le 23 mai Auteur Signaler Posté(e) le 23 mai (modifié) tout d'abord la sonde que tu proposes (Blue Connect Go) est uniquement fonctionnelle en local en bluetooth ou alors avec le kit wifi etc. Moi je dispose de la Blue Connect Plus (ici) Elle a une batterie de 3-4 ans et se calibre toute seule. J'ai changé la batterie il y a peu, ça m'a couté 8 Euro je pense. Mais le sonde Blue Connect Plus est chère à l'achat par contre. Elle se connecte au réseau SigFox (ancien réseau militaire je pense) chaque heure et transmet toutes les valeurs mesurées au serveur de BlueRiiot. Une application gratuite te permet de vérifier à tout instant les mesures (soit en bluetooth si tu es à côté) soit par internet car elle se connecte au serveur de BlueRiiot. Grâce à son API (non public ou en tout cas très peu documenté) j'ai réussi à simuler une connexion par un script Lua pour récupérer les mêmes valeurs. Je n'en suis pas encore à les faire afficher de façon jolie dans un QA mais je les reçois ! Pour ce faire, j'ai installé un proxy sur mon ordinateur et fait passer mon iPhone par ce proxy pour récupérer tout le code qui passe dans les deux sens ! Ca m'a donné plein d'infos sur la méthode d'authentification de l'appli et sur les requêtes et les endpoints. J'ai aussi cherché des indices dans des scripts publiés sur GitHub et testé dans les langages que je connais sur ma raspberry... puis tenté de traduire en LUA. Bref, j'ai écrit un premier scénario en LUA et quand je l'active, il récupère l'ID de mon BlueConnect Ce script ne sert qu'une fois, car l'ID ne change pas. Mais j'en avais besoin pour le mettre dans un second scénario qui se connecte à l'API, envoie mes données d'identification et l'ID du BlueConnect, et récupère un token que j'emploie pour générer une requête signée AWS4 et recevoir en retour les dernières mesures que ma sonde a envoyées au serveur. Il me debug ces dernières valeurs. Exactement comme si j'allumais mon appli sur mon iPhone. Je suis occupé à essayer de mettre tout ce code dans une QA pour que ce soit automatisé et pouvoir le partager avec toi et le monde Mais c'est compliqué Modifié le 23 mai par fel-x
jojo Posté(e) le 24 mai Signaler Posté(e) le 24 mai merci pour ta réponse complète et détaillées. J'espérais pouvoir récupérer les infos du "bidule" en étant 100% local, sans passer par leur serveur (je hais de plus en plus tout ce qui est cloud : exple J'acheté un thermostat Nest il ya longtemps, il fonctionne encore parfaitement et je vais devoir en changer car d'ici octobre, je ne pourrai plus le contrôler à distance , car je dois passer par le cloud Google ) Je ne ferai donc plus avoir ...
fel-x Posté(e) le 30 mai Auteur Signaler Posté(e) le 30 mai (modifié) Ca y est j'y suis arrivé ! Ma première QA fonctionne. La voici pour ceux qui veulent tester... évidemment il faut un compte chez Blueriiot sans quoi vous n'aurez pas accès à l'API. De toute façon ça n'a aucun intérêt en dehors du contexte d'une sonde Blue Connect (Plus/Go). Je joins l'icône. Je l'ai mise à disposition sur le Fibaro Marketplace aussi, pour voir si ça intéresse d'autres personnes que moi sur cette terre Tous vos retours et/ou conseils sont bienvenus. BlueRiiot_Blue_Connect_v1.1.fqa Modifié mercredi à 17:55 par fel-x mise à jour de la QA (correction d'un bug mineur) 3
Messages recommandés