home-assistant.io icon indicating copy to clipboard operation
home-assistant.io copied to clipboard

Not working with Ecoforest Ecogeo B3 1-9kW with Easynet

Open FridrickF opened this issue 1 year ago • 10 comments

Feedback

Hi, I'm very interested in this integration, however I can't log in: I enter the host (192.168.0.9) I enter the username and password but it says unable to connect. I noticed that my username is 11 digits, the one in your example is 13 digits, could that be the problem? Thank you

URL

https://www.home-assistant.io/integrations/ecoforest/

Version

2023.11.3

Additional information

No response

FridrickF avatar Nov 28 '23 08:11 FridrickF

Hey there @pjanuario, mind taking a look at this feedback as it has been labeled with an integration (ecoforest) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of ecoforest can trigger bot actions by commenting:

  • @home-assistant close Closes the feedback.
  • @home-assistant rename Awesome new title Renames the feedback.
  • @home-assistant reopen Reopen the feedback.
  • @home-assistant unassign ecoforest Removes the current integration label and assignees on the feedback, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information) to the feedback.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information) on the feedback.

home-assistant[bot] avatar Nov 28 '23 08:11 home-assistant[bot]

hi @FridrickF The host needs to be something like https://192.168.0.9:8000 (my device runs on port 8000 by default, not sure yours), can you try that way. If you have troubles please enable debug log and post the logs in here, unfortunately there is no API specifications for the different models and we will have to relay on user information in order to make the integration working with other models. Currently it's working with my Cordoba glass and will likely work with other models out of the box, but need to be tested. Let me know if it works, so that I can add the model to the supported devices or help with changes needed to support it.

pjanuario avatar Nov 28 '23 09:11 pjanuario

hi @FridrickF The host needs to be something like https://192.168.0.9:8000 (my device runs on port 8000 by default, not sure yours), can you try that way. If you have troubles please enable debug log and post the logs in here, unfortunately there is no API specifications for the different models and we will have to relay on user information in order to make the integration working with other models. Currently it's working with my Cordoba glass and will likely work with other models out of the box, but need to be tested. Let me know if it works, so that I can add the model to the supported devices or help with changes needed to support it.

Hi @pjanuario , the home page is https://192.168.0.9:8000/index.html so I use the same port, however even entering https://192.168.0.9:8000/ doesn't work. Sorry but I'm a beginner with HA and I don't know how to activate debugging, if you guide me I can try. For information I am using HA via docker.

FridrickF avatar Nov 28 '23 10:11 FridrickF

Maybe I found...

Logger: homeassistant.components.ecoforest.config_flow Source: components/ecoforest/config_flow.py:46 Integration: Ecoforest (documentation, issues) First occurred: 09:21:37 (5 occurrences) Last logged: 10:59:49

Unexpected exception Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 66, in map_httpcore_exceptions yield File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 366, in handle_async_request resp = await self._pool.handle_async_request(req) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/httpcore/_async/connection_pool.py", line 214, in handle_async_request raise UnsupportedProtocol( httpcore.UnsupportedProtocol: Request URL is missing an 'http://' or 'https://' protocol.

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/pyecoforest/api.py", line 79, in _request response = await self._client.post( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1848, in post return await self.request( ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1530, in request return await self.send(request, auth=auth, follow_redirects=follow_redirects) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1617, in send response = await self._send_handling_auth( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1645, in _send_handling_auth response = await self._send_handling_redirects( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1682, in _send_handling_redirects response = await self._send_single_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1719, in _send_single_request response = await transport.handle_async_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 365, in handle_async_request with map_httpcore_exceptions(): File "/usr/local/lib/python3.11/contextlib.py", line 155, in exit self.gen.throw(typ, value, traceback) File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 83, in map_httpcore_exceptions raise mapped_exc(message) from exc httpx.UnsupportedProtocol: Request URL is missing an 'http://' or 'https://' protocol.

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/ecoforest/config_flow.py", line 46, in async_step_user device = await api.get() ^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyecoforest/api.py", line 48, in get "status": await self._status(), ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyecoforest/api.py", line 111, in _status return await self._request(data={"idOperacion": API_STATUS_OP}) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyecoforest/api.py", line 91, in _request if error.response.status_code in ( ^^^^^^^^^^^^^^ AttributeError: 'UnsupportedProtocol' object has no attribute 'response'

Logger: homeassistant.components.ecoforest.config_flow Source: components/ecoforest/config_flow.py:46 Integration: Ecoforest (documentation, issues) First occurred: 10:46:58 (4 occurrences) Last logged: 11:15:10

Unexpected exception Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/ecoforest/config_flow.py", line 46, in async_step_user device = await api.get() ^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyecoforest/api.py", line 46, in get return Device.build( ^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyecoforest/models/device.py", line 123, in build model=stats["Me"], ~~~~~^^^^^^ KeyError: 'Me'

FridrickF avatar Nov 28 '23 10:11 FridrickF

From this part of the log:

File "/usr/local/lib/python3.11/site-packages/httpcore/_async/connection_pool.py", line 214, in handle_async_request
raise UnsupportedProtocol(
httpcore.UnsupportedProtocol: Request URL is missing an 'http://' or 'https://' protocol
The above exception was the direct cause of the following exception:

It looks that the host is not set with http/https the host properly, can you try with https://192.168.0.9:8000 instead of https://192.168.0.9:8000/ maybe it's a problem with the backslash in the end.

If doesn't help I will try to create a simple docker image you could run to gather API information, this have been a common problem since we don't have a API documentation from the devices. Once I have some moments I will try to create a example for users to fetch the device information, so that we can debug more easily the support to new devices.

pjanuario avatar Nov 28 '23 10:11 pjanuario

That was also my suspicion and I had already tried but with https://192.168.0.9:8000 or http://192.168.0.9:8000 it still doesn't work.

Logger: homeassistant.components.ecoforest.config_flow Source: components/ecoforest/config_flow.py:46 Integration: Ecoforest (documentation, issues) First occurred: 11:22:12 (2 occurrences) Last logged: 11:37:09

Unexpected exception Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/ecoforest/config_flow.py", line 46, in async_step_user device = await api.get() ^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyecoforest/api.py", line 46, in get return Device.build( ^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyecoforest/models/device.py", line 123, in build model=stats["Me"], ~~~~~^^^^^^ KeyError: 'Me'

FridrickF avatar Nov 28 '23 10:11 FridrickF

This error is most likely related with the device api being slightly different, once I have some time I will try to post a easy way to grab the information. In meantime if you want to try out, the library used to access the device data is https://github.com/pjanuario/pyecoforest and try to run something like:

example.py

api = EcoforestApi("https://192.168.0.9:8000", new BasicAuth("username", "password")
api.get()

python example.py

pjanuario avatar Nov 28 '23 11:11 pjanuario

Sorry but I don't have the skills to do what you ask me... -.-"

FridrickF avatar Nov 28 '23 13:11 FridrickF

@FridrickF I finally had sometime to create a debug docker image, run it with the following command and post the output in here:

docker run --rm --name pyecoforest-debug -e "HOST=https://192.168.0.9:8000" -e "USERNAME=changeme" -e "PASS=changeme" -e "POWER=1" -e "ON=False" pyecoforest-debug

Change the username, password and host (i believe yours is the one in there) and also make sure that in the logs you remove the credentials from the logs.

This script is using the api to connect to the device and output all the api responses for debug purposes.

pjanuario avatar Dec 02 '23 15:12 pjanuario

@FridrickF I finally had sometime to create a debug docker image, run it with the following command and post the output in here:

docker run --rm --name pyecoforest-debug -e "HOST=https://192.168.0.9:8000" -e "USERNAME=changeme" -e "PASS=changeme" -e "POWER=1" -e "ON=False" pyecoforest-debug

Change the username, password and host (i believe yours is the one in there) and also make sure that in the logs you remove the credentials from the logs.

This script is using the api to connect to the device and output all the api responses for debug purposes.

@pjanuario I apologize for returning after so long but at first I had some personal problems, once they were overcome I had technical problems with Easynet which broke. I tried launching docker (I run docker on a qnap x86-64) but it gives me the following error: exec /usr/local/bin/python: exec format error

FridrickF avatar Apr 23 '24 13:04 FridrickF

I've spent a few days building a PoC based on HA ecoforest integration to communicate with the EcoGeo heat pump. This heat pump has an entirely different API (which looks more like "modbus HTTP API"). The implementation is quick, dirty and requires way more time to make a proper integration out of it. Here it is: https://github.com/bytestorm/ecoforest_ecogeo

bytestorm avatar Jul 11 '24 10:07 bytestorm

Anybody who has a working integration with Ecoforest EcoGeo heatpumps?

Gerlof67 avatar Sep 12 '24 13:09 Gerlof67

@Gerlof67 I only have a ecoforest fireplace, there is no documentations of the API and it's weird api format. We can extend to other devices too, but we need to understand what are the API's the devices uses. If you can create a ticket for this and add curl requests I can look into it to understand the patterns and see how similar it is.

My goal was to allow other to extend the integration to support the different devices.

Feel free to open a ticket each device model we want to integrate as community we can work on PR's to add support for new models, I am more then happy to help but it's very hard without access to a device, so if a user as one device and some dev skills than we can make it happen as community.

pjanuario avatar Sep 12 '24 14:09 pjanuario

@home-assistant rename Add support to Ecoforest Ecogeo B3 1-9kW with Easynet

pjanuario avatar Sep 12 '24 14:09 pjanuario

@home-assistant add-label new-feature

pjanuario avatar Sep 12 '24 14:09 pjanuario

Anybody who has a working integration with Ecoforest EcoGeo heatpumps?

@Gerlof67 I have, see my comment above: https://github.com/home-assistant/home-assistant.io/issues/30031#issuecomment-2222631240 it's a bit limited since I only needed to have the ability to turn on or off heating/cooling/dhw and monitor some general numbers. It could be extended easily, though (I do have their spec that reflects some data/switches + everything else available could be reverse-engineered from the web interface itself). Most likely I'll add more stuff soon since I'm slowly but steadily approaching the next stage of climate automation in my home

@Gerlof67 I only have a ecoforest fireplace, there is no documentations of the API and it's weird api format. We can extend to other devices too, but we need to understand what are the API's the devices uses. If you can create a ticket for this and add curl requests I can look into it to understand the patterns and see how similar it is.

My goal was to allow other to extend the integration to support the different devices.

Feel free to open a ticket each device model we want to integrate as community we can work on PR's to add support for new models, I am more then happy to help but it's very hard without access to a device, so if a user as one device and some dev skills than we can make it happen as community.

@pjanuario the issue is not with the ha_ecoforest IMO, but with pyecogeo that is being used. It doesn't support easynet API of ecogeo pumps, which is somewhat similar but still different

bytestorm avatar Sep 12 '24 15:09 bytestorm

We use GitHub for tracking issues, not for tracking feature requests.

If you want to suggest a feature, you should try our Community Forum: Feature Requests. Or the underlying python package that retrieves data.

Thanks! 👍

klaasnicolaas avatar Sep 12 '24 15:09 klaasnicolaas

I think a description of the API for the Easynet module is here : API: https://portaal.eplucon.nl/login?ut=user Maybe that is helpful....?

Gerlof67 avatar Sep 16 '24 07:09 Gerlof67