Aller au contenu

971jmd

Membres confirmés
  • Compteur de contenus

    3 525
  • Inscription

  • Dernière visite

  • Jours gagnés

    10

Tout ce qui a été posté par 971jmd

  1. salut jojo aiii le probleme est que rallonge mon exécution changement d'état du module ----> scène ---> bouton ----> exécution du script alors un autre question Mon module virtuel exécute une requête HTTP grâce à Net.FHttp...... est il possible de faire la meme chose directement dans une scène ?
  2. salut quel que soi la combinaison c'est toujours la même chose, sauf quand je mes : Unprotected=1 EBUG] 05:53:17: Status2 error: 2
  3. salut [DEBUG] 23:45:37: {"args":[0,0]} [DEBUG] 23:45:37: Sended 14 content bytes with result [0].
  4. salut tous j'ai une question est-il possible dans un module virtuel de faire en sorte, qu'il presse le bouton a chaque foie que mon module(un walplug) change d'état. --[[ %% properties 664 value 664 power %% globals google1 --]] local trigger = fibaro:getSourceTrigger() fibaro:call(87, "pressButton", "1")
  5. et non, le volet fonctionne toujours
  6. -------------------- --- mHome --------------- --Phamj An Nhan ------------- ------------------------------------------------------ USER = "Kythuat@kimsontien.com" --User HC2 PASSWORD = "xxxxxxx" --Password HC2 --------------------------------------------- id_device=226 --@############################### --######################## Unprotected=0 No_remoteControl=1 No_operation_possible=2 --################################# --################################# function encode(data) local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; return ((data:gsub('.', function(x) local r,b='',x:byte() for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end return r; end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x) if (#x < 6) then return '' end local c=0 for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end return b:sub(c+1,c+1) end)..({ '', '==', '=' })[#data%3+1]) end function change(login, pass, id,status1,status2) if tonumber(status1)~=0 and tonumber(status1)~=2 then fibaro:debug("Status1 error: ".. status1) return 100 elseif tonumber(status2)~=0 and tonumber(status2)~=1 then fibaro:debug("Status2 error: ".. status2) return 100 else tcp = Net.FTcpSocket("localhost", 80); if (not tcp) then fibaro:debug("TCP CONNECTING WITH HC2 ERROR!"); return nil; end boundary = "WebKitFormBoundaryZaeBOOn6SiGG9oyo"; enter = "\r\n"; content = "{\"args\":[".. status1 .."," .. status2 .."]}" fibaro:debug(content) tcp:write("POST /api/devices/" .. id .. "/action/setProtection HTTP/1.1" .. enter); tcp:write("Host: localhost" .. enter); tcp:write("Content-Length: " .. string.len(content) .. enter); tcp:write("Authorization: Basic " .. encode(USER..":"..PASSWORD) .. enter); tcp:write("Content-Type: application/x-www-form-urlencoded; charset=UTF-8" .. boundary .. enter .. enter); s = 0; for i = 1, #content do b, e = tcp:write(string.char(string.byte(content, i))); s = s + b; end status, err = tcp:read(); fibaro:debug("Sended " .. s .. " content bytes with result [" .. err .. "]."); if (tonumber(err)>0) then return nil; end return 0; end end --@############################### --######################## change(USER, PASSWORD, id_device,Unprotected,Unprotected); il y peut être quel chose dans le code qui vas nous permettre de valider notre code API
  7. non toujour pareille j'ai comparé les deux API avec un plugin de notpad+++ et il y rien d'autre que sans protection : RFProtectionState": "0", et localProtectionState": "0", avec protection: RFProtectionState": "1", et localProtectionState": "2", Pour valider il faut cliquer sur la disquette
  8. salut @pepite prtoectionlocal.vfib et pour le code API Je vais essayé en une seul foi pour voir
  9. salut j'ai ce Module Virtuel que me propose le forum FIBARO https://forum.fibaro.com/index.php?/topic/25187-localprotectionstate-json/&do=findComment&comment=117888 mai je comprend pas trop comment le faire fonctionner
  10. voici les codes local idModule = 16 local json = api.get("/devices/"..idModule) print ("Nom avant: " ..json.properties.localProtectionState) json.properties.localProtectionState = 2 print ("Nom après : " ..json.properties.localProtectionState) api.put("/devices/"..idModule, json) --------------------------------------- local idModule = 16 local json = api.get("/devices/"..idModule) print ("Nom avant: " ..json.properties.RFProtectionState) json.properties.RFProtectionState = 1 print ("Nom après : " ..json.properties.RFProtectionState) api.put("/devices/"..idModule, json) mai le volet fonctionne toujours avec le bouton et l'application sur mon tel il, manque un code pour enregistrée ou metre a jour ......
  11. local protec = api.get("/api/devices/16") protec.properties.localProtectionState = 2 api.put("/api/devices/16", protec) ------------------- local protec = api.get("/api/devices/16") protec.properties.RFProtectionState = 1 api.put("/api/devices/16", protec) je revient sur ce code la, le code modifie bien localProtectionState": "2" et RFProtectionState": "1" et quand je regard dans le paramètre je vois bien que la protection est active mai j'ai toujours le meme probleme, pour valider il f aut cliquer sur la DISQUETTE
  12. j'ai oublier les "" "toto"
  13. j'essaye avec ça le code doit modifier userDescription d'un module id16 local idpanel = 16 local toto = api.get("/devices/" ..idpanel) print(">>>> " ..json.encode(toto.properties.userDescription)) local texte = bonjour function urlencode(str) if (str) then str = string.gsub (str, "\n", "\r\n") str = string.gsub (str, "([^%w ])", function (c) return string.format ("%%%02X", string.byte(c)) end) str = string.gsub (str, " ", "+") end return str end toto.properties.userDescription = "..urlencode(tostring(texte or "empty"))" api.put("/devices/16", toto) mai j'ai des erreur
  14. J'arrive a modifier en mode PUT depuis l'API don je pense qu'il a un probleme concernant le format avec le code je modifier tous qui est en format NUMÉRIQUE mai le format TEXTE non
  15. pour faire simple et comprendre local idevice = 16 local toto = api.get("/devices/" ..idevice) toto.name = coucou api.put("/devices/16", toto) je cherche a modifier le nom d'un device, mai cela ne fonctionne pas
  16. j'ai comme erreur [DEBUG] 14:39:05: line 11: attempt to index local 'protec' (a nil value)
  17. merci beaucoup vous deux j'ai autre chose, j'ai ce code: local id = 5 -- ID du FGRM à modifier function Update() local httpClient = net.HTTPClient(); httpClient:request('http://127.0.0.1:11111/api/devices/' .. id, { success = function(response) if tonumber(response.status) == 200 or tonumber(response.status) == 202 then print("Updated at " .. os.date()); else print("Error " .. response.status) end end, error = function(err) print('error = ' .. err) end, options = { method = 'PUT', headers = { ["content-type"] = 'application/x-www-form-urlencoded;' }, data = "{\"id\":" .. id .. ",\"properties\":{\"protectionLocal\":0, \"protectionRF\":0}}" } }); end Update() si je souhaite le modifier avec la fonction api.get local protec = api.get("/api/devices/16") protec.properties.protectionLocal = 0 api.put("/api/devices/16", protec) ou je me trompe
  18. j'essaye de comprendre mai c pas très claire ça fonctionne pourtant il n'y a pas de IF local idModule = 57 local SectionId = fibaro:getSectionID(idModule) print("SectionId : " ..SectionId) local json = api.get("/sections/"..SectionId) print ("Nom : " ..json.name)
  19. API.get , enchanté de la connaître[emoji3] Envoyé de mon iPhone en utilisant Tapatalk
  20. salut la ou je pèche, c'est comment inséré un variable entre 1 et 2 code normale http:request('http://127.0.0.1:11111/api/sections/4' Exemple avec variable locale variable1 = sections local variable2 = 4 http:request('http://127.0.0.1:11111/api/variable1/variable2'
  21. salut c'est très compliquée voila le resultat de mes recherches local http = net.HTTPClient() http:request('http://127.0.0.1:11111/api/sections/4' , { options = { method = 'GET' }, success = function(response) local result = json.decode(response.data); MessMem = "" ..tostring(result.name).."" fibaro:debug( "La section = " ..MessMem) end }) qui me donne : [DEBUG] 23:15:09: La section = Interieur bon, j'ai gagné une bataille, mais pas la guerre mon probleme est comment réaliser une liaison entre ID du module et le section ? exemple: si ID33 alors affiche section intérieur Dans l API, pour accédée a la section il y plusieur couches ID du Module = 33, on trouve Room ID et dans Room Id on trouve enfin la section /api/devices/ /api/rooms/ /api/sections/
  22. comme ça j'ai un resultat http://192.168.0.203/api/sections [{"id":478,"name":"Interieur","sortOrder":1},{"id":479,"name":"Exterieur","sortOrder":2}] mai le probleme est comment explorer les donnés dans une variable
  23. @jojo salut désolé, mai ce n'est pas mon but de profité de personne le code de pepit ne fonctionne pas, surement du la v4.120
  24. salut avez-vous un exemple de code json ?
  25. fibaro:getSectionID(33) me donne 4 4 est ID de la section, mai je n'est pas nom de la section
×
×
  • Créer...