Rule Fehler

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
THE-EYE
Beiträge: 8
Registriert: 21. Feb 2020 11:17
Answers: 0

Rule Fehler

Beitrag von THE-EYE »

Hallo zusammen,

ich habe eine Rule und finde den Fehler nicht. Die Rule berechnet einen € Preis anhand einer kWh angabe.

Rule:

Code: Alles auswählen

rule "Stromzaehler preis"

when
Item Solaranlage_Gesamtverbrauch received update
then
Einsparung.postUpdate(String.format ("%.2f", (test_ertrag.state as QuantityType<Number>).doubleValue * 0.2875))
end

Der Fehelr im Log:

Code: Alles auswählen

2020-06-16 13:40:53.011 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Stromzaehler preis': Could not cast 7,58 to org.eclipse.smarthome.core.library.types.QuantityType; line 7, column 54, length 44

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Rule Fehler

Beitrag von Tokamak »

Das liegt an deinen Locales. Dort ist das , als Dezimaltrenner eingestellt.

So dürfte es auch gehen:

Code: Alles auswählen

rule "Stromzaehler preis"
when
	Item Solaranlage_Gesamtverbrauch received update
then
	Einsparung.postUpdate((test_ertrag.state as Number) * 0.2875)
end
da sowohl Einsparung als auch test_ertrag Number-Items sein dürften
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

THE-EYE
Beiträge: 8
Registriert: 21. Feb 2020 11:17
Answers: 0

Re: Rule Fehler

Beitrag von THE-EYE »

Vielen Dank für das erste Feedback.

Ich habe die Rule entsprechend geändert.

Allerdings erhalte ich nun diesen Fehler:

Code: Alles auswählen

2020-06-16 13:53:53.766 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Stromzaehler preis Szemkus': Could not cast 57,83 to java.lang.Number; line 7, column 31, length 30
Beide ITEMS sind als String angelegt.

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Rule Fehler

Beitrag von Tokamak »

Warum als Strings, wenn du mit ihnen rechnen willst?

Spontan fällt mir kein Vorteil ein, ein String-Item für Zahlen zu nutzen.
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

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

Re: Rule Fehler

Beitrag von udo1toni »

Also der Reihe nach:
Wie sind die beteiligten Items definiert? Wo kommen die Daten her? Falls die Daten als String vorliegen (z.B. weil sie über exec ins System kommen) musst Du die Daten in zwei Schritten in eine Zahl wandeln. Schritt eins: ersetze das Komma durch einen Punkt. Schritt zwei: Parse den String in eine (Float-)Zahl:

Code: Alles auswählen

val myNumber = Float::parseFloat(myString.replace(",","."))
Falls es Probleme mit der Genauigkeit gibt, steht meines Wissens auch Double::parseDouble zur Verfügung.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Rule Fehler

Beitrag von Tokamak »

Selbst wenn sie als String über ein Exec oder in einem JSON reinkommen, würde ich sie sofort in eine Zahl umwandeln und als Number-Item verwalten, und nicht erst in der Rule den String jedes Mal umwandeln.
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

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

Re: Rule Fehler

Beitrag von udo1toni »

Das geht aber nicht. Das Exec Binding kann den Output nur als String ausgeben.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten