eQ-3 MAX! integration

Yes there are error Messages. But in my opinion they are not correct, because i only have one Cube where all thermostats are connected to and changing the others is working. So connection between Cube and HA seem to be ok. Also I get INformation about the Status the “faulty” thermostats have if i change e.g. the temperature directly on the thermostat.

This is from the logs:

Dieser Fehler wurde von einer benutzerdefinierten Integration verursacht

Logger: custom_components.maxcube.maxcube.commander
Source: custom_components/maxcube/maxcube/commander.py:85
Integration: eQ-3 MAX!
First occurred: 14. November 2023 um 18:48:42 (46 occurrences)
Last logged: 17:36:32

Error sending radio message to Max! Cube: Deadline send-radio-msg[15/30]:cmd-reply[0/2]
Error sending radio message to Max! Cube: Deadline send-radio-msg[9.98/30]:cmd-reply[0/2]
Error sending radio message to Max! Cube: Deadline send-radio-msg[4.97/30]:cmd-reply[0/2]
Error sending radio message to Max! Cube: timed out
Error sending radio message to Max! Cube: Deadline send-radio-msg[0/30]:cmd-reply[0/2]

your log is about command not being sent to the cube itself, so not linked with your structure. it’s all about timeout, quite strange if in the meantime commands to other devices are working
and you also have A LOT of errors, i’d suggest to check connection with the cube before…

Sorry but not sure how I should check this. As written connection is absolut OK and is working for all other thermostats without any delay.
Also as written a change on the thermostat itself is directly shown in HA.
So I can not understand where I could have a connection issue between Cube and HA.
BTW: Both (HA and Cube) are connected to the same “flat” LAN without any special things (Firewalls etc) in between.
Also of course I already tried several restarts of Cube as well as HA but always with the same result. The “solo” thermostats are working without any problems but the three linked to the same room have the problem.

I think i will wait until the room thermostat arrives and test with that one.

EDIT:
I just had the idea to seperate one of the “problem thermostats” from the others. So i disconnected the cube from HA, opened the old MAX Software and put one of these thermostats into a seperate room. Than disconnected the MAX Software and connect again via HA.
Result:
The one thermostat now also works but the other two still bundled to one room still are not working.

Just to make the picture complete i added a second thermostat to the new room and from than on the error in HA was there again. Shifting back one of the thermostats and leaving only one in the room and it worked again.

So for me its relativly sure now that the problem is to have more than one thermostat in one room.

Interesting. I have rooms with more than One radiator thermostats, and It work, bit i also have Wall thermostat and here Is where i send commands :slight_smile:
Ill try this evening to send a command tò One of the radiator, since the errore you reported Is specifically on the connection so its really strange…
Otherwise well try tò debug the command itself :slight_smile:
(Sorry for typos coming from my italian auto correction keyboard lol)

Just tried remotely. The command was successful and It changed the temperature to all the radiator thermostats and also on the Wall thermostat in the room.
Ill try this evening to publish update scripts (i had tò fix another couple of bugs in the official integration) and suggest a modification tò use room id, lets see

Hello,
just posted some fixes to the code

those are needed since the official integration (!!!) is not working with service climate.set_temperature

Now, for your problem, i’d try to check what the set_temperature_mode is transmitting when you try to change the value.

Please try enabling debugging or, cleares, just turn the level of logger to “error” in:
maxcube/cube.py line 331

Thanks for all your help!
I copied the new files and changed the logger level.
Unfortunatley now it does also not work on the thermostates it worked before…

Here are the logs:

Logger: custom_components.maxcube.maxcube.cube
Source: custom_components/maxcube/maxcube/cube.py:331
Integration: eQ-3 MAX!
First occurred: 20:35:24 (4 occurrences)
Last logged: 20:35:55

Setting temperature 17.0 and mode 0 on device 0AF1A5! Room 01 - starting device mode 0 (command: 0004400000000AF1A50122)
Setting temperature 20.0 and mode 0 on device 0AF5FA! Room 05 - starting device mode 0 (command: 0004400000000AF5FA0528)
Setting temperature 17.5 and mode 0 on device 0AF7E8! Room 03 - starting device mode 0 (command: 0004400000000AF7E80323)

Logger: custom_components.maxcube.maxcube.commander
Source: custom_components/maxcube/maxcube/commander.py:85
Integration: eQ-3 MAX!
First occurred: 20:35:27 (4 occurrences)
Last logged: 20:35:57

* Error sending radio message to Max! Cube: Deadline send-radio-msg[0/2]:cmd-reply[0/2]
* Error sending radio message to Max! Cube: timed out

in the maxcube/commander.py i shorted the timeouts because for me they were far too long.
You still get connection error an timeouts, i’d suggest changing them back to the old value (lines 16-20) but still, those are cube connections errors!

if one of rooms 1, 3 or 5 is the room where you have more than one radiator thermostat, i can’t see anything wrong, but in case you can try sengin only the room ID (e.g. 01 for the first line) and six zeros in place of the rf id (so “000000” in place of “0AF1A5”)

Seems i was little to fast after reboot. Now it works more or less. Interestingly now if i change te temperature of one of the working thermostats it changes shortly in HA and directly on ther thermostat, but after 1 second it jumps back to the old value in HA while on the thermostat itself it is still the new set value.
Here are some new logs.
Room 5 is working, Room 4 is the one that is not working:

Setting temperature 17.0 and mode 0 on device 0AF5FA! Room 05 - starting device mode 0 (command: 0004400000000AF5FA0522)
Setting temperature 21.5 and mode 0 on device 0AF544! Room 04 - starting device mode 0 (command: 0004400000000AF544042B)
Setting temperature 21.0 and mode 0 on device 0AF544! Room 04 - starting device mode 0 (command: 0004400000000AF544042A)
Setting temperature 23.0 and mode 0 on device 0AF0D6! Room 04 - starting device mode 0 (command: 0004400000000AF0D6042E)
Setting temperature 24.0 and mode 0 on device 0AF5FA! Room 05 - starting device mode 0 (command: 0004400000000AF5FA0530)

yes because the integration updates values very badly, but this is just delayed, if you wait 30 seconds it goes to the right value.
what about your multi-device room? is it working? i see nothing wrong in the log, the command is properly formatted

No. Seems like Room 4 is the one with multiple thermostats and that one is still not working. And if i assign another thermostat to room 5 it is also not working. So (in my case) it is not depending on the room itself but on the fact that it has more than one thermostat.
Maybe on the weekend i will try to make a complete reset on the cube, but not sure if i can find time to do that and reconnect and reconfigure all the thermostats…

i’d also try sending the command without the RF address, as i told you before. The protocol is ugly, but it’s quite open to creativity :smiley: it accepts a lot of different combination (sadly not for what concerns preset temperatures…)
If you reset the cube, please remember also to reset single devices (i had a problem i couldn’t fix resetting the cube, but got fixed resetting everything)

So… after the Wall thermostat arrived yesterday i tested it but did not work either.
So I deleted all Devices in the cube, did a reset of the cube and all devices and configured everything new.
And now its working!
Now it does not matter if I set the temperature for one of the thermostat or the wall thermostat, all is working and transmitted to the others.
The only thing is that stil when i change the value in HA it jumps back to the old value and after some time (seems to be your mentionied 30 seconds) it than shows the new value. Thats little bit confusing. As far as i understood this is because of your change of the timeouts. So its the same for you or is this still an issue only I have?
Nevertheless: Thank you again very much for your help and work on this integration!

Just to be complete here my latest logs. But as far as I understood even if it states “Error” it meens that al is fine?

Logger: custom_components.maxcube.maxcube.cube
Source: custom_components/maxcube/maxcube/cube.py:331
Integration: eQ-3 MAX!
First occurred: 17. November 2023 um 19:50:57 (20 occurrences)
Last logged: 09:52:00

Setting temperature 20.0 and mode 0 on device 0AF1A5! Room 01 - starting device mode 0 (command: 0004400000000AF1A50128)
Setting temperature 19.5 and mode 0 on device 0AF5FA! Room 02 - starting device mode 0 (command: 0004400000000AF5FA0227)
Setting temperature 20.0 and mode 0 on device 0AF544! Room 02 - starting device mode 0 (command: 0004400000000AF5440228)
Setting temperature 19.0 and mode 0 on device 0AF0D6! Room 02 - starting device mode 0 (command: 0004400000000AF0D60226)
Setting temperature 17.0 and mode 0 on device 0AF544! Room 02 - starting device mode 0 (command: 0004400000000AF5440222)

yes the reset of all devices is always a good solution lol
by points:

  • the update of values is another problem of the original integration, because entities (like climate) are updated by HA every 30 seconds if you do not implement a coordinator in the integration, and a coordinator there is not :slight_smile: So yes, it’s the same for me, but that’s not because of my modifications… please try my last code, it should update values of climate entities almost instantly (2 seconds, that empirically seems the time the cube needs to save new values). Now my user experience is quite good
  • your log has those lines because, if you remember, i asked you to change the level of the log reported, just because it was easier. If you update the code, it’s already back to debug. Otherwise, you just need to review that little line of text…

at the end of the day, this old system (i took it as soon as it came out, it’s around 10 years old) seems still quite good ald also working nicely with HA. It would be nice to rewrite the whole code with asyncio and a coordinator, but i’m not good enough to do that :slight_smile:

Please let me know if you have any more problem. Have you seen you also have a “cube” entity that changes all the rooms at once? :slight_smile:

Just wanted to be sure regarding this Error because i wondered why it is not “informational” or something like that.
You are right, changing it back to debug or uploading your new files lead to having no more entries in HA Logs, so looks pretty good now.

Regarding the change of temperature:
The sending to the device is working fine, its just the value shown in HA which is wrong for these 30 seconds. Not sure if i got you right that this should be fixed with your latest code or if this could only be fixed via this “coordinator”?

And yes I absolutely agree that (now with your integration) the old EQ3 Max System is working very well with HA. I just bought them last year because many people now want to get rid of them because the termination of the cloud service.
For me its more or less enough to have a system with time schedules and in some special situations to be able to change the temperature for one room remotely if i come home earlier.

it is, more or less, fixed, since the climate entities calls an update of the info 2 seconds after a change of mode or temperature.
Please remember to leave a short time in scan_interval, otherwise it’s useless…
i have this:

maxcube:
  gateways:
    - host: cube.lan
      scan_interval: 1

try and please let me know if this is ok for you :slight_smile:
without a coordinator we are not able to get climate entities to update faster than once every 30 seconds…

1 Like

Great, with this change in the configuration.yaml its working perfect now for me.
Sorry but i was not aware that there is the possibility to change this interval there.

One question thats maybe not directly caused by your integration but maybe you have an idea if that would be easy to fix?
I wanted to use the corrent_temperature of the thermostats as value in a card via template. But creating this template gave back an error and as far as i understood thats because the value is not stored as numeric value but as string:

‘Sensor None has device class ‘temperature’, state class ‘measurement’ unit ‘°C’ and suggested precision ‘None’ thus indicating it has a numeric value; however, it has the non-numeric value: ‘“21.0”’ (<class ‘str’>)’

Is this correct?

i get a true with this

{{ is_number(state_attr('climate.camera_termostato_camera', 'current_temperature')) }}

would you post your code?

Thanks again very much. This worked and comparing your code with mine I recognized I used started and ended with " and that seemed to cause this issue.
As I only use examples I can find and do not really understand what I’m doing I did not understand that these " are wrong in this case…

Thank you for this great integration!
With this I managed to connect to my MaxCube. #all binary sensors (window contacts, battery state) are displayed.
But unfortunately the climate entities are not integrated. I get the following error message:

Error while setting up maxcube platform for climate
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 359, in _async_setup_platform
    await asyncio.shield(task)
  File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/maxcube/climate.py", line 80, in setup_platform
    devices.append(MaxCubeClimate(handler, handler.cube))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/maxcube/climate.py", line 343, in __init__
    self._device.eco_temperature = max(self._device.eco_temperature, device.eco_temperature)
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: '>' not supported between instances of 'NoneType' and 'float'

I firmly believe that the code of the integration is correct. That’s why I’m surprised by the message and I don’t really know what to do with it.
Any idea?
I would be grateful for a little help