mccyrille Posté(e) le 30 janvier 2015 Signaler Posté(e) le 30 janvier 2015 bonjour je souhaite récupérer les données de ma netatmo, mais visiblement, le plugin ne marche pas bien sur les version 4.x ; j'ai lu à plusieurs endroits que les données ne fonctionnent que 3h maxi, et c'est un peu mon cas... bref, en attendant une version stable... j'ai créé un petit script google qui récupère les données, ça marche bien, mais comment envoyez ces données à l'HC2 maintenant ? je pensais mettre à jour des variables globales directement sur l'HC2, mais impossible de trouver les IDs de ces variables... j'ai utilisé toolkit mais il ne les renseigne pas. pouvez-vous m'aider pour les ID et aussi me dire quelle commande dois-je utiliser vers l'HC2 pour mettre à jour les VG ? merci
mccyrille Posté(e) le 31 janvier 2015 Auteur Signaler Posté(e) le 31 janvier 2015 Personne pour m'aider ? J'ai vu qu'on pouvait créer des virtual sensor, mais je suis en version 4.032, et je ne peux pas installer de plugin externe. Donc je ne vois pas trop comment faire autrement qu'en mettant à jour mes VG... Des idées ? une solution ?
mccyrille Posté(e) le 2 février 2015 Auteur Signaler Posté(e) le 2 février 2015 Bonjour Je me permet de relancer le sujet ; j'ai trouvé un script google qui est sensé marché pour modifier les variables globales à distance, sur le site de Steven : https://spiccand.wordpress.com/2014/07/05/manipuler-une-variable-globale-a-votre-hc2-depuis-google-script/ Mais ça ne marche pas (c'est bien dit que ça ne marche pas avec la V4, mais bon, je ne vois pas pourquoi, car d'après la doc API, c'est bien ça...) Pouvez-vous m'aider SVP, je lutte vraiment pour débuter avec l'HC2 depuis plusieurs jours
Did Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 Ca ne fonctionne pas parce que Fibaro a bloqué les plugins développeur le temps de terminer la v4 stable. http://www.domotique-fibaro.fr/index.php/topic/2164-plugin-virtual-sensor/
mccyrille Posté(e) le 2 février 2015 Auteur Signaler Posté(e) le 2 février 2015 Oui mais je veux juste mettre à jour mes variables globales en fait Bon après de multiples essais... J'ai enfin réussi ! Voici le code de Steven (s'il passe par là !), à jour pour les V 4.x pour mettre à jour des VG à partir d'un google script /** * ============================================== * Création de variable globale sur la HC2 * ============================================== **/ var HC2_IP = "IP:PORT"; // IP de la freebox et le PORT redirigé vers l'HC2 var LOGIN = "admin"; var PWD = "admin" /** * --------------------------------------------- * Action * --------------------------------------------- **/ function doIt() { var name = "essai"; var value = "12345"; var vars = getAllVars(); var found = false; for (var i = 0; i < vars.length; i++) { if (vars[i].name == name) { found = true; } } // for if(found == true) { modify(name, value); } // if else { add(name, value); } // else } // doIt() /** * -------------------------------------------- * Ajoute une variable globale sur la HC2 ... error 409 si elle existe déjà * -------------------------------------------- **/ function add(name, value) { var url = "http://" + HC2_IP + "/api/globalVariables"; var payload = "{\"name\" : \"" + name + "\", \"value\" : \"" + value + "\"}"; var options = {"headers": {"Authorization": "Basic " + Utilities.base64Encode(LOGIN + ":" + PWD)}, "Content-Type": "application/json", "method":"post", "payload": payload }; UrlFetchApp.fetch(url, options); } // add() /** * ---------------------------------------------- * Retourne toutes les variables * ---------------------------------------------- **/ function getAllVars() { var url = "http://" + HC2_IP + "/api/globalVariables"; var options = {"headers": {"Authorization": "Basic " + Utilities.base64Encode(LOGIN + ":" + PWD)}, "Content-Type": "application/json", "method":"get" }; var reponse = UrlFetchApp.fetch(url, options); reponse = JSON.parse(reponse.getContentText()); return reponse; } // getAllVars() /** * ---------------------------------------------- * Modifie une variable existante * ---------------------------------------------- **/ function modify(name, value) { var payload = "{\"name\" : \"" + name + "\", \"value\" : \"" + value + "\"}"; var url = "http://" + HC2_IP + "/api/globalVariables/" + name; var options = {"headers": {"Authorization": "Basic " + Utilities.base64Encode("admin:pass007")}, "Content-Type": "application/json", "method":"put","payload": payload}; UrlFetchApp.fetch(url, options); } // modify()
Krikroff Posté(e) le 3 février 2015 Signaler Posté(e) le 3 février 2015 En cherchant bien tu avais des pistes pour la réponse sur le forum ici par exemple: http://www.domotique-fibaro.fr/index.php/topic/3304-creation-auto-de-variable-avec-nom-id-virtual-device/?p=48265 Mais excellent script de STEVEN Et merci pour la mise à jour
mccyrille Posté(e) le 3 février 2015 Auteur Signaler Posté(e) le 3 février 2015 je suis tombé plein de fois sur ce topic, mais je ne comprenais pas tout tout... bon j'ai réussi hein je débute en LUA... je connais pas mal le C / C++ / basic, mais le lua est parfois un peu spécial je vais m'y faire 1
mccyrille Posté(e) le 4 février 2015 Auteur Signaler Posté(e) le 4 février 2015 Par contre, je n'arrive pas àdéclencher une scène suite àla mise àjour d'une variable par API, mais ça marche quand je la met àjour manuellement... Ya encore un truc caché ou c'est un bug, histoire d'éviter de m'arracher les cheveux ^^
Krikroff Posté(e) le 4 février 2015 Signaler Posté(e) le 4 février 2015 C'est une limitation, temporaire il me semble. Envoyé de mon smartphone
mccyrille Posté(e) le 4 février 2015 Auteur Signaler Posté(e) le 4 février 2015 arf ok... donc je dois avoir une scène qui boucle en permanence pour checker la "modification.time" des VG ? dommage, c'est moins "propre"
Krikroff Posté(e) le 4 février 2015 Signaler Posté(e) le 4 février 2015 Ou alors déclencher la scène depuis l' API juste après la mise a jour de la GV afin d'éviter la boucle.... Envoyé de mon smartphone
mccyrille Posté(e) le 4 février 2015 Auteur Signaler Posté(e) le 4 février 2015 Ah pas bêêêête !!! J'avais pas pensé du tout ça cette option merciiii ^^ Autre question ; est-il possible d'envoyer du Jsondirectement dans un variable avec l'API ? Je voulais mettre toutes les variables dans une structure Json, seulement je n'arrive pas à formater ça bien sur google script ; l'HC2 ne reçoit que "{" ou "" en fonction des mes essais... Voici mon code qui génère la chaîne de caractère sur google script : netatmo_json = "{\"int_temp\":" + netatmo_int_temperature + ",\"int_humid\":" + netatmo_int_humidite + ",\"int_co2\":" + netatmo_int_CO2 + ",\"int_press\":" + netatmo_int_pression + ",\"int_bruit\":" + netatmo_int_bruit + ",\"ext_temp\":" + netatmo_ext_temperature + ",\"ext_humid\":" + netatmo_ext_humidite + ",\"pluie_1h\":" + netatmo_pluie_1h + ",\"pluie_24h\":" + netatmo_pluie_24h + "}"; var payload = "{\"name\" : \"" + name + "\", \"value\" : \"" + value + "\"}"; var url = "http://" + IP_HC2 + "/api/globalVariables/" + name; var options = {"headers": {"Authorization": "Basic " + Utilities.base64Encode(LOGIN_HC2 + ":" + PWD_HC2)}, "Content-Type": "application/json", "method":"put","payload": payload}; UrlFetchApp.fetch(url, options);
extrembiker11 Posté(e) le 1 octobre 2015 Signaler Posté(e) le 1 octobre 2015 Bonjour, Je me permet de m'incruster dans ce topic. J'ai une HC2 v40.56 derrière une freebox sur laquelle est ouvert un port pour accès disant. Je cherche moi aussi à modifier une global var depuis un google script en passant par l'API, voici mon code : /** * ---------------------------------------------- * Modifie une variable existante * ---------------------------------------------- **/ function modify() { name = 'test_var'; value = 3; var payload = "{\"name\" : \"" + name + "\", \"value\" : \"" + value + "\"}"; var url = "http://" + HC2_IP + "/api/globalVariables/" + name; var params = { "headers": { "Authorization": "Basic " + Utilities.base64Encode(LOGIN + ":" + PWD) }, "Content-Type": "application/json", "method":"put", "payload": payload }; envoi = UrlFetchApp.fetch(url, params); Logger.log(envoi.getContentText()); } J'ai cherché un peu partout, je ne pense pas qu'il y ait d'erreur dans le code mais à l'exécution du script j'ai toujours Code renvoyé : 403 J'avoue que je sèche... Si quelqu'un a une idée?
Shad Posté(e) le 1 octobre 2015 Signaler Posté(e) le 1 octobre 2015 Tu veux mettre tes données pour se connecter chez toi sur un script google. Tu crois pas que c'est mieux l'inverse et de te servir de l'api de google un peu dans ce sens: http://www.maison-et-domotique.com/34193-hc2-de-fibaro-et-calendrier-google/
extrembiker11 Posté(e) le 1 octobre 2015 Signaler Posté(e) le 1 octobre 2015 Si le but final c'est ça, c'est que mon google script tourne à interval régulier en récupérant des infos de mon agenda par exemple et envoie des instructions à ma HC2. Mon problème étant que je n'arrive pas à mettre à jour une variable globale de ma HC2 à partir de mon google script.
Shad Posté(e) le 1 octobre 2015 Signaler Posté(e) le 1 octobre 2015 Attend sa c est le script qui tourne dans la hc2?? Et tu veux mettre ta globale àjour depuis un script dans la hc2? Si j ai bien compris, tu as juste àfaire: fibaro:setGlobal("nom de la global", "ta valeur")
extrembiker11 Posté(e) le 1 octobre 2015 Signaler Posté(e) le 1 octobre 2015 Attend sa c est le script qui tourne dans la hc2?? Et tu veux mettre ta globale à jour depuis un script dans la hc2? Si j ai bien compris, tu as juste à faire: fibaro:setGlobal("nom de la global", "ta valeur") Non c'est le script qui tourne sur mon google script. (je veux mettre à jour une variable de ma HC2 depuis mon google script)
Shad Posté(e) le 1 octobre 2015 Signaler Posté(e) le 1 octobre 2015 C est bien ce que je te dis dans ce cas, tu veux mettre tous les accès administrateur de ta box sur Google ce que je trouve complètement hallucinant, alors qu'il y a moyen de faire l inverse via le lien que je t'ai donner. Et je parle pas de la sécurité vue que tu dois router directement un port sur ta box, je veux pas dire, mais le moindre petit Kevin en analysant tes paquets peut récupérer tes logins. Autant mettre dans un fichier php tes logins et port et router le port 80 dessus. Google te fournie une API pour faire les requêtes dans le sens inverse, la solution de Cédric est celle qui faut utiliser. Prend l'habitude que ce soit ta box qui gère ce genre de chose.
extrembiker11 Posté(e) le 1 octobre 2015 Signaler Posté(e) le 1 octobre 2015 Le google script étant hébergé sur mon Google Drive, tu penses qu'il est facilement exploitable par un petit kévin? Sinon par rapport à la solution que tu me préconises, ça nécessite d'avoir un fichier php sur un hébergement pour exploiter les données du google agenda (conversion XML => json) donc c'est pas forcément plus pratique...
Messages recommandés