Skript Chaos in OH - Suche aktuelle Beispiele

Allgemeine Fragen zum Thema "Smart Home" und Entscheidungshilfen

Moderator: seppy

Antworten
mr.b4
Beiträge: 51
Registriert: 11. Sep 2019 16:57

Skript Chaos in OH - Suche aktuelle Beispiele

Beitrag von mr.b4 »

Hallo zusammen,

ich bin mittlerweile echt angefressen, was die Script-Umgebung von OH angeht.

In der Arudino-Welt konnte ich mir mit wenig Aufwand, die tollsten Geräte bauen, weil es zu jeder Bibliothek anschauliche Beispiele gibt, die man selbst als Maschinenbauer verstehen, und abwandeln kann.

Jetzt gitb's in OH mindestens 3 Möglichkeiten irgendwas zu skripten, das Internet ist voll mit Beispielen zu OH1 und OH2.
Die englischsprachige Doku ist auch mau.
Das ist für mich das blanke Chaos.
Noch dazu habe ich mich die letzten Jahre eher mit C als mit dem blöden Java beschäftigt. Und wenn ich mir den Syntax so ansehe, dann weiß ich auch wieder warum :evil:

Kein Wunder, dass Node-Red im Netz so gelobt wird. Hab nur keine Lust die 400 Datenpunkte und die Visu dort neu machen.

Falls jemand Beispiele hat, wie er seine offenen Fenster zählt, oder eine einfache Alarmanlage realisiert hat, so würde ich da gerne mal drauf aufbauen.

Viele Grüße!

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

Re: Skript Chaos in OH - Suche aktuelle Beispiele

Beitrag von udo1toni »

Hallo!

Bei all Deinem Frust muss ich Dir sagen, dass es buchstäblich tausende, wenn nicht gar zehntausende Beispiele für Rules gibt. Die Anzahl der offenen Fenster braucht überdies überhaupt kein Script(!) Selbst hier im Forum dürfte es etliche Beispiele für selbst gebastelte Alarmanlagen geben (und ich weise gleich darauf hin, dass openHAB dafür nicht gut geeignet ist).

Die Rules DSL von openHAB kann fast vollständig die Rules aus OH1 und OH2 ausführen.
Die Unterschiede sind der Umstellung von Joda Time zu JavaTime geschuldet, und einer Änderung der impliziten Variablen. Nichts, was man nicht mit überschaubarem Aufwand anpassen könnte.
Die Rules DSL ist übrigens nicht Java. Die DSL ist mit XTend entwickelt worden, welches in Java entwickelt wurde. Deshabl gibt es Ähnlichkeiten, aber an vielen Stellen weichen die beiden Sprachen voneinander ab. Die DSL ist aber für openHAB Belange optimiert.

Wenn Du nicht mit der DSL arbeiten willst, steht JavaScript zur Verfügung (auch kein Java). Und es gibt noch weitere Script Sprachen. C gehört nicht dazu, aber ganz ehrlich wäre das auch ziemlicher Stuss. ;)

Natürlich muss man sich erst an eine Sprache gewöhnen, wichtig ist dabei aber, dass man nicht mit einer bestimmten Vorstellung an die Sache heran geht, denn dann wird man nur die ganze Zeit denken: "In C geht das aber so..." und am Ende ist man noch überzeugt, dass ca. 10.000 Zeilen Programmcode, verteilt auf drei Dutzend Dateien, die zuerst kompiliert werden müssen, eleganter und einfacher sind als zehn Zeilen in der verhassten DSL. (Die 10.000 Zeilen sind den notwendigen Imports geschuldet...)

Ein konkretes Beispiel für die Fenster:

Code: Alles auswählen

Group:Contact:OR(OPEN,CLOSED) gFenster "Offene Fenster [%d]"
Contact Fenster1 "Fenster 1 [%s]" (gFenster)
Contact Fenster2 "Fenster 2 [%s]" (gFenster)
Contact Fenster3 "Fenster 3 [%s]" (gFenster)
Contact Fenster4 "Fenster 4 [%s]" (gFenster)
Die vier Items Fenster1 bis Fenster4 sind in der Gruppe gFenster zusammengefasst, welche als Aggregation OR verwendet. Sobald eines der zugehörigen Items den Zustand OPEN hat, ist die Gruppe ebenfalls OPEN, ansonsten ist sie CLOSED. Das Label gibt die Anzahl offener Kontakte aus.

Möchtest Du in einer Rule auf diese Zahl zugreifen, so erfährst Du sie über die Gruppe:

Code: Alles auswählen

gFenster.members.filter[i|i.state==OPEN].size
Ich persönlich finde das besser lesbar als ein entsprechendes Konstrukt in C ;)
Wenn Du willig bist, Dich auf etwas Neues einzulassen, kann ich Dir VSCode ans Herz legen. Es gibt ein openHAB Plugin, wenn man das korrekt konfiguriert, erhält man eine Programmierumgebung, die fast mit VisualStudio vergleichbar ist, Autoergänzung, Codevorschläge, Fehlererkennung... und das läuft online, das heißt, es wird der Interpreter vom laufenden openHAB Server verwendet. Damit ist sicher, dass der Code auch dort fehlerfrei läuft.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mr.b4
Beiträge: 51
Registriert: 11. Sep 2019 16:57

Re: Skript Chaos in OH - Suche aktuelle Beispiele

Beitrag von mr.b4 »

Danke dir!
Dann werde ich mich für den Anfang mal auf DSL fokussieren, das gefällt mir besser als JAVA Skript...
Hatte nur bedenken, da ich hier irgendwo gelesen habe, dass es u.U. abgekündigt werden soll.

BOP
Beiträge: 197
Registriert: 23. Sep 2018 19:43
Answers: 1

Re: Skript Chaos in OH - Suche aktuelle Beispiele

Beitrag von BOP »

udo1toni hat geschrieben: 10. Aug 2021 23:38 ... kann ich Dir VSCode ans Herz legen. Es gibt ein openHAB Plugin, wenn man das korrekt konfiguriert, erhält man eine Programmierumgebung, die fast mit VisualStudio vergleichbar ist, Autoergänzung, Codevorschläge, Fehlererkennung... und das läuft online, das heißt, es wird der Interpreter vom laufenden openHAB Server verwendet.
Gibt es eigentlich eine schöne Anleitung, wie das mit verschiedenen Arbeitsbereichen funktioniert?
Ich muss hier inzwischen zwei verschiedene openHAB Umgebungen administrieren. Wenn ich die openHAB Erweiterung entsprechend auf die eine konfiguriere, funktioniert es bei der anderen ja nicht.
Aber es gibt ja die Möglichkeit, die settings.json auch jeweils im openHAB-Verzeichnis abzulegen, so dass immer die richtigen Einstellungen benutzt werden.
Nur wie das konfiguriert wird, ist mir ein kleines Rätsel.

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

Re: Skript Chaos in OH - Suche aktuelle Beispiele

Beitrag von udo1toni »

Es gibt drei (vier) verschiedene Konfigurationsbereiche.
  1. Die Default Werte
  2. Die Verzeichniskonfiguration
  3. Die Arbeitsbereichskonfiguration
  4. Die User-Konfiguration
höhere Nummer = höhere Priorität.
2. und 3. schließen sich gegenseitig aus. Entweder Du nutzt Arbeitsbereiche, dann kannst Du keine Verzeichniskonfiguration nutzen, oder Du nutzt Arbeitsverzeichnisse, dann kannst Du keine Arbeitsbereichskonfiguration nutzen.

Ich habe bei mir die Erfahrung gemacht, dass VSCode gerne mal beim Konfigurationswechsel rumzickt, speziell wenn es sich um Arbeitsbereiche handelt. Neustart von VSCode hat dann bisher immer gut geholfen.

Man muss höllisch aufpassen, dass man an der richtigen Stelle Änderungen einträgt, damit das Ganze so wie gewünscht funktioniert. Wenn man es aber erst mal geschafft hat, reicht es, die Arbeitsbereiche zu wechseln, um zwischen verschiedenen Servern umzuschalten.


Gesendet von iPad mit Tapatalk
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

BOP
Beiträge: 197
Registriert: 23. Sep 2018 19:43
Answers: 1

Re: Skript Chaos in OH - Suche aktuelle Beispiele

Beitrag von BOP »

Vielen Dank für die Erklärung!
Jetzt sehe ich auch erst, dass man in den Einstellungen oben zwischen den drei Bereichen umstellen kann. Ja, da muss man dann sicherlich gut aufpassen, nicht das verkehrte zu editieren.

Ich werde es gleich mal ausprobieren.

mr.b4
Beiträge: 51
Registriert: 11. Sep 2019 16:57

Re: Skript Chaos in OH - Suche aktuelle Beispiele

Beitrag von mr.b4 »

Hallo,

jetzt zählt er.

Hab die Gruppen jetzt mal als COUNT aufgebaut (wie im Beispiel der englischen Anleitung):

Group:Number:COUNT(OPEN) gFenster "geöffnete Fenster [%d]"
Group:Number:COUNT(OPEN) gTueren "geöffnete Türen [%d]"


Danke und Gruß!

Antworten