Aller au contenu

Modifier Les Variables Globales Par L'api Http En V4.x


mccyrille

Messages recommandés

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...  :angry:

 

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 :o ? 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 :)

 

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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  :(

Lien vers le commentaire
Partager sur d’autres sites

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()
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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);
Lien vers le commentaire
Partager sur d’autres sites

  • 7 mois après...

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?

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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")
Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...