How to write modbus holding register (PV and heatpump)

Hi Stefan,

i can read and write to the heatpump but I do not figured out to start the heatpump when necessary. I can change the registers but the heatpump didnt start so far. I also contacted Heliotherm but still not receiver a answer for now.
I can paste you my items, things, … if you want.

//Heliotherm Wärmepumpe 

Bridge modbus:tcp:Waermepumpe "Wärmepume" @ "Technikraum" [ 
    host="192.168.178.33",  
    port=502, 
    id=1
] { 
      
    //Input register // Read // 16 or 32 bits per register  
    //Read registers. Reading 37 registers, with index 10-60.
    Bridge poller Waermepumpe [ 
        start=10,
        length=37, 
        refresh=60000, 
        type="input" 
    ] {
        Thing data input10 "Wärmepume" @ "Technikraum"  [ readStart="10", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input11 "Wärmepume" @ "Technikraum"  [ readStart="11", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input12 "Wärmepume" @ "Technikraum"  [ readStart="12", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input13 "Wärmepume" @ "Technikraum"  [ readStart="13", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input14 "Wärmepume" @ "Technikraum"  [ readStart="14", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input15 "Wärmepume" @ "Technikraum"  [ readStart="15", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input16 "Wärmepume" @ "Technikraum"  [ readStart="16", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input17 "Wärmepume" @ "Technikraum"  [ readStart="17", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input18 "Wärmepume" @ "Technikraum"  [ readStart="18", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input19 "Wärmepume" @ "Technikraum"  [ readStart="19", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input20 "Wärmepume" @ "Technikraum"  [ readStart="20", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input21 "Wärmepume" @ "Technikraum"  [ readStart="21", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input22 "Wärmepume" @ "Technikraum"  [ readStart="22", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input23 "Wärmepume" @ "Technikraum"  [ readStart="23", readValueType="int16"]        
        Thing data input24 "Wärmepume" @ "Technikraum"  [ readStart="24", readValueType="int16"]
        Thing data input25 "Wärmepume" @ "Technikraum"  [ readStart="25", readValueType="int16"]
        Thing data input26 "Wärmepume" @ "Technikraum"  [ readStart="26", readValueType="int16"]
        Thing data input27 "Wärmepume" @ "Technikraum"  [ readStart="27", readValueType="int16"]
        Thing data input28 "Wärmepume" @ "Technikraum"  [ readStart="28", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input29 "Wärmepume" @ "Technikraum"  [ readStart="29", readValueType="int16"]
        Thing data input30 "Wärmepume" @ "Technikraum"  [ readStart="30", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input31 "Wärmepume" @ "Technikraum"  [ readStart="31", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input32 "Wärmepume" @ "Technikraum"  [ readStart="32", readValueType="int16"]
        Thing data input33 "Wärmepume" @ "Technikraum"  [ readStart="33", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input34 "Wärmepume" @ "Technikraum"  [ readStart="34", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input35 "Wärmepume" @ "Technikraum"  [ readStart="35", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input36 "Wärmepume" @ "Technikraum"  [ readStart="36", readValueType="int16", readTransform="JS(divide10.js)"]
        Thing data input37 "Wärmepume" @ "Technikraum"  [ readStart="37", readValueType="int16"]
        Thing data input38 "Wärmepume" @ "Technikraum"  [ readStart="38", readValueType="int16"]
        Thing data input39 "Wärmepume" @ "Technikraum"  [ readStart="39", readValueType="int16"]
        Thing data input40 "Wärmepume" @ "Technikraum"  [ readStart="40", readValueType="int16"]
        Thing data input41 "Wärmepume" @ "Technikraum"  [ readStart="41", readValueType="int16"]
        Thing data input42 "Wärmepume" @ "Technikraum"  [ readStart="42", readValueType="uint32"]
        Thing data input43 "Wärmepume" @ "Technikraum"  [ readStart="43", readValueType="uint32"]
        Thing data input44 "Wärmepume" @ "Technikraum"  [ readStart="44", readValueType="uint32"]
        Thing data input45 "Wärmepume" @ "Technikraum"  [ readStart="45", readValueType="uint32"]
        /*
        Thing data input60 "Wärmepume" @ "Technikraum"  [ readStart="60", readValueType="uint32", readTransform="JS(divide1000.js)"]
        
        Thing data input61 "Wärmepume" @ "Technikraum"  [ readStart="61", readValueType="uint32"]
        Thing data input62 "Wärmepume" @ "Technikraum"  [ readStart="62", readValueType="uint32"]
        Thing data input63 "Wärmepume" @ "Technikraum"  [ readStart="63", readValueType="uint32"]
        Thing data input64 "Wärmepume" @ "Technikraum"  [ readStart="64", readValueType="uint32"]
        Thing data input65 "Wärmepume" @ "Technikraum"  [ readStart="65", readValueType="uint32"]
        Thing data input66 "Wärmepume" @ "Technikraum"  [ readStart="66", readValueType="uint32"]
        Thing data input67 "Wärmepume" @ "Technikraum"  [ readStart="67", readValueType="uint32"]
        Thing data input68 "Wärmepume" @ "Technikraum"  [ readStart="68", readValueType="uint32"]
        Thing data input69 "Wärmepume" @ "Technikraum"  [ readStart="69", readValueType="uint32"]
        Thing data input70 "Wärmepume" @ "Technikraum"  [ readStart="70", readValueType="uint32"]
        Thing data input71 "Wärmepume" @ "Technikraum"  [ readStart="71", readValueType="uint32"]
        Thing data input72 "Wärmepume" @ "Technikraum"  [ readStart="72", readValueType="uint32"]
        Thing data input73 "Wärmepume" @ "Technikraum"  [ readStart="73", readValueType="uint32"]
        Thing data input74 "Wärmepume" @ "Technikraum"  [ readStart="74", readValueType="uint32"]
        Thing data input75 "Wärmepume" @ "Technikraum"  [ readStart="75", readValueType="uint32"]
        */

        }

    
    //Holding register // Read-write // 16 bits per register  
    //Read-write for holding registers. Reading 1 registers, with index 100-.
    Bridge poller Waermepumpe_RW [ 
        start=100,
        length=31, 
        refresh=60000, 
        type="holding" 
    ] {
        
            // Betriebsart 0 = Aus 1 = Auto 2 = Kühl. 3 = Sommer 4 = Dauer. 5 = Absenk. 6 = Urlaub 7 = Party 8 = Ausheizen 9 = EVU Sperre 10 = Hauptschalter aus
            Thing data holding100 "Wärmepume_RW" @ "Technikraum"  [ readStart="100", readValueType="uint16", writeStart="100", writeValueType="int16", writeType="holding" ]
            
            // 101 03, 06, 16 INT16 HKR Soll_Raum (Raumsolltemperatur) Einheit in 0,1°C 
            Thing data holding101 "Wärmepume_RW" @ "Technikraum"  [ readStart="101", readValueType="int16",readTransform="JS(divide10.js)", writeStart="101", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)"  ]
            
            // HKR Soll (Raumsolltemperatur) Einheit in 0,1°C 
            Thing data holding102 "Wärmepume_RW" @ "Technikraum"  [ readStart="102", readValueType="int16",readTransform="JS(divide10.js)", writeStart="102", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" ]
            
            // HKR Soll (Raumsolltemperatur) aktiv 0 oder 1 
            Thing data holding103 "Wärmepume_RW" @ "Technikraum"  [ readStart="103", readValueType="uint16", writeStart="103", writeValueType="int16", writeType="holding" ]
            
            // RLT min Kuehlen Einheit 0,1°C 
            Thing data holding104 "Wärmepume_RW" @ "Technikraum"  [ readStart="104", readValueType="int16",readTransform="JS(divide10.js)", writeStart="104", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" ]
            
            // WW Normaltemp. Einheit 0,1°C 
            Thing data holding105 "Wärmepume_RW" @ "Technikraum"  [ readStart="105", readValueType="int16",readTransform="JS(divide10.js)", writeStart="105", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" ]
            
            // WW Minimaltemp. Einheit 0,1°C 
            Thing data holding106 "Wärmepume_RW" @ "Technikraum"  [ readStart="106", readValueType="int16",readTransform="JS(divide10.js)", writeStart="106", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" ]
            
            // MKR1 Betriebsart Siehe Reg. 100 
            Thing data holding107 "Wärmepume_RW" @ "Technikraum"  [ readStart="107", readValueType="uint16", writeStart="107", writeValueType="int16", writeType="holding" ]

            // MKR1 Soll_Raum Einheit in 0,1°C 
            Thing data holding108 "Wärmepume_RW" @ "Technikraum"  [ readStart="108", readValueType="int16",readTransform="JS(divide10.js)", writeStart="108", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" ]
            
            // MKR1 Soll Einheit in 0,1°C 
            Thing data holding109 "Wärmepume_RW" @ "Technikraum"  [ readStart="109", readValueType="int16",readTransform="JS(divide10.js)", writeStart="109", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" ]
            
            // MKR1 Soll aktiv 0 oder 1 
            Thing data holding110 "Wärmepume_RW" @ "Technikraum"  [ readStart="110", readValueType="uint16", writeStart="110", writeValueType="int16", writeType="holding" ]
            
            // MKR1 Kuehlen RLT min. Einheit in 0,1°C 
            Thing data holding111 "Wärmepume_RW" @ "Technikraum"  [ readStart="111", readValueType="int16",readTransform="JS(divide10.js)", writeStart="111", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" ]
            
            // MKR2 Betriebsart Siehe Reg.100 
            Thing data holding112 "Wärmepume_RW" @ "Technikraum"  [ readStart="112", readValueType="uint16", writeStart="112", writeValueType="int16", writeType="holding" ]
            
            // MKR2 Soll_Raum Einheit in 0,1°C 
            Thing data holding113 "Wärmepume_RW" @ "Technikraum"  [ readStart="113", readValueType="int16",readTransform="JS(divide10.js)", writeStart="113", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" ]
            
            // MKR Soll Einheit in 0,1°C 
            Thing data holding114 "Wärmepume_RW" @ "Technikraum"  [ readStart="114", readValueType="int16",readTransform="JS(divide10.js)", writeStart="114", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)"]
            
            // MKR2 Soll aktiv 0 oder 1 
            Thing data holding115 "Wärmepume_RW" @ "Technikraum"  [ readStart="115", readValueType="uint16", writeStart="115", writeValueType="int16", writeType="holding" ]
            
            // MKR2 Kuehlen RLT min. Einheit in 0,1°C 
            Thing data holding116 "Wärmepume_RW" @ "Technikraum"  [ readStart="116", readValueType="int16",readTransform="JS(divide10.js)", writeStart="116", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" ]
            
            // PV Anf. 0 oder 1 (*1) 
            Thing data holding117 "Wärmepume_RW" @ "Technikraum"  [ readStart="117", readValueType="uint16", writeStart="117", writeValueType="int16", writeType="holding"]
            
            // Leistungsaufnahmevorgabe Einheit in W (*2) 
            Thing data holding125 "Wärmepume_RW" @ "Technikraum"  [ readStart="125", readValueType="uint16", writeStart="125", writeValueType="int16", writeType="holding"]
            
            // Verdichterdrehzahlvorgabe Einheit in ‰(*3), (*4) 
            Thing data holding126 "Wärmepume_RW" @ "Technikraum"  [ readStart="126", readValueType="int16",readTransform="JS(divide10.js)", writeStart="126", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" ]  // 126 darf nicht beschrieben werden
            
            // Ext. Anf 0 oder 1 
            Thing data holding127 "Wärmepume_RW" @ "Technikraum"  [ readStart="127", readValueType="uint16", writeStart="127", writeValueType="int16", writeType="holding" ]
            
            // Entstoeren 0 oder 1 
            Thing data holding128 "Wärmepume_RW" @ "Technikraum"  [ readStart="128", readValueType="uint16", writeStart="128", writeValueType="int16", writeType="holding" ]
            
            // Aussentemperatur Wert Einheit in 0,1°C
            Thing data holding129 "Wärmepume_RW" @ "Technikraum"  [ readStart="129", readValueType="int16",readTransform="JS(divide10.js)", writeStart="129", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" ]
            
            //Aussentemperatur aktiv 0 oder 1 
            Thing data holding130 "Wärmepume_RW" @ "Technikraum"  [ readStart="130", readValueType="uint16", writeStart="130", writeValueType="int16", writeType="holding" ]
            //Thing data holding131 "Wärmepume_RW" @ "Technikraum"  [ readStart="131", readValueType="int16",readTransform="JS(divide10.js)"/*, writeStart="131", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" */]
            //Thing data holding132 "Wärmepume_RW" @ "Technikraum"  [ readStart="132", readValueType="uint16"/*, writeStart="132", writeValueType="uint16", writeType="holding" */]
            //Thing data holding133 "Wärmepume_RW" @ "Technikraum"  [ readStart="133", readValueType="int16",readTransform="JS(divide10.js)"/*, writeStart="133", writeValueType="int16", writeType="holding", writeTransform="JS(multiply10.js)" */]
            //Thing data holding134 "Wärmepume_RW" @ "Technikraum"  [ readStart="134", readValueType="uint16"/*, writeStart="134", writeValueType="uint", writeType="holding" */]
            
        }
    
} 


```csv

Group gWp "Waermepumpe" // Wärmepumpe



Switch Switch_WP_PV_FBH "WP_PV_FBH Anforderung"
Switch Switch_WP_Tomorrow "WP_Tomorrow Funktion"

Number      Modbus_Waermepumpe_Temp_aussen    "Aussentemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input10:number" }
Number      Modbus_Waermepumpe_Temp_Brauchwasser "Brauchwassertemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input11:number" }
Number      Modbus_Waermepumpe_Temp_Vorlauf "Vorlauftemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input12:number" }
Number      Modbus_Waermepumpe_Temp_Ruecklauf "Ruecklauftemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input13:number" }
//Number      Modbus_Waermepumpe_Temp_Pufferspeicher "Pufferspeichertemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input14:number" }
Number      Modbus_Waermepumpe_EQ_Eintritt "EQ Eintritttemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input15:number" }
Number      Modbus_Waermepumpe_EQ_Austritt "EQ Austritttemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input16:number" }
Number      Modbus_Waermepumpe_Sauggas "Sauggastemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input17:number" }
Number      Modbus_Waermepumpe_Verdampfung "Verdampfertemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input18:number" }
Number      Modbus_Waermepumpe_Kondensation "Kondensationtemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input19:number" }
Number      Modbus_Waermepumpe_Heissgas "Heissgastemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input20:number" }
Number      Modbus_Waermepumpe_Niederdruck "Niederdruck [%.1f bar]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input21:number" }
Number      Modbus_Waermepumpe_Hochdruck "Hochdruck [%.1f bar]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input22:number" }
Number      Modbus_Waermepumpe_Heizkreispumpe "Heizkreispumpe [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input23:number" }
Number      Modbus_Waermepumpe_Pufferladepumpe "Pufferladepumpe [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input24:number" }
Number      Modbus_Waermepumpe_Verdichter "Verdichter [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input25:number" }
Number      Modbus_Waermepumpe_Stoerung "Stoerung [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input26:number" }
Number      Modbus_Waermepumpe_Vierwegeventil_Luft "Vierwegeventil Luft [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input27:number" }
Number      Modbus_Waermepumpe_WMZ_Durchfluss "WMZ Durchfluss [%.1f l/min]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input28:number" }
Number      Modbus_Waermepumpe_nSoll_Verdichter "n-Soll Verdichter [%d %%]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input29:number" }
Number      Modbus_Waermepumpe_COP "COP [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input30:number" }
Number      Modbus_Waermepumpe_Frischwasser "Frischwassertemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input31:number" }
Number      Modbus_Waermepumpe_EVU_Sperre "EVU Sperre [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input32:number" }
Number      Modbus_Waermepumpe_Temp_aussen_verz    "Aussentemperatur verzögert [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input33:number" }
Number      Modbus_Waermepumpe_HKR_Solltemp    "Heizkreis Solltemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input34:number" }
//Number      Modbus_Waermepumpe_MKR1_Solltemp    "MKR1 Solltemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input35:number" }
//Number      Modbus_Waermepumpe_MKR2_Solltemp    "MKR2 Solltemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input36:number" }
Number      Modbus_Waermepumpe_EQ_Ventilator    "EQ-Ventilator [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input37:number" }
Number      Modbus_Waermepumpe_WW_Vorrang    "WW-Vorrang [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input38:number" }
Number      Modbus_Waermepumpe_Kuehlen_UMV_passiv    "Kuehlen UMV passiv [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input39:number" }
Number      Modbus_Waermepumpe_Expansionsventil    "Expansionsventil [%d %%]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input40:number" }
Number      Modbus_Waermepumpe_Verdichteranforderung    "Verdichteranforderung [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input41:number" }

Number      Modbus_Waermepumpe_BetriebsstundenWW1    "Betriebsstunden im WW-Betrieb1 [%s h]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input42:number" }
//Number      Modbus_Waermepumpe_BetriebsstundenWW2    "Betriebsstunden im WW-Betrieb2 [%d h]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input43:number" }

Number      Modbus_Waermepumpe_BetriebsstundenHZG1    "Betriebsstunden im HZG-Betrtieb1 [%s h]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input44:number" }
//Number      Modbus_Waermepumpe_BetriebsstundenHZG2    "Betriebsstunden im HZG-Betrtieb2 [%d h]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input45:number" }

//Number      Modbus_Waermepumpe_WMZ_Heizung    "WMZ Heizung [%d kW/h]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input60:number" }
//Number      Modbus_Waermepumpe_Stromz_Heizung    "Stromzaehler Heizung [%d kW/h]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe:input41:number" }


//Read/Write


Number      Modbus_Waermepumpe_Betriebsart    "Betriebsart [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding100:number" }
Number      Modbus_Waermepumpe_HKR_SOLL_RAUM    "Raumsolltemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding101:number" }
Number      Modbus_Waermepumpe_HKR_SOLL    "HKR Solltemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding102:number" }
Number      Modbus_Waermepumpe_HKR_SOLL_aktiv    "HKR Solltemperatur aktiv [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding103:number" }
Number      Modbus_Waermepumpe_RLT_Kuehlen    "RLT min Kuehlen [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding104:number" }
Number      Modbus_Waermepumpe_WW_Normaltemp    "WW Normaltemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding105:number" }
Number      Modbus_Waermepumpe_WW_Minimaltemp    "WW Minimaltemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding106:number" }
//Number      Modbus_Waermepumpe_MKR1_Betriebsart    "MKR1 Betriebsart [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding107:number" }
//Number      Modbus_Waermepumpe_MKR1_SOLL_RAUM    "MKR1 Raumsolltemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding108:number" }
//Number      Modbus_Waermepumpe_MKR1_SOLL_    "MKR1 Solltemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding109:number" }
//Number      Modbus_Waermepumpe_MKR1_SOLL_aktiv    "MKR1 Solltemperatur aktiv [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding110:number" }
//Number      Modbus_Waermepumpe_MKR1_RLT_Kuehlen    "MKR1 RLT min Kuehlen [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding111:number" }
//Number      Modbus_Waermepumpe_MKR2_Betriebsart    "MKR2 Betriebsart [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding112:number" }
//Number      Modbus_Waermepumpe_MKR2_SOLL_RAUM    "MKR2 Raumsolltemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding113:number" }
//Number      Modbus_Waermepumpe_MKR2_SOLL_    "MKR2 Solltemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding114:number" }
//Number      Modbus_Waermepumpe_MKR2_SOLL_aktiv    "MKR2 Solltemperatur aktiv [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding115:number" }
//Number      Modbus_Waermepumpe_MKR2_RLT_Kuehlen    "MKR2 RLT min Kuehlen [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding116:number" }
Number      Modbus_Waermepumpe_PV_Anf    "PV Anforderung [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding117:number" }
//Switch      Modbus_Waermepumpe_PV_Anf_sw    "PV Anforderung [%s]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding117:switch" }
Number      Modbus_Waermepumpe_Leistungsaufnahmevorgabe    "Leistungsaufnahmevorgabe [%.1f W]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding125:number" }
Number      Modbus_Waermepumpe_Verdichterdrehzahlvorgabe    "Verdichterdrehzahlvorgabe [%d %%]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding126:number" }
Number      Modbus_Waermepumpe_Ext_Anf    "Ext. Anforderung [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding127:number" }
Number      Modbus_Waermepumpe_Entstoeren    "Entstoeren [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding128:number" }
Number      Modbus_Waermepumpe_Aussentemperatur    "Aussentemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding129:number" }
Number      Modbus_Waermepumpe_Aussentemperatur_aktiv    "Aussentemperatur aktiv [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding130:number" }
//Number      Modbus_Waermepumpe_Puffertemperatur    "Puffertemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding131:number" }
//Number      Modbus_Waermepumpe_Puffertemperatur_aktiv    "Puffertemperatur aktiv [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding132:number" }
//Number      Modbus_Waermepumpe_Brauchwassertemperatur    "Brauchwassertemperatur [%.1f °C]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding133:number" }
//Number      Modbus_Waermepumpe_Brauchwassertemperatur_aktiv    "Brauchwassertemperatur aktiv [%d]"  (gWp) { channel="modbus:data:Waermepumpe:Waermepumpe_RW:holding134:number" }


// Switch WP_PV_Anforderung "Manuelle WP PV Anforderung" (gWp)
//Das funzt jetzt

rule "WP HKR AN"
when 
  Item Switch_WP_PV_FBH received command ON
  then 
    //if (Tag_Nacht.state==ON  && (now.getHourOfDay() >= 16 && now.getHourOfDay() <= 20 ))
    {
      //Modbus_Waermepumpe_Betriebsart.sendCommand(1)

      // Externe PV-Anforderung mit Leistungsaufnahme
      // Anforderung PV (Freigabe zur Leistungsvorgabe) auf > 1 (true)
      Modbus_Waermepumpe_PV_Anf.sendCommand(1)

      // Leistungsaufnahmevorgabe in: 0 - xxxx (in W, je nach Leistung der Wärmepumpe)
      Modbus_Waermepumpe_Leistungsaufnahmevorgabe.sendCommand(1500)

      // HKR Soll (Rücklauftemperatur in der Einheit 0,1°C (z.B.: 280 = 28,0°C)
      Modbus_Waermepumpe_HKR_SOLL_aktiv.sendCommand(1)

      // HKR Soll (Rücklauftemperatur) aktiv muss auf 1 (TRUE) geschrieben werden, damit das Register 102 übernommen wird.
      Modbus_Waermepumpe_HKR_SOLL.sendCommand(28)

    }
end

rule "WP HKR OFF"
when 
  Item Switch_WP_PV_FBH received command OFF
  then 
    //if (Tag_Nacht.state==ON  && (now.getHourOfDay() >= 16 && now.getHourOfDay() <= 20 ))
    {

      // Externe PV-Anforderung mit Leistungsaufnahme
      // Anforderung PV (Freigabe zur Leistungsvorgabe) auf > 1 (true)
      Modbus_Waermepumpe_PV_Anf.sendCommand(0)

      // Leistungsaufnahmevorgabe in: 0 - xxxx (in W, je nach Leistung der Wärmepumpe)
      Modbus_Waermepumpe_Leistungsaufnahmevorgabe.sendCommand(0)

      Modbus_Waermepumpe_HKR_SOLL_aktiv.sendCommand(0)
      //Modbus_Waermepumpe_HKR_SOLL.sendCommand(23)

    }
end


// WARMWASSER 
/*
rule "WP WW AN"
when 
  Item Switch_WP_PV_FBH received command ON
  then 
    //if (Tag_Nacht.state==ON  && (now.getHourOfDay() >= 16 && now.getHourOfDay() <= 20 ))
    {
      //Modbus_Waermepumpe_Betriebsart.sendCommand(1)

      // Externe PV-Anforderung mit Leistungsaufnahme
      // Anforderung PV (Freigabe zur Leistungsvorgabe) auf > 1 (true)
      // Modbus_Waermepumpe_PV_Anf.sendCommand(1)

      // Leistungsaufnahmevorgabe in: 0 - xxxx (in W, je nach Leistung der Wärmepumpe)
      // Modbus_Waermepumpe_Leistungsaufnahmevorgabe.sendCommand(1500)

    }
end

*/



//Funktioniert aber muss aktiviert werden. 
/*
rule "Temperatur außen per KNX"
when 
  Item gTempOut changed
  then 
    //if (Tag_Nacht.state==ON  && (now.getHourOfDay() >= 16 && now.getHourOfDay() <= 20 ))
    {
      Modbus_Waermepumpe_Aussentemperatur_aktiv.sendCommand(1)
      Modbus_Waermepumpe_Aussentemperatur.sendCommand(gTempOut.state as Number)

    }
end

*/

rule "WP mode tomorrow"
when 
    //Time cron "19 * * * * ?"
    Time cron "0 0 23 * * ?"
  
  then
    if (Modbus_Waermepumpe_Verdichter.state > 0) {                                                                  
        logInfo("rules", "Laufende Verdichteranforderung")
        return;
    }
    
    if (Switch_WP_Tomorrow.state != ON) {                                                                  
        logInfo("rules", "WP Tomorrow ausgeschaltet")
        return;
    }
    

    if ((localTomorrowCloudiness.state as Number).floatValue >= 40) {                                                                       
        
        if (Modbus_Waermepumpe_Betriebsart == 1) {
                logInfo("rules", "Betriebsart Auto bereits aktiv")
                return;
        }

          else {        
            Modbus_Waermepumpe_Betriebsart.sendCommand(1)
            logInfo("rules", "WP Automatik, da bewölkt ")
        }
    }   
    else {

        if (Modbus_Waermepumpe_Betriebsart == 3) {
          logInfo("rules", "Betriebsart Sommer bereits aktiv")
          return;
        }
        else {
        Modbus_Waermepumpe_Betriebsart.sendCommand(3)
        logInfo("rules", "WP Sommer, da klares Wetter")
        }
     }
    
end
1 Like

Hello,

many thanks for answer !
I wrote back email, hopefully you received ?
I will test your configuration when my heatpump will hopefully arrive within next weeks.

kind regards
Stefan

Hello,

many thanks for Answer !
Last year we’ve been in contact with Heliotherm over almost 8 month to finally convince them that it’s a bug in their software on

several machines which don’t work as expected :

Thanks for that information. My Remotecontrol x got an update. Maybe they solved such bugs… I will try it.

Hello,
finally I’m able now to control my heatpump. I can send “PV Anforderung” when there’s usable solar production. Heatpump ist starting up and power consumption follows the preset values.

Mank thanks for preparing and hand over configuration. All works as expected and you saved me lots of work.

In case you still have problems be aware that there’s also some configuration needed to bei done on Heliotherm Side ! PV Control needs some setup there too !

regards
Stefan

1 Like

I managed to use the modbus binding to suppy the Lambda heat pump E08L with a value for PV-surplus:
Here is my configuration of the modbus:data thing for register 102 in the E-Manager section:

UID: modbus:data:LA_E-Manager:LA_EMgr_Actual_Power
label: Lambda E-Mgr Actual Power
thingTypeUID: modbus:data
configuration:
  readValueType: int16
  readTransform: JS(nullen.js)
  writeTransform: default
  writeType: holding
  readStart: "102"
  updateUnchangedValuesEveryMillis: 1000
  writeValueType: int16
  writeMultipleEvenWithSingleRegisterOrCoil: true
  writeMaxTries: 3
  writeStart: "102"
  bridgeUID: modbus:poller:Lambda_Bridge:LA_EMgr

I used a cron-driven rule to supply the value every 30 s via the linked Item.