Wie komme ich in einer Rule an OPENHAB_CONF?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von Tokamak »

Selbst wenn OH nicht meckert, hilft es am Ende nicht. Ich würde ja sowas wie

Code: Alles auswählen

val confDir=System.getenv("OPENHAB_CONF")
ausführen wollen, wozu der "import java.lang.getenv" nichts beiträgt:
Anmerkung 2019-12-05 164240.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Produktiv: Proxmox mit OH 3.4 und HABApp im LXC-Container
Entwicklung: Proxmox mit OH 4.1 und HABApp im LXC-Container

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

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von peter-pan »

Wie gesagt, von Java verstehe ich nichts und mit der Syntax kenne ich mich nicht aus, aber die von dir zuerst beschriebene Warnung kommt schon mal nicht mehr.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

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

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von udo1toni »

imports müssen, genau wie globale Variablen, zu Beginn der Datei angegeben werden. Die normale Reihenfolge ist dabei:
Zuerst imports, dann globale Konstanten, dann globale Variablen, dann Lambdas, zum Schluss die rules. Diese Reihenfolge ist aber sicher nicht zwingend, zumindest funktioniert bei mir das wilde mischen von Konstanten, Variablen und Lambdas ohne Probleme. Imports hab ich aber immer ganz oben.

Für das eigentliche Problem habe ich aber keine Idee. Vielleicht weiß im englischen Forum jemand Rat. Ansonsten bliebe immer noch der normale Weg über ein externes Script (oder mehrere davon).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von peter-pan »

Da bin ich ganz bei dir (wenn, dann externe Scripts, etc.).

Wenn ich das richtig verstanden habe was Rich und Scott im englischen Forum geschrieben haben , geht das mit JS223 und NGRE mit Helper-Libraries bzw. ab OH3.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

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

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von udo1toni »

Ja, JS223 ist da wesentlich offener.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Wie komme ich in einer Rule an OPENHAB_CONF?

Beitrag von Tokamak »

Nachdem ich mich eine Weile mit dem Exec-Binding rumgeschlagen have, das wie executeCommandLine() nicht erwartungskonform mit Pipes umgehen kann, um den Befehl "env | grep ^OPENHAB_CONF= | cut -d= -f2" abzusetzen, habe ich eine einfache Lösung implementiert.
Einfach deswegen, weil sie etwa nicht mit mehrzeiligen Environmentvariablen umgehen kann.

Um den Thread damit abzuschließen:

Code: Alles auswählen

val getenv = [ String envvar |
    val line=executeCommandLine("env",1000).split('\n').findFirst[ s | s.startsWith(envvar+"=") ]
    return if (line!==null) line.split('=').get(1)
]

...
val openhab_conf_dir=getenv.apply("OPENHAB_CONF")
liefert das gewünschte Ergebnis. Vermutlich muss unter Windows in der Lambda das "env" durch "set" ersetzt werden.
Produktiv: Proxmox mit OH 3.4 und HABApp im LXC-Container
Entwicklung: Proxmox mit OH 4.1 und HABApp im LXC-Container

Antworten