Ich habe auf mein RPI2 (Jessi) eine zweite Instanz angelegt, wie hier beschrieben: http://forum.fhem.de/index.php/topic,22469.msg163098.html#msg163098
Habe die neue cfg komplett leer gemacht, den Port vom User WEB auf 8093 gelegt und den Telnet Port auf 7073.
Dann habe ich die /etc/init.d/fhem kopiert, den Pfad auf /opt/fhem2 angepasst und die Datei fhem2 genannt.
Jetzt kann ich mit sudo /etc/init.d/fhem start die original Version starten und mit sudo /etc/init.d/fhem2 die neue Version starten. Allerdings blockiere ich immer die bereits laufenden Instanz, wenn ich die zweite Starten will und umgekehrt. Wo liegt der Fehler, welchen ich aktuell noch nicht sehe?
In der default Konfig gibt es 4 Ports: 3x FHEMWEB + 1x telnet.
Diese muss man alle umstellen oder loeschen.
was genau meinst du mit der default Konfig? Ist das eine weitere Datei, welche ich bearbeiten muss??
Die fhem.cfg vermutlich nicht, denn dort habe ich ja alles gelöscht, dass diese nur noch wie folgt aussieht:
attr global userattr DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global archivedir ./log-alt
attr global autoload_undefined_devices 1
attr global latitude 50.141
attr global logfile ./log/fhem-%Y-%m.log
attr global longitude 8.682
attr global modpath .
attr global motd none
attr global nrarchive 2
attr global restoreDirs 0
attr global sendStatistics onUpdate
attr global statefile ./log/fhem.save
attr global uniqueID ./FHEM/FhemUtils/uniqueID
attr global updateInBackground 1
attr global verbose 3
define telnetPort telnet 7073 global
define WEB FHEMWEB 8093 global
attr WEB JavaScripts codemirror/fhem_codemirror.js
attr WEB codemirrorParam { "lineWrapping":true }
attr WEB editConfig 1
attr WEB iconPath $styleSheetPrefix:eigene:default:fhemSVG:openautomation
attr WEB longpoll 1
attr WEB menuEntries restart,cmd=shutdown+restart,update,cmd=update,updatecheck,cmd=update+check,reloadMyUtils,cmd=reload+99_myUtils.pm
attr WEB nameDisplay $DEVICE
attr WEB sortRooms Bad GaesteWC Kueche Wohnzimmer Schlafzimmer Wohnung Kamera Unsorted S_Schlafzimmer S_Wohnraum S_Zentrale Everything
attr WEB stylesheetPrefix dark
# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
define autocreate autocreate
attr autocreate autosave 1
attr autocreate filelog ./log/%NAME-%Y.log
define eventTypes eventTypes ./log/eventTypes.txt
Ich meinte die mit fhem.tar.gz/fhem.deb ausgelieferte Version der Konfiguration.
Ist bei dir wohl nicht der Fall.
Habe festgestellt, dass ich, wenn ich mittels
sudo perl fhem.pl fhem.cfg
in den jeweiligen Ordnern starte, dass es funktioniert. Nur, wenn ich beide mittels "/etc/init.d/fhem start" bzw "/etc/init.d/fhem2 start" starte, es zu dem Problem kommt.
Edit: Ich installiere es ja nicht neu, habe quasi einfach die alte Instanz inkl. der Rechte kopiert und bereinigt. Aber vll ist es keine schlechte Idee, die tar zu installieren und vorher die Ports und das Verzeichnis zu ändern. Vll mache ich das nochmal.
Kann es sein, dass ich irgendwo den zweiten Prozess für den PI umbenennen muss? Ich glaube, dass das Problem ist, dass er auf den laufenden Prozess zugreift und nicht versteht, dass es einen neuen geben soll, wenn ich es mittels /etc/init.d/fhem2 starte
Das habe ich bei mir auch so gemacht. Allerdings muss in /etc/init.d/fhem2 der Port auch auf 7073 umgestellt werden.
Sieht dann bei mir so aus:#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert
### BEGIN INIT INFO
# Provides: fhem2
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: FHEM server 2.Instanz
### END INIT INFO
set -e
cd /opt/fhem2
port=7073
case "$1" in
'start')
sleep 1
echo "Starting fhem2..."
perl fhem.pl fhem.cfg
RETVAL=$?
;;
'stop')
echo "Stopping fhem2..."
perl fhem.pl $port "shutdown"
RETVAL=$?
;;
'status')
cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
if [ "$cnt" -eq "0" ] ; then
echo "fhem2 is not running"
else
echo "fhem2 is running"
fi
;;
*)
echo "Usage: $0 { start | stop | status }"
RETVAL=1
;;
esac
exit $RETVAL
Das läuft seit langem stabil und gut.
LG
Noch etwas: Ich habe gerade gesehen, dass ich aus irgendeinem Grund noch ein sleep 1 beim Start der 2. Instanz eingebaut hatte. Aber da das schon so lange her ist, bekomme ich den Hintergrund nicht mehr auf die Reihe.
LG
Das habe ich auch gemacht.
Ich habe jetzt folgendes festgestellt:
Wenn ich mit der Kommandozeile in den Ordner gehe und mittels "sudo perl fhem.pl fhem.cfg" in beiden Ordnern starte, dann klappt alles. Aber, wenn ich mittels "sudo /etc/init.d/fhem start" oder "sudo etc/init.d/fhem2 start" starte, dann greift er immer auf den gleichen Prozess zu. Er erkennt nicht, dass hier zwei verschiedene Prozesse gestartet werden sollen. Deswegen ergibt die Abfrage nach dem Status auch immer, dass beide laufen, weil auch die Status Abfrage zum gleichen Prozess führt.
Erkannt habe ich es, weil ich mir mittels top die Prozesse anzeigen lasse und sehe, dass nur ein fhem läuft im Gegensatz dazu, wenn ich mittels "sudo perl ..." starte, zwei Prozesse starten.
Ich wüßte allerdings nicht, wo ich noch einstellen soll, dass er zwei verschiedene Prozesse starten soll. Hier mal meine Dateien:
/etc/init.d/fhem:
#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert
### BEGIN INIT INFO
# Provides: fhem.pl
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: FHEM server
### END INIT INFO
set -e
cd /opt/fhem
port=7072
if test "$2" != "noaptmark"; then
apt-mark hold fhem > /dev/null
fi
case "$1" in
'start')
echo "Starting fhem..."
# if you need to start hmland for use with
# Homematic, please start the hmland daemon
# like this (please use correct path and port,
# depending on your installation!)
#
# /opt/hmcfgusb/hmland -d -p 1234 -r 0
#
perl fhem.pl fhem.cfg
# if you want to use configDB for configuration,
# use this command to start fhem:
#
# perl fhem.pl configDB
#
# and remove/comment the above line including fhem.cfg
RETVAL=$?
;;
'stop')
echo "Stopping fhem..."
# if you want to stop hmland during fhem stop:
# pkill hmland
pkill -U fhem perl
RETVAL=$?
;;
'status')
cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
if [ "$cnt" -eq "0" ] ; then
echo "fhem is not running"
else
echo "fhem is running"
fi
;;
*)
echo "Usage: $0 { start | stop | status }"
RETVAL=1
;;
esac
exit $RETVAL
Zweite Instanz (Hatte zum Testen alles mal in fhem-zwei umbenannt):
#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert
### BEGIN INIT INFO
# Provides: fhem.pl
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: FHEM server
### END INIT INFO
set -e
cd /opt/fhem-zwei
port=7073
if test "$2" != "noaptmark"; then
apt-mark hold fhem > /dev/null
fi
case "$1" in
'start')
echo "Starting fhem..."
# if you need to start hmland for use with
# Homematic, please start the hmland daemon
# like this (please use correct path and port,
# depending on your installation!)
#
# /opt/hmcfgusb/hmland -d -p 1234 -r 0
#
perl fhem.pl fhem.cfg
# if you want to use configDB for configuration,
# use this command to start fhem:
#
# perl fhem.pl configDB
#
# and remove/comment the above line including fhem.cfg
RETVAL=$?
;;
'stop')
echo "Stopping fhem..."
# if you want to stop hmland during fhem stop:
# pkill hmland
pkill -U fhem perl
RETVAL=$?
;;
'status')
cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
if [ "$cnt" -eq "0" ] ; then
echo "fhem is not running"
else
echo "fhem is running"
fi
;;
*)
echo "Usage: $0 { start | stop | status }"
RETVAL=1
;;
esac
exit $RETVAL
Ich hatte zum Testen auch mal die Zeile
pkill -U fhem perl
auf fhem-zwei geändert, aber es bleibt beim gleichen.
@Lorenz: Hattest du die zweite Instanz einfach aus einer Kopie erstellt, oder komplett neu installiert? Vielleicht muss ich das machen, aber ich habe noch nicht herausgefunden, wie ich die deb Datei bearbeiten kann, dass er ein anderes Verzeichnis nimmt.
Als fauler Mensch hatte ich einfach eine Kopie gemacht :-) Das ist sicher.
LG
Ich auch :D Hatte sogar FHEM extra dafür gestoppt, dass es keine Probleme gibt.
Ich checke einfach nicht, warum sie auf die gleiche PID beim Starten über /etc/... zugreifen. Kenne mich aber auch zuwenig mit der Materie aus um zu wissen, wo ich suchen müsste.
Setze in deinem 2 Start-Script in Zeile 6 mal fhem2, oder probier es mal mit meinem Script. Mehr fällt mir dazu im Moment auch nicht ein, da ich auch sonst keinen Unterschied sehe. Bis auf Sleep 1 ...
LG
Ich weiß nicht, welche der Zeilen, die es mehr gab als bei dir schuld war, aber ich habe es. Ich habe jetzt alles raus geworfen und mein Script deinem angepasst. Ich kann nun mittels /etc/... beide starten und beim Start des Pi werden nun auch beide automatisch gestartet.
Danke für die Hilfe :)
Gern geschehen !