Aller au contenu

Cardane

Membres confirmés
  • Compteur de contenus

    1 063
  • Inscription

  • Dernière visite

  • Jours gagnés

    13

Tout ce qui a été posté par Cardane

  1. @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
  2. @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 ?
  3. @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...
  4. ben non, même avec la deuxième proposition de steven la retour est toujours "nil"
  5. @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...
  6. @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
  7. 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...
  8. @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 ??
  9. @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
  10. 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 ?????????
  11. @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... )
  12. @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à )
  13. @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 } });
  14. @pepite oui, j'ai un user/password, et le token, je crois que c'est le retour de l'appel au login je n'ai rien branché en définitif, j'ai juste fait quelques tests, les câbles sur la photo ils sont fournis avec le boitier, directement sur des connecteurs qu'il suffit d'enficher. oui, je pensais aussi au Net.HTTPClient dans une scène, j'étais justement en train de regarder un exemple avec un POST trouvé sur le forum @Nico bah, il n'est pas si grand que ca, il doit faire 12 cm * 12 cm. Avec le navigateur tu peux te connecter sur le boitier, créer des programmes, activer ces mêmes programmes, modifier les paramètres, le réseau, etc, et paramétrer les actions relatives aux entrées / sorties
  15. Et voilà, j'ai enfin reçu le klf-200...je vous fais donc comme promis un petit retour. Lorsque mon intégration sera finie, je ferai un tuto un peu plus joli et structuré que celui-ci premier constat, Velux n'est pas concerné par le réchauffement de la planète... il y a exactement 27 petits manuels livrés avec... il y a même des langues que je ne connais pas plus un autre petit manuel (4 pages) pour se connecter via pc. le câblage pour l'ensemble des entrées/sorties est fourni (fils rouges et noirs pour les entrées, bleu et blanc pour les sorties Lorsqu'on démarre le KLF-200, il crée un point d'accès wifi sur lequel il suffit de se connecter pour ensuite pouvoir modifier tous les paramètres, comme par exemple lui assigner une adresse IP fixe, ce qui permet de se connecter sur le réseau avec un simple browser. La première étape est d'importer les produits Velux que l'on veut manipuler. Pour ce faire il faut faire une copie des produits déjà installés sur une autre télécommande (KLR200 dans mon cas) Une fois les produits connus par le KLF200, on peut soit créer ce qu'ils appellent des programmes, c'est à dire des actions sur les produits. Par exemple "Ouvrir toutes les fenêtres", ou "Fermer toutes les fenêtres". La création de ces programmes se fait aussi ç l'aide de la télécommande... le KLF200 se met en mode enregistrement et enregistre les différentes actions générées par la télécommande. On peut aussi modifier le comportement standard des actions pour chaque contact sec en entrée. En standard, un contact ouvre, un autre ferme, un contact de plus de 1.5 seconde ouvre partiellement jusqu'à ouverture du contact. On peut associer un programme à une entrée par exemple. J'ai aussi configuré pour test une sortie (en mode contact sec si résultat = ok). Le tout fonctionne bien, je dois encore voir maintenant pour configurer plus de produits (stores et volets), pour l'instant je n'ai configurer que les moteurs. il me reste à créer une scène pour tester l'api mais là j'ai besoin de l'équipe en gros il faudrait créer 1 scène avec le login, l'action,et le logout. j'ai trouvé cet exemple sur le net, mais je ne me sens pas trop capable de le transcrire en LUA... (surtout qu'à la moindre erreur tout se bloque, je viens de bloquer ma commande klr200 et je n'arrive pas à la redémarrer ) Authenticate Run a program Identify a product il y a aussi celui-ci... !/bin/sh programm=$1 token=$(curl -H "Accept: application/json" -H "Content-Type: application/json;charset=utf-8" -d '{"action":"login","params":{"password":"velux123"}}' -s hXXp://192.168.x.x/api/v1/auth | tail -n +2 | jq -r '.token') curl -H "Content-Type: application/json;charset=utf-8" -H "Authorization: Bearer $token" -d "{\"action\":\"run\",\"params\":{ \"id\":$programm}}" -s hXXp://192.168.x.x/api/v1/scenes curl -H "Content-Type: application/json;charset=utf-8" -H "Authorization: Bearer $token" -d '{"action":"logout","params":{}}' -s hXXp://192.168.x.x/api/v1/auth Bon, maintenant je vais essayer de réparer ma télécommande
  16. Hello @Laurentissimo Il est normal d'avoir plusieurs entrées, plusieurs ID pour un même device physique. Il y a toujours le master et ensuite les enfants (un relais double aura un ID par relais). Je ne connais pas le dimmer d'Aeotec, mais je suppose que tu dois avoir le master et un enfant (le master est normalement caché dans la liste des devices) Pour ton problème de mémoire, est-ce que tu as beaucoup de devices ? beaucoup de VD et de scènes ? Si non, tu pourrais commencer par faire un test tout simple, tu désactives tous le VD et scènes et tu laisses tourner ta box pendant une journée. Si la mémoire reste stable, tu sais déjà que le problème vient de l'un d'entre eux. Ensuite tu les réactives l'un après l'autre. C'est un peu basique comme méthode, mais tu dois aussi pouvoir limiter tes recherches en fonction de ce que font tes VD et scènes. Les scènes de base qui ne font rien de compliqué ne devraient pas jouer sur la mémoire.
  17. j'utilise la géolocalisation sur trois appareils depuis plus d'un an sans aucun problème, donc tes problèmes doivent venir d'ailleurs... les problèmes de mémoire sont aussi résolus depuis pas mal de temps avec les nouvelles versions. Quand tu dis que la mémoire diminue c'est quoi ?c'est le free space ou free space + cache ? de toute manière, même avec 80% de mémoire utilisée, elle devrait tourner sans problème, je penche donc plus pour une erreur dans un des tes VD...(ou scène)
  18. @yoim euh, merci mais je n'y suis pour rien moi, c'est une idée de @Lazer
  19. HC2 : 020800 : 08/2014 ou 10/2014, je ne me rappelle plus exactement, faudra que je retrouve la facture...
  20. j'espère que dans son bouquin il donne de meilleurs conseils, parce que pour 84 euros, si c'est pour dire ce genre de trucs ca fait cher
  21. @Nico , wouahhh, des Windows 200 ??? j'étais pas encore né blague à part, je suis d'accord avec toi, OVH ca devient limite, et leur SAV est quand même un gros n'importe quoi aussi... j'avais un site pour un événement (quelques pages, un formulaire d'inscription, etc)... 5 jours avant le début, le site est down... contact du support OVH... ahhh, désolé, c'est un problème DB. J'ai eu beau expliquer au gars que je me foutais pas mal de savoir si c'était leur DB ou quoi que ce soit d'autre, que si je faisais appel à un hébergeur, c'est justement pour ne pas devoir m'occuper de ces problèmes, mais il n'en avait rien à secouer... conclusion, trois heures après j'avais tout migré chez Infomaniak, moins cher et jamais eu de problème...
  22. euh, et c'est quoi les solutions domotiques qui tournent sous Windows ????
  23. je suis tout à fait d'accord avec toi, je n'ai pas trop compris son article... je suis comme toi, ici tout ce qui est géré par la domotique peut aussi l'être en mode manuel, et je ne vois pas très bien en quoi le reset de mon mot de passe tous les mois changera quoi que ce soit en cas de panne de la domotique... je ne connais pas l'auteur de l'article, mais vu sa fonction je m'attendais aussi à autre chose....
  24. Bon, ben désolé, en fait j'avais complètement zappé le fait que ce samedi était un jour férié..... et donc quand je me suis pointé chez mon distributeur, j'ai même râlé parce que c'était fermé Je n'ai donc pas récupéré le KLF-200, ce sera pour mardi ou mercredi, suivant le temps que mon boulot me laissera. donc encore un peu de patience, vous aurez un feedback bientôt
  25. @Massalia, je te l'ai envoyée en MP, c'est un lien vers le dev du gars
×
×
  • Créer...