Seite 1 von 1
Zwei Items multiplizieren?
Verfasst: 26. Jul 2023 13:05
von Tüftler
Hallo zusammen
Gerne würde ich zwei Items miteinander multiplizieren (aus Spannung und Strom die Leistung berechnen).
Konkret habe ich ein Item "Spannungswert_1" (ca. 12 V) und ein Item "Stromwert_2" (ca. 3 A).
Diese beiden möchte ich multiplizieren und im Item "Leistungswert_2" haben.
Ich glaube, mit einer Transformation komme ich nicht weiter. Ich kenne die Javaskript-Transformation (benutze ich um bei einem Spannungswandler aus einem Spannungswert einen Stromwert zu berechnen).
Wie kann man einfach zwei Items multiplizieren?
Re: Zwei Items multiplizieren?
Verfasst: 26. Jul 2023 13:38
von PeterA
Hi,
könnte so gehen:
Code: Alles auswählen
rule "Berechne Leistungswert"
when
Item Spannungswert_1 changed or
Item Stromwert_2 changed
then
var Number value1 = Spannungswert_1.state as Number
var Number value2 = Stromwert_2.state as Number
var Number result = value1 * value2 // Multiplikation
Leistungswert_2.postUpdate(result)
end
Re: Zwei Items multiplizieren?
Verfasst: 26. Jul 2023 14:32
von Tüftler
Danke!
So wirklich laufen tut es noch nicht.
Bei mir in OH3 sieht der Code so aus:
Code: Alles auswählen
configuration: {}
triggers:
- id: "3"
configuration:
itemName: Stromwert_3
type: core.ItemStateUpdateTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
type: application/vnd.openhab.dsl.rule
script: |-2
var Number value1 = Spannungswert_1.state as Number
var Number value2 = Stromwert_2.state as Number
var Number result = value1 * value2 // Multiplikation
Leistungswert_2.postUpdate(result)
type: script.ScriptAction
Ich sehe aber, dass die Rule aufgerufen wird (Der Status ändert oft von IDLE auf RUNNING, deshalb musste ich für die Auslösung auch "Stromwert_3" nehmen, der toggelt öfters als Nummer 2

)
Aber mit dem Logik-Teil scheint es noch nicht zu stimmen.
Hängt es damit zusammen, dass meine Items nur "Points" sind?
Stromwert_2.jpg
Re: Zwei Items multiplizieren?
Verfasst: 26. Jul 2023 14:59
von Tüftler
Ich nehm "alles" zurück!
Es funktioniert! Danke!
Mein Fehler war, dass mein Spannungswert_1 nicht wie beim Strom nur Spannungswert_1 heisst:
Spannungswert_1.jpg
Und als ich das korrigiert habe, tata... es hat funktioniert

Danke!
Re: Zwei Items multiplizieren?
Verfasst: 26. Jul 2023 15:05
von PeterA
Top!
Re: Zwei Items multiplizieren?
Verfasst: 26. Jul 2023 17:13
von udo1toni
Übrigens sollte das tatsächlich auch mit QuantityType funktionieren.
Gegeben drei Items:
Code: Alles auswählen
Number:ElectricPotential Volt
Number:ElectricCurrent Ampere
Number:Power Watt
Nun sollte
Code: Alles auswählen
Watt.postUpdate((Ampere.state as QuantityType) * (Volt.state as QuantityType))
das korrekte Ergebnis liefern (inklusive korrekter Einheit... hab ich gestern erfreut im englischen Forum gelesen... ich ging bisher davon aus, dass das so nicht funktionieren wird)
Natürlich gibt es die Einschränkung, dass W eben nicht gleich VA ist, es sei denn wir reden von Gleichspannung und Gleichstrom, aber allein dass es in dieser Form überhaupt funktioniert (und damit ja auch mit anderen Größen) ist ziemlich klasse.