Einbindung Heliotherm Sole-WP per ModBus

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
HansDampf
Beiträge: 34
Registriert: 23. Jul 2020 15:01
Answers: 1

Einbindung Heliotherm Sole-WP per ModBus

Beitrag von HansDampf »

Liebes Forum,

anbei das letzte Projekt für dieses Jahr.
Ich will meine Heliotherm Sole WP per ModBus in Openhab einbinden.
Das ganze soll dann auch gesteuert werden durch die PV-Anlage bei Stromüberschuss.

Bin mir nicht sicher wie die reads und writes funzen und dann in Openhab aufgebaut sind.
Folgende Doku habe ich von Heliotherm
https://www.loxwiki.eu/download/attachm ... 000&api=v2

Kann mir wer ein Beispiel für read und write geben und wie das Thing auszusehen hat?

Danke und BG
von HansDampf » 14. Jan 2021 12:04
Die Länge der Bridge hat nicht gepasst. Man muss von 100 bis 134 und somit 35 angeben. Das war die Lösung.
Gehe zur vollständigen Antwort

HansDampf
Beiträge: 34
Registriert: 23. Jul 2020 15:01
Answers: 1

Re: Einbindung Heliotherm Sole-WP per ModBus

Beitrag von HansDampf »

So heute hatte ich endlich mal wieder Zeit. Mit Hilfe des Beitrages viewtopic.php?t=3535 der anderen Forumsteilnehmer funzt das Auslesen der Heliotherm schonmal.

Anbei schon mal die .things.

Code: Alles auswählen

//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=38, 
        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 [ 
        start=100,
        length=, 
        refresh=60000, 
        type="holding" 
    ] {
        
            Thing data holding100 "Wärmepume" @ "Technikraum"  [ readStart="100", readValueType="uint16", writeStart="100", writeValueType="uint16", writeType="holding" ]
    
        }
    */
}  

Am Ende der Things ist ein Beispiel für write. Write traue ich mich noch nicht. Kann einer mal drauf schauen ob das Beispiel zum Screenshot des Herstellers passt?

Bedienungsanleitung sagt zum Schreib-Zugriff:
Schreibzugriff
Über den Schreibzugriff kann die Wärmepumpe gesteuert werden. Etwas weiter hinten befindet sich die

Liste der zu schreibenden Register. Diese können mit dem Funktionscode 06 (Write Single Register) be-
schrieben oder mit dem Funktionscode 03 (Reas Holding Registers) gelesen werden.

Bei einem Verbindungsabbruch muss der Modbus-Server / Master einen Re-Connect mit dem RCG X
initialisieren. Die Register sollten prinzipiell zyklisch, aber nicht schneller als in einem 5 Sekunden- Intervall
beschrieben werden.
Bild_2020-12-16_161018.png

Code: Alles auswählen

Thing data holding100 "Wärmepume" @ "Technikraum"  [ readStart="100", readValueType="uint16", writeStart="100", writeValueType="uint16", writeType="holding" ]
    
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

HansDampf
Beiträge: 34
Registriert: 23. Jul 2020 15:01
Answers: 1

Re: Einbindung Heliotherm Sole-WP per ModBus

Beitrag von HansDampf »

falls das noch einer liest und mir weiterhelfen kann:

Habe die WP nun eingebunden und lesen funzt. Nun will ich folgendes umsetzen:
Bild_2020-12-30_194854.png
Reicht es eine Rule zu erstellen, und in die folgenden beiden Register zu schreiben 117=1 und 125=1000 Watt als Beispiel und dies mit einer Rule in Abhängigkeit zur aktuellen PV-Leistung zu bringen? Weiß jemand ob ich auch checken muss, dass die Rule für Warmwasser nur einmal pro Tag ausgeführt wird oder regelt das die Wärmepumpe?

Auszug aus heliotherm.thing:

Code: Alles auswählen

Thing data holding117 "Wärmepume_RW" @ "Technikraum"  [ readStart="117", readValueType="uint16"/*, writeStart="117", writeValueType="uint16", writeType="holding" */]
            Thing data holding125 "Wärmepume_RW" @ "Technikraum"  [ readStart="125", readValueType="uint16"/*, writeStart="125", writeValueType="uint16", writeType="holding" */]
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

HansDampf
Beiträge: 34
Registriert: 23. Jul 2020 15:01
Answers: 1

Re: Einbindung Heliotherm Sole-WP per ModBus

Beitrag von HansDampf »

habe nun folgendes gebaut, um eine manuelle PV-Anforderung an die Wärmepumpe zu senden:

Thing:

Code: Alles auswählen

//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=38, 
        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=24, 
        refresh=60000, 
        type="holding" 
    ] {
        
            Thing data holding100 "Wärmepume_RW" @ "Technikraum"  [ readStart="100", readValueType="uint16"/*, writeStart="100", writeValueType="uint16", writeType="holding"*/ ]
            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)" */ ]
            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)" */]
            Thing data holding103 "Wärmepume_RW" @ "Technikraum"  [ readStart="103", readValueType="uint16"/*, writeStart="103", writeValueType="uint16", writeType="holding" */]
            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)" */]
            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)" */]
            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)" */]
            Thing data holding107 "Wärmepume_RW" @ "Technikraum"  [ readStart="107", readValueType="uint16"/*, writeStart="107", writeValueType="uint16", writeType="holding" */]
            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)" */]
            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)" */]
            Thing data holding110 "Wärmepume_RW" @ "Technikraum"  [ readStart="110", readValueType="uint16"/*, writeStart="110", writeValueType="uint16", writeType="holding" */]
            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)" */]
            Thing data holding112 "Wärmepume_RW" @ "Technikraum"  [ readStart="112", readValueType="uint16"/*, writeStart="112", writeValueType="uint16", writeType="holding" */]
            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)" */]
            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)" */]
            Thing data holding115 "Wärmepume_RW" @ "Technikraum"  [ readStart="115", readValueType="uint16"/*, writeStart="115", writeValueType="uint16", writeType="holding" */]
            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)" */]
            Thing data holding117 "Wärmepume_RW" @ "Technikraum"  [ readStart="117", readValueType="uint16", writeStart="117", writeValueType="uint16", writeType="holding"]
            Thing data holding125 "Wärmepume_RW" @ "Technikraum"  [ readStart="125", readValueType="uint16", writeStart="125", writeValueType="uint16", writeType="holding"]
            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
            Thing data holding127 "Wärmepume_RW" @ "Technikraum"  [ readStart="127", readValueType="uint16"/*, writeStart="127", writeValueType="uint16", writeType="holding" */]
            Thing data holding128 "Wärmepume_RW" @ "Technikraum"  [ readStart="128", readValueType="uint16"/*, writeStart="128", writeValueType="uint16", writeType="holding" */]
            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)" */]
            Thing data holding130 "Wärmepume_RW" @ "Technikraum"  [ readStart="130", readValueType="uint16"/*, writeStart="130", writeValueType="uint16", 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" */]
            
        }
    
} 
Sobald ich dann per Rule:

Code: Alles auswählen

rule "WP PV Anforderung AN"
when 
  Item WP_PV_Anforderung changed from OFF to ON 
  then 
    //if (Tag_Nacht.state==ON  && (now.getHourOfDay() >= 16 && now.getHourOfDay() <= 20 ))
    {
      Modbus_Waermepumpe_PV_Anf.sendCommand(1)
      //createTimer(now.plusSeconds(5), [| logInfo("Timer", "My Timer!")])
      Modbus_Waermepumpe_Leistungsaufnahmevorgabe.sendCommand(900)
    }
end
die PV Anforderung per Switch schalte, erscheint die Fehlermeldung im log.
2021-01-07 10:10:11.278 [ome.event.ItemCommandEvent] - Item 'WP_PV_Anforderung' received command ON

2021-01-07 10:10:11.286 [vent.ItemStateChangedEvent] - WP_PV_Anforderung changed from OFF to ON

2021-01-07 10:10:11.579 [ome.event.ItemCommandEvent] - Item 'Modbus_Waermepumpe_PV_Anf' received command 1

2021-01-07 10:10:11.585 [nt.ItemStatePredictedEvent] - Modbus_Waermepumpe_PV_Anf predicted to become 1

2021-01-07 10:10:11.590 [ome.event.ItemCommandEvent] - Item 'Modbus_Waermepumpe_Leistungsaufnahmevorgabe' received command 900

2021-01-07 10:10:11.603 [vent.ItemStateChangedEvent] - Modbus_Waermepumpe_PV_Anf changed from 0 to 1

2021-01-07 10:10:11.605 [nt.ItemStatePredictedEvent] - Modbus_Waermepumpe_Leistungsaufnahmevorgabe predicted to become 0
Warum schaltet die Wärmepumpe den Wert zurück auf "0"?

HansDampf
Beiträge: 34
Registriert: 23. Jul 2020 15:01
Answers: 1

Re: Einbindung Heliotherm Sole-WP per ModBus

Beitrag von HansDampf »

Die Länge der Bridge hat nicht gepasst. Man muss von 100 bis 134 und somit 35 angeben. Das war die Lösung.

Antworten