ATTENTION : Ne fonctionne pas pour une HC2 sur un firmware 4.xx
Il peut être utile de devoir créer ou modifier une variable globale depuis une application tiers tel que Google Script.
Pour ce faire, voici le code à utiliser.
/** * ============================================== * Création de variable globale sur la HC2 * ============================================== **/ var HC2_IP = "www.xxxxxx.xx:xx"; var LOGIN = "admin"; var PWD = "admin" /** * --------------------------------------------- * Action * --------------------------------------------- **/ function doIt() { var name = "MA_VARIABLE"; var value = "1234"; var vars = getAllVars(); var found = false; for (var i = 0; i < vars.length; i++) { if (vars[i].name == name) { found = true; } } if (found) { modify(name, value); } else { add(name, value); } } /** * -------------------------------------------- * 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 data = {"name":name, "value":value}; var options = {"headers": {"User-Agent": "MY_APP_NAME (App URL/your email address)", "Authorization": "Basic " + Utilities.base64Encode(LOGIN + ":" + PWD)}, "Content-Type": "application/json", "method":"post", "payload": data }; envoi = UrlFetchApp.fetch(url, options); }; /** * ---------------------------------------------- * Retourne toutes les variables * ---------------------------------------------- **/ function getAllVars() { var url = "http://" + HC2_IP + "/api/globalVariables"; var options = {"headers": {"User-Agent": "MY_APP_NAME (App URL/your email address)", "Authorization": "Basic " + Utilities.base64Encode(LOGIN + ":" + PWD)}, "Content-Type": "application/json", "method":"get" }; envoi = UrlFetchApp.fetch(url, options); var data = JSON.parse(envoi.getContentText()); return data; } /** * ---------------------------------------------- * Modifie une variable existante * ---------------------------------------------- **/ function modify(name, value) { var payload = "{\"name\" : \"" + name + "\", \"value\" : \"" + value + "\"}"; var url = "http://" + HC2_IP + "/api/globalVariables"; var options = {"headers": {"User-Agent": "MY_APP_NAME (App URL/your email address)", "Authorization": "Basic " + Utilities.base64Encode(LOGIN + ":" + PWD)}, "Content-Type": "application/json", "method":"put","payload": payload}; envoi = UrlFetchApp.fetch(url, options); }
Bonjour Steven,
Bon travail.
J’essaie d’adapter ce code pour poster une commande de scène mais je n’y arrive pas.
PS : le code ci dessus fonctionne sur mon install.
D’avance merci
Fabrice
Bonjour, que voulez-vous faire exactement que je puisse vous aider correctement ?
Bonjour et déjà merci d’avoir répondu.
A force de persévérance j’y suis arrivé 😉
Je m’explique quand même car :
– ça peut servir à d’autres
– il y a peut être des choses inutiles dans la partie « options » que je ne maîtrise pas.
En fait j’avais pour habitude d’utiliser une adaptation de ce script pour gérer mes volets avec ma vera Lite.
http://www.maison-et-domotique.com/download/scripts/agenda_drive.txt
Etant passé depuis qq jours sur HC2 j’ai tenté de le modifier mais visiblement la façon de se logger sur la HC2 ne plait pas à Drive (l’@ je pense).
J’ai donc adapté votre script ci dessus pour l’intégrer à l’autre.
Voici la partie nécessaire à l’envoi.
function AppelAPI(PeriphID)
{
var HC2_IP = « Mon_IP:Port »;
var LOGIN = « login »;
var PWD = « pass »
var url = « http:// » + HC2_IP + « /api/sceneControl?id= » + PeriphID + « &action=start »;
var options = {« headers »: {« User-Agent »: « MY_APP_NAME (App URL/your email address) », « Authorization »: « Basic » + Utilities.base64Encode(LOGIN + « : » + PWD)},
}
var Reponse;
Reponse = UrlFetchApp.fetch(url,options);
Reponse = Reponse.getContentText();
Logger.log (Reponse);
return(Reponse.indexOf( » error_code « ) >= 0);
}
Fabrice
En effet l’authentification n’a rien a voir. Merci pour ce partage et bienvenu sur la HC2.
Par contre pas d’ https sur cette box 😦
J’ai donc créé un compte pour ce script qui n’a accès qu’aux scènes necessaires.
Fibaro a annoncé le plugin Netatmo. Vu que les API ne sont accessible qu’en HTTPS, cela voudrait dire que le support du HTTPS est pour très bientôt. Par contre, les nouveaux API de la HC2 changent un peu, il faudra juste changer vos requêtes mais rien de méchant.