Wie komme ich in einer Rule an OPENHAB_CONF?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von Tokamak »

Moin,

um in einer Rule die Environment-Variable OPENHAB_CONF zu nutzen, wollte ich sie mit System.getenv() lesen. Geht aber nicht, das System-Objekt ist nicht da oder zumindest in der Rule-DSL verschollen.

Wie bekomme ich das nun hin? Muss ich mir tatsächlich was mit den Exec-Binding basteln, das ich bisher nicht benötigt habe?

Danke und Gruß
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

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

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von udo1toni »

Warum sollte man das tun wollen? Im Allgemeinen musst Du keine absoluten Pfade zu openHAB-Dateien angeben, mal abgesehen davon, dass Du auf die Dateien auch nicht aus Rules heraus zugreifen solltest. Entsprechend ist es auch nicht vorgesehen, die Bash-Variable zu verwenden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von Tokamak »

Warum sollte man das tun wollen?
Weil ich Dateien auslesen will, die ich zusätzlich dort ablege, praktischerweise deswegen, weil ich sie eh über das Openhab-Samba-Share dort im Zugriff habe.

Und wenn ich die Frage ohne OPENHAB_CONF gestellt hätte, sondern nur: "Wie lese ich aus einer Rule heraus Environment-Variablen?", was wäre dann die Antwort gewesen?
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

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

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von udo1toni »

Dein Vorhaben wird nicht ohne externe Scripte realisierbar sein, jedenfalls ist mir dazu kein Weg bekannt. Die Environment Variablen sind außerhalb openHAB, diese Information steht schlicht nicht zur Verfügung.

Um mit einem beliebten Vergleich zu sprechen: Man wird auhc kein Dreirad nutzen, um einen Schiffscontainer zu transprtieren. Die Rules DSL kann vieles, aber sie sit nicht für alle Dinge gleichermaßen geeignet.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von Tokamak »

Nun gut... muss ich es eben anders machen.

Das Argument nachvollziehen kann ich nicht. java.util.Arrays kann ich in OH einbinden und nutzen, java.lang.System und System hingegen nicht? An manchen Stellen tue ich mich durchaus schwer mit den Einschränkungen bzw. möglichen Überlegungen der Entwickler, die zu den Einschränkungen geführt haben.
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

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

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von udo1toni »

Hast Du denn mal versucht, java.lang.System zu importiern?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von Tokamak »

Yep. "java" in

Code: Alles auswählen

import java.lang.System
wird sowohl unter Debian als auch unter openhabian unterkringelt mit der Meldung

Code: Alles auswählen

no viable alternative at input 'System'
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von peter-pan »

Ich weiss zwar nicht, ob dir das weiterhilft, aber probiere einfach mal

Code: Alles auswählen

import java.lang.getenv
dann sollte die Fehlermeldung eigentlich nicht mehr kommen.Falls das klappt, würde mich interessieren, wie du dann weiter gemacht hast.

Ich habe leider keine Ahnung von dem Ganzen, hab's einfach mal per "trial and error" probiert und diesen Import in einer Rule angelegt, basierend auf dieser Webseite
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von Tokamak »

Wie nicht anders zu erwarten:

Code: Alles auswählen

java.lang.getenv cannot be resolved to a type.
Von welcher Web-Site sprichst du?
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von peter-pan »

Sorry, ich meinte diese Webseite.

Also ich habe diesen Import in eine Rule eingebaut:

Code: Alles auswählen

import java.lang.getenv
rule " Spielereien mit Syntax"
 when
     Item DummySpielereien changed to ON
  then
          {
      val max = 10
      var i = 0
      while (i < max) {
        logInfo("Spielereien", "Hi there")
        i = i + 1
      }
    }
     logInfo("Spielereien", "Ende")
end
Als Ergebnis sagt mir der Logger:

Code: Alles auswählen

2019-12-05 16:20:50.329 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model '_spielereien.rules'
Wenn ich das mit deinem Import mache:

Code: Alles auswählen

import java.lang.System
rule " Spielereien mit Syntax"
 when
     Item DummySpielereien changed to ON
  then
          {
      val max = 10
      var i = 0
      while (i < max) {
        logInfo("Spielereien", "Hi there")
        i = i + 1
      }
    }
     logInfo("Spielereien", "Ende")
end
Sagt der Logger:

Code: Alles auswählen

2019-12-05 16:20:50.329 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model '_spielereien.rules'
2019-12-05 16:26:22.109 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model '_spielereien.rules' has errors, therefore ignoring it: [2,8]: no viable alternative at input 'System'

Wie gesagt, ich habe den Import einfach vor die Regel gesetzt.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten