Jump to content

Welcome to Smart Home Forum by FIBARO

Dear Guest,

 

as you can notice parts of Smart Home Forum by FIBARO is not available for you. You have to register in order to view all content and post in our community. Don't worry! Registration is a simple free process that requires minimal information for you to sign up. Become a part of of Smart Home Forum by FIBARO by creating an account.

 

As a member you can:

  •     Start new topics and reply to others
  •     Follow topics and users to get email updates
  •     Get your own profile page and make new friends
  •     Send personal messages
  •     ... and learn a lot about our system!

 

Regards,

Smart Home Forum by FIBARO Team


  • 0

How to create HTTP request string from irrigation system


Guest Veggie-Joe

Question

Guest Veggie-Joe

Hello Forum members,

 

I am a Newbie on Fibaro HC2 / LUA and struggling with my next project:

I have a Hydrawise Irrigation Controller (sister company of Hunter).

This controller is already smart and adjusting the irrigation schedule based on weather data via WUnderground.

My plan is to track the status of each zone in HC2 and switch the pump (wall plug) on and off.

API key is available and the connection is working on browser and in LUA code. 

I can run and stop specific irrigation zones via code but I do not know how to get the datastring into HC2 variables.

 

start relay 485761 / zone 3 for 600 seconds: 

local http = net.HTTPClient()

http:request('https://api.hydrawise.com/api/v1/setzone.php?action=run&api_key=XXXXXX&period_id=999&relay_id=485761&custom=600')

 

stop same relay:

http:request('https://api.hydrawise.com/api/v1/setzone.php?action=stop&api_key=XXXXXXX&relay_id=485761')

 

Both is working and I can see the effect on the Hydrawise controller.

 

code for the statusschedule:

Please login or register to see this link.

 

I receive following string in the browser:

Please login or register to see this code.

 

Hopefully somebody can support in this topic.

 

Please login or register to see this attachment.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0
Guest Veggie-Joe
  • Inquirer
  • The last days I read tons of threads in this forum and finally I could manage the http request and reading the json string.

    Also set / get of Global Variables is working.

    Link to comment
    Share on other sites

    • 0

    Hi,

     

    I am also a newbie and struggling to get the HC2 to communicate with a device sending HTTP messages to my HC2.

     

    All I need is for the HC2 to accept the message and then display it in a virtual device. Any suggestions for references or code? 

     

    Thanks

    Link to comment
    Share on other sites

    • 0
    Guest Veggie-Joe
  • Inquirer
  • Hi Innervations,

     

    I made it in a lua scene as a virtual device supports no https only http.

    The string is stored in a global variable and I use the global variable (string) in separate scenes for calculations and as trigger for actions.

    Hopefully this will help you.

     

    My code: 

    --[[
    %% properties
    %% events
    %% globals
    --]]

    function hydrastatus(result)
        local url = "https://your api"
        local http = net.HTTPClient()
        http:request(
            url,
            {
                options = {
                    headers = headers,
                    method = "GET",
                },
                success = function(response)
                    if (response.status < 200 or response.status >= 300) then
                        print(json.encode(response))
                        print("Wrong status '" .. response.status .. "' in response!")
                    else
                        --local data = json.decode(response.data)
                        local data = json.decode(response.data)
                          if result then
                        fibaro:setGlobal("Hydrawise_status", response.data)
                        --result(data.master)
                        --result(data.time)
                        --result(data.relays)
                        --result(data)
                          for k,v in pairs(data) do print(k, v) end
                        --for i,v in pairs(data.relays) do print(i, v) end
                        --for i,v in pairs(data.relays[1]) do print(i, v) end
                        for k,v in pairs(data.relays[1]) do print(k, v) end
                        for k,v in pairs(data.relays[2]) do print(k, v) end
                        for k,v in pairs(data.relays[3]) do print(k, v) end
                        for k,v in pairs(data.relays[4]) do print(k, v) end
                        else
                            print('Warning! No calback function. Your IP is ', data.id)
                        end
                    end
                end,
                error = function(response)
                    print("Connection error: " .. response)
                end
            }
        )
    end -- function

    hydrastatus(
        function(relays) 
            print("YESSS!!!", "MY RELAYS ARE: ", relays)
            
        end
        )

    Link to comment
    Share on other sites

    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.

    Guest
    Answer this question...

    ×   Pasted as rich text.   Paste as plain text instead

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

    ×
    ×
    • Create New...