FHEMWidget mittels SYSTEMD nach reboot automatisch starten

Begonnen von Bartimaus, 12 Februar 2021, 10:39:15

Vorheriges Thema - Nächstes Thema

Bartimaus

Moin,

ich nutze zur Fernsteuerung das hier angebotene FHEMWidget2. (https://forum.fhem.de/index.php/topic,45328.0.html)
Dies wird auf der Konsole des RPi in einem Screen gestartet, mit der Folge, das es NICHT automatisch nach einem SystemReboot oder Neustart von FHEM automatisch gestartet wird.

Ich habe jetzt unter /etc/systemd/system ein "fhemwidget.service" mit folgendem Inhalt angelegt:

[Unit]
Description=starten des FHEM-Widgets nach reboot
After=fhem.service

[Service]
ExecStart=/usr/local/bin/sync.sh
Restart=always

[Install]
WantedBy=multi-user.target


anschliessend per

sudo systemctl daemon-reload
sudo systemctl enable fhemwidget.service
sudo systemctl start fhemwidget.service

aktiviert.

der Inhalt der sync.sh sieht wie folgt aus:
#!/bin/sh
screen -dmS FHEMSyncClient bash pushsync.sh
exit


führe ich die sync.sh manuell aus, wird der SyncService des Widgets gestartet, und ich kann von ausserhalb meinen Heimnetzwerks via der App auf die darin enthaltenen Schalter o.ä. zugreifen.

Leider funktioniert es nicht automatisch via "systemd".

Können die LinuxProfis mir hier mal den entscheidenden Tip geben ?

LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Wernieman

Als welcher user startest Du denn Normalerweise das Script?

Und .. muß es wirklich "IM" Screen laufen?? Kenne jetzt das Script selber nicht ....
- 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

Bartimaus

Moin,

also normalerweise starte ich das Skipt händisch via User "pi".
Ich habe es jetzt geschafft, das Skript auch automatisch via Service@systemd zu starten, dies geschieht allerdings mit Rootrechten. Es tut aber der Funktion keinen Abbruch.

Warum es in einem Screen läuft ? Weil es funktioniert und vom Developer so vorgeschlagen wurde.....

http://tasior.info:8081/fhemwidget_sync_de.html

Aber ich habe mich auch schon gefragt, ob der Sync-Client (ist ne Java-Anwendung) nicht ohne Screen laufen würde....., aber so tief stecke ich in der Materie nicht drin. So wird der SyncClient gestartet:

java -jar FHEM_Sync_Client.jar -v -url=http://localhost:8084

Bin schon froh das es jetzt via Systemd automatisch läuft... aber für Verbesserungen bin ich immer zu haben.

LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Wernieman

Also eigentlich kennt Systemd User/Gruppe
User=pi
Group=pi


Und warum er im Screen laufen soll, schreibe der nicht. Ich würde es einfach "nur" in den Hintergrund schicken. Wenn es aber läuft ....

- 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

Bartimaus

Danke, den User in Systemd mitzugeben hatte ich auch schon dran gedacht... baue ich mal ein.

Wie würdest Du denn das "in den Hintergrund schicken" ?
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Otto123

Hi,

für meine Begriffe wird hier ziemlich viel "missachtet" :) Ich hatte mal hier ein bisschen was aufgeschrieben.
https://wiki.fhem.de/wiki/Fhem.service_(systemd_unit_file)

Ganz wichtig sind aus meiner Sicht die Pfade! Immer komplette Pfadangaben verwenden - oder in den gewünschten Arbeitspfad wechseln.
Der Eintrag After=fhem.service ist mehr ein Wunsch! Es bedeutet nicht dass FHEM wirklich läuft! Es bedeutet das FHEM vorher zum Start getriggert wurde!
Müsste Type=oneshot nicht verwendet werden?

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

Bartimaus

Hallo Otto,

ich habe wirklich viel gelesen und probiert, bis dann dieses Skript den gewünschten Erfolg hatte:

[Unit]
Description=starten des FHEM-Widgets nach reboot
After=fhem.service

[Service]
Type=simple
WorkingDirectory=/home/pi
ExecStart=/usr/local/bin/sync.sh
ExecStop=/bin/kill -9 $MAINPID
RestartSec=150
Restart=always
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target


Entscheidend war bei meiner Konfig der Eintrag "RemainAfterExit=yes" damit das Widget auch in einem Screen läuft.

Das Widget wird jetzt jedenfalls nach einem Reboot gestartet, bzw. nach einem FHEM-Neustart.
Aber ich schaue mir jetzt mal an was Du dazu aufgeschrieben hast.

Ja, ich verstehe das "After=fhem.service" ein Wunsch ist. Aber mit dem Delay von 150s klappt es, dann läuft FHEM in der Regel.
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Otto123

Sieht auf alle Fälle besser aus :)
Aber dein RestartSec wirkt mMn nicht bei Start sondern eben nur beim Restart.
Ich hätte sicher einfach sowas gemacht ExecStartPre=/bin/sleep xx weil ich es auch nicht besser weiß ;)
Ich habe auch hier noch ein bisschen zum Lesen, da ist auch ein link zum umfangreichen Handbuch

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

Es giebt dann noch den "need"

Wenn FHEM mal runtergefahren wird, wird es auch automatisch mit abgeschaltet ....
- 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

Bartimaus

Zitat von: Wernieman am 15 Februar 2021, 14:46:51
Es giebt dann noch den "need"

Wenn FHEM mal runtergefahren wird, wird es auch automatisch mit abgeschaltet ....

Meinst Du ,,requires=fhem.service" ?
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Wernieman

- 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

Bartimaus

LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly