Aller au contenu

Communication En Lua Avec La Centrale Myfox


chrispec

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
Lien vers le commentaire
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 ?

 

 

 

Lien vers le commentaire
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
Lien vers le commentaire
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 :)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...
  • 2 weeks later...
  • 11 months later...

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'

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...