Enable HTTP Server on Ezlo Hub?

With the older Vera hubs, it was simple to enable / disable the built-in HTTP server via the web interface, but with the new Ezlo hubs I see no such option in the beta interface (http://ezlogic.mios.com)

I am attempting to make a simple HTTPS request to my Ezlo Hub, but it appears the built-in HTTP server is not enable. Does anyone know how to enable / disable it?

Here’s a basic Python script to illustrate what I’m trying to do, and the error I get.

import requests

My hub IP and my device ID.

URL = “https://192.168.1.197:17000/v1/method/hub.item.value.set?_id=60a423a6077e901216e79e21&value_int=0

r = requests.get(url = URL)
data = r.json()
print (data)

The error I get: (Caused by NewConnectionError(‘<urllib3.connection.HTTPSConnection object at 0x7f8c990f6b50>: Failed to establish a new connection: [Errno 61] Connection refused’))

This implies the HTTP server is not running. Any pointers would be appreciated. Thanks.

Try starting here

Thanks, I had tried that - I followed the instructions in " PART 2 - Running scenes with authentication turned off"

I pasted in:

{
“method”: “hub.offline.anonymous_access.enabled.set”,
“id”: “12345”,
“params”: { “enabled”: true }
}

and my response was:

offlineAnonymousAccess: true
offlineInsecureAccess: true

Which suggests the server is running? But, when I run the Python script I posted earlier, I get the same error message: “Failed to establish a new connection: [Errno 61] Connection refused’))”

So, something is still not enabled on the Ezlo…

I should add, even pasting “http://192.168.1.197:17000…” into a web browser, I get a connection error.

What happens if you just enter the HTTP command in to a Web browser does it then operate the device?

It is a device you want to control right? Or run a scene?

Same issue - if I simply paste “https://192.168.1.197:17000/v1/method/hub.item.value.set?_id=60a423a6077e901216e79e21&value_int=1

(Which should turn my device on)

I get a "browser can’t open a connection to 192.168.1.197…:"

Try rebooting the hub if you haven’t already. If you have SSH access to it just do a “reboot” command.

Good idea - just did, but no change.

Your hub info looks correct and you have disabled authentication.

What about trying http rather than https in the browser?

Or maybe try a curl command as a test, it’s part 4 you want to be looking at on the guide for controlling devices with no authentication.

I can test this again at my end tomorrow as its late here now.

And you definitely have found the correct device ID string from the Online Api Tool?

Although you’d think it would still connect regardless.

I have, but you’re right, even just a simple:

http://192.168.1.197:17000
or
https://192.168.1.197:17000

Should at least return something… neither do. (Neither does curl, or my simple Python script).

curl --http1.1 --insecure “https://192.168.1.197:17000/v1/method/hub.item.value.set?_id=60a423a6077e901216e79e21&value_bool=true

curl: (7) Failed to connect to 192.168.1.197 port 17000: Connection refused

I’ll keep poking around, but yes, if you could try when you get a chance, that would be appreciated.

I just tried a https command on my hub, I can still connect OK but I can’t turn on the plug device I selected I am getting an error about the device ID which is the correct one though.

{"error":{"code":-32602,"data":"rpc.params.wrong_field","message":"Wrong field of object","reason":"Item not found by id: 5fccde48120bab1205c86e0c"},"id":"60aad730120bab0320000bc9","result":{}}

I’ll have to have a think about this and get back to you.

I did it wrong, its the devices item ID you have to use for example for the “swtich” not the actual devices ID.

I can confirm the HTTP API is still working OK for me at this end, I was able to use a https command to turn on / off a plug device.

And in the browser I get a response like this one:

{"error":null,"id":"60aadb3f120bab0320000da6","result":{}}

Thanks, so you’re pasting in a URL like? :

https://192.168.1.197:17000/v1/method/hub.item.value.set?_id=60a423a6077e901216e79e21&value_bool=true

I’m not getting any response code, still the HTTP server / connection error. Somehow my HTTP server is not running, even though it claims it “is”. I must be missing some step…

@oleh Can you help with this please ?

@robotman You have an Ezlo Plus hub right?

If so your hubs firmware seems to be old, it should be version 2.0.14.1570.3

The reboot you just did may have forced an update, can you do a hub.info.get again and check the firmware version now.

Thanks

That is the URL I just used to turn on my plug.

https://192.168.0.11:17000/v1/method/hub.item.value.set?_id=5fccde48120bab1205c86e0d&value_int=1

Or Bool True / False works also:

https://192.168.0.11:17000/v1/method/hub.item.value.set?_id=5fccde48120bab1205c86e0d&value_bool=true

There are two other cases where connection was refused if you search the forum but neither had any answer as to why.

https://community.ezlo.com/search?q=17000%20Connection%20refused

I’ve asked a senior developer to look at this thread for you.

Thanks - not sure if this is related, but…

I decided to factory reset the Ezlo just to clear everything out and try again.
I did both the paper clip method and the hub.reset command via the dashboard.
Now, no matter what I do, it will not connect to the WiFi access point it connected to when I first set it up.
I’m going to try wired now, but the WiFi in general seems very buggy.

I’ve never used the WiFi on any Ezlo or Vera hub, I always have them hard wired to the LAN.

[SOLVED]

Ok, I learned something today… it appears (due to a bug, limitation, or design) that you CANNOT control devices via the API when you have set-up the hub in wireless mode ONLY when the hub is wired.

What is very odd about this, is that if you set-up the hub in wireless mode, you CAN use the Vera application to control devices, but you cannot control the devices via the API - at least not locally.

This is a very strange design decision, or I’m missing something. It should make no difference how the hub is connected locally.

Once I factory reset the hub and put it in wired mode (and enabled the HTTP server) I could control a device via a browser with:

http://192.168.1.176:17000/v1/method/hub.item.value.set?_id=60aaef71077e903f4a354448&value_bool=false

and got a successful response:
{“error”:null,“id”:“60aaf000077e903f79d6059f”,“result”:{}}

I factory reset the hub (again) and put it in wireless mode, and connections to the hub failed.
Finally factory resetting one last time and using a wired mode confirmed it worked.

So - bottom line, to use the HTTP/S API locally, use the hub in wired mode, not wireless mode.

All in all a frustrating, but learning experience. Would love to hear what the devs say.

1 Like

@oleh, please see my [SOLVED] post in the thread. Yes, it’s a Ezlo Plus.
BTW, support told me that the product could NOT be used locally, ONLY via the cloud. That is clearly not the case, and even the API docs give examples using it locally.

(The APIs docs need to be extended to include @cw-kid write-up on how to enable the HTTP server, etc. and perhaps include a note about what we found out today (unless the error is on my part).

Well done for getting to the bottom of it.

Yes seems strange if that’s the case that the http server isn’t working when the hub is connected to your WLAN.