[gelöst] FHEM Ordner per SAMBA eingebunden - kein Autostart beim Booten

Begonnen von maddinthebrain, 22 Dezember 2017, 12:31:29

Vorheriges Thema - Nächstes Thema

maddinthebrain

Hallo zusammen,

ich hatte mal eine defekte SD-Karte zu beklagen. Daher dachte ich, die meisten Datenschreibereien kommen doch von den FHEM Logs. So hatte ich den Fhem-Ordner auf meinen NAS verschoben wo eh die MYlog-DB schon liegt und per SAMBA in Verzeichnisbaum vom Raspbian an den ursprünglich Ort geroutet. Funktioniert einwandfrei bis auf eins: FHEM startet nicht mehr automatisch beim Booten.  Ich gehe fest davon, dass da die Netzwerkverbindung noch nicht steht, zumindest findet man entsprechende Einträge im Log vom Raspian. Das Skript zum Starten von FHEM gibt nach ein paar Versuchen/Sekunden auf. Das Starten von FHEM muss ich jetzt immer per Hand anstoßen, die Netzwerkverbindung geht von selber. Gibt es dafür eine Lösung? Ich denke man müsste einfach das FHEM Skript (/etc/init.d/fhem) umschreiben, so dass nach ein paar Minuten Verzögerung FHEM startet. Oder einfach es wartet wird bis die Verbindung steht.

Hat jemand ne Idee?

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

Otto123

#1
Hallo Martin,

also grundlegend halte ich das für keine gute Idee, den Start des einen Systems von so vielen anderen Komponenten abhängig zu machen (Netztwerk, NAS und ff)

Du kannst Abhängkeiten bei den Diensten im raspbian einbauen, Netzwerk samba oder wie auch immer. Allerdings werden die nach meiner Erfahrung nicht unbedingt greifen, weil der Start "asynchron" erfolgt und die Meldung Netzwerk gestartet nicht unbedingt bedeutet, dass es wirklich schon alles da ist. Aber da kannn ich nur Vermutungen äußern, da müsstest Du Dich mit init.d und systemd befassen.

Du kannst am Anfang des fhem start Scripts einfach ein sleep einfügen, wie sich das auf das System auswirkt wenn man dort minuten angibt weiß ich nicht. Beispiel für 10 sec:
sed -i s/'        perl fhem.pl fhem.cfg/        sleep 10\n        perl fhem.pl fhem.cfg/' /etc/init.d/fhem

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

RaspiLED

#2
Hi,
Und dann bitte den Inhalt von
/etc/init.d/fhem
anschauen/posten.
Insbesondere ist spannend was nach Required-Start steht (z.B. $network zum warten auf das Netzwerk)
Bei Änderungen noch
sudo systemctl enable fhem
ausführen.
Gruß Arnd



Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

maddinthebrain

Ok das schau ich mir an. Nachdem der Raspi sehr zügig bootet,nämlich unter einer Minute, denke ich ein sleep von 60s sollte reichen. Wo muss das eigentlich hin? Welche Datei?

Die Fhem Datei hat bei Required Start alles mit # auskommentiert. Oder muss das so?

GNU nano 2.2.6            Datei: 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..."



Gruß Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

Otto123

#4
Dieser Befehl macht das für Dich. Richtige Datei, richtige Stelle. Vorher bitte sudo su
sed -i s/'        perl fhem.pl fhem.cfg/        sleep 60\n        perl fhem.pl fhem.cfg/' /etc/init.d/fhem

Die Beschreibung von sed und die Erklärung vom Syntax solltest Du durch google finden.  ;)

Du kannst auch die Abhängigkeit eintragen
# Den Systemstart von ntp abhängig machen
sed -i s/'# Required-Start:       $local_fs $remote_fs/# Required-Start:       $local_fs $remote_fs $ntp/' /etc/init.d/fhem
systemctl daemon-reload

Das # im init Script ist nicht auskommentiert, das ist so!

Aber wie gesagt, das wird für Deinen Fall nichts bringen. Selbst wenn das Netzwerk gestartet ist, ist dein Laufwerk noch nicht verbunden!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

Du könntest im Start-Script einen test machen, ob Laufwerk/Mount existiert und entsprechend warten. Alternativ in die /etc/rc.local den Start von FHEM eintragen .. das ist dann definitiv die letzte startmöglichkeit und DANN sollte der mount gemountet sein.

P.S. Wann/Wie mountest Du das Samba-Share?
fstab oder eigenes Script?
- 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

maddinthebrain

Hallo
Zitat von: Wernieman am 23 Dezember 2017, 15:39:01
Du könntest im Start-Script einen test machen, ob Laufwerk/Mount existiert und entsprechend warten.
Wie müsste dieser Test denn aussehen?
Zitat von: Wernieman am 23 Dezember 2017, 15:39:01
P.S. Wann/Wie mountest Du das Samba-Share?
fstab oder eigenes Script?
Das geht per fstab. Das hat sich als praktikabel erwiesen und funktioniert zuverlässig.

Das mit dem sleep wäre auch noch eine Option, wenn das mit Test nicht klappt.

Schöne Weihnachten

Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

RaspiLED

Hi,
moin wo ich das hier lese, fällt mir ein, dass Du auch im init script das Fileshare mounten könntest :-)
Oder Du testest auf das Samba Mount.
Hier mal um Ideen zu generieren:
https://github.com/lavalamp-/smb-check/blob/master/smb_check.sh
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Wernieman

Du könntest u.A.:
  dir=<Zu Prüfenden Mountpoint>
  until ls $dir >/dev/null 2>/dev/null
  do
    sleep 1
  done


Allerdings wartet der Code ewig, da solltest Du noch eine Zusatzprüfung (z.B. Zähler) einrichten
- 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

maddinthebrain

Ich nutze einen Cronjob um zu starten.

@reboot /etc/init.d/fhem start


Wie mache das dann hier?

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

maddinthebrain

#10
Ich habe es nun wie folgt gelöst
Ich habe meinem home ein Shellskript mit folgendem Inhalt angelegt
#!/bin/bash
sleep 10
sudo /etc/init.d/fhem start


Dann meinen cronjob so angepasst, dass er das Skript beim Booten  ausführt.

Das wars.

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren