Haverland Radiators Smart Box Integration

Working with RCTT Connect!
Using same configuration with device_id of the radiator

FYI, I finally spent some time looking into the power sensor issue, and noticed that there is a ‘duty’ field that (I’m guessing) represents the duty cycle of the radiator as a percentage, possibly since the last update. If I calculate power usage that way on historical data, it tracks the usage shown in the app pretty closely.

I plan to reimplement the power sensor using the above scheme soon, and then finally release a 2.0 version of the integration. I’d be keen for people to test it when I have a beta version ready.

1 Like

Hope it’s ok to ask a question from a non-developer but keen learner trying to make the right decisions.

Will the Haverland RCTT work with Home Assistant ok and no Hub required? I see @carlituxman has this working I’m wondering if it’s still ok of if others have it working ok?

I doubt I can set this up myself but i might be able to get a dev friend to help me (unless anyone would be willing to do a wee contract for me here?!)

I’m looking to replace radiators in 3 self catering cabins and get the radiators online. I’d like to add Shelly Window detectors so I can have a way to shut down the heating when folk inevitably leave windows open or doors when sat on balcony. I know they have window detection but the rointe’s i have (not wifi) promise they have this but it most definitely has never worked on any testing I have done.

I’m also guarded about using hubs (ULTRARAD or other haverland ranges). Does direct to WiFi lessen the risk of loosing support in future years if it’s possible to connect to Home Assistant? (Thanks to the great work of the developers here who can do this)

Hope it’s ok to ask here, apologies in advance for beginner questions, hugely grateful for any thoughts/experience with the haverlands.

I don’t have any experience myself with Haverlands. I know that various people have reported successfully using the integration with different Haverland models like ECO-RAD, ULTRAD and Wi-x.

I don’t think a direct to WiFi radiator would help lessen the risk of obsolescence, since this integration is still interacting with a third-party cloud service, unless those radiators have some local control features the others do not (it’d be interesting to know if that’s the case).

@carlituxman it’d be interesting to see the output of smartbox nodes, smartbox setup and smartbox status for your radiators to see if they report anything differently.

1 Like

I’ve just released 2.0.0-beta.2 (I think there are enough big changes to make a new major release): Release v2.0.0-beta.2 · graham33/hass-smartbox · GitHub

Note if you’re having trouble with seeing beta releases in HACS see here: Enable beta for a repository | HACS.

Here are the release notes for the last couple of releases:

Breaking Changes

New Features

Other Changes

1 Like

I don’t suppose anyone was able to test this? It seems to be working for me.

Hi Graham

I have just managed to get your integration working in a docker container with a climastar heater.

I have to run a modded container with both smartbox and jq added in.

Something that wasn’t all that clear from the documentation is that the API name in the configuration is just api-climastar without anything added (https: … .com has to be omitted).

It’s not that evident either that the integration is actually running as only entities are created, hopefully you might add these as a device or proper integration one day.

Anyway I just joined the forum to let you know it seems to be running fine from my end. Running last beta btw.

Thanks
A8

i have same issue… you solve it?

dears i have smarbox havleand.
4 months agos the integration works very good. but now not work
Homeassistant shows this error:


Logger: homeassistant.setup
Source: custom_components/smartbox/model.py:61
Integration: smartbox (documentation, issues)
First occurred: 22:56:59 (1 occurrences)
Last logged: 22:56:59

Error during setup of component smartbox
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/setup.py”, line 288, in _async_setup_component
result = await task
^^^^^^^^^^
File “/config/custom_components/smartbox/init.py”, line 94, in async_setup
devices = await get_devices(
^^^^^^^^^^^^^^^^^^
File “/config/custom_components/smartbox/model.py”, line 285, in get_devices
devices = [
^
File “/config/custom_components/smartbox/model.py”, line 286, in
await create_smartbox_device(
File “/config/custom_components/smartbox/model.py”, line 311, in create_smartbox_device
await device.initialise_nodes(hass)
File “/config/custom_components/smartbox/model.py”, line 61, in initialise_nodes
status = await hass.async_add_executor_job(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/concurrent/futures/thread.py”, line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/smartbox/session.py”, line 154, in get_status
return self._api_request(
^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/smartbox/session.py”, line 108, in _api_request
response.raise_for_status()
File “/usr/local/lib/python3.11/site-packages/requests/models.py”, line 1021, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://api-haverland.helki.com/api/v2/devs/xxxxxxxxxxx/htr/2/status

i checked the token and still show the same token i have in homeassistant

my yaml is:

smartbox:
accounts:

  • api_name: api-haverland
    username: [email protected]
    password: xxxx
    device_ids:
    • c8xxxxxxxxxxxxxxxx
      basic_auth_creds: NTU2ZDxxxxxxxxxxxxxxxxxxxxxxxxx==

can someone help me??

thanks in advanced

1 Like

Has anybody figured out how to get a Lucht LHZ auth token? They don’t seem to have a web interface, so I can’t use chrome web inspector; somebody mentioned using HttpCanary to inspect traffic from the android app, but it appears that HttpCanary went through a whole rewrite/rebranding thing and the android version no longer exists…

You can try logging in with this website.
https://ttiapp.technotherm.com/#/signIn

You should be able to get the auth token from there

Weirdly that’s using the same API endpoint, but my username/password won’t let me log into that website (and from the command line, my username/password combined with the token from that site also fails). Going by the logo I’m guessing that Lucht LHZ and Technotherm are different brands of the same company? Maybe different brands have different tokens and different user-account databases, despite the same “api-lhz” server?

I’ve also been trying to MITM the LHZ android app with mitmproxy, but it won’t let me log in at all while the proxy is active (even while other apps work fine and I can see their HTTPS traffic) - I guess it’s doing some sort of certificate-pinning? :sob:

I have LHZ radiators and just use the TTI radiator from the app store. You will need to setup your controller from scratch but the rest should work after that. You can then use that login to get the auth key.

You could try logging in through this site also

Success, thank you so much for the hints!

Some extra information which might be useful to anyone else in the same situation:

  • I needed to not only stop using the LHZ app, but actively go in and delete the device (otherwise I got a “device already in use” error from the Technotherm app)
  • I use a <myname>+<servicename>@mydomain.com email filtering scheme - from the command line, I needed to replace the + with %2B
  • When I deleted the smartbox from LHZ and added it to Technotherm, all my radiators and schedules were already configured, so that’s nice

so I can now control my radiators using the Technotherm app, and the technotherm website; and the technotherm website has a token which I can take and plug into the home assistant config, and now everything shows up \o/

Hi All,
I have LHZ Smart Box controller and I tried to follow the full procedure, I got the Auth token the device id apparently correct but I am getting this message in the log:
2023-10-30 18:50:50.947 ERROR (MainThread) [custom_components.smartbox] Configured device zzz was not found

The device id seems correct, can you please point me if it is a problem of authentication or device id?
I can connect to device from both app and web app no problems via Technotherm.

See below config

smartbox:
  accounts:
  - api_name: api-lhz
    username: [email protected]
    password: yyy
    device_ids:
    - zzz
  basic_auth_creds: (not including 'Basic' at start and '==' at end)

Thanks in advance for any clue.

Edit:
increasing the level of logging I get this

2023-10-31 22:05:02.045 INFO (MainThread) [custom_components.smartbox] Setting up Smartbox integration v1.0.0 (using smartbox v1.0.0)
2023-10-31 22:05:02.045 DEBUG (MainThread) [custom_components.smartbox] accounts: [{'api_name': 'api-lhz', 'username': '[email protected]', 'password': 'yyy', 'device_ids': ['zzzzzzz'], 'session_backoff_factor': 0.1, 'session_retry_attempts': 8, 'socket_backoff_factor': 0.1, 'socket_reconnect_attempts': 3}]
2023-10-31 22:05:02.046 DEBUG (MainThread) [custom_components.smartbox] basic_auth_creds: xyxyxyxyxyxy
2023-10-31 22:05:02.046 INFO (MainThread) [custom_components.smartbox.model] Creating Smartbox session for api-lhz(session_retry_attempts=8, session_backoff_factor=0.1, socket_reconnect_attempts=3, socket_backoff_factor=0.1)
2023-10-31 22:05:02.989 DEBUG (SyncWorker_3) [smartbox.session] Authenticated session (password), access_token=...
2023-10-31 22:05:08.036 ERROR (MainThread) [custom_components.smartbox] Configured device zzzzzz was not found
2023-10-31 22:05:08.036 DEBUG (MainThread) [custom_components.smartbox] Finished setting up Smartbox integration

so it seems that connection happens but still no device is found.

Tried also to delete and add again the device in Technotherm app with no success.

Interested in how you got this to work. I can get the radiators to show up in HA but no data. Do you have the python script you can share to get this working and idiots guide to where to place the file. Thanks in advance

Hi shish,
did you reset the controller as well and re add the radiators from scratch?

Thanks!

The controller as in the little box with the ethernet and radio? I don’t think I reset that part, but I may have forgotten doing so

I didn’t need to re-add the radiators at all - I unlinked the smartbox from one account and added it to a different account, and all my radiators showed up with their settings carried over

I am trying to configure the Smartbox with Elnur but there is no way. It gives me the following error, but my basic authentication credentials seem to be fine, since using the smartbox command line tool it detects all the accumulators. Does anyone know what the problem is?.

Logger: homeassistant.setup
Source: setup.py:288
First occurred: 13:59:13 (1 occurrences)
Last logged: 13:59:13

Error during setup of component smartbox
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/setup.py", line 288, in _async_setup_component
    result = await task
             ^^^^^^^^^^
  File "/config/custom_components/smartbox/__init__.py", line 93, in async_setup
    devices = await get_devices(
              ^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/smartbox/model.py", line 226, in get_devices
    devices = [
              ^
  File "/config/custom_components/smartbox/model.py", line 227, in <listcomp>
    await create_smartbox_device(
  File "/config/custom_components/smartbox/model.py", line 250, in create_smartbox_device
    await device.initialise_nodes(hass)
  File "/config/custom_components/smartbox/model.py", line 45, in initialise_nodes
    status = await hass.async_add_executor_job(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/smartbox/session.py", line 153, in get_status
    return self._api_request(
           ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/smartbox/session.py", line 107, in _api_request
    response.raise_for_status()
  File "/usr/local/lib/python3.11/site-packages/requests/models.py", line 1021, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://api-elnur.helki.com/api/v2/devs/XXXXXXXXXXXX/pmo/4/status