-
Compteur de contenus
1075 -
Inscription
-
Dernière visite
-
Jours gagnés
13
Tout ce qui a été posté par Cardane
-
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
voilà la description que j'ai trouvé... --raw-output / -r: With this option, if the filter’s result is a string then it will be written directly to standard output rather than being formatted as a JSON string with quotes. This can be useful for making jq filters talk to non-JSON-based systems. si je comprends bien, ca permet de balancer la string "brute", en mode raw, et donc il n'interprète pas les caractères de ce type -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@OJC en fait il faudrait l'équivalent du jq -r qu'il utilise dans le shell script (comme j'ai mis en page 3), mais là, je ne connais pas du tout assez bien lua pour ca -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@OJC toujours le même problème... en plus c'est chiant, faut que je teste 20 fois avant qu'il ne me génère un token avec un caractère comme ca -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@Nico, non par contre si je dis "Dis Siri, ouvre les velux", ca marche -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
voici le code -- Authentification local ip = "192.168.1.33" local url = 'http://'.. ip .. '/api/v1/auth' local dataslogin = '{"action":"login","params":{"password":"velux123"}}' local dataslogout = '{"action":"logout","params":{}}' local klf = net.HTTPClient() klf:request(url , { success = function(response) fibaro:debug(json.encode(response)) local temp = json.encode(response) local key = "token" local token = temp:match('\\\"token\\\":\\\"(.+)\\\",\\\"result') string.gsub(token, "\\", "\\\\") fibaro:debug("token\n") fibaro:debug("") fibaro:debug(token) klf:request(url , { success = function(response) fibaro:debug("Je suis dans response\n") fibaro:debug("response\n") fibaro:debug(json.encode(response)) fibaro:debug("response.data\n") fibaro:debug(response.data) end, error = function(err) print ("Je suis dans err") print('error = ' .. err) end, options = { method = 'POST', headers = { ["content-type"] = 'application/json, charset=utf-8', ["Authorization"] = "Bearer "..token, }, data = dataslogout } }) end, error = function(err) print ("Je suis dans err") print('error = ' .. err) end, options = { method = 'POST', headers = { ["content-type"] = 'application/json, charset=utf-8', }, data = dataslogin } }) et voici le debug [DEBUG] 20:28:54: {"data":")]}',\n{\"token\":\"Ezm\/TjhEQwAWeEhrpWu\/YA==\",\"result\":true,\"deviceStatus\":\"IDLE\",\"data\":{},\"errors\":[]}","status":200,"headers":{"Content-Length":"100","Connection":"Keep-Alive","Content-Type":"application\/json"}} [DEBUG] 20:28:54: token [DEBUG] 20:28:54: [DEBUG] 20:28:54: [DEBUG] 20:28:54: Ezm\/TjhEQwAWeEhrpWu\/YA== [DEBUG] 20:28:55: Je suis dans response [DEBUG] 20:28:55: [DEBUG] 20:28:55: response [DEBUG] 20:28:55: [DEBUG] 20:28:55: {"data":"HTTP\/1.1 403\r\nContent-Type: application\/json\r\nConnection: Keep-Alive\r\nContent-Length: 65\r\n\r\n)]}',\n{\"result\":true,\"deviceStatus\":\"IDLE\",\"data\":{},\"errors\":[]}","status":1,"headers":{}} [DEBUG] 20:28:55: response.data [DEBUG] 20:28:55: [DEBUG] 20:28:55: HTTP/1.1 403 [DEBUG] 20:28:55: Content-Type: application/json [DEBUG] 20:28:55: Connection: Keep-Alive [DEBUG] 20:28:55: Content-Length: 65 [DEBUG] 20:28:55: [DEBUG] 20:28:55: )]}', [DEBUG] 20:28:55: {"result":true,"deviceStatus":"IDLE","data":{},"errors":[]} -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@OJC re salut bon, mauvaise nouvelle, en fait dès que le token contient un caractère d'échappement, ca ne marche pas... mon test c'est d’enchaîner un login, puis un logout, donc lors de l'appel au logout je lui passe comme paramètre le token obtenu lors du login. j'ai bien rajouté le peit bout de code que tu m'as donné ci-dessus mais je reçois un access denied (erreur 403) lors de l'appel au logout. si c'est un token normal, ca marche tu as une idée ????? -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
Yo, je te fais ca ce weekend, (faudra que je monte à l'échelle )... mais comme de toute manière je crois que pour faire revivre ma télécommande je dois faire un reset des velux... -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
ah tu parles des volets toi ? moi je parle des moteurs d'ouverture des velux. Les Integra, ils arrivent avec le moteur d'ouverture et toute la connectique pour venir brancher rapidement tous les autres accessoires, comme les volets, les stores, les lampes, etc et d'office tu les retrouves sur la télécommande. en fait moi je n'ai qu'un câble d'alimentation 220v qui arrive au Velux -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@pepite, pas de problème je vais essayer de faire ca dans les meilleurs délais (suis un peu débordé ce weekend mais je vais essayer) par contre tu as bien des Velux Integra ? parce que j'ai l'impression que ca ne marche qu'avec ca... ou tu as des velux que tu as motorisé par la suite ? oui, moi aussi quand le gars est venu installer les velux il avait un KUX100, mais je ne voyais pas l'intérêt d'installer ce truc puisque de toute manière ils étaient fournis avec la télécommande tactile KLR200 (celle que je viens de bousiller ) -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
ah oui, juste, il faut que je rajoute systématiquement ce bout de code avant de réutiliser le token, merci d'y avoir pensé -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
merci pour l'explication -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
oufffff, super content, le WAF rentre ce soir, et comme j'ai bousillé l'autre télécommande en faisant mes tests, je crois que si je n'avais pas de solution via la HC2, j'aurais encore entendu parler de ma domotique tout le weekend -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@OJC@pepite@Steven@Lazer alors là, @OJC chapeau bas je ne comprends toujours rien au pattern, mais CA MAAAAAARCHE !!!! une super grand merci à tous pour votre aide, je vais enfin pouvoir ouvrir mes Velux via la HC2 il me reste à intégrer la commande du run pour actionner les scènes du klf, remettre tout au propre, et vous faire un petit tuto un peu mieux torché si vous le désirez -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@OJC le fibaro:debug n'arrange rien, je viens d'essayer... tu veux dire quoi avec le copier / coller du debug ? je viens de le mettre deux posts plus haut , ce n'est pas ca que tu veux ? -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@OJC@Steven toujours le même résultat "nil" en fait le token change à chaque fois, donc il n'y a pas toujours les caractères d'échappement voici le dernier test local url = 'http://'.. ip .. '/api/v1/auth' local datas = '{"action":"login","params":{"password":"velux123"}}' local klf = net.HTTPClient() klf:request(url , { success = function(response) fibaro:debug(json.encode(response)) local temp = json.encode(response) fibaro:debug(temp) local key = "token" print(temp:match("\""..key.."\":\"(.+)\",")) end, et le résultat... -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
ben non, même avec la deuxième proposition de steven la retour est toujours "nil" -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@OJC ton test en passant par la table ne marche pas, il génère une erreur LUA, je suppose une fois de plus à cause de la présence du "\n" dans le response... -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@pepite @Steven @OJC bon, soit j'ai encore loupé un truc mais j'essaie avec le code de @Steven et ca ne marche pas... voilà le code klf:request(url , { success = function(response) print ("Je suis dans response") fibaro:debug(json.encode(response)) local temp = json.encode(response) fibaro:debug(temp) local key = "token" print(temp:match("\""..key.."\":.(%w+).")) end, et voilà le debug -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
Salut @pepite je viens d'essayer ta solution, ca ne marche pas. En fait je reste persuadé que c'est le retour à la ligne qui pose problème. Si je regarde l'exemple en shell ci-dessus, il utilise bien le "tail -n +2" pour prendre la deuxième ligne (donc après le \n) Il n'y a pas une fonction quelque part qui pourrait me transformer tout ca en string .... ensuite je me débrouille pour manipuler la string... -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@pepite effectivement si je rajoute le fibaro:debug(json.encode(response)) voila ce que j'obtiens et on retrouve bien la suite de caractères juste après "data".... reste plus qu'à trouver comment passer outre... je suppose que c'est à ca que servent les deux commandes tail -n +2 et jq -r dans l'exemple du shell, puisque tail - n +2 va prendre ce qui suit la deuxième ligne, donc ce qui suit le "\n" mais bon, c'est quoi l'équivalent en lua ?? -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@pepite @Lazer ca progresse , mais j'ai encore un tout petit peu besoin de vous.... je suis parvenu à voir le token, et donc à faire un login puis un logout avec le code suivant : local ip = "192.168.1.33" local url = 'http://'.. ip .. '/api/v1/auth' local datas = '{"action":"login","params":{"password":"velux123"}}' local klf = net.HTTPClient() klf:request(url , { success = function(response) print ("Je suis dans response") fibaro:debug(response.data) local jsonTable = json.decode(response.data) fibaro:debug(jsonTable.token) end, error = function(err) print ("Je suis dans err") print('error = ' .. err) end, options = { method = 'POST', headers = { ["content-type"] = 'application/json, charset=utf-8' }, data = datas } }) le seul problème qu'il me reste est le suivant... le fibaro:debug(response.data) affiche ceci : je peux donc visualiser le token et le noter, mais ce que je ne comprend pas c'est la deuxième ligne qui affiche le )]}', et aussi pourquoi le fibaro:debug(jsonTable.token) ne fonctionne pas ??? une fois ce problème résolu, c'est bon, je peux mettre le code au propre et créer une scène complète avec un login, un run et un logout -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
Bon, je viens de faire un test tout simple avec juste le login.... le print (response) affiche : table: 0x8d2aa10 le bon point c'est que je ne suis pas en erreur mais alors maintenant, qu'est-ce que je fais avec cette 'response' pour trouver mon token ? (qui doit ressembler à un truc comme bBbpXgBfTlw9LQwytyH5Cw== ) donc je suppose que je dois faire l'équivalent de tail -n +2 | jq -r sur response ? comment on fait ca en lua ????????? -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@pepite alors, un programme, c'est le nom utilisé par Velux. Sur le KLF-200, tu peux, via l'interface web, créer toutes une série de 'programmes'. Un programme simple peut-être "Ouverture du Velux de gauche à 50 %". Tu te mets en mode enregistrement, tu actionnes ton Velux pour l'ouvrir à 50% et tu stoppes ton enregistrement.... ton programme est créé. L'avantage, c'est que tu peux faire autant de choses que tu veux sur différents produits, tant que tu enregistres, c'est bon. Par exemple, j'ai créé pour test un programme qui positionne les stores à 40%, ouvre 2 Velux de la première pièce à 20 %, 3 autres à 50 % et ceux d'une autre pièce à 100 %. C'est ce "programme" que tu peux appeler via l'API, soit en l'appelant par son nom, soit par son numéro. Bon, je vais faire quelques tests ce soir, si je bousille l'interface je serai bon pour faire un reset et tout recommencer. Je maîtrise la fonction net.HTTPClient, je veux juste être certain que la partie de code que je vais écrire après le "success = fonction (response)" est bien du code qui sera exécuté APRES la fin du call. De cette manière, je récupère le token (qui comme tu dis doit être 'response'), je fais un appel pour le 'run', et ensuite pour le logout. Le côté chiant de cet API, c'est que si je fais un call pour le login et que ensuite je fais une connerie, le boitier est bloqué parce qu'une connexion existe et n'est pas terminée. (Ils ne gèrent pas les connexions multiples, faut pas trop leur en demander... ) -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@pepite et @Lazer comme je disais, l'API n'est pas documenté, et il semble que bien entendu ce soit volontaire de la part de Velux. J'ai discuté avec un installateur/distributeur, et il était à peine au courant de l'existence de ce boitier. Sur la page du site Velux, il apparait bien dans la partie professionnelle, mais avec très peu de d'explication. Après, comme le gars m'a dit, c'est pas leur boulot de faire de la domestique et de l'intégration, ils n'y comprennent rien, et donc l'installation via la voie câblée est déjà un maximum pour eux... alors faut pas leur parler d'attaquer un API non documenté Concernant le bout de code ci-dessus, merci beaucoup Petite, mais je me pose plusieurs questions. 1. Si j'ai bien compris, le net. HTTPClient fonctionne en mode asynchrone, donc je ne peux surtout pas enchainer les trois bout de code à la suite l'un de l'autre. 2. Toujours si j'ai bien compris, il faudrait donc que je code pour le "Run" soit dans la fonction du net.HTTPClient de login, et le code du logout dans la fonction du net.HTTPClient du run ??? J'ai loupé quelque chose ? 3. En fait l'access token est le retour de l'appel au login, donc je suppose que c'est le 'response' du net.HTTPClient pour le login , que je peux utiliser et coller derrière le Bearer ???? J'ai tout faux ??? ou un petit peu de vrai ??? (pffffff, ca me rappelle ma jeunesse quand je passais des nuits à pondre du code... je viens de me prendre un coup de vieux là ) -
Velux ... intégration avec HC2, un peu de teasing :-)
Cardane a répondu à un(e) sujet de Cardane dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
@pepite à ton avis, pour la fonction de login, sur base de l'exemple que j'avais mis ci-dessus, est-ce que ce qui suit te parait correct ? je préfère être certain avant de tester, cette interface m'a l'air assez capricieuse :-) --[[ %% properties %% events %% globals --]] local url = 'http://192.168.xxx.yyy/api/v1/auth HTTP/1.1' local datas = '{"action":"login","params":{"password":"PASSWORD"}}' local httpClient = net.HTTPClient() httpClient:request(url , { success = function(response) print (response) end, error = function(err) print('error = ' .. err) end, options = { method = 'POST', headers = { ["content-type"] = 'application/json', ["connection"] = 'close' }, data = datas } });
