Seite 1 von 2
Wärmepumpe Modbus einbinden
Verfasst: 28. Dez 2023 07:39
von klaus1
Hallo,
ich habe ein Wärmepumpe über S0 Ausgänge an einer cfos Power Brain Solar Wallbox hängen (interner S0 Zähler 2 M2), die diesen Zähler summieren kann, bzw. auch die MomentanLeistung erfassen kann.
Bei diesem Zähler kann ich Modbus TCP aktivieren. Konfigurierbar Modubs Slave ID (da steht 3 drinnen) und TCP Port 4703.
jetzt möchte ich die Daten in Openhab empfangen.
dazu ein Versuch: Modbus Binding installiert und zwar einen Modbus TCP Slave mit der IP und Port 4703 von oben.
Discovery Enabled aktiviert RTU Encoding nicht.
danach hätte ich ein Modbus Data angelegt und die Bridge von oben dazu gehängt.
Da sind aber leider alle Channels null...
wie ist die richtige Vorgehensweise ?
infos modbus vom Hersteller:
https://www.cfos-emobility.de/de/cfos-p ... isters.htm
danke
Re: Wärmepumpe Modbus einbinden
Verfasst: 28. Dez 2023 13:33
von udo1toni
Ohne das selbst zu nutzen, so (als
*.things Datei. z.B.
$OPENHAB_CONF/things/modbus.things):
Code: Alles auswählen
Bridge modbus:tcp:cfos "cfos eMobility" [
host="192.168.178.33", // IP der Modbus Schnittstelle
port=4703,
id=3
] {
Bridge poller zaehler "S0-Zähler 2" [
start=8041,
length=30,
type="input"
] {
Thing data current_l1 "Strom L1" [readStart="8064", readValueType="int16" ]
Thing data current_l2 "Strom L2" [readStart="8066", readValueType="int16" ]
Thing data current_l3 "Strom L3" [readStart="8068", readValueType="int16" ]
}
}
Die resultierenden Items wären dann z.B. so:
Code: Alles auswählen
Number cfosCurrent_L1 "Strom L1" {channel="modbus:data:cfos:zaehler:current_l1:number"}
Number cfosCurrent_L2 "Strom L2" {channel="modbus:data:cfos:zaehler:current_l2:number"}
Number cfosCurrent_L3 "Strom L3" {channel="modbus:data:cfos:zaehler:current_l3:number"}
Ohne Gewähr...
Du kannst sowohl Things als auch Items auch über die UI anlegen, aber gerade bei den Things artet das in viel Arbeit aus, in einer Textdatei kannst Du die Zeilen leicht kopieren und die Details ändern, über die UI musst Du jedes Thing einzeln anlegen.
Modbus unterstützt kein Discovery, also alles zu Fuß. Die Channels sind als Beispiel zu verstehen, Du kannst natürlich auch weitere Channel anlegen.
Re: Wärmepumpe Modbus einbinden
Verfasst: 28. Dez 2023 17:25
von klaus1
leide bekomm ich in openhab.log noch folgendes zu Gesicht:
Code: Alles auswählen
2023-12-28 17:25:00.912 [WARN ] [rt.modbus.internal.ModbusManagerImpl] - Try 2 out of 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=3, functionCode=READ_INPUT_REGISTERS, start=8041, length=30, maxTries=3]). Will try again soon. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 1 [operation ID fe992eda-a3db-4c87-8564-4749eb5bf924]
in der openhab Oberfläche für S0-Zähler2:
COMMUNICATION_ERROR
Error with read: org.openhab.core.io.transport.modbus.internal.ModbusSlaveErrorResponseExceptionImpl: Slave responded with error=1 (ILLEGAL_FUNCTION)
Re: Wärmepumpe Modbus einbinden
Verfasst: 28. Dez 2023 18:26
von mad-mike
Moin, Versuch Mal bei Type:
Re: Wärmepumpe Modbus einbinden
Verfasst: 28. Dez 2023 18:41
von klaus1
danke, dann kennt er bei Thing data current_l1 keine Bridge mehr.
hab die auf poller geändert:
Code: Alles auswählen
Thing poller current_l1 "Strom L1" [readStart="8064", readValueType="int16" ]
Thing poller current_l2 "Strom L2" [readStart="8066", readValueType="int16" ]
Thing poller current_l3 "Strom L3" [readStart="8068", readValueType="int16" ]
dann kommt im Strom L1 Item:
Status:
UNINITIALIZED
HANDLER_CONFIGURATION_PENDING
{length=Der Parameter wird benötigt., type=Der Parameter wird benötigt.}
Re: Wärmepumpe Modbus einbinden
Verfasst: 28. Dez 2023 18:50
von mad-mike
Wenn man in dein Link oben schaut, steht dort das es nicht input register sind, sondern Holding...
anhand von @Udo1toni:
Code: Alles auswählen
Bridge modbus:tcp:cfos "cfos eMobility" [
host="192.168.178.33", // IP der Modbus Schnittstelle
port=4703,
id=3
] {
Bridge poller zaehler "S0-Zähler 2" [
start=8041,
length=30,
type="holding"
] {
Thing data current_l1 "Strom L1" [readStart="8064", readValueType="int16" ]
Thing data current_l2 "Strom L2" [readStart="8066", readValueType="int16" ]
Thing data current_l3 "Strom L3" [readStart="8068", readValueType="int16" ]
}
}
der Thing muss*** schon vom Typ data und nicht poller sein...
Re: Wärmepumpe Modbus einbinden
Verfasst: 28. Dez 2023 20:17
von mad-mike
Achso, und id 3 kann auch falsch sein. Einfach Mal eine andere versuchen. Wenn die Hardware schon id3 ist, kann oH nicht die gleiche haben... Versuch Mal 2
Re: Wärmepumpe Modbus einbinden
Verfasst: 29. Dez 2023 07:04
von klaus1
jetzt siehts gut aus ! Vielen vielen Dank!
ich kann lesen, ich bekomm auch in dem zeitstempel zurück wann ich das letzte mal gelesen habe. die Values sind leider immer alle 0. passt eventuell der Datentyp vielleicht nicht?
Re: Wärmepumpe Modbus einbinden
Verfasst: 29. Dez 2023 12:21
von mad-mike
passt eventuell der Datentyp vielleicht nicht?
Möglich.
Ich habe bei mir gerade mal bewusst einen falschen eingestellt.
ich brauche type: input, habe holding eingestellt...
Dann waren die werte auf 0.
wenn ich es laut deinem Link aber richtig verstehe, brauchst du type holding.
aber konnte es nicht einfach zurück stellen.
habe den Poller mittels
deaktiviert, gespeichert und dann wieder entfernt und gespeichert.
Wie sieht denn deine Thing Datei aus??
Re: Wärmepumpe Modbus einbinden
Verfasst: 29. Dez 2023 12:24
von klaus1
jetzt klappts. mit float32, aber unschick:
2023-12-29 12:15:52.859 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Power_WP_Value_as_String' changed from 0 to 0.0000000000000000000000000000000000000000000028
float16 stand nicht zur Auswahl in der webgui... und bei int16 wird vermutlich immer nur 0 angezeigt wenn float eigentlicher Datentyp ist oder?