Integration of heatpump „iDM Terra ML Complete HGL“

mine was installed in the beginning of 2017 and as far as i can remember there was no update of the fw in the meantime. my version:

image

as far as i know activating of modbus by idm support is mandatory for using modbus tcp with the idm heatpump and yes i’ve done this when my pv got installed in spring this year.

IDM has updated my heatpump to allow for ModBus connectivity. I can read values now on 4122. Over the course of the weekend and if the weather permits, I will try to tinker with the other register to set the PV surplus.

Any updates on your end, @BombusAlpinus? Did the update happen? Do You now make use of the PV surplus?

unfortunately not. technician had an emergency and we switched the maintenance to 16th of november.

Hi All,
I just managed to solve my problem recently:

Problem was to get the water source pump to start and stop via modbus… in the docu there were no hints which message to send to the modbus register…

Solution was “1” for start and “-1” for stop :slight_smile: :slight_smile: sounds quite easy :slight_smile:
here my current working scripts.yaml:

#########################################

idm_start_brunnenpumpe:
  alias: idm_start_brunnenpumpe
  sequence:
  - service: modbus.write_register
    data:
      hub: idm_wp
      unit: 1
      address: 1714
    data_template:
      value: >
         [ {{ unpack(pack("1" |float, ">f"), ">B", offset=2) }}, 
           {{ unpack(pack("1" |float, ">f"), ">B") }} ]
  mode: single
  
idm_stop_brunnenpumpe:
  alias: idm_stop_brunnenpumpe
  sequence:
  - service: modbus.write_register
    data:
      hub: idm_wp
      unit: 1
      address: 1714
    data_template:
      value: >
         [ {{ unpack(pack("-1" |float, ">f"), ">B", offset=2) }}, 
           {{ unpack(pack("-1" |float, ">f"), ">B") }} ]
  mode: single
  

Thanks, @yeti0815, that’s interesting. I have managed to instruct my IDM heatpump to use PV surplus, too. For now at least by the help of a similar script. But, my plan is to automate this either through HA or alternatives (evcc, openWB).

I see that You’re using a {{ unpack(pack("-1" |float, ">f"), ">B", offset=2) }}, {{ unpack(pack("-1" |float, ">f"), ">B") }} in order to set the array, which my scripts currently are setting with hard-coded values, which in turn were manually determined by the help of some online calculators.

Assuming that this is working the same way (conversion of decimal value to a hex-based float32) is there no simpler way to determine the array’s tuples or the array itself?

Hi to all IDM users,
I created a post with quite detailed infos here:

I bet there is something interesting for you.
Bernd.

Hallo BombusAlpinus,
ist es möglich, dass du die config.yaml files zur Verfügung stellst. Irgendwie komme ich nicht weiter… Danke im Voraus.
Mfg

I do not now if this is the best way to do it, but I would like to come back to the origin of this threat, the module developed by @Galdan that retrieves the info of the IDM heatpumps using the cloud API.

First of all, thanks a lot to Tom for taking the time to code the module and share it with all of us. I have just get my new IDM iPump A heatpump installed and I have been able to install and have the module retrieving info from my heatpump without too many problems.

I have a very specific question. I would like to retrieve also the info about the “Own consumption” value of the heatpump. I know that the value is available, because I can see it in the IDMSmartNavigator application…

(Sorry, my application is in Spanish)

My goal is to be able to include the consumption of the heatpump in the energy dashboard of Home Assistant as an individual entity, now it is mixed in the “Untracked comsumption” category.

Someone can help me to be able to modify the module in order to retrieve also this data?

Thanks a lot in advance.

Jorge.

Hi @Jtome,

I believe You want to review the Modbus integration for this. Your system should be available locally (if it is not already, then IDM will surely enable this for You, just ask them via e-mail).

Once You‘re there, You need to create a sensor matching the so-called Modbus register. Then You can simply select the sensor in the Energy dashboard‘s configuration.

Let me know once the Modbus integration is available, I can help with subsequent steps.

Best regards

Hello @dubtec, thanks for the answer.

I was thinking in to use the REST API, I feel more confortable with that, but seems that I will have to give an oportunity to the Modbus integration :slight_smile:

Is there any way I can check if it is already enabled in my heatpump? In the menu (no expert mode) there is no any reference to the protocol. I have checked that using the mobile app I can connect locally to the heatpump, but I though that that was a Rest API connection, perhaps I was wrong.

Jorge

Hi @Jtome,

I believe that IDM does not offer a REST API - which would have been great without a doubt. But of course, things might be different for Your particular heatpump.

AFAIK, there’s no way to see if the Modbus connection is enabled in the Navigator or the app, but You will know that it works, if You configure the integration. Mine looks like this:

modbus:
  - name: 01-06-Waermepumpe
    type: tcp
    host: !secret waermepumpe_ip # the IP of the heatpump
    port: !secret waermepumpe_modbus_port #in my case this is 502
    sensors:
      - name: Wärmepumpe Aktuelle Leistungsaufnahme
        unique_id: 01-06-Waermepumpe-AktuelleLeistungsaufnahme
        slave: 1
        scale: 1
        offset: 0
        address: 4122
        data_type: float32
        scan_interval: 30
        precision: 1
        swap: word
        unit_of_measurement: kW
        device_class: power

This is the sensor that measures the current power consumption. It is configured against the heatpump’s Modbus register 4122, which may be different with Yours so I recommend researching those. Or, simply ask IDM for the overview of registers matching your product - they are usually quick and helpful with such things.

PS: I would recommend to try with the values from Your screenshot. So 281 could be the register that You‘re looking for.

Thanks @dubtec . I have made a first try and seems that nothing is listening in the port 502 of my heatpump. Perhaps it is in a different port, or Modbus is not enabled. I have already get in contact with the company that has made the installation in order to ask to check if Modbus is enabled, or enable it if it is not.

Thanks for your help.

Jorge

Meanwhile I have seen that in my heatpump (IDM iPump A) it is possible to set a PIN code that enables the local access to the heatpump. After defining that numeric PIN code I have been able to access locally the heatpump using the Android mobile app, and also I have seen that the heatpump is exposing a web service in port 80.

I have tried to access that service with a browser and…

And after introducing the PIN code…

Voilà! I am in via web interface. Perhaps there is a REST API after all.

I’m still waiting for the installer to confirm me that the Modbus protocol is enabled. They have said me that they do not share the expert code with the clients in order to avoid problems.

Jorge

Well, I wouldn’t want to bet my money on that. But would be happy if it does apply to you.

IDM support will very probably be able to access your heatpump, as you’re using their cloud service and log in as technician to enable Modbus. In most cases they are way quicker than any local service / installation company. Try it, you’ll like it… :wink:
mailto:[email protected]

@Jtome I am curious: Are there any updates on your integration?

Yes! I have good news. After the tech service (local one, not IDM) enable the Modbus protocol I have been able to read the “Own consumption” variable without problems with the config you have suggested.

modbus:
  - name: modbus2_IDM_iPump_A
    type: tcp
    host: 192.168.2.51
    port: 502
    sensors:
      - name: IDM Heatpump. Potencia
        unique_id: idm_heatpump_potencia
        slave: 1
        scale: 1
        offset: 0
        address: 4122
        data_type: float32
        scan_interval: 30
        precision: 1
        swap: word
        unit_of_measurement: kW
        device_class: power

A quick combination with PowerCalc and I am already able to follow the hourly energy consumption of the heatpump. Thanks a lot for your help.

What I have not been able to get is the documentation about other info available via Modbus, or how to read any other of that variables. Any indication, or documentation about that will be very helpfull for me.

In any case, thanks again for your help.

That’s great to hear!

In another forum I’ve found documentation for Navigator 2.0, which I believe You’re having, but it is in German. I’m not aware of an English version, and recommend to check with IDM directly in case your preferred translation tool doesn’t help. “4.1. Parameterliste” lists all registers one can use:
https://www.photovoltaikforum.com/core/attachment/113433-ma-de-812170-modbus-tcp-navigator-2-0-pdf/

The table in that document is exactly what I need to know all the info available via Modbus, thanks again :smiley:

I think that there is not an English version, I will try to translate at least that table.

Hi Jtome,
Could you explain how you managed to accurately track hourly energy consumption in HA? I’ve been trying to achieve this using helpers, but the results aren’t as expected. I suspect the issue may be related to the unit of measurement—the data is in kW instead of kWh. The helper is currently outputting kW, which doesn’t seem to align with the Electrical Power Consumption values displayed in the IDM UI in kWh.

Thanks in advance.

Hello @bagin79

I’m not an expert in electrycity (indeed in Spanish) but as far as I know kW is a meassure of power, and kWh is a meassure of energy, totally different animals.

You want to track energy (kWh) because you pay for consumed energy (not by power used). There is ways to calculate energy from power and time. I have several escenarios.

There is devices that provide energy sensors (in kWh), nothing to do with these ones, you can add this sensors to the HA energy dashboard directly.

There are others devices that only inform of the instant power (kW), for calculate the energy consumed by this devices I am using a custom component, Powercalc. I think that this one is the answer to the problem you are facing.

Also I use the component Balance neto to calculate the hourly net balance, but perhaps this is specific only for Spain because of the way the compensation process work here (hourly based).

I hope this helps.

Jorge.