This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

"Connect" modbus devices
#1
Hey together,

i finally made it and can read values from my modbus devices (thank you Daniel). I thought that if i connect both devices with one object that the value will be written to the other modbus device. In particular i am talking about a PV inverter and a heat pump. I want to send the values of the current DC production and und current DC Export to the heat pump. But somehow it does not work. Unfortunately i didn't find any information in the forum. 
The steps: i read the values of the inverter and write it to an object 12/1/1 and 12/1/2 (write on bus enabled)
I added the heatpump and connected the datafields to 12/1/1 and 12/1/2

Below i send you the Profil for the heatpump.
Code:
{
    "manufacturer": "IDM",
    "description": "Heat Pump",
    "mapping": [
      {
        "name": "Aussentemperatur",
        "bus_datatype": "float32",
        "datatype": "float32",
        "type": "inputregister",
        "address": 1000,
        "units": "°C",
        "value_multiplier":1,
        "writable": true,
        "read_swap": "n"
      },
      {
        "name": "Aktueller PV Überschuss",
        "bus_datatype": "float32",
        "datatype": "float32",
        "type": "register",
        "address": 74,
        "units": "kW",
        "value_multiplier":1,
        "writable": 1,
        "read_swap": "n"
      },
      {
        "name": "Aktuelle PV Produktion",
        "bus_datatype": "float32",
        "datatype": "float32",
        "type": "register",
        "address": 78,
        "units": "kW",
        "value_multiplier":1,
        "writable": 1,
        "read_swap": "n"
      },
      {
        "name": "Aktuelle Leistungsaufnahme",
        "bus_datatype": "float32",
        "datatype": "float32",
        "type": "inputregister",
        "address": 4122,
        "units": "kW",
        "value_multiplier":1,
        "read_swap": "n"
       
      }
     
     
    ]
  }
is the procedure wrong i should have done it with a script? (German manual)
Can somebody help me out with this? i have seen several threads about connection the idm heatpump with iobroker but i didn't see a difference to my parameters.

thx in advance
Reply
#2
1000 is read only so you cannot write to it. 74 and 78 can be written. Can you read them correctly? By looking on the gap between registers I'm guessing it maybe int64 with a multiplier.
Did you try writing to it manually?
------------------------------
Ctrl+F5
Reply
#3
Also try a different read_swap mode (w). Check that the read value of register 1000 is correct.
Reply
#4
(05.01.2024, 11:56)admin Wrote: Also try a different read_swap mode (w). Check that the read value of register 1000 is correct.

I can read the temperatur vom register 1000 with this settings. My problem is to write to 78 and 74. 
So in general the things i have done is right?
Reply
#5
In general yes but the DPT might be different for 74/78 can you read it correctly?
------------------------------
Ctrl+F5
Reply
#6
(05.01.2024, 12:41)Daniel Wrote: In general yes but the DPT might be different for 74/78 can you read it correctly?

The heat pump has no internal value for PV production. If i read it the value is always 0 which is probably right. i can read 4122 with input register, float32 and read swap n.
And i somewhere have read that 74 and 78 need holding register. which makes sense since you can not write to inputregister right?
Reply
#7
Based on the standard yes you should not write to inputregisters but manufactures not always fallow the standard Smile
I don't know DE but seems the description below the table says it is float32.
Try different settings and if nothing helps contact manufacture to clearly describe which modbus function you should use for reading and writing and the format.
------------------------------
Ctrl+F5
Reply
#8
Hey guys.

Unfortunatlly i couldn't reach anybody at the manufacturer at the moment. I tried several settings but with noch luck. But i found something at the loxone library for that heat pump and they say this should work. 
I post you a snippet maybe you guys recognize the mistake i made.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<Modbus Title="IDM Heat Pump" Comment="" Channel="1">
    <Info templateType="7" minVersion="12040628"/>
    <ModbusCmd Title="Überschuss" Comment="" ModbusAddress="74" ModbusCmd="16" ModbusDataType="36" ModbusPollingCycle="60" Unit="&lt;v.1&gt; kW" Analog="true" Sensor="false"/>
    <ModbusCmd Title="Überschuss" Comment="" ModbusAddress="74" ModbusCmd="4" ModbusDataType="36" ModbusPollingCycle="60" Unit="&lt;v.1&gt; kW" Analog="true" Sensor="true"/>
    <ModbusCmd Title="Leistung E-Heizstab" Comment="" ModbusAddress="76" ModbusCmd="16" ModbusDataType="36" ModbusPollingCycle="60" Unit="&lt;v.1&gt; kW" Analog="true" Sensor="false"/>
    <ModbusCmd Title="Leistung E-Heizstab" Comment="" ModbusAddress="76" ModbusCmd="4" ModbusDataType="36" ModbusPollingCycle="60" Unit="&lt;v.1&gt; kW" Analog="true" Sensor="true"/>
    <ModbusCmd Title="PV Leistung" Comment="" ModbusAddress="78" ModbusCmd="16" ModbusDataType="36" ModbusPollingCycle="60" Unit="&lt;v.1&gt; kW" Analog="true" Sensor="false"/>
    <ModbusCmd Title="PV Leistung" Comment="" ModbusAddress="78" ModbusCmd="4" ModbusDataType="36" ModbusPollingCycle="60" Unit="&lt;v.1&gt; kW" Analog="true" Sensor="true"/>
 For adress
Code:
  {
        "name": "Total DC Power",
        "bus_datatype": "float32",
        "datatype": "uint32",
        "type": "inputregister",
        "address": 5016,
        "units": "kW",
        "value_multiplier": 0.001,
        "read_swap": "n"
    },
78 i read the values like this:
Reply


Forum Jump: