Seite 1 von 1

Rule erzeugt bei Ausführung weitere Rule

Verfasst: 15. Jan 2025 08:25
von macho.elf
Hallo Zusammen,

kurze Zusammenfassung. Bin jetzt von OH 3 auf OH 4 umgestiegen und somit musste einiges nachgezogen werden.
Ich habe eine neue Regel für meine Windberechnung aufgesetzt, die auch macht was sie soll.

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: Wind_ms
    type: core.ItemStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/javascript
      script: |
        rules.JSRule({
            name: "Convert Wind Speed",
            description: "Converts wind speed from km/s to km/h",
            triggers: [
                triggers.ItemStateChangeTrigger("Wind_ms")
            ],
            execute: (event) => {
                var Wind_ms = items.getItem("Wind_ms").state;
                if (Wind_ms !== "NULL" && Wind_ms !== "UNDEF") {
                    var Wind_kmh = parseFloat(Wind_ms) * 3.6;
                    items.getItem("Wind_kmh").sendCommand(Wind_kmh.toFixed(2));
                }
            }
        });
    type: script.ScriptAction
Jetzt habe ich allerdings gesehen, dass es mir dadurch schieinbar temporär diese Rule immer wieder bei Ausführung unter Rules neu anlegt?!
Screenshot 2025-01-15 082342.png
Wenn ich die Rule anhalte, sind auch die "erzeugte" Rules wieder weg?!


Achso...
openHAB 4.3.2 auf Raspberry Pi 4

Re: Rule erzeugt bei Ausführung weitere Rule

Verfasst: 15. Jan 2025 16:38
von Harka
Moin,
nur geraten!
Du nutzt ein Script, welches für dateibasierte Regeln gedacht ist über die UI. Da ist einiges doppelt gemoppelt.
Kürze das eigentliche Script mal bitte etwas ein

Code: Alles auswählen

var Wind_ms = items.getItem("Wind_ms").state;
if (Wind_ms !== "NULL" && Wind_ms !== "UNDEF") {
	var Wind_kmh = parseFloat(Wind_ms) * 3.6;
	items.getItem("Wind_kmh").sendCommand(Wind_kmh.toFixed(2));
}
Vermutung: jedes mal, wenn Deine UI-Rule gestartet wird, erstellst Du mit rules.JSRule(...) im RAM oder Temp-Ordner eine neue Rule. Damit der ID einmalig ist wird jeweils noch der Name ergänzt.

Re: Rule erzeugt bei Ausführung weitere Rule

Verfasst: 17. Jan 2025 13:22
von macho.elf
Ja jetzt geht es! Danke