Temperaturwert formatieren 20.26 °C in 2026

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Lux73
Beiträge: 71
Registriert: 26. Dez 2019 12:32
Answers: 0
Wohnort: Bielefeld

Temperaturwert formatieren 20.26 °C in 2026

Beitrag von Lux73 »

Guten Abend,

ich benötige Hilfe bei einer eigtl. recht einfachen Umrechnung eines Temperatursensor Wertes:

Ausgangspunkt 20.26 °C sollen ohne Punkt und Komma in eine entsprechende 4 stellige Zahl umgerechent werden, hier dann 2026

Das entsprechende Item:

Code: Alles auswählen

Number:Temperature	Sensor_Wohnzimmer_Temperatur	"Sensor Wohnzimmer Temperatur"	<temperature>			(gWohnzimmer,gInfluxDB,gRRD4J,gChartTemperatur,gChartWohnzimmer)	{channel="mqtt:topic:sensor_temp_wz:temperature"}
die Rule:

Code: Alles auswählen

//#####################################
rule "cron Heizung Sync Wohnzimmer"
when
	Time cron "0 0/30 * * * ?"																																		//##### alle 30 Minuten ausführen
then
	if ((Heizung.state) == ON) {
		if ((Heizung_aktiv.state) == ON) {
			Thermostat_WZ_Ext_Temp_Sensor.sendCommand(((Sensor_Wohnzimmer_Temperatur.state as Number) * 10).intValue)
		}
	}
end
jetzt habe ich aber das Problem das mein Temperaturwert nach umrechnung völlig falsche Wert umrechnet:

Code: Alles auswählen

2021-12-11 18:38:16.507 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Sensor_Wohnzimmer_Temperatur' changed from 20.07 °C to 20.06 °C
2021-12-11 18:42:00.499 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Thermostat_WZ_Ext_Temp_Sensor' received command 2932
eigtl sollte bei der Umrechnung 2006 rauskommen bei einer Temperatur von 20.06 °C - umgerechnet werden aber 2932

Mir ist jetzt allerdings total unklar wie und warum ein so falscher Wert ausgegeben wird?!? Nachdem ich jetzt schon gut 3h ergebnislos rumprobiere sehe ich den Wald vor lauter Bäumen nicht mehr.

Hintergrund: ich möchte einen Korrekturwert zu meinem Thermostat senden welcher dieser dann als Temperaturoffset nutzt.

Grüße
Michael
APU2c4|Debian12.11|OpenHAB4.3.5@Zulu21|mosquitto|hostapd|dnsmasq|zigbee2mqtt / Huawei MediaPad T5|FullyKioskBrowser
Zigbee:CC2652RB|1xCC2530.ROUTER|15xHue|4xIlluminize 5110.40|Danfoss:4xAlly+4xRoomSensor
Aqara:5xMCCGQ11LM/6xWSDCGQ11LM/6xGZCGQ01LM/4xRTCGQ11LM/2xRTCGQ13LM/2xRTCGQ14LM/1xDJT11LM/1xRTCZCGQ11LM/2x WXKG02LM
TuYa:2xTS011F/3xTS0601/1xTS0001|MOES:1xUFO-R11|HEIMAN:1xHS2WD-E
MQTT:Tasmota13.4.0|6xDelock 11826|3xShelly1|3xBlitzwolf SHP8|1xGosund SP112

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Temperaturwert formatieren 20.26 °C in 2026

Beitrag von udo1toni »

Dein Problem ist UoM. 20,06 °C sind 293,21 K, mal 10 sind 2932.

Du kannst auch im Log sehr schön sehen, dass openHAB hier die Einheit °C mit ausgibt.
Deine Rlue muss so aussehen:

Code: Alles auswählen

rule "cron Heizung Sync Wohnzimmer"
when
    Time cron "0 0/30 * * * ?" // alle 30 Minuten
then
    if(Heizung.state == ON) {
        if(Heizung_aktiv.state == ON) {
            Thermostat_WZ_Ext_Temp_Sensor.sendCommand(((Sensor_Wohnzimmer_Temperatur.state as Number).floatValue * 100).intValue)
        }
    }
end
.floatValue wandelt das Number Objekt explizit nach Float.
Float Werte halten keine Einheit. Deshalb hat der Wert dann auch keine Einheit mehr und das anschließende Rechnen funktioniert wie erwartet. Bei zwei Nachkommastellen muss man natürlich mit 100 multiplizieren ;)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Lux73
Beiträge: 71
Registriert: 26. Dez 2019 12:32
Answers: 0
Wohnort: Bielefeld

Re: Temperaturwert formatieren 20.26 °C in 2026

Beitrag von Lux73 »

Hallo Udo,

vielen Dank - das mein Problem UoM sein könnte hatte ich schon in Verdacht. Allerdings wäre ich nicht so schnell auf die Celsius <-> Kelvin Umrechnung gekommen :?

ja, mein Multiplikator 10 war definitiv auch falsch - aber mit dem richtigen Multi von 100 in meiner Rule passte der Wert nunmal so gar nicht... :oops:

Hab das .floatValue eingefügt und die Rule funktioniert dank deiner Hilfe auf Anhieb :mrgreen:

Vielen Dank nochmal und dir noch einen angenehmen Abend!

Grüße
Michael
APU2c4|Debian12.11|OpenHAB4.3.5@Zulu21|mosquitto|hostapd|dnsmasq|zigbee2mqtt / Huawei MediaPad T5|FullyKioskBrowser
Zigbee:CC2652RB|1xCC2530.ROUTER|15xHue|4xIlluminize 5110.40|Danfoss:4xAlly+4xRoomSensor
Aqara:5xMCCGQ11LM/6xWSDCGQ11LM/6xGZCGQ01LM/4xRTCGQ11LM/2xRTCGQ13LM/2xRTCGQ14LM/1xDJT11LM/1xRTCZCGQ11LM/2x WXKG02LM
TuYa:2xTS011F/3xTS0601/1xTS0001|MOES:1xUFO-R11|HEIMAN:1xHS2WD-E
MQTT:Tasmota13.4.0|6xDelock 11826|3xShelly1|3xBlitzwolf SHP8|1xGosund SP112

Antworten