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?
Zwei Items multiplizieren?
- Tüftler
- Beiträge: 20
- Registriert: 23. Aug 2019 21:24
- Wohnort: St. Gallen / Schweiz
Zwei Items multiplizieren?
openHAB3.4.3 mit openHABian eingerichtet // eher Konfigurier-Fähigkeiten als Programmier-Fähigkeiten

- PeterA
- Beiträge: 1106
- Registriert: 8. Feb 2019 12:12
Re: Zwei Items multiplizieren?
Hi,
könnte so gehen:
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
- OpenHab 2.4
#PWRUP
#PWRUP
- Tüftler
- Beiträge: 20
- Registriert: 23. Aug 2019 21:24
- Wohnort: St. Gallen / Schweiz
Re: Zwei Items multiplizieren?
Danke!
So wirklich laufen tut es noch nicht.
Bei mir in OH3 sieht der Code so aus:
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?
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

Aber mit dem Logik-Teil scheint es noch nicht zu stimmen.
Hängt es damit zusammen, dass meine Items nur "Points" sind?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB3.4.3 mit openHABian eingerichtet // eher Konfigurier-Fähigkeiten als Programmier-Fähigkeiten

- Tüftler
- Beiträge: 20
- Registriert: 23. Aug 2019 21:24
- Wohnort: St. Gallen / Schweiz
Re: Zwei Items multiplizieren?
Ich nehm "alles" zurück!
Es funktioniert! Danke!
Mein Fehler war, dass mein Spannungswert_1 nicht wie beim Strom nur Spannungswert_1 heisst:
Und als ich das korrigiert habe, tata... es hat funktioniert
Danke!
Es funktioniert! Danke!
Mein Fehler war, dass mein Spannungswert_1 nicht wie beim Strom nur Spannungswert_1 heisst:
Und als ich das korrigiert habe, tata... es hat funktioniert

Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB3.4.3 mit openHABian eingerichtet // eher Konfigurier-Fähigkeiten als Programmier-Fähigkeiten

- PeterA
- Beiträge: 1106
- Registriert: 8. Feb 2019 12:12
- udo1toni
- Beiträge: 15246
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Zwei Items multiplizieren?
Übrigens sollte das tatsächlich auch mit QuantityType funktionieren.
Gegeben drei Items:
Nun sollte
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.
Gegeben drei Items:
Code: Alles auswählen
Number:ElectricPotential Volt
Number:ElectricCurrent Ampere
Number:Power Watt
Code: Alles auswählen
Watt.postUpdate((Ampere.state as QuantityType) * (Volt.state as QuantityType))
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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet