Aller au contenu
chrispec

Communication En Lua Avec La Centrale Myfox

Recommended Posts

Bonjour,

 

Avis aux possesseurs d'alarmes Myfox, je viens de trouver cela:

 

http://gurau-audibert.hd.free.fr/josdblog/2015/03/communication-en-lua-avec-la-centrale-myfox/#more-6458

 

Ce qui nous ferait ...

--[[
%% properties
%% globals
–]]

local https = require("ssl.https")
 
local identifiant  = '<identifiant>'
local motDePasse   = '<mot de passe>'
local clientID     = '<Client ID>'
local clientSecret = '<Client Secret>'
local siteId       = '<Site Id>'
local access_token = nil
local refresh_token = nil
local echeance = nil
 
-- Request access token
function acquerirJeton()
  local url = 'https://api.myfox.me/oauth2/token'
  local post = string.format('grant_type=password&client_id=%s&client_secret=%s&username=%s&password=%s', clientID, clientSecret, identifiant, motDePasse)
  local body, code = https.request(url, post)
  assert(code == 200)
  access_token, refresh_token = string.match(body, '"access_token":"([^"]*)".*"refresh_token":"([^"]*)"')
end
 
-- Refreshing an expired access_token
function renouvelerJeton()
  local url = 'https://api.myfox.me/oauth2/token'
  local post = string.format('grant_type=refresh_token&refresh_token=%s&client_id=%s&client_secret=%s', refresh_token, clientID, clientSecret)
  local body, code = https.request(url, post)
  assert(code == 200)
  access_token, refresh_token = string.match(body, '"access_token":"([^"]*)".*"refresh_token":"([^"]*)"')
end
 
-- Statut de l'alarme : 'disarmed', 'partial' ou 'armed'
function statut()
  local url = string.format('https://api.myfox.me:443/v2/site/%s/security?access_token=%s', tostring(siteId), access_token)
  local body, code = https.request(url)
  assert(code == 200)
  local statut = string.match(body, '"statusLabel":"([^"]*)"')
  return statut
end

Je le testerai ce WE ... avis aux intéressés ...

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

interessant, il reste plus qu'à  construire son module qui va bien , alors lol

 

concretement, on le transforme comment , en module intéressant.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Chrispec, oui interressé par un petit retour, merci!!

Partager ce message


Lien à poster
Partager sur d’autres sites

Heu cette ligne m'interpelle

local https = require("ssl.https") 

Je ne suis absolument pas certain que cela puisse fonctionner sur nos box

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour BenjyNet,

 

C'est aussi l'interrogation de Laurent sur son blog: http://gurau-audibert.hd.free.fr/josdblog/2015/03/communication-en-lua-avec-la-centrale-myfox/#more-6458

 

D'ailleurs, en voulant m'inspirer de: http://www.domotique-fibaro.fr/index.php/topic/776-module-pour-gestion-des-volets-automatique/

 

Pour VD: (variable globale SysMyfox avec comme valeurs: ON, OFF et PARTIEL)

 

ImgEtatMyfox

 
Pour un des boutons:
 

ButtonVdMyfox

 
Et pour le Mainloop:
 
--[[
%% properties
%% globals
–]]
 
--local https = require("ssl.https")
 
local identifiant  = '<identifiant>'
local motDePasse   = '<mot de passe>'
local clientID     = '<Client ID>'
local clientSecret = '<Client Secret>'
local siteId       = '<Site Id>'
local access_token = nil
local refresh_token = nil
local echeance = nil
 
-- Request access token
function acquerirJeton()
  local url = 'https://api.myfox.me/oauth2/token'
  local post = string.format('grant_type=password&client_id=%s&client_secret=%s&username=%s&password=%s', clientID, clientSecret, identifiant, motDePasse)
  local body, code = https.request(url, post)
  assert(code == 200)
  access_token, refresh_token = string.match(body, '"access_token":"([^"]*)".*"refresh_token":"([^"]*)"')
end
 
-- Refreshing an expired access_token
function renouvelerJeton()
  local url = 'https://api.myfox.me/oauth2/token'
  local post = string.format('grant_type=refresh_token&refresh_token=%s&client_id=%s&client_secret=%s', refresh_token, clientID, clientSecret)
  local body, code = https.request(url, post)
  assert(code == 200)
  access_token, refresh_token = string.match(body, '"access_token":"([^"]*)".*"refresh_token":"([^"]*)"')
end
 
-- Statut de l'alarme : 'disarmed', 'partial' ou 'armed'
function statut()
  local url = string.format('https://api.myfox.me:443/v2/site/%s/security?access_token=%s', tostring(siteId), access_token)
  local body, code = https.request(url)
  assert(code == 200)
  local statut = string.match(body, '"statusLabel":"([^"]*)"')
  return statut
  
  fibaro:setGlobal("SysMyfox", statut);
  
end

Qu'en penses-tu ?

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui c'est bien tout ça mais sans ssl de toute façon tu ne pourras rien faire :)

Donc tout tes appels aux urls commençant par httpS... c'est mort :) Il me semble qu'il n'y a que par les plugins qu'on peut avoir du https mais faudrait confirmer par nos experts :)

 

Edit : tu confonds scenes et virtual device. Le main loop ne commence jamais par 

--[[
%% properties
%% globals
–]]

Ce code est réservé aux scènes uniquement !

Et je te confirme que le httpS n'est pas utilisable dans un virtual device mais uniquement dans une scene. Regarde ce post qui pourrait t'inspirer : http://www.domotique-fibaro.fr/index.php/topic/5961-particle-photon-et-hc2/?p=90930

Modifié par BenjyNet

Partager ce message


Lien à poster
Partager sur d’autres sites

chrispec, je pense que tu utilises deja le module de Krikroff ?

 

il faut attendre le https, qui devrait (6mois) pas tarder, tout depends de ton GMT, et de la planète de Figaro.

Partager ce message


Lien à poster
Partager sur d’autres sites

En v4, les scènes supportent très bien le HTTPS, je confirme. Il n'y a donc aucune raison que ce script ne puisse être porté sur une HC2.

 

J'avais fait le même genre de script pour Netatmo ... c'est en https et nécessite aussi un token.

http://www.domotique-fibaro.fr/index.php/topic/4626-pluviom%C3%A9trie-avec-netatmo/

 

Courage :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Moi, j'ai un script Php, "MyApiFox" que j'utilise depuis 1,5 an now, il est opérationnel et fonctionne pour mes scènes pour désactiver m'alarme et fermer mes volets ou les ouvrir. Seulement avec un serveur Php externe àla HC2.

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, mais je voulais savoir si ca fonctionnait en lua car c'est plus user friendly

D'après ce que je comprends, c'est faisable en v4. Mais je voulais qu'on me confirme avant de me lancer

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut

 

Comme les scènes https fonctionne en v4, je reviens dessus (plus le chemin est court mieux sait, actuellement je passe par ifttt).

 

J'ai teste le script https de dessus , debug : [DEBUG] 22:51:46: line 44: 'end' expected (to close 'function' at line 37) near 'fibaro'

Partager ce message


Lien à poster
Partager sur d’autres sites

×