Eine zweite FHEM Instanz auf einem Raspberry Pi oder Banana Pi einrichten

Begonnen von NewRasPi, 20 Januar 2019, 20:15:40

Vorheriges Thema - Nächstes Thema

NewRasPi

Hallo Forum
ich hatte irgend wo gelesen, das jemand sogar drei bis vier FHEM Instanzen auf einem Raspberry Pi eingerichtet hat.
Ich würde gerne neben dem Standart Verzeichnis /opt/fhem ein weiteres z.B. /opt/fhem2 einrichten.
Damit müsste es ja genau abgegrenzt sein. Bei den Port würde ich die WEB auf 8086, die WEBphone auf 8087 und die WEBtablet auf 8088 einstellen.
Wenn sich das gegenseitig nicht behintert wäre eine klare Trennung möglich.
In diesem Beitrag,
https://forum.fhem.de/index.php/topic,8580.msg44401.html#msg44401
wurde 2012 schon mal kurz ein "Ja" zu dieser Frage gegeben.
Leider ist meine weitere Suche erfolglos geblieben.
Mir würde eine kleine Start- Hilfestellung sehr helfen.
Der Hintergrund für diese Gestaltung ist, man könnte auf dieser zusätzlichen FHEM Instanz nur Überwachungskameras zusammen fassen und diesen im Heimnetzwerk ohne Benutzer und Passwort erreichbar machen. (alternativ müsste noch ein weiterer Raspberry laufen)
Schöne Grüße
Elmar   
Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;

Peteruser

Hallo,
per Docker sollte das tatsächlich machbar sein,  mir erschließt sich der Sinn aber nicht.

1. Wenn die Cam kein Gateway bekommen, dann können die nicht raus, damit sollte das schon passen.
2. Eigenes zusätzliches WLan für die Cam

Wenn die Cam aber von aussen nicht per Port Weiterleitung erreichbar sind, dann verstehe ich den Aufwand nicht. Gibt es noch andere Gründe für die Aktion?

Grüße Peter
Ubuntu+Debian FHEM + ESPEasy + Homematic + ConBee + DUROFERN

NewRasPi

Hallo Peter
von außen komme ich per VPN auf alle Raspberry und den Kameras. Nur intern z.b. auf dem TV ist es äusserst mühselig immer den Benutzer und das Passwort mit der TV Fernbedienung einzugeben. Da sich der für die Kameras zuständige Raspberry meistens sowieso "langweilt" könnte dieser doch etwas zusätzliche Arbeit übernehmen.
Hoffentlich macht das den Grund besser nachvollziehbar.
Grüße Elmar
Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;

Deudi

Wenn wie im ersten Post geschrieben zwei FHEM auf dem gleichen pi laufen sollen, hast du schon alles beschrieben was du brauchst: Ein eigenes Verzeichnis und andere Portnummern. Ggf. musst du für das Starten mittels systemd noch einen zweiten Service einrichten. Ist auch ganz einfach. Alte Datei kopieren in z.b. fhem2.service, anpassen und starten. Nur falls du irgendwelche Werte zwischen den beiden Instanzen austauschen willst, kannst du diese mittels FHEM2FHEM verbinden, aber aufpassen, dass du keine Schleife baust.

P.S.: Falls sich wieder jemand über den Sinn Gedanken macht: Ich nutze das, um potentiell blockierende Module auszulagern. Ist im Forum schon hier und da diskutiert worden.
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Wzut

Ich habe zum Modul schreiben auch oft mehr als ein FHEM auf dem Raspi :)
Dir und Ports trennen wie im ersten Post schon geschrieben reicht, allerdings nicht nur die WEB Devices, das Telnet Device nicht vergessen ! 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Wernieman

Nur für ein 2. Web-Device brauchst Du Doch kein 2. FHEM? Du kannst mehr als eines definieren ... also eines für "extern" und eines ohne Passwort für Intern.

Btw:
Ich hoffe, Du hast Dein externes FHEM gesichert?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

NewRasPi

Hallo - vielen Dank für Eure Antworten.
Einen Versuch habe ich ja schon gemacht, unter /opt/fhem2 das ganze Verzeichnis aus /opt/fhem kopiert und dann die Ports ausnahmsweise in der fhem.cfg geändert. (auch den Telnet Port)
Damit allein macht es aber keine Anstalten zu starten. Da fehlt mir das Wissen wo man dem System mitteilen kann, das es jetzt auch die Daten im zusätzlichen Verzeichnis startet.
Eine Datei "fhem.service" oder *.service" finde ich nicht. Bitte geb mir noch eine Info wo diese Datei zu finden ist.
Bestimmt muss diese neue Start Datei auch noch in einer anderen "angemeldet" werden?
@ Wernieman
Ist dann der "Rest" von dem FHEM noch "Sicher", wenn da ein zusätzliches WEB2 Device ohne Benutzer und Passwort angelegt wird?
Natürlich ist mein Netzwerk hinter einer Firewall der Fritzbox ohne geöffnete Ports hoffentlich sicher. Das Fachwissen von normal sterblichen geht natürlich
auch nicht so weit wie das von Euch Spezialisten. Auch darum hoffe ich hier im Forum das eine oder andere zu lernen.
Euch allen noch mal vielen Dank für die Unterstützung.
Schöne Grüße
Elmar 
Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;

Wernieman

Wenn der Zugang ohne PW aus dem netz nicht erreichbar ist und Du eventuell noch "Befehle" einschränkst, ist es sicher.

Das Sicherheits-Problem bei FHEM ist, das Du über die Eingabezeile oben beliebige Befehle, incl. perl, eingeben kannst und Du somit als "User fhem" Zugriff aufs System hast. Natürlich aber nur soviel, wie die jeweilige FHEM-Web-Instanz erlaubt.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Amenophis86

Die Frage zum start ist, wie du aktuell startest über init.d (/etc/init.d) oder systemd (/etc/systemd) da kannst du mal rein schauen und siehst die entsprechenden Dateien welche du kopieren und anpassen kannst.

Ich habe auch zwei Instanzen auf einem Pi. Eine welche alles über das Internet abgreift und auch mal blockieren kann und eine für alle anderen Aufgaben, welche nicht blockieren soll.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

NewRasPi

Zitat von: Amenophis86 am 21 Januar 2019, 13:01:13
Die Frage zum start ist, wie du aktuell startest über init.d (/etc/init.d) oder systemd (/etc/systemd) da kannst du mal rein schauen und siehst die entsprechenden Dateien welche du kopieren und anpassen kannst.

Ich habe auch zwei Instanzen auf einem Pi. Eine welche alles über das Internet abgreift und auch mal blockieren kann und eine für alle anderen Aufgaben, welche nicht blockieren soll.

Hallo Amenophis86
Danke für den Tip. Unter /etc/systemd ist nichts offensichtlich passendes zu sehen. Unter /etc/init.d gibt es eine Datei *fhem die ich mir zu *fhem2 mit anpassen der Rechte wie die Original Datei kopiert habe. In dieser Datei habe ich mit dem Editor alle Pfade die auf /opt/fhem waren auf /opt/fhem2 geändert.
Das ist noch nicht Zielführend.
Nun habe ich dem von Hand editieren der fhem.cfg nicht mehr ganz vertraut. Darum habe ich jetzt mal die Ports in dem neuen FHEM wieder zurück auf die
8083 gestellt und die Verzeichnise von /opt/fhem zu /opt/fhem-org umbenannt. Anschliessend mein neues /opt/fhem2 auf /opt/fhem geändert und einen "sudo reboot" das System neu gestartet. Jetzt kann ich im FHEM die WEB Port ändern auf den gewünschten 8086. Die WEBphone auf Port 8087, die WEBtablet auf Port 8088 und den Telnet Port auf 7074.
Nach einem Neustart komme ich dann auf das neue FHEM unter IP:8086 - so weit, so gut.
Die Verzeichnisse wieder zurück umbenannt auf /opt/fhem und auf /opt/fhem2 erlauben dann wieder den Start des ursprünglichen FHEM, aber Ziel der Übung, eine zweite "erreichbare Instanz FHEM" geht leider nicht.
Vielleicht weiß noch jemand woran das jetzt hängt?
Hoffentlich kommen sich die neuen "eindeutige FUUID" nicht gegenseitig ins Gehege?!
Danke für jede Hilfe dazu.
Schöne Grüße
Elmar 
Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;

Amenophis86

Naja die Frage ist ja auch, wie du es nun effektiv startest. Du kannst wie folgt vorgehen:

1. /opt/fhem kopieren in /opt/fhem-zwei
2. unter /opt/fhem-zwei die cfg editieren und die Ports anpassen
3. unter /etc/init.d "fhem" kopieren in "fhem-zwei" und alles darin auf /opt/fhem-zwei anpassen
4. fhem alt starten mittels "/etc/init.d fhem start"
5. fhem-zwei starten mittels "/etc/init.d fhem-zwei start"

Allerdings ist die Frage, ob du wirklich rein mittels init.d arbeitest oder doch mit systemctl bzw. systemd. Sollte aber eigentlich so gehen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

NewRasPi

Zitat von: Amenophis86 am 21 Januar 2019, 16:24:20
Naja die Frage ist ja auch, wie du es nun effektiv startest. Du kannst wie folgt vorgehen:

1. /opt/fhem kopieren in /opt/fhem-zwei
2. unter /opt/fhem-zwei die cfg editieren und die Ports anpassen
3. unter /etc/init.d "fhem" kopieren in "fhem-zwei" und alles darin auf /opt/fhem-zwei anpassen
4. fhem alt starten mittels "/etc/init.d fhem start"
5. fhem-zwei starten mittels "/etc/init.d fhem-zwei start"

Allerdings ist die Frage, ob du wirklich rein mittels init.d arbeitest oder doch mit systemctl bzw. systemd. Sollte aber eigentlich so gehen.

Hallo Amenophis86
heißt das, es können NICHT beide Instanzen gleichzeitig laufen???
Ich hatte gehofft das die zweite FHEM Instanz, genau so wie die erste auch, automatisch gestartet wird.
Wenn ich jetzt im Putty Fenster:
/etc/init.d/fhem2 start
eingebe bekomme ich einen Zugriff Fehler auf die Log Datei, obwohl die aber da ist.
Starting fhem2...
Can`t open /media/sda1/log/fhem2-2019-01.log : Permission denied at fhem.pl line 2731

Die Rechte sind aber:

pi@bPi:/media/sda1/log $ ls -l
insgesamt 5808
.....
-rw-r--r-- 1 fhem dialout   36098 Jan 21 15:47 fhem-2019-01.log
-rw-r--r-- 1 fhem dialout    1580 Jan 21 14:44 fhem2-2019-01.log    #<<<<<<<<<<<< NEU
-rw-rw-rw- 1 fhem dialout   13105 Apr 29  2018 fhem.save
......
nach meiner Ansicht gleich vergeben. In dieser beschriebenen Zeile 2731 steht eigentlich nichts für mich erkennbares.
So ganz einfach will es bei mir wohl nicht laufen.
Schöne Grüße
Elmar

Edit: Auch wenn ich die Log Datei auf ./opt/fhem2-2019-01.log ändere kommt ein verweigern des Zugriff in der fhem.pl Zeile 2731

Doch seltsam?
pi@bPi:~ $ /etc/init.d/fhem2 start
Starting fhem2...
Can't open ./log/fhem2-2019-01.log: Permission denied at fhem.pl line 2731.
pi@bPi:~ $ /etc/init.d/fhem2 status
fhem2 is running
pi@bPi:~ $ /etc/init.d/fhem2 stop
Stopping fhem2...
pkill: killing pid 2639 failed: Die Operation ist nicht erlaubt
pkill: killing pid 2991 failed: Die Operation ist nicht erlaubt
pi@bPi:~ $ /etc/init.d/fhem2 status
fhem2 is running
pi@bPi:~ $

Aber im Browser Firefox mit dem IP:8086 geht kein FHEM auf. Ob da wirklich ein fhem2 läuft? Oder nur die editierten Meldungen angezeigt werden weiß ich nicht. Das System wurde jeweils neu gestartet.
Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;

Amenophis86

Ich glaube wir müssen hier mal ganz von vorne anfangen. Verstehe zum Beispiel nicht wieso dein Log Datei da ist und nicht im Ordner FHEM. Als erstes kopier bitte mal beide Start Skripe hier rein. Dann kopierste bitte mal alle FHEMWEB und Telnet Instanzen von beiden hier rein um zu sehen auf welchen Ports die beiden laufen. Dann gehen wir weiter.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

NewRasPi

Hallo Amenophis86
die ursprüngliche /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


Die neue /etc/init.d/fhem2
#!/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:    FHEM2 server
### END INIT INFO

set -e
cd /opt/fhem2
port=7074

if test "$2" != "noaptmark"; then
  apt-mark hold fhem > /dev/null
fi

case "$1" in
'start')

        echo "Starting fhem2..."

# 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 fhem2..."

# 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 "fhem2 is not running"
        else
                echo "fhem2 is running"
        fi
        ;;
*)
        echo "Usage: $0 { start | stop | status }"
        RETVAL=1
        ;;
esac
exit $RETVAL



Die FHEM WEB vom ursprünglichen FHEM (aus der fhem.cfg kopiert)
define WEB FHEMWEB 8083 global
define WEBphone FHEMWEB 8084 global
define WEBtablet FHEMWEB 8085 global
define telnetPort telnet 7072 global


Aus der /opt/fhem2/fhem.cfg
define WEB FHEMWEB 8086 global
define WEBphone FHEMWEB 8087 global
define WEBtablet FHEMWEB 8088 global
define telnetPort telnet 7074 global

Die Log Datei war auf einer SSD Festplatte "ausgelagert", weil es mich ärgerte das wenn FHEM einmal diese Datei nicht zu Ende schreiben konnte, das ganze FHEM nicht mehr erreichbar war. Um einem möglichen stören vorzubeugen habe ich die Log-Datei in der /opt/fhem2/fhem.cfg aber wieder auf die ./log/fhem2-2019-01.log umgebogen.
attr global logfile ./log/fhem2-%Y-%m.log

Hoffentlich kannst Du damit etwas erkennen.
Vielen Dank und schöne Grüße
Elmar

Edit: Es geht *hurra ! Danke Danke Danke
Ich habe von einem anderen Raspberry aus eine FHEM2FHEM Verbindung auf den Telnet Port 7074 eingerichtet weil ich der Anzeige das fhem2 running nicht wirklich geglaubt habe. Das ging zuerst nicht. Nach einem weiteren nicht funktionierendem /etc/init.d/fhem2 stop habe ich dann erneut
ein /etc/init.d/fhem2 start abgeschickt und siehe da, es läuft.
Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;

Amenophis86

Freut mich schon mal, dass es geht. Allerdings wären noch Fragen offen:
Was ist mit dem Logfile Fehler?
Unter welchem User läuft dein Fhem zwei?
Wenn es nicht fhem ist, dann kann auch das stop aus dem. Skript nicht gehen. Dieses killt in beiden Fällen aktuelle alle Prozesse des User Fhem, also fhem eins und fhem zwei.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...