Aller au contenu

chrisalex

Membres confirmés
  • Compteur de contenus

    63
  • Inscription

  • Dernière visite

  • Jours gagnés

    5

Tout ce qui a été posté par chrisalex

  1. Hello @henri-allauch merci de ton intervention malgré ton manque de temps, cependant pour info si je passe sur php 7.4 le souci de warning est le même...enfin presque juste une différence entre "undefinied index action" et "undefined array key "actions"" : voir pj
  2. @jojo tout a fait en phase avec toi il fait le job mais il y a un souci avec le code php de définition des tableaux (array). J'ai deux box à la maison et sur une je n'ai pas ces erreurs et sur l'autre j'ai exactement les même que toi (mais comme tu le dis ca fait le job malgré tout) Selon moi cela vient des scenes en mode block (peut être des espaces ou avec nom trop long ... je n'ai pas encore identifié quoi exactement) en tout cas il n'arrive pas à interpreter les paramètres de ces scenes pour les mettre en tableau, mais ce n'est pas gênant car de tout façon il ne peut backuper ces scenes car elle ne sont pas en lua.
  3. désolé @jojo je suis vraiment pas bon en php j'ai trouvé la soluce sur un fofo. mais je regarderai et si je trouve je posterai...promis
  4. Hello, pour ceux que ça interesse de lancer ce script php en auto à intervalles réguliers, je me suis permis de modifier légèrement le php original. Ensuite suffira d'appeler ce script par exemple via un quickApp dont je vous donne ici une version fonctionnelle (utilisable tel quel en créant un bouton et un label) : function QuickApp:onInit() self:debug("onInit") self.http = net.HTTPClient() end --- BACKUP PAR SYNO ----------------------------------------------------------------------------------------------- function QuickApp:backup() self.http:request("http://192.168.XXX.XXX/SaveHc3-Auto.php", { 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 MY_Password", -- mot de passe en base 64 } }, success = function(response) self:debug(response.status) self:debug(response.data) ------------------------ self:updateView('label_Bck', 'text', 'Dernière sauvegarde : ' .. (os.date("%d/%m/%Y %H:%M:%S", backupsremotetimestamp))) -- maj du label ------------------------ end, error = function(message) self:debug("error:", message) end }) end SaveHc3-Auto.php
  5. @Dragoniacs j'ai rajouté ça dans ton code et ca me remonte bien la fenêtre que je peux commander (mais bien sûr vu comme un volet) : if Item_Class == "window" then self.List_Rollershutters[j] = HassIO_Table[i].attributes.friendly_name self.ID_Rollershutters[j] = HassIO_Table[i].entity_id j = j + 1 end Qu'en penses-tu? Merci PS : Afin d'avoir des sliders sur les childs de ton QA plutôt que les boutons "ouvrir à 100%" et "fermer à 100%" j'ai changé le role des childs en "volet/store avec retour d'information" et cela semble fonctionner, es tu en phase également avec ça?
  6. 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.
  7. 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+
  8. 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)
  9. 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)
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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.
  16. 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.
  17. 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
  18. 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
  19. effectivement cette MAJ n'est plus dispo ... aurait elle été retirée pour cause de soucis trop nombreux?
  20. 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)
  21. chrisalex

    requette curl en fonction lua

    thank you so much @jang you're all right, works perfectly as expected. all the best
  22. 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
  23. 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" }
  24. 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.
  25. chrisalex

    aide sur requêtes api

    Merci beaucoup @jojo, effectivement tu as tout bon ce qui me manquais était bien le json.decode
×
×
  • Créer...