OH3 Rule DSL vs. javascript

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
lenschith
Beiträge: 314
Registriert: 11. Dez 2020 22:36
Answers: 0

OH3 Rule DSL vs. javascript

Beitrag von lenschith »

Hallo zusammen,

ich bin gerade dabei von OH2.5 auf OH3 umzuziehen. Nun bin ich bei den Rules angekommen und wollte eigentlich einfach die vorhandenen DSL Rules in OH3 importieren. Jedoch habe ich jetzt verschiedene Meinungen dazu gelesen und bin mir unschlüssig was sinnvoll ist bzw. ob die Informationen die ich gefunden habe korrekt sind.
  • DSL Rules verlangsamen das System bzw. die Regelverarbeitung
  • DSL Rules sind ein altes Format und sollte in OH3 durch Javascript ersetzt werden
Meine Frage an die Profis unter Euch stimmen diese Aussagen?
Macht es keinen Sinn einfach die DSL Rule zu importieren?

Danke für die Infos.
Gruß Lenschi
openHAB4.3.3 in einem Docker Container auf RPI5-8GB, AVM: Fritz!Box 7590 - SMART301/302 - Comet, SMART200/210, SMART440, Alexa, Shelly, Tasmota, ESP Easy, WLED

Anbeku
Beiträge: 216
Registriert: 12. Nov 2020 10:26
Answers: 4

Re: OH3 Rule DSL vs. javascript

Beitrag von Anbeku »

Javascript ist in jedem Fall schneller und sicherlich einen Blick wert. Ich wüsste aber nicht, was dagegen sprechen sollte, erst mal die alten Rules zu importieren, wenn sie funktionieren. Das kann man immer noch Schritt für Schritt ersetzen, wenn das nötig ist.

rbeudel
Beiträge: 258
Registriert: 6. Jun 2019 11:25
Answers: 1

Re: OH3 Rule DSL vs. javascript

Beitrag von rbeudel »

Hallo,
ich bin ein Beispiel dafür das es mit den DSL rules nicht geklappt hat. Ich wollte besonders fleissig sein und habe OH3 neu aufgesetzt und alle Regeln über die MainUi eingegeben. Wobei die eigenliche rule immer eine DSL war. Je mehr rules ich fertig hatte, desto kürzer lief das System durch. Die Systemlast ging auf 100% und es gab massig java errors. Durch verändern der java_opt konnte ich das System stabilisieren. Im englischen Forum gibt es mehrere die das Problem haben und es soll mit einer neuen Version behoben werden. Es gibt auch Meinungen, wenn die DSL rules direkt im Textverfahren wie unter OH2 im Ordner rules eingestellt werden, tritt der Fehler nicht auf. Also backup bereit halten und es so machen wie @Anbeku es empfohlen hat.
Viele Grüße,
Ralf


Debmatic und Openhab in Proxmox VM debian x86_64

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: OH3 Rule DSL vs. javascript

Beitrag von udo1toni »

Also, der Punkt ist hier, es ist ein großer Unterschied, ob die DSL Rules über die Main UI eingestellt werden, oder über ein .rules File.

Man kann das direkt an einer Sache fest machen, die Main UI erlaubt nämlich nicht, globale Variablen anzulegen (Bäääm!)

Für javascript kann man zumindest Variablen definieren, die über die Laufzeit einer Rule hinaus zur Verfügung stehen, also um Status außerhalb der Items festzuhalten. Geht aber nicht rule-übergreifend...
Außer, dass die selbe Engine verwendet wird, um beide Sorten Rules auszuführen, haben die beiden Arten, Rules anzulegen, nicht viel gemeinsam (na ja, es ist die gleiche DSL...)

Langfristig wird die DSL sterben, das hängt mit den verwendeten Frameworks zusammen, die teilweise Showstopper sind (keine Aufwärtskompatibilität für aktuelle Java Versionen... usw.) Die Entwickler wollen das nach Möglichkeit los werden.
Dass openHAB3 die Rules in unveränderter Form nutzbar macht, liegt vor allem daran, dass die hochgepriesene Alternative in openHAB2 nicht in dieser Form in openHAB3 eingebaut wurde - man musste der Nutzergemeinde einen annehmbaren Migrationspfad bieten, was hier heißt: Du kannst quasi die komplette Konfiguration 1:1 übernehmen und dann ohne Zeitdruck Stück für Stück die einzelnen Teile migrieren. Im Fall der Items gibt es sogar die Möglichkeit, die Itemdateien einzulesen und direkt im neuen Format abzuspeichern. Die Textdefinition (*.items) steht dann aber nicht mehr zur Verfügung. Für Things wurde das schon nicht realisiert, weil die letztlich in openHAB2 schon als Standard über die UI angelegt wurden. Der laute Wunsch nach Textdateien für die Definition wurde nicht erhört - bei yaml geht es mehr darum, die Parameter in gut lesbarer Form zur Verfügung zu stellen, statt Screenshots zu verwenden. Es ist aber beispielsweise nicht vorgesehen, per yaml Import die Konfiguration auch nur einzelner Channel einzulesen (sehr schade...) Bleibt also nur die Option, dass sich jemand viel Mühe macht und ein Tool programmiert, welches dann z.B. per REST API die Konfiguration vornimmt - aber wer will so ein Mammut Projekt stemmen?
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
lenschith
Beiträge: 314
Registriert: 11. Dez 2020 22:36
Answers: 0

Re: OH3 Rule DSL vs. javascript

Beitrag von lenschith »

ok, das bedeutet es würde durchaus Sinn machen die Rules in javascript zu überführen.
Die Migration von OH2.5.11 zu OH3 habe ich einige male versucht, bin aber jedes mal gescheitert. Habe deshalb begonnen alles neu zu machen und bin bisher auch gut gefahren. Habe es genutzt Items über die MainUI zu importieren. Das hat alles gut geklappt.
Jetzt bin ich auf einen Stand der ähnlich zu meinen OH2 ist und möchte die Rules nach den Infos von euch auch in javascript. Muss ja nicht gleich alles auf einmal sein aber schritt für schritt.
Ich hätte mir auch schon eine Rule ausgesucht die ich überführen möchte aber stoße hier schon auf ein Problem. Leider habe ich bisher kaum Erfahrung mit javascript.

Kann mir vielleicht jemand einen Tipp geben wie ich das angehen muss. Ich möchte meine Push Notifications senden. Und habe das so umgebaut.
Wäre das so richtig?

DSL Rule:

Code: Alles auswählen

	 if (notificationName_Hotspot.state == ON) {
         sendNotification('name@domain.de', 'Hotspot angeschaltet');
	 }
javascript:

Code: Alles auswählen

	 if (itemRegistry.getItem('notificationName_Hotspot').getState() == ON) {
         events.sendNotification('name@domain.de', 'Hotspot angeschaltet');
	 }
Dank für die Info.
Gruß Lenschi
openHAB4.3.3 in einem Docker Container auf RPI5-8GB, AVM: Fritz!Box 7590 - SMART301/302 - Comet, SMART200/210, SMART440, Alexa, Shelly, Tasmota, ESP Easy, WLED

Antworten