Logic Machine Forum
Fibaro HC3 to homeLYnk - Printable Version

+- Logic Machine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Gateway (https://forum.logicmachine.net/forumdisplay.php?fid=10)
+--- Thread: Fibaro HC3 to homeLYnk (/showthread.php?tid=2843)



Fibaro HC3 to homeLYnk - gjniewenhuijse - 15.09.2020

I try to past some data from the Fibaro HC3 gateway (also LUA) to a homeLYnk (2.5.1) but received an error 401.

The same credentials and url works in my browser or from HL to HL. 

Anyone a idea why the HL doesn't accept data in that way?

Code:
function testHttp(self)
    local address = "http://XXX:XXX@XX.XX.XX.XX/scada-remote/request.cgi?m=json&r=grp&fn=write&alias='32/1/1'&value=true"
    self.http = net.HTTPClient({timeout=3000})
    self.http:request(address, {
        options={
            headers = {
                Accept = "application/json"
            },
            checkCertificate = false,
            method = 'GET'
        },
        success = function(response)
            self:debug("response status:", response.status)
            self:debug("headers:", response.headers["Content-Type"])
            local data = json.decode(response.data)
        end,
        error = function(error)
            self:debug('error: ' .. json.encode(error))
        end
    })
end

function QuickApp:onInit()
    self:debug("onInit")
    testHttp(self)
end



RE: Fibaro HC3 to homeLYnk - admin - 15.09.2020

Don't use single quotes in alias parameter. Also try replacing each / in alias with %2F


RE: Fibaro HC3 to homeLYnk - gjniewenhuijse - 16.09.2020

(15.09.2020, 14:54)admin Wrote: Don't use single quotes in alias parameter. Also try replacing each / in alias with %2F

solved, using a basic authorization header


RE: Fibaro HC3 to homeLYnk - tecnorte - 07.10.2020

I am trying to make a simple integration between HC3 and LM5.
With Home Center 2 it was working fine but, now since I migrated to Home Center 3, HTTP method just doesn't work as before.
I know I have success on the HTTP communication because it debugs the success response. but I always get the following response as "success message":

[DEBUG] [RESPONSE ]: Unknown parameter "m" (mode)

Here is my code:
Code:
local ip = "192.168.1.100"; -- Logic Machine IP Address
local address = "1/1/2"; -- Group Address to be written on Logic Machine
local http = net.HTTPClient(); -- Http connection request
local zwIdStatus = fibaro.getValue(38, "value") -- Fibaro Device current value
local zwDevStatus = 0 -- Numeric variable for the string concatenation

if zwIdStatus == "true"
then
zwDevStatus = 1
elseif zwIdStatus == "false"
then
zwDevStatus = 0
end

http : request('http://'.. ip ..'/scada-remote?m=json&r=grp&fn=write&alias='..address..'&value='..zwDevStatus,  {
    options = {
        method = "GET",
        checkCertificate = false,
            headers = {
            ['Authorization'] = 'Basic cmVtb3RlOlRlY25vcnRlMjAxNA==',
            Accept = "application/json",
         
            },
        data = ""
    },

    success = function(response) fibaro.debug ("RESPONSE ", response.data)
    fibaro.debug("HEADERS:", response.headers["Content-Type"])
     end,
    error = function(err) fibaro.debug ("Error:" .. err) end
});

fibaro.debug('DEVICE VALUE = ', zwDevStatus)

Can anyone see what's wrong?


RE: Fibaro HC3 to homeLYnk - admin - 08.10.2020

1. Correctly escape address: "/" should be replaced with "%2f":
Code:
local address = "1%2f1%2f2"
2. Try removing data = "" field
3. You can also try sending the same request to httpbin, it will return the list of variables that were passed so you can at least check if GET arguments are sent correctly:
Code:
http:request('http://httpbin.org/get?m=json&r=grp&fn=write&alias='..address..'&value='..zwDevStatus,



RE: Fibaro HC3 to homeLYnk - gjniewenhuijse - 08.10.2020

Send you a pm with my working code


RE: Fibaro HC3 to homeLYnk - tecnorte - 08.10.2020

(08.10.2020, 07:11)admin Wrote: 1. Correctly escape address: "/" should be replaced with "%2f":
Code:
local address = "1%2f1%2f2"
2. Try removing data = "" field
3. You can also try sending the same request to httpbin, it will return the list of variables that were passed so you can at least check if GET arguments are sent correctly:
Code:
http:request('http://httpbin.org/get?m=json&r=grp&fn=write&alias='..address..'&value='..zwDevStatus,

The problem seems to be the recognition of the query param m=json.
By testing with "postman" software, I can get the same "response body" (Unknown parameter "m" (mode)), everytime I remove the query param m=json.

See picture below.

Notice the GET request without the parameter on top and the response on bottom.



As soon as I insert the param on the GET request, I get the correct response body, in this case "true".

This means that the result I am having on the Home Center 3, is due to the query param m=json, that is not being sent correctly from the Home Center 3.

I understand that this is more like a HC3 problem and not the LM5 problem, but maybe I can "encode" the request in any other way... I am not very experienced in LUA...
Thaks in advance.