Hallo!
Ich habe OH 4 auf einem Raspi 5 installiert. Die Regeln von OH 3 funktionieren da nicht mehr, soweit so gut. Die Syntax sollte ich verstanden haben. Es funktionieren jedoch die einfachsten Berechnungen nicht. Die folgende Subtraktion funktioniert nicht:
Es wird in "prod_tag" immer nur der Wert von "prod_start" geschrieben. Alle items sind numerisch. Ich habe verschiedene Variationen mit Klammern ausprobiert, leider ohne Erfolg. Etwas, wahrscheinlich Banales, übersehe ich.
Ich hoffe jemand kann mir helfen
Danke
Der erste Punkt ist, Du musst unter openHAB4 explizit das JavaScript Scripting Addon installieren (bei openHAB3 war dies automatisch installiert). Punkt zwei ist, es gibt zwei verschiedene Versionen davon. "Nashorn" ist die alte Engine, wenn Du die installierst, sollten die JavaScript Rules auf openHAB3 direkt funktionieren (evtl. mit ein paar Kleinigkeiten, die Du noch anpassen musst) "Graal" ist die moderne Version, die einerseits mehr Anpassungen erfordert, andererseits aber weniger Code braucht, weil diverse Dinge direkter erreichbar sind. Dieses ganze items.getItem-Gedöns sollte viel einfacher funktionieren.
Und was den Status betrifft, wenn Du den als numerischne Wert haben willst, gibt es (zumindest in Graal) .numericState, welches Du explizit auswählen musst.
Genaueres findest Du aber auch in der offiziellen Doku, dort ist JavaScript Scripting inzwischen sehr umfangreich dokumentiert.
openHAB5.1.2 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.5 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
Funktioniert noch immer nicht.
Ich habe folgende add-ons installiert
JavaScript Scripting
JRule - openHAB Rules using Java
Den Code habe ich um die fehlende Klammer ergänzt.
Wie verwaltest Du Deine Regeln? Wenn über die UI -> klapp mal bitte mit dem Pfeil untern rechts die Details auf. Dort sollte ECMAScript 262 Edition 11 aktiviert sein.
Wenn du OH4 als openhabian installiert hast ist automatisch auch frontail für die Logs dabei und unter der Adresse IP:9001 erreichbar. Kommen dort Fehler? Was wird angezeigt wenn Du mit console.info(items.getItem('DeinItem').numericState);
die Ausgangswerte ausgeben lässt?