NEWS
Stiebel-ISG - Modbus
-
@netfritz
Hallo
Habe mal Modbus Poll auf meinen Win11 Laptop installiert und eingerichtet.
ioBroker Modbus Adapter AUS.
Modbus Poll als Master aus Adresse des ISG eingestellt und Port 502.
Dann im MP die Adresse auf 1500 Eingestellt und Holding Register
MP liest immer 10 Adressen auf einmal.
Meine ECO-Temperatur-HK1 zeige 200 an, gleich 20°C.
Dann 190 eingegeben für 19°C , dann dauerte es eine wenig und meine
Stiebel App zeigte 19,0°C an.
Also liegt der Fehler ioBroker, aber wo?
Werde heute mit MP die SG-Ready1 und 2 mal auf 1 und 0 vorgeben.
Gruß NetFritz -
@netfritz
Hallo
Habe jetzt mit Modbus Poll probiert SG-Ready 1 und 2 zu betätigen.
Es geht alle 4 Zustände und werden im ISG angezeigt.
Die einzelnen SG-Ready Eingänge mit 1 und 0 und
die SG-Ready Zustände von 1 bis 4.Damit die Zustände richtig im ISG angezeigt werden musste ich jedesmal
ein Reload der Webseite machen.Man kann also mit den ISG-Web per Modbus RD-Ready nutzen !
Also liegt der Fehler irgendwo in ioBroker.
Gruß NetFritz
-
also bei mir funktioniert es "einwandfrei"... dass 32868 problem habe ich auch manchmal.. jedoch habe ich das mit nem blockly abgefangen...
Eingangsregister:
_address name description unit type len factor offset formula role room cw isScale 30503 Isttemperatur-FEK Isttemperatur FEK °C uint16be 1 0.1 0 value.temperature false false 30504 Solltemperatur-FEK Solltemperatur FEK °C uint16be 1 0.1 0 value.temperature false false 30505 Raumfeuchte Raumfeuchte % uint16be 1 0.1 0 value.temperature false false 30506 Taupunkttemperatur Taupunkttemperatur °C int16be 1 0.1 0 value.temperature false false 30507 Aussentemperatur Aussentemperatur °C int16be 1 0.1 0 value.temperature false false 30508 Isttemperatur HK1 Isttemperatur HK1 °C uint16be 1 0.1 0 value.temperature false false 30510 Solltemperatur HK1 Solltemperatur HK1 °C uint16be 1 0.1 0 value.temperature false false 30513 Vorlaufisttemperatur WP Vorlaufisttemperatur WP °C uint16be 1 0.1 0 value.temperature false false 30514 Vorlaufisttemperatur NHZ Vorlaufisttemperatur NHZ °C uint16be 1 0.1 0 value.temperature false false 30516 Ruecklaufisttemperatur Rücklaufisttemperatur °C uint16be 1 0.1 0 value.temperature false false 30517 Festwertsolltemperatur Festwertsolltemperatur °C uint16be 1 0.1 0 value.temperature false false 30518 Pufferisttemperatur Pufferisttemperatur °C uint16be 1 0.1 0 value.temperature false false 30519 Puffersolltemperatur Puffersolltemperatur °C uint16be 1 0.1 0 value.temperature false false 30520 Heizungsdruck Heizungsdruck bar uint16be 1 0.01 0 value.valve false false 30521 Volumenstrom Volumenstrom l/min uint16be 1 0.01 0 level.valve false false 30522 WW-Isttemperatur Isttemperatur Warmwasser °C uint16be 1 0.1 0 value.temperature false false 30523 WW-Solltemperatur Solltemperatur Warmwasser °C uint16be 1 0.1 0 value.temperature false false 30526 Isttemp-Flaeche Isttemperatur Fläche °C uint16be 1 0.1 0 value.temperature false false 30527 Solltemp-Flaeche Solltemperatur Fläche °C uint16be 1 0.1 0 value.temperature false false 30533 Einsatzgrenze-HZG Einsatzgrenze Heizung °C int16be 1 0.1 0 value.temperature false false 30534 Einsatzgrenze-WW Einsatzgrenze Warmwasser °C int16be 1 0.1 0 value.temperature false false 30536 Quellentemperatur Quellentemperatur °C int16be 1 0.1 0 value.temperature false false 30537 Quellentemperatur-Min Quellentemperatur Min °C int16be 1 0.1 0 value.temperature false false 30538 Quellendruck Quellendruck bar int16be 1 0.01 0 value.valve false false 30539 Heissgastemperatur Heissgastemperatur °C uint16be 1 0.1 0 value.temperature false false 30540 Hochdruck Hochdruck bar int16be 1 0.1 0 value.valve false false 30541 Niederdruck Niederdruck bar int16be 1 0.1 0 value.valve false false 32501 Betriebsstatus Betriebsstatus uint16be 1 1 0 state false false 32502 EVU-Freigabe EVU-Freigabe uint16be 1 1 0 state false false 32504 Fehlerstatus Fehlerstatus uint16be 1 1 0 state false false 32505 BUS-Status BUS-Status int16be 1 1 0 state false false 32507 aktiver-Fehler aktiver Fehler uint16be 1 1 0 state false false 33501 VD-Heizen-Tag Wärmemenge-Heizen (alle WP) - Tag kWh uint16be 1 1 0 value false false 33502 VD-Heizen-Summe WM-Heizen (alle WP) - Summe kWh uint16be 1 1 0 value false false 33503 VD-Heizen-Summe WM-Heizen (alle WP) - Summe MWh uint16be 1 1 0 value false false 33504 VD-WW-Tag Wärmemenge-Warmwasser (alle WP) - Tag kWh uint16be 1 1 0 value false false 33505 VD-WW-Summe Wärmemenge-Warmwasser (alle WP) - Summe kWh uint16be 1 1 0 value false false 33506 VD-WW-Summe Wärmemenge-Warmwasser (alle WP) - Summe MWh uint16be 1 1 0 value false false 33507 NHZ-Heizen-Summe NHZ-Heizen (alle WP) - Summe kWh uint16be 1 1 0 value false false 33508 NHZ-Heizen-Summe NHZ-Heizen (alle WP) - Summe MWh uint16be 1 1 0 value false false 33509 NHZ-WW-Summe NHZ-Warmwasser (alle WP) Heizen - Summe kWh uint16be 1 1 0 value false false 33510 NHZ-WW-Summe NHZ-Warmwasser (alle WP) Heizen - Summe MWh uint16be 1 1 0 value false false 33511 VD-Heizen-Tag Leistungsaufnahme(alle WP) Heizen - Tag kWh uint16be 1 1 0 value false false 33512 VD-Heizen-Summe Leistungsaufnahme(alle WP) Heizen - Summe kWh uint16be 1 1 0 value false false 33513 VD-Heizen-Summe Leistungsaufnahme(alle WP) Heizen - Summe MWh uint16be 1 1 0 value false false 33514 VD-Warmwasser-Tag Leistungsaufnahme (alle WP) Warmwasser - Tag kWh uint16be 1 1 0 value.power.consumption false false 33515 VD-Warmwasser-Summe Leistungsaufnahme(alle WP) Warmwasser - Summe kWh uint16be 1 1 0 value.power.consumption false false 33516 VD-Warmwasser-Summe Leistungsaufnahme(alle WP) Warmwasser - Summe MWh uint16be 1 1 0 value.power.consumption false false 33517 VD-Heizen Laufzeit Verdichter - Heizen h uint16be 1 1 0 value false false 33518 VD-Warmwasser Laufzeit Verdichter - Warmwasser h uint16be 1 1 0 value false false 33519 VD-Kuehlen Laufzeit Verdichter - Kühlen h uint16be 1 1 0 value false false 33520 NHZ1 Laufzeit NHZ 1 h uint16be 1 1 0 value false false 33521 NHZ2 Laufzeit NHZ 2 h uint16be 1 1 0 value false false 33522 NHZ12 Laufzeit NHZ 1/2 h uint16be 1 1 0 value false false
Holding-Register:
_address name description unit type len factor offset formula role room poll wp cw isScale 41501 Betriebsart Betriebsart uint16be 1 1 0 level true false false false 41502 Komfort-Temperatur-HK1 Komfort-Temperatur - Heizkreis 1 °C uint16be 1 0.1 0 value.temperature true false false false 41503 ECO-Temperatur-HK1 ECO-Temperatur - Heizkreis 1 °C uint16be 1 0.1 0 value.temperature true false false false 41504 Steigung-Heizkurve-HK1 Steigung Heizkurve - Heizkreis 1 uint16be 1 0.01 0 level true false false false 41509 Bivalenztemp-HZG Bivalenztemperatur Heizung °C int16be 1 0.1 0 value.temperature true false false false 41510 Komfort-Temperatur-WW Komfort-Temperatur - Warmwasser °C uint16be 1 0.1 0 value.temperature true false false false 41511 ECO-Temperatur-WW ECO-Temperatur - Warmwasser °C uint16be 1 0.1 0 value.temperature true false false false 41513 Bivalenztemp-WW Bivalenztemperatur Warmwasser °C int16be 1 0.1 0 value.temperature true false false false 41514 Vorlaufsolltemp-FK Vorlaufsolltemperatur Flächenkühlung °C uint16be 1 0.1 0 value.temperature true false false false 41515 Hysterese-Vorlautemp-FK Hystere Vorlauftemperatur Flächenkühlen K uint16be 1 0.1 0 value.temperature true false false false 41516 Raumsolltemp-FK Raumsolltemperatur Flächenkühlung °C uint16be 1 0.1 0 value.temperature true false false false 41520 Reset Reset uint16be 1 1 0 state true false false false 41521 Restart-ISG ISG Neustart uint16be 1 1 0 state true false false false 44001 SG_Ready_ein-_und_ausschalten SG Ready uint16be 1 1 0 indicator true false false false 44002 SG_Ready_Eingang1 SG Ready - Eingang 1 uint16be 1 1 0 indicator true false false false 44003 SG_Ready_Eingang2 SG Ready - Eingang 2 uint16be 1 1 0 indicator true false false false
-
Ich nutze die Modbus-Schnittstelle des ISG Web seit etwa 1 Jahr weitestgehend problemlos und würde sie nicht mehr missen wollen. Ich schalte auch darüber die forcierten Temperaturwerte (SGready).
Wo ich leider immer noch drauf warte, ist die Modbus Adresse für die Inverter-Aufnahmeleistung (live - keine Tageszusammenfassung), die man in der Weboberfläche einsehen kann. Nach Rücksprache mit dem Stiebel Support ist das bereits in Planung. Ich finde allerdings, dass stiebel mit den Updates für das ISG sehr intransparent umgeht, meines Wissens nach nicht irgendwo öffentlich zugänglich macht, welche Version die aktuellste ist und schon gar keinen Changelog veröffentlicht, sodass man Änderungen nachvollziehen könnte. -
@android51, Schimi
Welche WP hab ihr, ich habe eine Stiebel WPL 20A mit WPM 3 und Stiebel ISG .
Meine Anlage ist im Oktober 24 installiert worden.Schimi Ich habe gesehen das Du bei dem Holding Register überal Poll angewähl hast.
Das hatte ich auch schon bei den Register gemacht die ich getestet habe.
Dann waren die Werte auch vorhanden.
Aber das schreiben habe ich nur mit dem Programm Modbus Poll hinbekommen.Ich habe Heute Morgen im error-bug Eine Meldung an die Entwickler was gechrieben.
Gruß NetFritz -
@netfritz ich muss dazu sagen das ich eine Sole Wärmepunmpe habe (WPC 04 cool) und ein ISG plus (waren "damals" viel günstiger als heute)
mal eine übersicht:
-
@schimiIch Bin fast umgefallen als ich den Kostenvoranschlag gesehen habe.
Es waren fast 30000€.
Habe dann meine alte Alpa Innotec WWP abgebaut und bei der Installation geholfen.
Dann standen minus Förderung etwas über 20000€ auf der Rechnung.Bei mir ist es die 4 WP seit 1980.
1 Terigen WWP
2 Stiebel WWP
3 Alpa Innotec WWP
4 Stiebel WPL
Das ist jetzt meine erste Luft WP vorher nur Wasser/Wasser die sind alle am Brunnenwasserseitigen
Wärmetauscher gestorben.
Die ersten 3 haben nicht mehr gekostet wie Nr 4 die Stiebel.
Gruß netFritz -
Ich habe eine WPL 25 A mit wpm-system, sollte also baugleich zu deiner WPL 20 A sein, nur eine kleinere Variante. Vielleicht ist das bei dir das Problem, dass du die Modbus Adressen für wpm-system nehmen musst?!
-
@android51
Hallo
Danke für die Antwort.Es währe schön wenn Du die Konfig des Modbus Adapter hier reinstellen könntest.
Also Algemeine Einstellungen und Holding Register.
Vielen Dank im voraus.
Gruß NetFritz -
Hier ein Auszug aus dem Holding-Regsiter
Unter IP-Adresse sollte die des ISG-Web hinterlegt werden.
-
@android51
Danke
Das sieht bei mir genau so aus.
Gruß NetFritz -
@netfritz
Hallo
Da ich mit dem Modbus Adapter die Holdingregister z.Z. nicht beschreiben kann,
vor allem SG Ready 1 und 2.
Habe ich es Heute mit ioBroker Node Red versucht.
Nach ein paar fehl Versuchen habe ich es hinbekommen SG Ready 1 und 2 anzusteuern.
Habe den node-red-contrib-modbus und node-red-contrib-modbus-flex-server installiert.
Dann den Flex.Server Knoten und Modbus-Red und Modbus-Write in das Flow gezogen
und Konfiguriert.
Hier noch der Flow zum Importieren.
Gruß NetFritz[ { "id": "e30b3d7c8e9c13ae", "type": "tab", "label": "Modbus", "disabled": false, "info": "", "env": [] }, { "id": "1c58a83f7b099c2c", "type": "modbus-flex-server", "z": "e30b3d7c8e9c13ae", "name": "", "logEnabled": false, "serverAddress": "localhost", "serverPort": "502", "responseDelay": 100, "unitId": 1, "delayUnit": "ms", "coilsBufferSize": 20000, "registersBufferSize": 20000, "minAddress": 0, "splitAddress": 10000, "funcGetCoil": "function getFlexCoil(addr, unitID) {\n\tif (unitID === node.unitId && \n\t\taddr >= node.minAddress && \n\t\taddr <= node.splitAddress) { \n\n\t\treturn node.coils.readUInt8(addr * node.bufferFactor) \n\t} \n}", "funcGetDiscreteInput": "function getFlexDiscreteInput(addr, unitID) {\n\taddr += node.splitAddress\n\tif (unitID === node.unitId && \n\t\taddr >= node.splitAddress && \n\t\taddr <= node.splitAddress * 2) { \n\n\t\treturn node.coils.readUInt8(addr * node.bufferFactor) \n\t} \n}", "funcGetInputRegister": "function getFlexInputRegister(addr, unitID) { \n\tif (unitID === node.unitId && \n\t\taddr >= node.minAddress && \n\t\taddr <= node.splitAddress) { \n\n\t\treturn node.registers.readUInt16BE(addr * node.bufferFactor) \n\t} \n}", "funcGetHoldingRegister": "function getFlexHoldingRegsiter(addr, unitID) { \n\taddr += node.splitAddress\n\tif (unitID === node.unitId && \n\t\taddr >= node.splitAddress && \n\t\taddr <= node.splitAddress * 2) { \n\n\t\treturn node.registers.readUInt16BE(addr * node.bufferFactor) \n\t} \n}", "funcSetCoil": "function setFlexCoil(addr, value, unitID) { \n\tif (unitID === node.unitId && \n\t\taddr >= node.minAddress && \n\t\taddr <= node.splitAddress) { \n\n\t\tnode.coils.writeUInt8(value, addr * node.bufferFactor) \n\t} \n}", "funcSetRegister": "function setFlexRegister(addr, value, unitID) { \n\taddr += node.splitAddress\n\tif (unitID === node.unitId && \n\t\taddr >= node.splitAddress && \n\t\taddr <= node.splitAddress * 2) { \n\n\t\tnode.registers.writeUInt16BE(value, addr * node.bufferFactor) \n\t} \n}", "showErrors": false, "x": 280, "y": 60, "wires": [ [ "d47aa0d1fa728da8" ], [ "d47aa0d1fa728da8" ], [ "d47aa0d1fa728da8" ], [ "d47aa0d1fa728da8" ], [ "d47aa0d1fa728da8" ] ] }, { "id": "d47aa0d1fa728da8", "type": "debug", "z": "e30b3d7c8e9c13ae", "name": "debug 231", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 510, "y": 60, "wires": [] }, { "id": "e5d4b02e39142509", "type": "inject", "z": "e30b3d7c8e9c13ae", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "str", "x": 90, "y": 60, "wires": [ [ "1c58a83f7b099c2c" ] ] }, { "id": "802c615c03960bb5", "type": "modbus-read", "z": "e30b3d7c8e9c13ae", "name": "Read", "topic": "", "showStatusActivities": false, "logIOActivities": false, "showErrors": false, "showWarnings": true, "unitid": "1", "dataType": "HoldingRegister", "adr": "1500", "quantity": "20", "rate": "5", "rateUnit": "s", "delayOnStart": false, "startDelayTime": "", "server": "0b269ba065891482", "useIOFile": false, "ioFile": "", "useIOForPayload": false, "emptyMsgOnFail": false, "x": 270, "y": 140, "wires": [ [ "850acb94b17b4b94" ], [ "850acb94b17b4b94" ] ] }, { "id": "850acb94b17b4b94", "type": "debug", "z": "e30b3d7c8e9c13ae", "name": "debug 232", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 510, "y": 140, "wires": [] }, { "id": "cf41e8a95857a041", "type": "modbus-write", "z": "e30b3d7c8e9c13ae", "name": "Write", "showStatusActivities": false, "showErrors": false, "showWarnings": true, "unitid": "1", "dataType": "MHoldingRegisters", "adr": "4001", "quantity": "2", "server": "0b269ba065891482", "emptyMsgOnFail": false, "keepMsgProperties": false, "delayOnStart": false, "startDelayTime": "", "x": 250, "y": 200, "wires": [ [ "36fc03fafb4bfac3" ], [ "36fc03fafb4bfac3" ] ] }, { "id": "36fc03fafb4bfac3", "type": "debug", "z": "e30b3d7c8e9c13ae", "name": "debug 233", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 510, "y": 200, "wires": [] }, { "id": "6188c6b9a087442e", "type": "inject", "z": "e30b3d7c8e9c13ae", "name": "SG 2", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "[0,0]", "payloadType": "json", "x": 90, "y": 180, "wires": [ [ "cf41e8a95857a041" ] ] }, { "id": "361c3ea15c934a33", "type": "inject", "z": "e30b3d7c8e9c13ae", "name": "SG 3", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "[1,0]", "payloadType": "json", "x": 90, "y": 220, "wires": [ [ "cf41e8a95857a041" ] ] }, { "id": "0b269ba065891482", "type": "modbus-client", "name": "", "clienttype": "tcp", "bufferCommands": true, "stateLogEnabled": false, "queueLogEnabled": false, "failureLogEnabled": true, "tcpHost": "192.168.2.103", "tcpPort": "502", "tcpType": "DEFAULT", "serialPort": "/dev/ttyUSB", "serialType": "RTU-BUFFERD", "serialBaudrate": "9600", "serialDatabits": "8", "serialStopbits": "1", "serialParity": "none", "serialConnectionDelay": "100", "serialAsciiResponseStartDelimiter": "0x3A", "unit_id": "1", "commandDelay": "1", "clientTimeout": "1000", "reconnectOnTimeout": true, "reconnectTimeout": "2000", "parallelUnitIdsAllowed": true, "showErrors": false, "showWarnings": true, "showLogs": true } ]
-
welche Holding-Adresse (SGready) versuchst du denn zu schalten? bzw. zu schreiben?
Ich mache das über 44002 und dann über meine VIS... das funktioniert gut.
-
@android51
Hallo
Beim mir will der IOB Modbusadpter keine Holding Register beschreiben.
Beim User QLink geht es auch nicht.In Node Red Modbus wir die Adresse -1 angegeben.
Also wenn Du Die Adresse 4002 = SG Ready 1 schalten willst muss Du die 4001 eingeben.Beim ioBroker Modbus Adapter wird noch eine 4 vorrangestellt.
Um es genau zu sagen die Adresse setzt sich zusammen 40000 + 4002 = 44002.
Ich habe die 4001 angegeben.Bei Quantity habe ich eine 2 Eingegeben, es werden 2 Adressen beschrieben die 4002 und die 4003.
Einmal mit der 1 SG Ready1 und die 0 SG Ready2.
Und zurück beidemal 0 0.
Gruß NetFritz -
@netfritz
Wenn ich mich recht erinnere, konnte ich die 4001 damals auch nicht schalten, die 4002 hingegen schon. -
@android51
Hallo
Bei den Modbus Adressen für SG Ready 4001 - 4003 steht r/w in der Beschreibung.
Das muss eigentlich gehen.
Gruß NetFritz -
Da schon öfter mal die Frage aufkam, ob per Modbus auch die Aufnahmeleistung des Wärmetauschers ausgelesen werden kann.
In meiner Anleitung hat der Nutzer David in den Kommentaren gelistet, dass er die Werte dafür herausgefunden hat.
Vielen Dank dafür.
-
Danke für die Info. Ich habe die Modbus 33680 mal eingebunden und werde beobachten, wie sie sich heute über Tag verhält.
Ich finde allerdings ein wenig merkwürdig, dass die Adresse verfügbar ist, aber offiziell vom Stiebel Support (hatte Mailkontakt) noch nicht bekannt gegeben wird.
Zudem habe ich irgendwo gelesen, dass der Wert ziemlich "geschönt" ist und nicht der tatsächlichen Stromaufnahme entspricht.