Aller au contenu

Communication En Lua Avec La Centrale Myfox


Messages recommandés

Posté(e)

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
Posté(e)

Heu cette ligne m'interpelle

local https = require("ssl.https") 

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

Posté(e)

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 ?

 

 

 

Posté(e) (modifié)

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
Posté(e)

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.

Posté(e)

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

  • 2 semaines après...
Posté(e)

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.

Posté(e)

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

  • 2 semaines après...
  • 11 mois après...
Posté(e)

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'

×
×
  • Créer...