Manuelle installation - automatischer Start beim booten

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

starbright
Beiträge: 93
Registriert: 16. Jan 2023 19:27
Answers: 0

Manuelle installation - automatischer Start beim booten

Beitrag von starbright »

Möchte auf meinem Board openHAB mit dem Booten starten?
Eigentlich dachte ich an etwas wie im crontab:
@reboot /bin/sh /opt/openhab/start.sh &
Aber irgendwie funktioniert das nicht?
Liegt das an den noch nicht vorhandenen exports für JAVA und PATH? Das mache ich in /etc/profile und die wird ja erst beim Einloggen ausgeführt.

Wie macht man es richtig?
PS: Das start.sh muss ich noch um ein Kopieren der persistence aus dem flash in die ramdisk ergänzen.
von udo1toni » 21. Feb 2023 20:54
Eigentlich wäre es besser, das apt Paket zu nutzen. Mit debian als Unterbau sollte es da auch keine Probleme geben (vor allem bringt das Paket schon eine fertige service-Datei mit).

Gut, mutmaßlich sollte es reichen, die start.sh auszuführen. Du brauchst also eigentlich nur eine rudimentäre service-Datei.

Code: Alles auswählen

[Unit]
Description=openHAB - empowering the smart home
Documentation=https://www.openhab.org/docs/
Documentation=https://community.openhab.org
Wants=network-online.target
After=network-online.target

[Service]
Environment=OPENHAB_HOME=/usr/share/openhab
Environment=OPENHAB_CONF=/etc/openhab
Environment=OPENHAB_RUNTIME=/usr/share/openhab/runtime
Environment=OPENHAB_USERDATA=/var/lib/openhab
Environment=OPENHAB_LOGDIR=/var/log/openhab
Environment=OPENHAB_STARTMODE=daemon
EnvironmentFile=-/etc/default/openhab

User=openhab
Group=openhab

WorkingDirectory=/usr/share/openhab
ExecStart=/usr/share/openhab/runtime/bin/karaf ${OPENHAB_STARTMODE}
ExecStop=/usr/share/openhab/runtime/bin/karaf stop

SuccessExitStatus=0 143
RestartSec=5
Restart=on-failure
TimeoutStopSec=120

LimitNOFILE=102642

[Install]
WantedBy=multi-user.target
Dies hier ist die service-Datei, die von apt eingerichtet wird. Naturgemäß sind die Verzeichnisse an anderer Stelle, das heißt, da müsstest Du ein wenig nacharbeiten.
Die ganzen envronment Variablen sind nicht essentiell, aber es ist nett, wenn man sich darüber keine Gedanken machen muss. Ich hab aber keine Ahnung, welche Verzeichnisse sich wo (unterhalb /opt/openhab/) befinden, da musst Du selbst suchen.

ExecStart und ExecStop sollte openHAB an der start.sh vorbei als Dienst starten. Sollte das nicht funktionieren (der Pfad muss natürlich auch in die Innereien unterhalb /opt/openhab/ verweisen), kannst Du alternativ für ExecStart auch den Pfad zur start.sh angeben, nur herunterfahren kannst Du den Dienst dann nicht, da müsstest Du dann mit killall openhab arbeiten (oder so ähnlich... keine Ahnung...)
Der Inhalt von /etc/default/openhab ist natürlich auch wichtig:

Code: Alles auswählen

# openHAB service options

#########################
## PORTS
## The ports openHAB will bind its HTTP/HTTPS web server to.

#OPENHAB_HTTP_PORT=8080
#OPENHAB_HTTPS_PORT=8443

#########################
## HTTP(S) LISTEN ADDRESS
##  The listen address used by the HTTP(S) server.
##  0.0.0.0 (default) allows a connection from any location
##  127.0.0.1 only allows the local machine to connect

#OPENHAB_HTTP_ADDRESS=0.0.0.0

#########################
## BACKUP DIRECTORY
## Set the following variable to specify the backup location.
## runtime/bin/backup and runtime/bin/restore will use this path for the zip files.

#OPENHAB_BACKUPS=/var/lib/openhab/backups

#########################
## JAVA OPTIONS
## Additional options for the JAVA_OPTS environment variable.
## These will be appended to the execution of the openHAB Java runtime in front of all other options.
##
## A couple of independent examples:
##   EXTRA_JAVA_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyZWAVE:/dev/ttyUSB0:/dev/ttyS0:/dev/ttyS2:/dev/ttyACM0:/dev/ttyAMA0"
##   EXTRA_JAVA_OPTS="-Djna.library.path=/lib/arm-linux-gnueabihf/ -Duser.timezone=Europe/Berlin -Dgnu.io.rxtx.SerialPorts=/dev/ttyZWave"

EXTRA_JAVA_OPTS=""

#########################
## OPENHAB DEFAULTS PATHS
## The following settings override the default apt/rpm locations and should be used with caution.
## openHAB will fail to update itself if you're using different paths.
## Only set these if you are testing and are confident in debugging.

#OPENHAB_HOME=/usr/share/openhab
#OPENHAB_CONF=/etc/openhab
#OPENHAB_RUNTIME=/usr/share/openhab/runtime
#OPENHAB_USERDATA=/var/lib/openhab
#OPENHAB_LOGDIR=/var/log/openhab

#########################
## OPENHAB USER AND GROUP
## The user and group that takes ownership of openHAB. Only available for init.d systems.
## To edit user and group for systemd, see the service file at /usr/lib/systemd/system/openhab.service.

#OPENHAB_USER=openhab
#OPENHAB_GROUP=openhab

#########################
## SYSTEMD START MODE
## The Karaf startmode for the openHAB runtime. Only available for systemctl/systemd systems.
## Defaults to daemon when unset here. Multiple options can be used without quotes.
## debug increases log output. daemon launches the Karaf/openHAB processes.

#OPENHAB_STARTMODE=debug
Wie Du sehen kannst ist ohnehin alles auskommentiert.
Aber Du könntest damit auch die meisten der Exports über eine "offizielle" Konfigurationsdatei setzen, allerdings nicht die Pfade zu den Binaries, die zum Starten aufgerufen werden müssen. Du kommst also um das Editieren der service-Datei nicht herum.
Speichere die service-Datei im Verzeichnis /etc/systemd/system/ unter dem Namen openhab.service.
Anschließend führst Du den Befehl
sudo systemctl daemon-reload aus. Danach solltest Du in der Lage sein (korrekt gesetzte Pfade vorausgesetzt) openHAB mit dem Befehl

Code: Alles auswählen

sudo systemctl start openhab
zu starten. Gibt es keine Fehlermeldung, so prüfst Du mit

Code: Alles auswählen

systemctl status openhab
ob der Dienst läuft. Ist das der Fall, kannst Du mit

Code: Alles auswählen

sudo systemctl enable openhab
den Autostart aktivieren.
Gehe zur vollständigen Antwort

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

Re: Manuelle installation - automatischer Start beim booten

Beitrag von udo1toni »

Bitte nicht.

Es gibt dafür vorgesehene Mechanismen. Dazu musst Du nur ein paar einfache Fragen beantworten :)
1. Welches OS?
2. Wie (exakt!) hast Du openHAB manuell installiert?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

starbright
Beiträge: 93
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: Manuelle installation - automatischer Start beim booten

Beitrag von starbright »

Das ist ein schwachbrüstiges BeagleBone black mit einem IOT Debian 10.3
Hab es als user (debian) in /opt/openhab ausgepackt.
Java ist in /opt/jdk11
/opt/openhab/userdata/persistance ist ein tmpfs Verzeichnis (um das Leben meine SD-Karte zu verlängern) , dass ich mit einem cronjob alle 2h ( später vielleicht seltener) in /opt/oh_backup sichere.

Ja, du hast recht (seufz) - der richtige Weg wäre wohl einen Service aufsetzen. Ich fremdel immer noch mit system.d.

Was macht eigentlich das start.sh? Es setz eine Variable RUNTIME - aber was ist "{@}" ?

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

Re: Manuelle installation - automatischer Start beim booten

Beitrag von udo1toni »

Eigentlich wäre es besser, das apt Paket zu nutzen. Mit debian als Unterbau sollte es da auch keine Probleme geben (vor allem bringt das Paket schon eine fertige service-Datei mit).

Gut, mutmaßlich sollte es reichen, die start.sh auszuführen. Du brauchst also eigentlich nur eine rudimentäre service-Datei.

Code: Alles auswählen

[Unit]
Description=openHAB - empowering the smart home
Documentation=https://www.openhab.org/docs/
Documentation=https://community.openhab.org
Wants=network-online.target
After=network-online.target

[Service]
Environment=OPENHAB_HOME=/usr/share/openhab
Environment=OPENHAB_CONF=/etc/openhab
Environment=OPENHAB_RUNTIME=/usr/share/openhab/runtime
Environment=OPENHAB_USERDATA=/var/lib/openhab
Environment=OPENHAB_LOGDIR=/var/log/openhab
Environment=OPENHAB_STARTMODE=daemon
EnvironmentFile=-/etc/default/openhab

User=openhab
Group=openhab

WorkingDirectory=/usr/share/openhab
ExecStart=/usr/share/openhab/runtime/bin/karaf ${OPENHAB_STARTMODE}
ExecStop=/usr/share/openhab/runtime/bin/karaf stop

SuccessExitStatus=0 143
RestartSec=5
Restart=on-failure
TimeoutStopSec=120

LimitNOFILE=102642

[Install]
WantedBy=multi-user.target
Dies hier ist die service-Datei, die von apt eingerichtet wird. Naturgemäß sind die Verzeichnisse an anderer Stelle, das heißt, da müsstest Du ein wenig nacharbeiten.
Die ganzen envronment Variablen sind nicht essentiell, aber es ist nett, wenn man sich darüber keine Gedanken machen muss. Ich hab aber keine Ahnung, welche Verzeichnisse sich wo (unterhalb /opt/openhab/) befinden, da musst Du selbst suchen.

ExecStart und ExecStop sollte openHAB an der start.sh vorbei als Dienst starten. Sollte das nicht funktionieren (der Pfad muss natürlich auch in die Innereien unterhalb /opt/openhab/ verweisen), kannst Du alternativ für ExecStart auch den Pfad zur start.sh angeben, nur herunterfahren kannst Du den Dienst dann nicht, da müsstest Du dann mit killall openhab arbeiten (oder so ähnlich... keine Ahnung...)
Der Inhalt von /etc/default/openhab ist natürlich auch wichtig:

Code: Alles auswählen

# openHAB service options

#########################
## PORTS
## The ports openHAB will bind its HTTP/HTTPS web server to.

#OPENHAB_HTTP_PORT=8080
#OPENHAB_HTTPS_PORT=8443

#########################
## HTTP(S) LISTEN ADDRESS
##  The listen address used by the HTTP(S) server.
##  0.0.0.0 (default) allows a connection from any location
##  127.0.0.1 only allows the local machine to connect

#OPENHAB_HTTP_ADDRESS=0.0.0.0

#########################
## BACKUP DIRECTORY
## Set the following variable to specify the backup location.
## runtime/bin/backup and runtime/bin/restore will use this path for the zip files.

#OPENHAB_BACKUPS=/var/lib/openhab/backups

#########################
## JAVA OPTIONS
## Additional options for the JAVA_OPTS environment variable.
## These will be appended to the execution of the openHAB Java runtime in front of all other options.
##
## A couple of independent examples:
##   EXTRA_JAVA_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyZWAVE:/dev/ttyUSB0:/dev/ttyS0:/dev/ttyS2:/dev/ttyACM0:/dev/ttyAMA0"
##   EXTRA_JAVA_OPTS="-Djna.library.path=/lib/arm-linux-gnueabihf/ -Duser.timezone=Europe/Berlin -Dgnu.io.rxtx.SerialPorts=/dev/ttyZWave"

EXTRA_JAVA_OPTS=""

#########################
## OPENHAB DEFAULTS PATHS
## The following settings override the default apt/rpm locations and should be used with caution.
## openHAB will fail to update itself if you're using different paths.
## Only set these if you are testing and are confident in debugging.

#OPENHAB_HOME=/usr/share/openhab
#OPENHAB_CONF=/etc/openhab
#OPENHAB_RUNTIME=/usr/share/openhab/runtime
#OPENHAB_USERDATA=/var/lib/openhab
#OPENHAB_LOGDIR=/var/log/openhab

#########################
## OPENHAB USER AND GROUP
## The user and group that takes ownership of openHAB. Only available for init.d systems.
## To edit user and group for systemd, see the service file at /usr/lib/systemd/system/openhab.service.

#OPENHAB_USER=openhab
#OPENHAB_GROUP=openhab

#########################
## SYSTEMD START MODE
## The Karaf startmode for the openHAB runtime. Only available for systemctl/systemd systems.
## Defaults to daemon when unset here. Multiple options can be used without quotes.
## debug increases log output. daemon launches the Karaf/openHAB processes.

#OPENHAB_STARTMODE=debug
Wie Du sehen kannst ist ohnehin alles auskommentiert.
Aber Du könntest damit auch die meisten der Exports über eine "offizielle" Konfigurationsdatei setzen, allerdings nicht die Pfade zu den Binaries, die zum Starten aufgerufen werden müssen. Du kommst also um das Editieren der service-Datei nicht herum.
Speichere die service-Datei im Verzeichnis /etc/systemd/system/ unter dem Namen openhab.service.
Anschließend führst Du den Befehl
sudo systemctl daemon-reload aus. Danach solltest Du in der Lage sein (korrekt gesetzte Pfade vorausgesetzt) openHAB mit dem Befehl

Code: Alles auswählen

sudo systemctl start openhab
zu starten. Gibt es keine Fehlermeldung, so prüfst Du mit

Code: Alles auswählen

systemctl status openhab
ob der Dienst läuft. Ist das der Fall, kannst Du mit

Code: Alles auswählen

sudo systemctl enable openhab
den Autostart aktivieren.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

starbright
Beiträge: 93
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: Manuelle installation - automatischer Start beim booten

Beitrag von starbright »

Danke @udo1toni! Wieder einiges gelernt.
Möglicherweise werde ich nach den vielen Experimenten noch einmal von Beginn starten und dann versuchen das per apt zu installieren. Aber dazu muss ich mindestens die Paketquelle hinzufügen, den in den eingestellten ist das Paket nicht enthalten.
Ist es dann genug das conf Verzeignis wieder herzustellen?
userdata scheinen generiert zu werden, also die persistence sollte man sicher auch retten. Mache natürlich vorher ein komplettes backup.

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

Re: Manuelle installation - automatischer Start beim booten

Beitrag von udo1toni »

Im normalen Backup sind die Verzeichnisse $OPENHAB_CONF und $OPENHAB_USERDATA enthalten.
Du hast eine manuelle Installtion, eventuell gibt es da diese Umbebungsvariablen nicht (die werden ja in der service-Datei gesetzt) Die Verzeichnisse sollten aber "weit oben" in der Verzeichnisstruktur liegen und passend benannt sein, also conf und userdata.
openhAB erzeugt alle Verzeichnisse, sollten sie beim Systemstart fehlen. Aber dann ist halt auch keine Konfiguration mehr da, das möchtest Du verständlicherweise anders haben. :)

Wenn Du ein debian System als Unterbau nutzt (bzw. ein GNU/Linux System, welches den Paketmanager apt nutzt), dann kannst Du einfach die Paketquellen nach Anleitung hinzufügen.
Alternativ kannst Du auch einfach openHABian auf Dein System ziehen und dieses die Arbeit erledigen lassen. beide Wege sind in der offiziellen Doku Schritt für Schritt beschrieben.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

starbright
Beiträge: 93
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: Manuelle installation - automatischer Start beim booten

Beitrag von starbright »

OpenHabian ist leider PI-only. Und für mein altes Board gibts nur das Debian, das leider über apt-get nicht gerade viel anbietet. Aber ich schau mal ob das mit den Paketquellen hinzufügen funktioniert. openHAB ist JAVA, aber sonst muss ich darauf achten dass ich nur 32bit arm habe, nicht wie die meisten 64bit.

Nochmal Danke für die wertvollen Tips!

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

Re: Manuelle installation - automatischer Start beim booten

Beitrag von udo1toni »

starbright hat geschrieben: 28. Feb 2023 18:12 OpenHabian ist leider PI-only.
Nein. Wie kommst Du darauf? Ich zitiere mal eine Überschrift aus der offiziellen Anleitung:
Other Linux Systems (add openHABian just like any other software)
Eventuell sitzt Du da einem Irrtum auf, den ich schon von Anfang an bekämpfe...

openHABian ist kein Betriebssystem. Es ist auch keine Distribution. openHABian ist eine Scriptsammlung, nicht mehr und nicht weniger.

Es gibt aber - exklusiv für den Raspberry Pi - ein Image auf Basis von Raspberry Pi OS lite, in dem openHABian bereits fertig eingerichtet ist.
Wohlgemerkt, nur die Scripte, wir reden von etwas über ein Megabyte (als zip ca 650 kByte).
Die Scripte starten automatisch beim Systemstart, prüfen ob openHAB installiert ist und installieren es, falls das noch nicht der Fall ist.

Unter der zitierten Überschrift ist genau beschrieben, was zu tun ist, um openHABian auf einem normalen GNU/Linux System einzurichten, vorzugsweise auf einem System mit apt Paketverwaltung. Du musst lediglich git installieren und die Scriptsammlung herunterladen. Anschließend kopierst Du mit einem Befehl die Vorlage für die Konfigurationsdatei nach /etc/ und passt sie an die Gegebenheiten an (d.h. Du trägst ein, welches OS und welche Hardwarearchitektur Du verwendest. Es gibt noch ein paar andere Parameter, die sinnvoll gesetzt werden können. Zum Abschluss führst Du sudo openhabian-config unattended aus, womit der Installationsprozess gestartet wird.

Wenn Du git nicht installieren willst, kannst Du notfalls das Repository auch manuell kopieren, git ist halt komfortabel (im Rahmen der Kommandozeile).

openHABian ist insofern eine tolle Option, weil noch diverse andere Software entweder direkt oder optional eingerichtet werden kann. Das sind vor allem Samba, Frontail und FireMotD als prominent sichtbare Dinge, im Hintergrund werden aber z.B. auch Farbschematat für nano und vi eingerichtet, so dass man die typischen Dateien für openHAB mit ein wenig Komfort bearbeiten kann,
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

starbright
Beiträge: 93
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: Manuelle installation - automatischer Start beim booten

Beitrag von starbright »

Damned!
Jetzt noch mal gelesen. Ein paar Zeilen nachdem viel über Pi die Rede ist:
Und spätestens hier war ich weg:
"openHABian is a self-configuring Linux system" - da ist von einem ganzen System die Rede, nicht von einem ADDON zu einem bestehenden System. Und dann ist auch noch von einem SD Image die Rede!

Wenn man durchhält beim Lesen:
The openHABian configuration tool to set up and configure openHAB and many related things on any Debian based system

Also ich bin sicher mitschuld, aber das viele diesem Irrtum aufsitzen liegt imho an der Beschreibung, die man ändern sollte. Zuerst erwähnen dass man was configurieren kann für jedes Debian System UND DANN erwähnen das für Pi schon alles fertig ist.

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

Re: Manuelle installation - automatischer Start beim booten

Beitrag von udo1toni »

Ja, typisch "historisch gewachsen", ursprünglich war das Tool ja tatsächlich nur für den Pi geschrieben, aber der Entwickler hat sehr schnell erkannt, dass es viel zu schade ist, um nur auf dem Pi nutzbar zu sein. :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten