Can't convert type DecimalType with value to FLOAT value with QuantityTypeConverter

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
portboy
Beiträge: 6
Registriert: 13. Apr 2023 00:00
Answers: 0

Can't convert type DecimalType with value to FLOAT value with QuantityTypeConverter

Beitrag von portboy »

Hab hier mal ein OH4 Problem (jedenfalls ist es mir früher nie aufgefallen)

Ich will ein Homatic Thermostat (HM-CC-RT-DN) im Rahmen einer Rule in den Modus Manuell (#MANU_MODE) versetzen.
Dafür übergibt man ja die gewünschte Zieltemperatur

Code: Alles auswählen

Item.sendCommand(ManTemp)
Ich erhalte hierbei aber ein Fehler, dass der Wert als float erwartet wird.

Code: Alles auswählen

Can't convert type DecimalType with value to FLOAT value with QuantityTypeConverter
Wenn ich den Wert vorher in das richtige Format bringe,

Code: Alles auswählen

var ManTemp = 5|°C
bekomme ich nicht mehr den Fehler, aber das System kollabiert ...

Code: Alles auswählen

Device 'MEQ0795068' is OFFLINE, can't send command '5 °C' for channel 'homematic:HM-CC-RT-DN:3014F711A061A7DA498FA                                                            E83:MEQ0795068:4#MANU_MODE'

Code: Alles auswählen

 Connection lost on gateway '3014F711A061A7DA498FAE83', cause: "IOException java.util.concurrent.ExecutionException                                                            : java.io.EOFException: HttpConnectionOverHTTP@224a8e9d::SocketChannelEndPoint@710dcf2e{l=/192.168.101.120:47100,r=/192.168.101.196:2001,ISHUT,fill=-,flush=-,to=0/0}{io=0/0,kio=                                                            0,kro=1}->HttpConnectionOverHTTP@224a8e9d(l:/192.168.101.120:47100 <-> r:/192.168.101.196:2001,closed=false)=>HttpChannelOverHTTP@3362215c(exchange=HttpExchange@6d64d460{req=Htt                                                            pRequest[POST / HTTP/1.1]@1bac8137[TERMINATED/null] res=HttpResponse[null 0 null]@44759d3[PENDING/null]})[send=HttpSenderOverHTTP@268df0c6(req=QUEUED,snd=COMPLETED,failure=null)                                                            [HttpGenerator@6d01f7a3{s=START}],recv=HttpReceiverOverHTTP@125b760d(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]"
Hat einer von euch einen pragmatischen Ansatz, das Thermostat in den Manu Mode inkl. Zieltemperatur zu versetzen?
von udo1toni » 17. Nov 2023 11:42
Die zusätzlichen Klammern sollten allerdings nicht notwendig sein. :) und wenn Du das Item passend deklarierst, müsste es sogar direkt gehen:

Code: Alles auswählen

var ManTemp = 5.0 // durch .0 wird angezeigt, dass die Variable vom Typ Float sein soll
Item.sendCommand(ManTemp)
Kurz zum MANU_MODE... Es mag sein, dass es bei HomeMatic so gelöst ist, logisch ist daran aber nichts (außer natürlich wenn man es isoliert im System betrachtet).
Auswahl manueller Betrieb über einen Switch Channel wäre genauso möglich, dann wird halt die hinterlegte Temperatur genutzt, bis diese anders gesetzt wird.
Über einen Number (oder String) Channel könnte man auch gezielt eine von mehreren Betriebsarten auswählen.

Bei meinen knx RTR ist es beispielsweise so, dass ich eine Solltemperatur einstelle. Schalte ich nun vom Komfortbetrieb in die Nachtabsenkung, so wird die Temperatur um zwei Grad abgesenkt (die zwei Grad sind konfigurierbar), in Standby kommen weitere zwei Grad Absenkung dazu, bei Frostschutz wird die Temperatur fest auf +7°C eingestellt, alle vier Betriebsarten werden über einen einzigen Channel gewählt und auch rückgemeldet. Die Anzeige der Solltemperatur wechselt dabei automatisch entsprechend.
Der RTR hat einen Eingang, über den ein offenes Fenster gemeldet werden kann (womit der RTR dann automatisch auf Frostschutz und wieder auf den davor gültigen Modus geht).
Diese Form der Steuerung ist (ebenfalls in sich) auch logisch, funktioniert aber komplett anders :)
Gehe zur vollständigen Antwort

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

Re: Can't convert type DecimalType with value to FLOAT value with QuantityTypeConverter

Beitrag von udo1toni »

Zu wenig Information. :)

Wie ist das Item definiert? Number? Number:Temperature?
Ist der Channel homematic:HM-CC-RT-DN:3014F711A061A7DA498FAE83:MEQ0795068:4#MANU_MODE tatsächlich der richtige, um eine Solltemperatur zu schreiben? Ich würde auf diesem Channel (abgeleitet aus dem Namen) ON/OFF erwarten, allenfalls noch AUTO/ECO/FROST/COMFORT oder so was in der Art.

Leider finde ich keine Auflistung der verfügbaren Channel (der HomeMatic Kram ist ja per AutoDiscovery eingebunden, also ist so eine Liste nicht essenziell). Im Zweifel kannst Du aber alle verfügbaren Channel im Thing anzeigen lassen (evtl. gibt es auch Channel, die ausgeblendet sind - dann gibt es in der Liste oben rechts ein show advanced Kästchen)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

portboy
Beiträge: 6
Registriert: 13. Apr 2023 00:00
Answers: 0

Re: Can't convert type DecimalType with value to FLOAT value with QuantityTypeConverter

Beitrag von portboy »

Das Item ist als Number:Temperature angelegt. Ist aber eigentlich egal. Wenn es lediglich als Number Item definiert ist, erhalte ich auch den Fehler.

Das Thing ist ein Number Thing. Das hat auch über Jahre funktioniert. Mir ist leider auch nicht aufgefallen, seit wann ich den Float Fehler erhalte.
Der Datenpunkt ist auch seitens eQ3 als Float definiert
https://www.eq-3.de/Downloads/eq3/downl ... punkte.pdf

MANU_MODE wird aktiviert, in dem man die Zieltemperatur übergibt. Was auch logisch ist, da man sonst immer zwei Schritte vornehmen müsste. Aktivierung Mode und anschließend Übergabe der Zieltemperatur.

Im Detail suche ich lediglich einen Weg, meine Variable ManTemp als float zu definieren oder bei der Übergabe des Wertes diesen als float zu übergeben.

portboy
Beiträge: 6
Registriert: 13. Apr 2023 00:00
Answers: 0

Re: Can't convert type DecimalType with value to FLOAT value with QuantityTypeConverter

Beitrag von portboy »

Lösung:

Code: Alles auswählen

Item.sendCommand((ManTemp).floatValue)
Manchmal ist es so einfach :D

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

Re: Can't convert type DecimalType with value to FLOAT value with QuantityTypeConverter

Beitrag von udo1toni »

Die zusätzlichen Klammern sollten allerdings nicht notwendig sein. :) und wenn Du das Item passend deklarierst, müsste es sogar direkt gehen:

Code: Alles auswählen

var ManTemp = 5.0 // durch .0 wird angezeigt, dass die Variable vom Typ Float sein soll
Item.sendCommand(ManTemp)
Kurz zum MANU_MODE... Es mag sein, dass es bei HomeMatic so gelöst ist, logisch ist daran aber nichts (außer natürlich wenn man es isoliert im System betrachtet).
Auswahl manueller Betrieb über einen Switch Channel wäre genauso möglich, dann wird halt die hinterlegte Temperatur genutzt, bis diese anders gesetzt wird.
Über einen Number (oder String) Channel könnte man auch gezielt eine von mehreren Betriebsarten auswählen.

Bei meinen knx RTR ist es beispielsweise so, dass ich eine Solltemperatur einstelle. Schalte ich nun vom Komfortbetrieb in die Nachtabsenkung, so wird die Temperatur um zwei Grad abgesenkt (die zwei Grad sind konfigurierbar), in Standby kommen weitere zwei Grad Absenkung dazu, bei Frostschutz wird die Temperatur fest auf +7°C eingestellt, alle vier Betriebsarten werden über einen einzigen Channel gewählt und auch rückgemeldet. Die Anzeige der Solltemperatur wechselt dabei automatisch entsprechend.
Der RTR hat einen Eingang, über den ein offenes Fenster gemeldet werden kann (womit der RTR dann automatisch auf Frostschutz und wieder auf den davor gültigen Modus geht).
Diese Form der Steuerung ist (ebenfalls in sich) auch logisch, funktioniert aber komplett anders :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

portboy
Beiträge: 6
Registriert: 13. Apr 2023 00:00
Answers: 0

Re: Can't convert type DecimalType with value to FLOAT value with QuantityTypeConverter

Beitrag von portboy »

nice, danke

Antworten