and happy to join the HA community with my first post . I am trying to integrate my M-TEC heatpump (it uses KEBA KeEnergy software) to HA using the yaml config files. (infos found here: Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome)
So I succesfully integrated the Heatpump via modbus, but I am struggeling with two points:
I created an input selector Heatpump Mode to select the functioning mode of my heatpump. I am then passing the selected mode to the heatpump using the automation and this works perfectly set_heatpump_mode.
However, the second part get_heatpump_mode, that updates the input selector when the mode on the heatpump was changed manually, is resisting my beginner skills.
I keep getting an error message: Invalid config for [automation]: must contain at least one of below, above.. Got OrderedDict. I searched for hours, tried changing the automations.yml without success …
My heatpump, uses a user defined offset (Heatpump_offsetRoomTemp) that ranges from -2.5 to 2.5 that helps to fine tune the temperature. This offset is added to the Heatpump_normalSetTempTest or the Heatpump_reducedSetTemp – depending on the selected mode (Day/Night) – to achieve the final temperature Heatpump_SetpointTemperature.
My issue is that i tried to integrated it as a HVAC as for the two other but it does not let me input a negative value? Any idea on how to achieve this?
In case someone is searching, I did a beginner mistake in the automation by adding unnecessary quotes, I also cast the value of the sensor to an int.
Automation get_heatpump_mode should be written as this:
I finally solved my issue. I tried to create the manual temperature offset using a climate entity, but this was not possible. Although, it is maybe possible to create a new climate entity in Python to handle this specific use case…
So the easiest solution was for me just to create a new input_number helper called Normal Temp. I then used it again in an automation and write the input state to the modbus register.
So here my M-TEC (KEBA) heatpump dashboard with on top the mode selector and below the manual offset:
Hi, thanks for you code,
I have one issue, I can change the value of sensor.heatpump_operatingmode but the change is not send to M-TEC (KEBA) heatpump dashboard . Do you know have I can fix this
Oops, I see that I am missing the first lines of the code on the automation.
I am editing it right now, and you can then just copy and paste it again.
Let me know if it is still not working. BTW please note that there is a small delay between sending the command and the update (usually a few seconds).
Hi @carmanber
I want to thank you very much for the configuration here! I also got a M-TEC heatpump and I’m new to HA.
I’ve added the configuration and automation. Could you also share the dashboard you created?
Thanks, Jo
Aso, you will see that the interface is a bit slow (the way the automation/modbus works). I am thinking whether to develop smtg specific, I will keep you posted if so.
it might be difficult to help you without further information. It really depends on your model and manufacturer. You might connect it via Ethernet or WiF, Modbus or maybe even propetary protocol. You should check your instruction manual.
In that case you just need to connect your heatpump via ethernet (of wifi if you bought the module), use the code above in your configuration.yml. Just be careful about your device IP Adress.
Let me know if there is any issue, but it should be pretty straight forward. If you do not know about configuration yaml , you can find all the info in the official documentation: https://www.home-assistant.io/docs/configuration/
I used the code from the first post. However, this does not lead to success, the following errors are listed:
Invalid config for ‘modbus’ at configuration.yaml, line 143: Heatpump_normalSetTempTest: count illegal with data_type: uint16 ‘modbus->0->climates->0’, got {‘name’: ‘Heatpump_normalSetTempTest’, ‘data_type’: ‘uint16’, ‘slave’: 1, ‘address’: 4, ‘input_type’: ‘holding’, ‘count’: 1, ‘max_temp’: 30, ‘min_temp’: 10, ‘offset’: 0, ‘precision’: 1, ‘scale’: 0.1, ‘target_temp_register’: 4, ‘temp_step’: 1, ‘temperature_unit’: ‘C’}
Invalid config for ‘modbus’ at configuration.yaml, line 157: Heatpump_reducedSetTemp: count illegal with data_type: uint16 ‘modbus->0->climates->1’, got {‘name’: ‘Heatpump_reducedSetTemp’, ‘data_type’: ‘uint16’, ‘slave’: 1, ‘address’: 5, ‘input_type’: ‘holding’, ‘count’: 1, ‘max_temp’: 30, ‘min_temp’: 10, ‘offset’: 0, ‘precision’: 1, ‘scale’: 0.1, ‘target_temp_register’: 5, ‘temp_step’: 1, ‘temperature_unit’: ‘C’}
I’m having a similar issue with the configuration.
I copied the code you provided but for an issue that Modbus was unable to start. Also tried with the code from Nicolaj
and in this configuration, I get the Modbus to run but the data is not received.
Thanks in advance sir. I need your assistance. I have just used your code exactly with adding my IP which is 192.168.255.xxx. It’s is giving unavailable error in all the entities.
Hi you IP address is kinda of strange 255 is normally a restricted IP used for broadcasting. How did you setup the IP address of your heat pump ? Try changing it via DHCP or diretly in your Heatpump menu. You might need to review your global network setting depending on your subnet mask.