Temperatur von Homegear nach Openhab

Hallo, ich habe an einem Beckhoff Modbus Koppler BK9000 eine PT100 Temperatureingangsklemme KL3202 und einen Widerstand angeschlossen. Das ganze läuft prima unter Homegear.
Folgender Aufruf liefert:

homegear -e rc 'print_v($hg->getValue(75,1,"LEVEL"));'
(Float) 1217

Dies entspräche einer korrekten Temperatur von 121.7 °C
In openhab3 wird die Klemme erkannt und ich habe die Temperatur in einem .items File folgendermaßen definiert:

Number SolarThermieTemp01 "Temperatur 01 [%f °C]" (UG_HeizungsKeller) {channel="homematic:HG-Beckhoff-KL3202:ccu:KL32020001:1#LEVEL" }

Als Temperatur wird hier allerdings: 0.07 °C ausgegeben. Der Wert ändert sich, wenn ich den PT100 abklemme. Vielleicht hat jemand eine Idee, was ich falsch gemacht haben könnte.

Gruß
Frank

Also bei mir sehen die float-Platzhalter anders aus, nicht %f, sondern %.1f oder %.0f.

Der Platzhalter betrifft ja nur die Darstellung, aber muss der Eingangswert nicht durch 10 geteilt werden? 1217 → 121,7

Es wird halt schon mal nicht der Eingangswert zu Openhab korrekt übermittelt. Wenn er kommen würde, könnte ich ihn mit z.b. einer JS-Formatierung ‘passend’ machen.
Z.b. so:

Number SolarThermieTemp01 "Temperatur 01 [JS(pt100.js):%s °C]" (UG_HeizungsKeller) {channel="homematic:HG-Beckhoff-KL3202:ccu:KL32020001:1#LEVEL" }

pt100.js

(function(i) {
    var result = Number(i) / 10.0;
    return result ;
})(input)

Vielleicht könnte ich auch Homegear upgraden (Bin auf 0.7.48-3324 stable).
Oder ich nutzte gleich das Openhab Modbus Binding. Hatte ich vor 1 Jahr mal versucht. Lief zwar, ist aber immer wieder abgestürzt. Aber da tut sich auch immer mal was…

Habe es jetzt für mich so gelöst, dass ich in Openhab über das exec Binding ein Python Script aufrufe und darin den Wert von Homegear abfrage und zurechtbiege:
GetTemperature.py

#/etc/openhab/scripts
import os
import re

stream = os.popen("sudo homegear -e rc 'print_v($hg->getValue(75,1, "'"LEVEL"'"));'")
actTemp = stream.read()
searchTemp = re.findall('[0-9.]+', actTemp)

if searchTemp:
	print float((searchTemp[0]))/10.0

Und im openhab .items File folgendermaßen definiere

Number SolarThermieTemp01  "Temperatur 01 [%.1f °C]" (UG_HeizungsKeller)    {channel="exec:command:511e0be1:output"}

Wer sich für einen ähnlichen ‘festverdrahteten’ Aufbau mit Beckhoff KL Klemmen interessiert, der kann sich die Website von Patrick Mayer anschauen:

https://allgeek.de/2020/01/05/aktorik-sensorik-mit-dem-beckhoff-feldbus-und-homegear/

bzw.
https://forum.homegear.eu/t/grundlagen-homegear-starter-guide/1143/19

1 Like