PatrickVH Posté(e) le 29 novembre 2015 Signaler Posté(e) le 29 novembre 2015 bonjour, j'utilise le code suivant pour capter le status des modules d'une installation KNX. Dans le debug je reçois rien d'anormal: [DEBUG] 11:14:35: Result: on [DEBUG] 11:14:35: Status: 200 [DEBUG] 11:14:35: Error Code: 0 Par contre, quand je veux reprendre la valeur de la locale "result", qui est "on" ou "off", pour lancer des appels Fibaro rien ne se passe. Comment est-ce que je peux résoudre ce problème? Merci d'avance! local IP = "192.168.0.5" local Port = "8080" local lightID = 81 local KNX = Net.FHttp(IP,Port) local result, status, errorCode = KNX:GET("/controller/rest/status/107673154") fibaro:debug("Result: " .. result); fibaro:debug("Status: " .. status); fibaro:debug("Error Code: " .. errorCode); if fibaro:getValue(lightID, "value") == "0" and result == "on" then fibaro:call(lightID, "setValue", "100") fibaro:debug("Light ON") elseif fibaro:getValue(lightID, "value") == "100" and result == "off" then fibaro:call(lightID, "setValue", "0") fibaro:debug("Light OFF") end
jojo Posté(e) le 29 novembre 2015 Signaler Posté(e) le 29 novembre 2015 ou le problème est au niveau de l'interprétation du result. Alors je ferais pour être sûr result = tostring(result) ou le problème se situe au niveau du retour de ton fibaro:getValue(lightID, "value") ne rajouterais-tu pas un debug supplémentaire fibaro:debug("LightID : " ..fibaro:getValue(lightID, "value"))
PatrickVH Posté(e) le 29 novembre 2015 Auteur Signaler Posté(e) le 29 novembre 2015 merci jojo c'est ce que je pense aussi: problème au niveau de l'interprétation. comme vous proposez, j'ai déjà essayé des debugs supplémentaires et la les résultats sont comme attendu. probablement la documentation de l'api peut nous aider. j'utilise bien l'url comme dans l'exemple mentionné dans la documentation. ce qui m'étonne, je ne reçois pas une réponse json comme montrer dans l'exemple. This service will return sensor status from controller's state cache immediately. Request URL: /rest/status/{sensor_id},{sensor_id},... Request Method: GET Parameters: sensor_id list Example Request URL http://localhost:8080/controller/rest/status/1 http://localhost:8080/controller/rest/status/1,2 Example Response content-type:application/json: { "status": [ { "@id": "1", "#text": "on" }, { "@id": "2", "#text": "off" } ] }
jojo Posté(e) le 29 novembre 2015 Signaler Posté(e) le 29 novembre 2015 mais je voulais isoler la source du problème : result ou fibaro:getValue(lightID, "value") ? donc est-ce que ceci donne quelque-chose de cohérent : if result == "on" then fibaro:call(lightID, "setValue", "100") fibaro:debug("Light ON") elseif result == "off" then fibaro:call(lightID, "setValue", "0") fibaro:debug("Light OFF") else fibaro:debug("result = "..result) end
PatrickVH Posté(e) le 29 novembre 2015 Auteur Signaler Posté(e) le 29 novembre 2015 résultat: [DEBUG] 14:10:03: Result: off [DEBUG] 14:10:03: Status: 200 [DEBUG] 14:10:03: Error Code: 0 [DEBUG] 14:10:03: LightID : 100 [DEBUG] 14:10:03: result = off
PatrickVH Posté(e) le 29 novembre 2015 Auteur Signaler Posté(e) le 29 novembre 2015 fonctionne pas avec local IP = "192.168.0.5" local Port = "8080" local lightID = 95 local KNX = Net.FHttp(IP,Port) local statusID = "107673162" local result, status, errorCode = KNX:GET("/controller/rest/status/"..statusID) result = tostring(result) fibaro:debug("Result: " .. result); fibaro:debug("Status: " .. status); fibaro:debug("Error Code: " .. errorCode); local ActualSwitchValueFibaro = fibaro:getValue(lightID, "value") local ActualSwitchValueKNX = result fibaro:debug("Actual Value Fibaro Virtual Switch: " ..ActualSwitchValueFibaro) fibaro:debug("Actual Value KNX: " ..ActualSwitchValueKNX) function SwitchOn () fibaro:call(lightID, "setValue", "100") fibaro:debug("Light is ON") end function SwitchOff () fibaro:call(lightID, "setValue", "0") fibaro:debug("Light is OFF") end if ActualSwitchValueKNX == "on" and ActualSwitchValueFibaro == "100" then fibaro:debug("Actual and Virtual are equal, no action") elseif ActualSwitchValueKNX == "off" and ActualSwitchValueFibaro == "0" then fibaro:debug("Actual and Virtual are equal, no action") elseif ActualSwitchValueKNX == "on" and ActualSwitchValueFibaro == "0" then SwitchOn () elseif ActualSwitchValueKNX == "off" and ActualSwitchValueFibaro == "100" then SwitchOff () end [DEBUG] 15:22:07: Result: on [DEBUG] 15:22:07: Status: 200 [DEBUG] 15:22:07: Error Code: 0 [DEBUG] 15:22:07: Actual Value Fibaro Virtual Switch: 100 [DEBUG] 15:22:07: Actual Value KNX: on fonctionne comme il faut avec local IP = "192.168.0.5" local Port = "8080" local lightID = 95 local KNX = Net.FHttp(IP,Port) local statusID = "107673162" local result, status, errorCode = KNX:GET("/controller/rest/status/"..statusID) result = tostring(result) fibaro:debug("Result: " .. result); fibaro:debug("Status: " .. status); fibaro:debug("Error Code: " .. errorCode); local ActualSwitchValueFibaro = fibaro:getValue(lightID, "value") local ActualSwitchValueKNX = result fibaro:debug("Actual Value Fibaro Virtual Switch: " ..ActualSwitchValueFibaro) fibaro:debug("Actual Value KNX: " ..ActualSwitchValueKNX) function SwitchOn () fibaro:call(lightID, "setValue", "100") fibaro:debug("Light is ON") end function SwitchOff () fibaro:call(lightID, "setValue", "0") fibaro:debug("Light is OFF") end if ActualSwitchValueFibaro == "0" then SwitchOn () elseif ActualSwitchValueFibaro == "100" then SwitchOff () end [DEBUG] 15:25:14: Result: off [DEBUG] 15:25:14: Status: 200 [DEBUG] 15:25:14: Error Code: 0 [DEBUG] 15:25:14: Actual Value Fibaro Virtual Switch: 0 [DEBUG] 15:25:14: Actual Value KNX: off [DEBUG] 15:25:14: Light is ON comme vous le dites, il s'agit donc d'un problème au niveau de l'interprétation.
Messages recommandés