Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Und zwar ob es eine Möglichkeit gib auf die OpenHab Konsole zu zu greifen wenn man OpenHab nicht mit dem Start-script sondern über den Autostart (init.d) startet ?
du könntest in deinem init-Skript "screen" verwenden, um openHAB zu starten. Damit kannst du dich dann je nach Belieben an den Prozess "attachen" oder "detachen".
Alternativ kannst Du einen Port konfigurieren, auf den Du Dich dann per telnet verbinden kannst (leider ohne Autentifizierung)
Am Ende des openHAB-Aufrufs steht dann
Code:
-jar $cp -console ${TELNETPORT}
womit die Konsole auf dem entsprechenden Port landet (im init-script steht da normalerweise /dev/null)
du könntest in deinem init-Skript "screen" verwenden, um openHAB zu starten. Damit kannst du dich dann je nach Belieben an den Prozess "attachen" oder "detachen".
Gruß,
thoern
Hallo zusammen,
leider komme ich mit diesem blöden Autostart immer noch nicht weiter und erhalte immer eine Fehlermeldung beim Start meines Raspberry Pi. Da ich mich auch gerne von Remote auf die Session und die OSGI Konsole schalten würde, bin ich auch an der Lösung mit Screen interessiert.
Da ich noch nicht so im Linux bewandert bin, wäre ich für eine kurze Anleitung MEGA dankbar!
- Installation Screen
- Konfiguration Autostart für OpenHAB mit Screen
Ich habe derzeit die Konfig nach Mepi's Anleitung vorgenommen, leider bekomme ich die Autostart Funktion trotzdem nicht ans fliegen :-( Evtl. kann Mepi dies dann in die nächste Version der Gesamtdoke aufnehmen, um dies allen zur Verfügung zu stellen ;-)
Das aktualisiert die Paketlisten und installiert screen und nano (Falls Du das schon hast, ist das natürlich unnötig)Anschließend legt es in /etc/init.d/ eine Datei namens openhab an und öffnet diese zum editieren.
In die Datei folgenden Code einfügen:
Code:
#!/bin/bash
# /etc/init.d/screen
### BEGIN INIT INFO
# Provides: openHAB
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop openHAB in scrren Session
# Description: This runs a script continuously in screen.
### END INIT INFO
# hier den User eintragen, unter dem openHAB laufen soll
OHUSER=openhab-user
#hier den Pfad zur runtime eintragen, in diesem Verzeichnis liegt üblicherweise start.sh
OPENHABPATH=/opt/openhab
case "$1" in
start)
echo "Starting openHAB"
cd ${OPENHABPATH}
sudo -u ${OHUSER} screen -S openHAB -dm sh ./start.sh
;;
stop)
echo "Stopping openHAB"
sudo -u ${OHUSER} screen -S openHAB -p 0 -X stuff "exit$(printf \\r)"
sudo -u ${OHUSER} screen -S openHAB -p 0 -X stuff "y$(printf \\r)"
sudo -u ${OHUSER} screen -S openHAB -p 0 -X stuff "exit$(printf \\r)"
# PID=`ps -ef | grep screen.sh | grep -v grep | awk '{print $2}'`
# kill -9 $PID
;;
restart|force-reload)
echo "Restarting openHAB"
sudo -u ${OHUSER} screen -S openHAB -p 0 -X stuff "exit$(printf \\r)"
sudo -u ${OHUSER} screen -S openHAB -p 0 -X stuff "y$(printf \\r)"
sudo -u ${OHUSER} screen -S openHAB -p 0 -X stuff "exit$(printf \\r)"
PID=`ps -ef | grep openHAB | grep -v grep | awk '{print $2}'`
while [ `ps -ef | grep $PID | wc -l` -gt 1 ]
do
echo -n .
sleep 2
done
echo .
cd ${OPENHABPATH}
sudo -u ${OHUSER} screen -S openHAB -dm sh ./start.sh
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
Mit <ctrl>+x und anschließend y oder j + <return> den Editor verlassen.
An der Kommandozeile:
Wenn Du als OHUSER angemeldet bist, reicht natürlich ein
Code:
screen -r openHAB
aus. Falls Die openHAB-Session die einzige screen-session dieses Users ist, reicht auch
Code:
screen -r
Wenn Du mit der Session verbunden bist, reicht ein <ctrl>+a - d aus, um die Session zu detachen, d.h. zu trenne, ohne des laufende Programm zu beenden. Kann man sich gut merken: Adee... ;-)
zu der screen-Session führen (wobei Du ${OHUSER} mit dem Namen des openhab-users ersetzen musst, den Du auch in der Batch-datei gesetzt hast.
Leider bekomme ich dabei folgende Fehlermeldung
Cannot open your terminal '/dev/pts/0' - please check.
Wenn ich auf die Sessions prüfe, bekommen ich
pi@MyOpenHAB ~ $ sudo service openhab stop
Stopping openHAB
There are several suitable screens on:
2219.openHAB (18.10.2014 23:23:50) (Detached)
1924.openHAB (18.10.2014 23:22:31) (Detached)
Use -S to specify a session.
There are several suitable screens on:
2219.openHAB (18.10.2014 23:23:51) (Detached)
1924.openHAB (18.10.2014 23:22:32) (Detached)
Use -S to specify a session.
There are several suitable screens on:
2219.openHAB (18.10.2014 23:23:51) (Detached)
1924.openHAB (18.10.2014 23:22:32) (Detached)
Use -S to specify a session.
pi@MyOpenHAB ~ $ sudo service [URL="http://redaktion.knx-user-forum.de/lexikon/openhab/"]openhab[/URL] stop
Stopping [URL="http://redaktion.knx-user-forum.de/lexikon/openHAB/"]openHAB[/URL]
There are several suitable screens on:
Sieht so aus, als liefen da mehrere screen-Sessions nebeneinander (und eventuell auch mehrere openHAB-Instanzen).
Gib mal
Code:
screen -ls
ein, das zeigt Dir alle offenen Sessions an. Mit
Code:
screen -r {sessionid}
kannst Du in die jeweiligen Sessions wechseln und diese von Hand beenden (z.B. mit <ctrl>-c und am Prompt dann exit) {sessionid} musst Du natürlich mit der Nummer ersetzen, die das screen -ls ausgegeben hat.
Und schon stehe ich wieder auf dem Schlauch :-(
Mach Dir nichts draus, die Lernkurve ist bei Linux etwas steiler ;-)
Der Vollständigkeit halber hier noch mein aktuelles init-Script:
Code:
### BEGIN INIT INFO
# Provides: openHAB
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop openHAB in scrren Session
# Description: This runs a script continuously in screen.
### END INIT INFO
# Set OH-User
OHUSER=openhab
# Set OH-Path
OHPATH=/opt/openhab
case "$1" in
start)
PID=`ps -ef | grep openHAB | grep -v grep | awk '{print $2}'`
if [ "${PID}" != "" ]
then
echo openHAB-Screen scheint schon zu laufen! PID ist `pidof SCREEN`
else
echo "Starting openHAB"
cd ${OHPATH}
sudo -u ${OHUSER} screen -S openHAB -dm sh ./start.sh
fi
;;
stop)
echo "Stopping openHAB"
sudo -u ${OHUSER} screen -S openHAB -p 0 -X stuff "exit$(printf \\r)"
sudo -u ${OHUSER} screen -S openHAB -p 0 -X stuff "y$(printf \\r)"
sudo -u ${OHUSER} screen -S openHAB -p 0 -X stuff "exit$(printf \\r)"
PID=`ps -ef | grep openHAB | grep -v grep | awk '{print $2}'`
while [ `ps -ef | grep $PID | wc -l` -gt 1 ]
do
echo -n .
sleep 2
done
echo .
;;
restart|force-reload)
echo "Restarting openHAB"
$0 stop
$0 start
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
Im Kopf des Scripts einfach den gewünschten User und den Pfad zur start.sh eintragen. Die aktuelle Fassung prüft, ob schon eine openHAB-Session läuft.
(Der User muss existieren und in der Lage sein, openHAB zu starten - das heißt, er muss Schreib- und Ausführungsrechte im Pfad haben, in dem openHAB liegt.)
Vorausgesetzt, es läuft nur eine Screen-Session und Du bist unter dem openHAB-User angemeldet, reicht ein
Wenn Du mit der Session verbunden bist, reicht ein <ctrl>+a - d aus, um die Session zu detachen, d.h. zu trenne, ohne des laufende Programm zu beenden.
Hier ist noch ein kleiner Dreher drin, oder Du meinst mit dem - bei d das beide gleichzeitig gedrückt werden müssen ;-)
Also für mich ==> <ctrl> + a + d
Viele Dank und besten Gruß,
Somit habe ich meinen Raspberry installiert, OpenHAB lauft als Demo in Screen, die Session wird nach einem Rebott gestartet.
Jetzt erfolgt der Transfer der Windows Konfiguration und die weiteren Tests mit Dropbox und Prowl AddOn ;-)
Als letztes folgt dann, wenn alles läuft ein Image der SD Karte, denn eine war letztens auf einmal Schrott.
Viele Grüße und einen tollen Rest-Sonntag noch,
Jörg
ich sitze hier schon 3 tage dran bekomme das mit dem autostart nicht hin.
wenn ich "sudo service openhab start" eingebe kommt "env: /etc/init.d/openhab: Datei oder Verzeichnis nicht gefunden" woran kann es noch liegen.
den Befehl "Service" kenne ich gar nicht. Den gibt es unter Linux, sollte aber für den Autostart nicht benötigt werden (ich gehe davon aus dass du ein Linux System hast).
Das Skript openhab muss natürlich ausführbar sein.
Ist die der Fall, kann mit
sudo /etc/init.d/openhab start
oder
sudo /etc/init.d/openhab stop
Openhab gestartet oder gestopt werden.
Bitte schau dir auch mal die Dokumentation an, hier ist es beschrieben (allerdings noch nicht in schön),
In der Wiki von ubuntuuser.de findet man auch sehr viele nützliche Beschreibungen. Da Ubuntu ein Debian Derivat ist, kann vieles auch auf Rasbian projiziert werden.
ich habe ein rapsberry auf dem ich das ganze zum laufen bringen möchte,
das Handbuch habe ich auch schon gelesen und auch das Forum durchsucht nur leider klappt das alles nicht so ganz bei mir.
mit dem Befehl sudo /etc/init.d/openhab start kommt sudo: unable to execute /etc/init.d/openhab: No such file or directory die datei hatt rechte 755.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar