Seite 1 von 2
Fehler nach Upgrade auf 4.0
Verfasst: 26. Jul 2023 17:03
von Gugu
Hallo,
ich habe nach dem Upgrade auf Openhab 4.0 auf meinem Raspberry Pi folgenden Fehler und werde diesen nicht los.
"Can't convert type DecimalType with value '5' to FLOAT value with QuantityTypeConverter for 'INT0000005:1#SET_POINT_TEMPERATURE', please check the item type and the commands in your scripts"
Homematic Binding sowie alle Things habe ich schon entfernt und neu hinzugefügt. Hat leider nichts geholfen. Hat noch einer einen Tipp für mich?
Re: Fehler nach Upgrade auf 4.0
Verfasst: 26. Jul 2023 17:37
von udo1toni
Das Problem wird hier vielleicht das Item sein. Speziell im Zusammenhang mit UoM (QuantityType) hat es wesentliche Änderungen gegeben, die Anpassungen an allen UoM Items erforderlich machen. Sind die Items per UI erstellt und das Upgrade wurde direkt durchgeführt (also eine bestehende openHAB3.4.4 Version wurde per apt upgrade auf openHAB4.0.0 gehoben - openHABian nutzt auch apt), dann sollten die Items automatisch die vorhandenen Einstellungen aus dem pattern übernommen haben. Ist hier etwas flaches eingetragen, führt das natürlich zu Folgefehlern.
Ist das Item per Textdatei angelegt, so muss der Anwender den zusätzlichen Parameter unit="..." selbst zur Definition hinzufügen.
Re: Fehler nach Upgrade auf 4.0
Verfasst: 26. Jul 2023 17:51
von Gugu
Hallo,
danke für die schnelle Antwort. Ich habe das Upgrade über apt-get upgrade durchgeführt.
Meine Items habe ich über Textdatei angelegt. Das liegt mir einfach besser. Was bedeutet Parameter unit=? Das verstehe ich nicht so ganz.
Re: Fehler nach Upgrade auf 4.0
Verfasst: 26. Jul 2023 18:13
von udo1toni
Du musst bei jedem UoM Item (also z.B. Number:Dimensionless) bei der Channel Definition noch die unit ergänzen, z.B.
Code: Alles auswählen
Number:Dimensionless Test "Mein Item [%d %%]" {channel="irgendwas", unit="%"}
unit bestimmt, wie der Wert im Item vorliegt, die Formatierung im Label bestimmt, wie der Wert in der Sitemap angezeigt wird. Nutzt Du auch die stateDescription als Teil der Textdefinition, gibt es dort das Feld pattern, das ist für die Darstellung überall zuständig (auch in der Sitemap, wenn das Label keine extra Formatierung enthält).
Die unit sollte zu der vom Channel gesendeten unit passen, also z.B. der Channel sendet °F, Du setzt die unit des Items auf K und das Label auf "[%.1f °C]", dann wird das Item den Wert vom Channel als Grad Fahrenheit angeliefert bekommen. Intern speichert es den Wert aber als Kelvin. In Deiner Anzeige schließlich steht der Wert als Grad Celsius.
Bisher war es so, dass die Werte der Persistence abhängig von der gewählten Einheit in der Anzeige waren, das führte dazu, dass die gesamte Historie unbrauchbar wurde, wenn man die Anzeigeeinheit angepasst hat. Mit dem zusätzlichen Parameter für den Status passiert das jetzt nicht mehr.
Re: Fehler nach Upgrade auf 4.0
Verfasst: 26. Jul 2023 18:52
von Gugu
Danke. Wäre es so in etwas richtig? Es funktioniert leider immer noch nicht.
Number Soll_TemperaturBadezimmerwand "SOLL Badezimmer [%.1f °C]" {channel="homematic:HmIPHEATING:3014F711A0001F9D8997981E:INT0000005:1#SET_POINT_TEMPERATURE, unit="%"}
Re: Fehler nach Upgrade auf 4.0
Verfasst: 26. Jul 2023 19:08
von udo1toni
Nein, das ist kein UoM Item, sondern ein normales Number Item.
Frage: bietet das Binding hier eventuell UoM an? Dann müsste das Item so aussehen:
Code: Alles auswählen
Number:Temperature Soll_TemperaturBadezimmerwand "SOLL Badezimmer [%.1f °C]" {channel="homematic:HmIPHEATING:3014F711A0001F9D8997981E:INT0000005:1#SET_POINT_TEMPERATURE", unit="°C"}
Beachte auch, dass channel und unit zwei Parameter sind, unit ist nicht Bestandteil des Channel Parameters (es fehlt bei Dir das schließende Anführungszeichen vor dem Komma).
EDIT: In vollständiger openHAB4-Manier:
Code: Alles auswählen
Number:Temperature Soll_TemperaturBadezimmerwand "SOLL Badezimmer" {channel="homematic:HmIPHEATING:3014F711A0001F9D8997981E:INT0000005:1#SET_POINT_TEMPERATURE", unit="°C", stateDescription=""[pattern="%.1f °C"]}
Eventuell kannst Du den Rest des Labels statt vorne auch noch im Feld stateDescription eintragen, das habe ich bisher noch nicht ausprobiert.
Re: Fehler nach Upgrade auf 4.0
Verfasst: 26. Jul 2023 20:05
von Gugu
Das weiß ich leider nicht. Das Item sieht so aus, wie ich es oben geschrieben habe. Es funktioniert leider mit Ihrem Code auch nicht. Was kann ich noch machen?
Re: Fehler nach Upgrade auf 4.0
Verfasst: 28. Jul 2023 10:25
von rbeudel
Das Item sieht so aus, wie ich es oben geschrieben habe
Da steht als unit % und nicht °C
Re: Fehler nach Upgrade auf 4.0
Verfasst: 7. Aug 2023 16:29
von AGH
Moin,
ich habe das gleiche Problem mit Homematic Heizungsreglern:
Code: Alles auswählen
Can't convert type DecimalType with value '30.5' to FLOAT value with QuantityTypeConverter
Unter OH 3.4 funktionierte es noch
Mein Item sieht so aus:
Code: Alles auswählen
Number EG_Kueche_Therm1_SollTemp "Solltemperatur [%.1f °C]" (gEG_Kueche, AllThermostatSetpoints) {channel="homematic:HM-CC-RT-DN:3014F711A0001F58A992F80F:NEQ1010269:4#SET_TEMPERATURE"}
Alle Werte werden manuell in der Sitemap mittels "Setpoint" geändert. Es gibt
keine Rule.
System Raspberry 4, Debian Buster, Java 17 (Original Repositorie Buster, kein Zulu).
Irgend eine Idee?
Re: Fehler nach Upgrade auf 4.0
Verfasst: 7. Aug 2023 19:09
von udo1toni
Im Zuge des Umstiegs auf openHAB4 wurde in vielen Addons UoM eingeführt.
Bitte prüfe die Dokumentation dahingehend.
Falls ein Channel UoM anbietet, wird dringend empfohlen, das Item ebenfalls als UoM Item anzulegen. In zukünftigen openHAB Versionen wird das Verknüpfen einfacher Number Items mit UoM Channels eventuell unterbunden (so interpretiere ich zumindest die Doku)
UoM ist bei manchen Addons wohl etwas hakelig.
Wichtig: Du musst unbedingt im Item den Parameter unit setzen, wenn es sich um ein UoM Item handelt. für bestehende UoM Items hat openHAB das beim Upgrade automatisiert (und dabei kann es auch zu Fehlern kommen... ist also immer einen Blick wert)
Weiterhin kann es gut sein, dass Du zwingend die Unit für die Anzeige manuell setzen musst, obwohl das
eigentlich nicht notwendig sein sollte.
So sähge Dein Number Item als UoM Item aus:
Code: Alles auswählen
Number:Temperature EG_Kueche_Therm1_SollTemp "Solltemperatur [%.1f °C]" (gEG_Kueche, AllThermostatSetpoints) {channel="homematic:HM-CC-RT-DN:3014F711A0001F58A992F80F:NEQ1010269:4#SET_TEMPERATURE",unit="°C",stateDescription=""[pattern="%.1f °C"]}
Das Feld unit gibt vor, in welcher Einheit das Item den Wert hält (und z.B. auch persistiert). Die stateDiscription liefert die Metadaten für die Main UI (überall dort)