NEWS
Simple API Use SOLVED
-
@ap2017 What are you trying to do and what is your issue?
The URL you are providing contains a lot of spaces (which is wrong).
Also you say
user.data.0
(which doesn't exist) and then try to usejavascript.0
. IDs must match exactly the IDs in ioBroker. Simply use the "copy" button next to the state ID to get the full ID in the correct format. -
@UncleSam Thank you for quick response and good comments. My actual URL does not have extra spaces:
http://iobrokerIP:8087/set/javascript.0.Pi-detection?Value=trueI created PI-detection variable in javascript.0 folder and monitoring value of this variable in response to motion detection from MotionEye, but so far I am getting nothing. My MotionEye Web Hook URL is http://iobrokerIP:8087/set/javascript.0.Pi-detection?Value=true with HTTP method set as GET
-
-
@ap2017 Thanks for the clarifications.
What happens if you open the URL in your browser? Do you get a JSON response similar to the following or an error message?
{"id":"javascript.0.Pi-detection","value":true}
How do you know that you are "getting nothing"?
-
@UncleSam In browser I am getting error message
"error: datapoint "javascript.0.Pi-detection" not found"
I monitor variable PI-detection as Boolean widget in VIS -
@ap2017 Can you please share a screenshot of your object tree in ioBroker where we can see the mentioned state (and its parents)?
-
@UncleSam Here the screenshot. Do I need to have subfolder variables in my URL?
-
-
@ap2017 So, did you copy the state ID the way I asked you to?
Because it seems to me that the name should be
javascript.0.variables.PI-detection
-
@UncleSam Thank you, with subfolder "variables" added I am getting browser response
{"id":"javascript.0.variables.PI-detection","value":true,"val":true}Now I need to figure out how MotionEye notification work, since I PI-detection does not change in response to motion
-
@UncleSam Everything works now. I did not realized that I have to reset the web hook variable after motion is detected.
-
Hey there,
i got the same Error but little different problem. I have copyed the Object-Path with the little button.
so i build this URL:
http://SERVER:8087/set/0_userdata.0.VirtualDevices.hc3lite.FlurPIR-1?value=false&prettyPrintThe Url works fine in any browser but when i try to use it in my code i get:
"error: no value found for "0_userdata.0.VirtualDevices.hc3lite.FlurPIR-1". Use /set/id?value=1 or /set/id?value=1&wait=1000"
I will use it in a Lua Script that runs on the "Fibaro Home center lite". When i rebuild the URL to "toggle" it works fine.. i have no clue whats the issue .. because it makes no sense for me.
Lua Code:
local value = fibaro.getValue(52, "value") local url -- Deside if value should be true or false if (fibaro.getValue(52, "value") == true) then url = 'http://SERVER:8087/set/0_userdata.0.VirtualDevices.hc3lite.FlurPIR-1?value=true&prettyPrint' elseif (fibaro.getValue(52, "value") == false) then url = 'SERVER/set/0_userdata.0.VirtualDevices.hc3lite.FlurPIR-1?value=false&prettyPrint' else print ("No Match") end print(url) local selfhttp = net.HTTPClient() local headers = { ["Accept"] = "application/json", ["Content-Type"] = 'application/json', ["Cache-Control"] = "no-cache" } selfhttp:request(url, { options={ method = 'GET', headers = headers, timeout = 5000 }, success = function(response) print(response.status) print(response.data) end, error = function(message) print("error:", message) end })
anyone knows something? i think i had the same issue by try to use something like this in Android App - Tasker, but then give out and used toggle.
-
@tehmilcho sagte in Simple API Use SOLVED:
http://SERVER:8087/set/0_userdata.0.VirtualDevices.hc3lite.FlurPIR-1?value=true&prettyPrint
Try to encode the URL
let encodedUrl = encodeURIComponent(url);
-
@mcu said in Simple API Use SOLVED:
let encodedUrl = encodeURIComponent(url);
the Lua Script in Fibaro seems not happy about it:
[24.11.2023] [22:43:48] [ERROR] [SCENE29]: (load):15: syntax error near 'encodedUrl
-
@tehmilcho In LUA seems to be
local encodedUrl = url.escape(url)
-
@mcu said in Simple API Use SOLVED:
local encodedUrl = url.escape(url)
mhh seems like fibaro specail lua?
[24.11.2023] [22:54:25] [ERROR] [SCENE29]: (load):23: attempt to call a nil value (field 'escape')
-
@tehmilcho Do you use it so?
url = url.escape(url) selfhttp:request(url, { options={ method = 'GET', headers = headers, timeout = 5000 }, success = function(response) print(response.status) print(response.data) end, error = function(message) print("error:", message) end })
-
@mcu yep this leads to "[24.11.2023] [22:54:25] [ERROR] [SCENE29]: (load):23: attempt to call a nil value (field 'escape')"
-
@tehmilcho sagte in Simple API Use SOLVED:
:23: attempt to call a nil value (field 'escape')
Try this
url = url:gsub("([^A-Za-z0-9_])", function(c) return string.format("%%%02X", string.byte(c)) end)
-
@mcu said in Simple API Use SOLVED:
url = url:gsub("([^A-Za-z0-9_])", function(c) return string.format("%%%02X", string.byte(c)) end)
then it seems to get stuck, no error but will not finsh and also the state in iobroker is not changed, when you Output the new string you will get:
http%3A%2F%2F192%2E168%2E178%2E37%3A8087%2Fset%2F0_userdata%2E0%2EVirtualDevices%2Ehc3lite%2EFlurPIR%2D1%3Fvalue%3Dtrue%26prettyPrint