[gelöst] systemd fhem.service start verzögern (wegen Debmatic/CCU3)

Begonnen von Jamo, 30 September 2019, 14:22:42

Vorheriges Thema - Nächstes Thema

Jamo

Hi,
ich habe beides Debmatic(CCU3) und fhem auf einem Intel Nuc unter Debian Buster laufen. Die Debmatic CCU3 braucht nach dem Neustart oder reboot meines iNUC sehr lange, bis alle Interfaces geladen sind. Das FHEM HMCCU modul benötigt aber beim Start eine laufende Debmatic CCU3, ansonsten werden die RPC Server Interfaces nicht gefunden, und der fhem HMCCU Server started nicht.

Wie kann ich den FHEM start verzögern, kann mir jemand auf die Sprünge helfen? ?
Ich habe schon verschiedene Lösungsmöglichkeiten gefunden, bin mir aber nicht sicher welches die richtige ist, und wo genau ich das einfügen muss:
1) Wants=xxx.service (Es gibt aber keine debmatic.service, nur ein Directory debmatic.service.wants, und eigentlich brauche ich ja ein fhem.service.wants ? );
2) ExecStartPre=/bin/sleep 120;
3) ExecStartPost=/bin/sleep 120;
4) ...


cat /etc/systemd/system/fhem.service
# $Id: fhem.service 16001 2018-01-26 11:54:41Z betateilchen $

[Unit]
Description=FHEM Home Automation
Wants=network.target
After=network.target

[Service]
Type=forking
User=fhem
Group=dialout
WorkingDirectory=/opt/fhem
ExecStart=/usr/bin/perl fhem.pl fhem.cfg
#ExecStart=/usr/bin/perl fhem.pl configDB
Restart=always

[Install]
WantedBy=multi-user.target
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

schwatter

Habe Debmatic noch nicht wirklich getestet. Aber du möchtest Fhem verzögern, daher sollte das so funktionieren.

nano  /etc/systemd/system/fhem.service

Und das eintragen, was du unter Punkt 2 geschrieben hast.

# $Id: fhem.service 19235 2019-04-21 13:26:17Z betateilchen $

[Unit]
Description=FHEM Home Automation
Wants=network.target
After=network.target
#Requires=postgresql.service
#After=postgresql.service
#Requires=mysql.service
#After=mysql.service

[Service]
Type=forking
User=fhem
Group=dialout
WorkingDirectory=/opt/fhem
ExecStart=/usr/bin/perl fhem.pl fhem.cfg
#ExecStart=/usr/bin/perl fhem.pl configDB
Restart=always
ExecStartPre=/bin/sleep 120

[Install]
WantedBy=multi-user.target

Jamo

Danke, habs so wie von Dir vorgeschlagen eingebaut, und ich werde beim nächsten Reboot berichten.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

amenomade

Ich bin für eine Rückmeldung sehr interessiert.

Das gleiche Problem habe ich auch mit FHEM und Debmatic (funktioniert übrigens problemlos auf meinem RPI3, bis auf diese Geschichte), die Ursache hatte ich auch genauso indentifiziert, aber ich habe noch nicht die Zeit gefunden, um mich um diese Korrektur zu kümmern.

Vielen Dank im Voraus ;)

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

MadMax-FHEM

Wie wird denn debmatic auf euren Systemen gestartet!?

Auch als systemd Dienst!?

Dann kann man auch eine Abhängigkeit einbauen...

Oder wenn man weiß wie der Prozess heißt eine sleep-Warteschreife einbauen bis der debmatic-Prozess läuft...

Timer/Sleep/etc. ist halt immer "Schätzometer"... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

amenomade

ZitatWie wird denn debmatic auf euren Systemen gestartet!?
Das ist genau die Frage

Es gibt mehrere Sachen, und ich weiss nicht welche die entscheidende ist...
debmatic-hmserver.service/
debmatic-hs485d.service/
debmatic-lighttpd.service/
debmatic-multimacd.service/
debmatic-rega.service/
debmatic-rfd.service/
debmatic-rfd.service/
debmatic-startupfinished.service/
debmatic-updatelgwfirmware.service/
debmatic-updatelgwkey.service/
debmatic.service/

Also... rein vom Name aus: vermutlich ist lighttpd die Weboberfläsche... unrelevant
updatxxxx auch wahrscheinlich unrelevant
Vielleicht kann man eine Abhängigkeit auf "startupfinished" legen? Hätte Sinn, aber ich weiss nicht, ob das richtig ist. Ich habe es noch nicht getestet
Oder eher auf debmaitc.service? Hmmm...

Deswegen war das "delayed start" von Fhem die einfachste (aber bestimmt nicht sauberste) Lösung
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Jamo

Das hier funktioniert und started fhem NACH debmatic:
unter [Unit] ist Wants und After mit dem debmatic-startupfinished.service in einer Zeile zu ergänzen.


cat /etc/systemd/system/fhem.service
# $Id: fhem.service 16001 2018-01-26 11:54:41Z betateilchen $

[Unit]
Description=FHEM Home Automation
Wants=network.target debmatic-startupfinished.service
After=network.target debmatic-startupfinished.service

[Service]
Type=forking
User=root
Group=dialout
WorkingDirectory=/opt/fhem
ExecStart=/usr/bin/perl fhem.pl fhem.cfg
#ExecStart=/usr/bin/perl fhem.pl configDB
Restart=always
#ExecStartPre=/usr/bin/sleep 300

[Install]
WantedBy=multi-user.target

Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Dracolein

Hi, würde mich hier gern ranhängen, weil ich fhem ebenfalls nach einem Reboot verzögert starten möchte.

Hintergrund:
auf dem selben System läuft ein zigbee-Gateway (deCONZ), welches nach einem Rebook erst eine Weile für die Initialisierung benötigt und danach alle Endgeräte neu verbinden muss. Das dauert ein paar Minuten.
Bisher startet mein fhem sofort, kann sich dann zu diesem Gateway nicht verbinden und diverse Sensoren & Aktoren laufen nicht. Ich muss dann jedes Mal manuell einen shutdown restart durchführen, bis es rennt.

Zitat von: amenomade am 02 Oktober 2019, 15:29:55
Ansonsten gibt es die "timer" Alternativ
https://www.linux.com/tutorials/setting-timer-systemd-linux/

Bezogen auf dies Zitat hatte ich etwas gegoogelt und folgende detailierte Howto-Anleitung gefunden ( https://forum.smartapfel.de/forum/thread/903-verzögerter-homebridge-start-nach-reboot-empfehlenswert-bei-der-nutzung-vom-rasp/ ) die ich als Linux-Laie hinbekommen würde.
Kann ich diese Anleitung für den FHEM-Service 1:1 übernehmen ?
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

misux

Zitat von: schwatter am 02 Oktober 2019, 10:32:54
Habe Debmatic noch nicht wirklich getestet. Aber du möchtest Fhem verzögern, daher sollte das so funktionieren.

nano  /etc/systemd/system/fhem.service

Und das eintragen, was du unter Punkt 2 geschrieben hast.

# $Id: fhem.service 19235 2019-04-21 13:26:17Z betateilchen $

[Unit]
Description=FHEM Home Automation
Wants=network.target
After=network.target
#Requires=postgresql.service
#After=postgresql.service
#Requires=mysql.service
#After=mysql.service

[Service]
Type=forking
User=fhem
Group=dialout
WorkingDirectory=/opt/fhem
ExecStart=/usr/bin/perl fhem.pl fhem.cfg
#ExecStart=/usr/bin/perl fhem.pl configDB
Restart=always
ExecStartPre=/bin/sleep 120

[Install]
WantedBy=multi-user.target


Hallo!

Ich habe dies mal getestet... Leider startet Fhem gar nicht wen ich diese Zeile dort einfüge... Woran könnte es liegen?
Wenn ich dann versuche manuell FHEM zu starten bekomme ich eine Fehlermeldung.
pi@raspberrypi:~ $ sudo sudo service fhem status
● fhem.service - FHEM Home Automation
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: enabled)
   Active: activating (start-pre) since Sun 2022-02-06 10:21:02 CET; 11s ago
Cntrl PID: 3884 (sleep)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/fhem.service
           └─3884 /bin/sleep 120

Feb 06 10:21:02 raspberrypi systemd[1]: Starting FHEM Home Automation...
pi@raspberrypi:~ $ sudo sudo service fhem status
● fhem.service - FHEM Home Automation
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: enabled)
   Active: activating (start-pre) since Sun 2022-02-06 10:22:33 CET; 9s ago
Cntrl PID: 3977 (sleep)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/fhem.service
           └─3977 /bin/sleep 120

Feb 06 10:22:33 raspberrypi systemd[1]: Starting FHEM Home Automation...


Musste erst die Zeile wieder löschen.... Danach hat Fhem wieder gestertet...

Otto123

120 sec überschreiten den Timeout von systemd.
Zusätzlich muss in dem Fall die Zeile
TimeoutStartSec=130
eingefügt werden

Der Standardwert liegt bei 90 sec. Anzeigen mit:
systemctl show fhem.service -p TimeoutStartUSec
Ich habe es im Wiki ergänzt.

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

misux


Otto123

ich bin unsicher, ob die Reserve von 10 sec ausreicht. Ich weiß nicht wann systemd den fhem Service als "start erfolgreich" ansieht. Kann sein das passiert sehr schnell wegen forking, kann sein eine ungünstige Konstellation (blocking Aufrufe beim start) benötigt mehr Zeit.
Müsste man also ev. nachjustieren.
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

MadMax-FHEM

Wäre es nicht "sauberer" eine Abhängigkeit zu benötigten Services "einzubauen"?

Und wenn man von einem "nicht-Service" abhängt, dann kann/könnte man doch dafür (also für die benötigte Abhängigkeit) einen "pseudo-Dienst" anlegen...

Habe das für fhem (bei einem Kumpel) bzgl. deCONZ und Internet (da hing ein LTE-USB-Stick dran) "gebastelt"...

Zeitverzögerungen haben immer das Problem der "Schätzung" ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)