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.