Generelle Frage zu Skripten in Openhab

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
gabonica
Beiträge: 14
Registriert: 18. Mär 2020 16:27
Answers: 0

Generelle Frage zu Skripten in Openhab

Beitrag von gabonica »

Hallo und guten Tag,

Ich nutze Openhab 2.5.2 mit Raspian auf einem Pi2. Das System ist etwas langsam, läuft aber.

mir ist es jetzt schon mehrfach passiert, dass ich irgendetwas über einen Skriptaufruf regeln wollte (z.B. Versenden von Mails, Ablegen von Dateien in der Dropbox...).
Das hat dann auch immer mit dem jeweiligen Befehl über eine Eingabe ins Terminal funktioniert, über das Skript aber nicht. Was muss ich also tun, wenn ich einen Konsolenbefehl der irgendetwas tut einfach über ein Skript aufrufen möchte? Ich verstehe nicht wann es funktioniert und wann nicht.

Schreibe ich "./touch test.txt" ins Skript, funktioniert alles und die Datei erscheint im Ordner.
Das Drehen meiner Kameras über "wget..." funktioniert auch.
Das Umbenennen gemachter Fotos über "mv /etc..." ebenfalls.

Schreibe ich z.B. den Befehl für den Upload einer Datei in die Dropbox ins Skript, so geht das nicht.
Ebenso der Mailversand über mutt.
Beides funktioniert aber tadellos im Terminal.
Ich möchte mich wirklich nicht in diesen riesen Prügel von Exec-Binding einarbeiten nur um eine Datei hochzuladen...

1000 Dank euch allen

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

Re: Generelle Frage zu Skripten in Openhab

Beitrag von udo1toni »

Wenn Du openHAB erfolgreich nutzen willst, wirst Du um eine gewisse Einarbeitung nicht herum kommen. :)

Grundsätzlich: openHAB stellt eine DSL für Automation zur Verfügung. Diese DSL ist aber eine rein interne Scriptsprache. Du kannst aus der DSL heraus auch externe Anwendungen aufrufen (executeCommandLine Action). Alternativ kannst Du das exec Addon benutzen. Wenn Du die aktuelle Version OH2.5.2 benutzt, gibt es dabei eine Falle, ab dieser Version gibt es nämlich eine Whitelist, in der der jeweilige Befehl aufgeführt ein muss. Diese Whitelist funktioniert aber in Version 2.5.2 nur dann, wenn man sie nach Start von openHAB einmalig neu lädt (z.B. über ein touch). Es gibt schon eine fehlerbereinigte Version, eventuell wird diese auch schon ausgeliefert (hab ich noch nicht getestet).

Externe Anwendungen können selbstverständlich auch Bash Scripte sein, die mehrere Arbeitsschritte zusammenfassen. Zu beachten ist immer der Userkontext, das Script wird mit dem User openhab ausgeführt. Sollten erweiterte Rechte nötig sein, so musst Du mit sudo arbeiten, und hier wiederum dafür sorgen, dass Du (bzw. der User openhab) kein Passwort eingeben musst.

Du kannst natürlich externe Scripte verwenden, um Aufgaben zu erledigen, im Fall von Bildbearbeitung wird das auch gar nicht anders möglich sein. Ansonsten solltest Du aber versuchen, die Aufgaben über native Funktionen zu erledigen, z.B. einen motorisierten Kamerakopf zum Schwenken und Neigen wird man üblicherweise über das http Binding steuern können, ganz ohne externe Scripte.

Wenn ich mich richtig erinnere, gab es mal ein Dropbox Binding, aber das ist lange her und es gab auch nur Probleme damit.

Im Übrigen ist gerade das exec Binding eigentlich sehr schlank :) man legt pro auszuführendem Befehl/Script ein Thing an und hat dann verschiedene Channel zur Verfügung, um den Befehl auszuführen, den Input für den Befehl zu setzen, den Output des Befehls auszulesen und die Laufzeit zu bestimmen. Man muss einige Dinge beachten, wie die oben erwähnte Whitelist und die Einschränkung auf den Typ String für Input und Output, ansonsten ist es aber sehr leicht nutzbar.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten