Aller au contenu

chrisalex

Membres confirmés
  • Compteur de contenus

    58
  • Inscription

  • Dernière visite

  • Jours gagnés

    5

Tout ce qui a été posté par chrisalex

  1. Hello @Dragoniacs, Il ne manquerait pas la gestion de la fenêtre dans ton super quickapp? En effet en ce qui concerne le volet pas de souci ca fonctionne bien il est bien découvert et fonctionnel dans la hc3 via HA, mais il ne remonte pas la gestion d'ouverture de la fenêtre et en essayant de décrypter ton code il me semble qu'il n'y a pas cette partie. Peut être ne possèdes tu pas de moteur sur tes vélux et que cela expliquerait pourquoi tu ne l'as pas implémenté. Si oui saurais tu me guider pour le rajouter? Je te remercie par avance de ton retour.
  2. bonjour, je me répond à moi même et du coup passe l'info pour d'autres. J'ai contacté le support Fibaro pour cela qui m'a donné la solution en 2 heures chrono (chapeau à eux). Il suffit de changer le parametre numéro 5 en valeur 2 et tout refonctionne normalement. A+
  3. bonjour, la gestion du capteur d'UV solaire a été rajouté pour le multisensor 6 (qui est en version de firmware 1.15) en revanche depuis le motion sensor ne détecte plus aucun mouvement (j'ai pourtant fait la reconfiguration douce comme indiqué dans la release note)
  4. many thanks @Bloug and @jang you're right. I really have to study this sub fonction (very useful). Because of you no more blocking point and I expect to publish my first quickapp on the forum very soon (you will be congratulate for your support of course)
  5. chrisalex

    catch from json variable

    Hello @Bloug , merci beaucoup c'est parfait, le secret était dans les [] car moi je mettais des () et effectivement ca change tout. Encore merci pour ton support et entraide. Je dois bien avouer que ce forum est une mine d'or et on y croise vraiment des experts dévoués. Je l'utilise depuis des années pour toutes les informations utiles que l'on peut y trouver et il est vrai que même, si je poste rarement, sans lui j'aurai sans doute abandonné Fibaro (surtout depuis la HC3 qui est quand même plus puissante mais aussi par conséquence plus complexe que la HC2). Cependant je m'accroche et grâce à vous tous, je progresse et persiste. PS : mine de rien dans ta réponse précédente j'ai vu que tu as utilisé un json viewer qui m'aurait bien été utile et je viens de le trouver "Online JSON Viewer (stack.hu)". Je garde ce lien précieusement pour l'avenir
  6. bonjour, j'ai réussi à variabiliser un json : Api : {"tempo_like_calendars":{"start_date":"2023-02-11T00:00:00+01:00","end_date":"2023-02-12T00:00:00+01:00","values":[{"start_date":"2023-02-11T00:00:00+01:00","end_date":"2023-02-12T00:00:00+01:00","value":"WHITE","updated_date":"2023-02-10T10:20:00+01:00"}]}} Comment récupérer WHITE de ce json afin de pouvoir le mettre en variable? Par avance merci de votre astuce
  7. bonjour, afin de proposer prochainement mon premier quickApp à la communauté, il me reste un élément à résoudre. En effet j'ai bien trouvé ce qu'il me faut avec cette ligne de code : print("today : ", os.date("%Y-%m-%dT%H:%M:%S%z")) print("demain : ", os.date('%Y-%m-%dT%H:%M:%S%z', (os.time() + 60*60*24))) ceci me retourne : today : 2023-02-12T00:05:29+0100 demain : 2023-02-13T00:05:29+0100 Le souci c'est que pour finir mon quickApp il faut que je trouve comment avoir un retour exactement comme cela : today : 2023-02-12T00:05:29+01:00 demain : 2023-02-13T00:05:29+01:00 Quelle solution adopter selon vous? par avance merci
  8. chrisalex

    CURL Token en LUA

    Thanks to @Bloug and @jang very interesting subjet for me The solution is : local My_Json = response.data print("My_Json :", My_Json) access_token = json.decode(My_Json).access_token print("access_token :", access_token) The result : Effectively the json was already encoded and to encode again was the issue
  9. chrisalex

    CURL Token en LUA

    Hello @Bloug, désolé je me suis un peu emballé en effet ton code fonctionne bien mais uniquement si je lui passe la variable comme tu l'as fait mais en la renseignant manuellement. Etrange. Le souci perdure si je fais appelle à la variable. Je m'explique : Ton code qui marche local My_Json = "{\n \"access_token\" : \"fH8v3F4cgw3zsoC7QEP8tDXNYyYrfKJbVcT1j16eGQvnbUEjHdeXbH\",\n \"token_type\" : \"Bearer\",\n \"expires_in\" : 7200\n}" print("My_Json :", My_Json) My_Json = My_Json:gsub('%s+', '') print("My_Json 2 :", My_Json) access_token = json.decode(My_Json).access_token token_type = json.decode(My_Json).token_type expires_in = json.decode(My_Json).expires_in print("access_token :", access_token) print("token_type :", token_type) print("expire in :", expires_in) cela renvoie très bien comme attendu : En revanche si je set la variable en provenance du résultat du pcall (la première ligne du code ci-dessous) alors cela ne fonctionne plus (très étonnant) : local My_Json = json.encode(response.data) print("My_Json :", My_Json) My_Json = My_Json:gsub('%s+', '') print("My_Json 2 :", My_Json) access_token = json.decode(My_Json).access_token token_type = json.decode(My_Json).token_type expires_in = json.decode(My_Json).expires_in print("access_token :", access_token) print("token_type :", token_type) print("expire in :", expires_in) Pourtant ce code que tu m'as fourni et le mien semble identique, non? mais le comportement est différent : local My_Json = "{\n \"access_token\" : \"fH8v3F4cgw3zsoC7QEP8tDXNYyYrfKJbVcT1j16eGQvnbUEjHdeXbH\",\n \"token_type\" : \"Bearer\",\n \"expires_in\" : 7200\n}" et My_Json : "{\n \"access_token\" : \"3amy13oLFVuhaxZdUQJICVFD5DLUOqZ6X85IjJQK4qt6fmfcai53Du\",\n \"token_type\" : \"Bearer\",\n \"expires_in\" : 7200\n}" Le souci ne viendrait il pas du fait que j'encode par json encode? merci par avance de ton avis
  10. chrisalex

    CURL Token en LUA

    merci @Bloug c'est nickel désormais ça fonctionne à merveille (va falloir que j'essaye de comprendre la syntaxe de ce "gsub" pour être autonome la prochaine fois car c'est vraiment top de pouvoir modifier les strings) Tu m'as bien rendu service encore merci.
  11. chrisalex

    CURL Token en LUA

    bonjour @Bloug merci beaucoup d'avoir bien voulu m'aider. je ne connaissais pas gsub. En effet ton code marche parfaitement mais uniquement avec la syntaxe de la variable que tu m'as donné à savoir : '"{\n \"access_token\" : \"fH8v3F4cgw3zsoC7QEP8tDXNYyYrfKJbVcT1j16eGQvnbUEjHdeXbH\",\n \"token_type\" : \"Bearer\",\n \"expires_in\" : 7200\n}"' le souci c'est que la requête pcall me retourne cette variable : "{\n \"access_token\" : \"fH8v3F4cgw3zsoC7QEP8tDXNYyYrfKJbVcT1j16eGQvnbUEjHdeXbH\",\n \"token_type\" : \"Bearer\",\n \"expires_in\" : 7200\n}" Donc sans les ' du début et de la fin, du coup ça ne fonctionne pas ce qui est bien normal. Malheureusement j'ai essayé de trouver comment jouer avec gsub pour corriger par moi même vu que tu m'avais bien mis sur la piste mais sans succès (j'essaye d'apprendre cette fonction gsub mais ce n'est pas évident) Je te remercie par avance de ton aide.
  12. chrisalex

    CURL Token en LUA

    bonjour, j'ai trouvé la solution en m'inspirant du quick app netatmo de @Lazer et @gsmart c'est à dire utiliser la fonction Pcall cela permet bien de remonter le token dans le json. En revanche je sèche encore un peu pour le recuperer afin de le defnir en variable : "{\n \"access_token\" : \"fH8v3F4cgw3zsoC7QEP8tDXNYyYrfKJbVcT1j16eGQvnbUEjHdeXbH\",\n \"token_type\" : \"Bearer\",\n \"expires_in\" : 7200\n}" Merci par avance do votre aide
  13. chrisalex

    CURL Token en LUA

    bonjour, je cherche à recupérer un token sur le site de rte France mais je bloque car je pense qu'il doit manquer quelque chose dans mon code. Voici la requette en Curl qui fonctionne : curl -H "Authorization: Basic mescredentialsenbase64" -H "Content-Type: application/x-www-form-urlencoded" -X POST https://digital.iservices.rte-france.com/token/oauth/ cela me remonte bien le token voulu : { "access_token" : "MONTOKENATTENDU", "token_type" : "Bearer", "expires_in" : 7200 } J' ai donc essayer de faire un quick app mais malheureusement ca ne fonctionne pas bien (j'ai bien mis en variable apicred mes credentials en base 64) : function QuickApp:onInit() self:debug("onInit") self.apicred = self:getVariable("apicred") self.http = net.HTTPClient({ timeout = 2000 }) end function QuickApp:EDFtempoRTEToken() self:debug("colect color tempo RTE Token") print("credential : ", self.apicred) local addressoauth = "https://digital.iservices.rte-france.com/token/oauth/" self.http:request(addressoauth, { options={ method = "POST", headers = { ["Content-Type"] = "application/x-www-form-urlencoded", ["Authorization"] = 'Basic ' ..self.apicred, } }, success = function(response) print("retour :", json.encode(response)) if response.status == 200 then print('OK, réponse : '.. response.data) --fibaro.setGlobalVariable('TEMPO_EDF_RTE_Token', response.data) print(fibaro.getGlobalVariable("TEMPO_EDF_RTE_TOKEN")) else print("Erreur : status=" .. tostring(response.status)) end end, error = function(err) print("Erreur : " .. err) end, options = { method = 'GET' } }) je vous joint le retour 400 que je récupère : {"headers":{"Date":"Sun, 05 Feb 2023 13:45:25 GMT","Connection":"close","Content-Type":"application\/json; charset=\"utf-8\"","Server":"","User-Agent":"avhttp\/2.9.9","X-CorrelationID":"Id-f5b2df63535ade84741a89c5 0","Transfer-Encoding":"chunked","Accept":"text\/html, application\/xhtml+xml, *\/*","Host":"digital.iservices.rte-france.com","Authorization":"Basic"},"status":400,"data":"{\r\n \"erro"} Je vous remercie par avance de vos avis pour parvenie à recupérer ce token car je pense que le souci est sur la syntaxe ... il doit maquer quelquechose
  14. effectivement cette MAJ n'est plus dispo ... aurait elle été retirée pour cause de soucis trop nombreux?
  15. Hello, il semble qu'il y a eu du changement chez fibaro pour les alert push. En tout cas pour continuer à être alerté avec ce super QA j'ai du changer la variable ID_Push par le numéro du user plutôt que celui de l'appareil. Ou alors il faut changer la ligne de commande : passer de "push" à "simplePush". Je m'explique : si on veut du push sans changer l'id de la variable du QA (qui correspond à l'ID du téléphone) il faut changer cette ligne de code : fibaro.alert("simplePush",{tonumber(self.pushID)}, msg) et si on veut du push sur le user alors il faut changer l'id de la variable du QA (qui correspond à l'id du user) et dans ce cas on peut laisser la ligne de code inchangée : fibaro.alert("push",{tonumber(self.pushID)}, msg)
  16. chrisalex

    requette curl en fonction lua

    thank you so much @jang you're all right, works perfectly as expected. all the best
  17. bonjour, j'aurai besoin d'un petit coup de main pour transcrire une commande curl en fonction lua, en effet je bloque sur la partie "media" (en orange ci-dessous dans la commande curl) voici la commande curl qui fonctionne bien : curl -X POST -H "Content-Type: application/json" --data '{"duration":30,"position":2,"title":"TEST PIPUP","titleColor":"#0066cc","titleSize":20,"message":"Message de Test pipup","messageColor":"#000000","messageSize":14,"backgroundColor":"#ffffff","media":{"image":{"uri":"https://mir-s3-cdn-cf.behance.net/project_modules/max_1200/cfcc3137009463.5731d08bd66a1.png","width":480}}}' http://192.168.0.22:7979/notify voici la fonction lua qui est bien fonctionnelle mais sur laquelle je galère pour y glisser la partie "media" function QuickApp:pipup() self:debug("envoi du pipup") local data = { duration = "30", position = "2", -- 0 à 4 title = "Test PIPUP", titleColor = "#0066cc", titleSize = "20", message = "Message de Test Pipup", messageColor = "#000000", messageSize = "14", backgroundColor = "#ffffff" } local pipup = net.HTTPClient():request("http://192.168.0.22:7979/notify",{ options = { method = "POST", headers = { ["Content-Type"] = "application/json" }, data = (json.encode(data)) }, success = function(response) self:debug(json.encode(response)) self:debug(json.encode(data)) end, error = function(err) self:error(err) end }) end par avance merci de votre aide
  18. chrisalex

    scene trigger sur anyvalue

    Bonjour @morpheus75 merci beaucoup pour ton code il est nickel exactement ce que je cherchais. Je trouve ton code quand même bien plus propre que celui que je m'étais résolu à mettre (je vais donc changer par le tien) : { conditions = { { id = 117, isTrigger = true, operator = "==", property = "value", type = "device", value = false }, { id = 117, isTrigger = true, operator = "==", property = "value", type = "device", value = true } }, operator = "any" }
  19. bonjour, je cherche à trigger une scene sur n'importe qu'elle valeur sur un door/windows sensor FGDW-002. En fait que la scene se déclenche que la valeur passe de true à false ou de false à true. Sur la HC2 il suffisait de faire ça : --[[ %% properties 117 value %% events %% globals %% autostart --]] mais sur HC3 je galère. Ca déclenche bien si je mets "value = true" ou bien "value = false" mais cela ne déclenche uniquement quand la valeur passe à "true" quand "true" est renseigné et inversement pour false. Comment faire pour déclencher si la valeur de l'état change (en "true" et en "false")? voici le code que j'ai tenté mais en vain. { conditions = { { id = 117, isTrigger = true, operator = "!=", property = "value", type = "device", value = "" } }, operator = "any" } Merci par avance de vos idées.
  20. chrisalex

    aide sur requêtes api

    Merci beaucoup @jojo, effectivement tu as tout bon ce qui me manquais était bien le json.decode
  21. chrisalex

    aide sur requêtes api

    bonjour, Si quelqu'un pouvait m'aiguiller sur de la requête api car je sèche un peu malgré mes lectures sur le forum. Je cherche à récupérer des info sur les backup de la HC3. je fais tourner cette fonction qui les remonte bien mais je ne vois pas comment récupérer uniquement celles qui m'interesse (exemple date du dernier backup en remote ou en local). Voici le code : function QuickApp:test() self.http:request("http://127.0.0.1/api/service/backups", { options = { data = json.encode(requestBody), method = "GET", headers = { ["Content-Type"] = "application/json", ["Accept"] = "application/json", -- Header with basic auth containing admin:admin. Replace it with your crendentials. ["Authorization"] = "Basic XXXXXXXXXXXXXXXX", -- mot de passe en base 64 } }, success = function(response) self:debug(response.status) self:debug(response.data) end, error = function(message) self:debug("error:", message) end }) end J'obtiens bien en retour le résultat suivant mais comment l'exploiter ? [{"type":"local","localBackupPath":"\/backups\/","uploadedBackup":[{"id":"1652551813","timestamp":1652551813,"compatible":true,"automatic":false,"devices":3,"rooms":19,"scenes":7,"description":"Mon_Backup","softVersion":"5.110.15","filename":"backup_HC3-00020112_2022_05_14-20_10_13.fbi","size":"725.5K","slavesBackups":[],"zwaveEngineVersion":"2.0"},{"id":"1657358062","timestamp":1657358062,"compatible":true,"automatic":false,"devices":4,"rooms":19,"scenes":10,"description":"Mon_Backup","softVersion":"5.111.48","filename":"backup_HC3-00020112_2022_07_09-11_14_23.fbi","size":"901.3K","slavesBackups":[],"zwaveEngineVersion":"2.0"}],"automaticCount":0,"automaticLimit":3,"manualCount":2,"manualLimit":3},{"totalSpace":"50.0M","usedSpace":"2.0M","usedSpacePercentage":"4%","type":"remote","backups":[{"id":"2057741","timestamp":1651168384,"compatible":true,"automatic":false,"devices":2,"rooms":19,"scenes":3,"description":"autobackup","softVersion":"5.110.15","zwaveEngineVersion":"2.0","filename":"backup_2022_04_28-19_53_04.7z","size":"489.3K"},{"id":"2121584","timestamp":1654450039,"compatible":true,"automatic":true,"devices":4,"rooms":19,"scenes":7,"description":"Auto backup 5.110.15","softVersion":"5.110.15","zwaveEngineVersion":"2.0","filename":"backup_2022_06_05-19_27_19.7z","size":"582.3K"},{"id":"2153547","timestamp":1657358824,"compatible":true,"automatic":false,"devices":4,"rooms":19,"scenes":10,"description":"Mon_Backup","softVersion":"5.111.48","zwaveEngineVersion":"2.0","filename":"backup_2022_07_09-11_27_04.7z","size":"932.6K"}]}] Par avance merci aux champions qui passeraient par là.
  22. effectivement c'est parfait, merci bien, je ne connaissais pas cette subtilité.
  23. merci @Dragoniacs pour ta réactivité, effectivement j'ai bien trouvé ton fichier tools. Du coup je comprends mieux. Cependant il y a une chose qui me chagrine c'est que ne vois pas les messages en question dans la fenetre de debug (si je remplace le code "tools:Message" par "print" ça fonctionne bien le code est bavard comme attendu). Qu'en penses-tu?
  24. bonjour @Dragoniacs, merci pour ce QA. Cependant j'ai une petite question en rapport avec ton code, en effet j'essaye de comprendre pour progresser en m'inspirant de vos réalisations, et je ne comprends pas les lignes "tools:Message" Cela fait il appel à un fichier non inclu dans le QA et si non comment obtenir ces messages intéressants? par avance merci de tes lumières
  25. bonjour, Merci @jojo c'est exactement ça . Cela m'a pris deux jours pour le valider car je voulais être sûr que ca tourne bien tous les jours et c'est bien le cas c'est nickel chrome. En effet j'avais des doutes à cause de la date qui était à renseigner et aussi sur le fait que lorsque l'on sauvegarde la scene l'intervalle renseigné s'efface. En fait il faut comprendre cette date comme "à partir de" et non pas "cette date seulement" ce que je pensais que cela voulait signifier. Et le fait que l'intervalle s'efface ne veut pas dire qu'il n'a pas été pris en compte. Merci encore pour ton message. PS : j'avais ouvert un ticket chez Fibaro pour voir ce qu'ils en pensaient, et ca fait deux jours qu'ils me baladent un peu en me réclamant la scene block convertie en LUA + le cas d'usage + ca marche plus depuis quand ...... je vais laisser aller au bout pour voir ... mais bon avec @jojo c'est bien plus efficace en réalité
×
×
  • Créer...