Autor Thema: [HowTo] fhem als service unter systemd starten  (Gelesen 3499 mal)

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 2824
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #15 am: 19 Dezember 2016, 09:03:32 »
Eigentlich ist doch Hmcfgusb ein eigener Deamon ... und man sollte dann systemd seine arbeit machen lassen es nacheinander zu starten.

also:
Eine eigene Config für Hmcfgusb und abhängigkeiten von fhem zu Hmcfgusb definieren

alternativ ... eigenes Start/Stop-Script definieren ..
- Bitte um Input für Output
- When there is a Shell, there is a Way

FHEM auf Gentoo/Ubuntu-Server
incl. CUL (433,868), JeeLink und SISPM

Offline daywalkero

  • New Member
  • *
  • Beiträge: 22
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #16 am: 19 Dezember 2016, 10:15:35 »
Also so?

[Unit]
Description=HMCFGUSB

[Service]
Type=forking
ExecStart=/opt/hmcfgusb/hmland -d -p 1234 -r 0
Restart=always
RestartSec=5

Den Kram dann in eine hmcfgusb.service und entsprechend wie im ersten Beitrag einbinden? Also daemon-reload, danach Start und alles ist gut?

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 2824
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #17 am: 19 Dezember 2016, 11:45:02 »
Naja .. DU hast Ihm nicht gesagt, das fhem es benötigt, z.B.:
[Install]
WantedBy=.....

Bzw. in der systemd-fhem-config, das er diesen "Dienst" braucht ....

p.s. auch ein "stop" währe nicht schlecht ;o)
- Bitte um Input für Output
- When there is a Shell, there is a Way

FHEM auf Gentoo/Ubuntu-Server
incl. CUL (433,868), JeeLink und SISPM

Offline mahowi

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #18 am: 19 Dezember 2016, 11:58:38 »
"Stop" ist nicht zwingend notwendig, da ohne Angabe einfach ein kill an den Prozeß geschickt wird.
Zitat von: man systemd.service
If this option is not specified, the process is terminated by sending the signal specified in KillSignal= when service stop is requested.
CUBe (MAX): HT, WT+, FK, EcoTaster | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 2824
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #19 am: 19 Dezember 2016, 12:02:45 »
Ich zitiere:
"währe nicht schlecht"

Ich verlasse mich nicht gerne auf automatismen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way

FHEM auf Gentoo/Ubuntu-Server
incl. CUL (433,868), JeeLink und SISPM

Offline mareb

  • New Member
  • *
  • Beiträge: 13
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #20 am: 21 Dezember 2016, 20:09:44 »
Du kannst mit
journalctl -xn -u <hier servicename, vermutlich "fhem"> schauen, was Dein Dienst da macht.

Für homebridge solltest Du ein eigenes systemd-Servicefile anlegen. Bei mir sieht das so aus:
# cat /etc/systemd/system/homebridge.service
[Unit]
Description=Node.js HomeKit Server
After=syslog.target network-online.target

[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

Offline daywalkero

  • New Member
  • *
  • Beiträge: 22
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #21 am: 22 Dezember 2016, 16:23:30 »
Habs geschafft :)

Alexa Autostart (aktuell sind noch Anpassungen an der Alexa-Config bezüglich der Keys notwendig):
[Unit]
Description=Alexa Fhem
Requires=fhem.service

[Service]
User=pi
Type=simple
WorkingDirectory=/opt/alexa-fhem
ExecStartPre=/bin/sleep 5
ExecStart=/opt/alexa-fhem/bin/alexa
#Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Homebridge (hier hat mir die Angabe des Benutzers gefehlt und deshalb ging es nicht):

[Unit]
Description=Homebridge
After=alexa.service

[Service]
User=pi
Type=simple
ExecStart=/usr/bin/homebridge

[Install]
WantedBy=multi-user.target

Autostart FHem (noch übers init.d Script. Wichtig war hier After=network.target da er sonst die Ports nicht öffnen konnte. HMCFGUSB läuft im init.d Script mit an)
[Unit]
Description=FHEM Home Automation
After=network.target

[Service]
Type=forking
ExecStart=/etc/init.d/fhem start
ExecStop=/etc/init.d/fhem stop
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Die Dateien sind noch nicht final, laufen aber erstmal sauber. Sieht man u. A. auch am #Restart bei Alexa - könnte man dann theoretisch ja ganz raus löschen. Tut aber auch so nicht weh.
« Letzte Änderung: 22 Dezember 2016, 16:25:06 von daywalkero »

Offline mareb

  • New Member
  • *
  • Beiträge: 13
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #22 am: 26 Dezember 2016, 07:13:35 »
Habs geschafft :)

Autostart FHem (noch übers init.d Script. Wichtig war hier After=network.target da er sonst die Ports nicht öffnen konnte. HMCFGUSB läuft im init.d Script mit an)

Ich würde für den HMCFGUSB-Adapter noch ein eigenes service-file anlegen.
Im FHEM-File kannst Du das dann in der UNIT-Section mit
[Unit]
...
Wants=...

referenzieren. Dann würde der USB-Adapater immer mitgestartet, wenn fhem gestartet wird.

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 5102
    • Otto's Technik Blog
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #23 am: 09 Januar 2017, 21:49:21 »
Hallo betateilchen,

als ziemlicher Linux Anfänger habe ich versucht den Umstieg von SysVinit nach Systemd zu verstehen.
Ist dieser Befehl (Im ersten Post) zum Entfernen des alten Dienstes nicht nur ein Teil?update-rc.d fhem removeEs müsste doch vielmehr update-rc.d fhem disableheißen?
Oder muss man besser erst disable und dann remove machen?

Das Wiki Ubuntu sagt dazu
Zitat
Bei einer Aktualisierung (Update) des entsprechenden Pakets merkt die Paketverwaltung, dass diese Links nicht mehr existieren, und legt sie wieder an, da das System davon ausgeht, dass das Paket zum ersten Mal installiert wird.

Ich weiß im Falle FHEM wird eigentlich kein Update des Paketes durchgeführt, insofern ist mein Einwand vielleicht etwas philosophisch.  ;)

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi,HMLAN,HMUART,Homematic,Fritz!Box 7490,Sonos,ET9200,Arduino nano,ESP8266

Offline AB1970

  • New Member
  • *
  • Beiträge: 38
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #24 am: 28 Februar 2017, 18:52:13 »
Danke an alle für eure Hilfe !
Hmcfgusb, alexa, homebridge und FHEM laufen bei mir nun unter systemd.

Das Service File für FHEM:
[Unit]
Description=FHEM Home Automation
After=hmcfgusb.service
Wants=hmland.service

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

[Install]
WantedBy=multi-user.target   




Offline raimundl

  • Full Member
  • ***
  • Beiträge: 244
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #25 am: 28 Februar 2017, 23:15:23 »
Danke AB1970!

Könntest du auch die Systemd für die anderen Dienste veröffentlichen. Insbesondere Alexa.

LG
Homematic: Licht, Heizung, Alarm,...  auf zwei RaspberryPi3 mit OS "Jessie" und HM-MOD-RPI-PCB

Offline AB1970

  • New Member
  • *
  • Beiträge: 38
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #26 am: 01 März 2017, 16:04:20 »
Stellt bitte erst einmal sicher, dass sich systemd nicht die alten Init.d Startscripte schnappt
Hierzu habe hmcfgusb,fhem,Alexa und homebridge erstmal abgemeldet:
sudo systemctl disable <name>.service
Danach im Verzeichnis /etc/init.d die Startscripte von hmcfgusb,fhem,Alexa und homebridge in <name>.save umbenennen.

Anschliessend müssen die entsprechenden <name>.service Dateien in etc/systemd/system erstellt werden.

Damit es systemd auch mitbekommt, dass sich was geändert hat, noch ein:
sudo systemctl daemon-reload
Schlussendlich macht es Sinn alle Services mit
sudo systemctl start <name>.service
zu starten und mit z.b. htop zu schauen, ob sie wirklich laufen.
sudo systemctl status <name>.service
sudo journalctl -u <name>.service
hilft einen Überblick zu bekommen, wenn was schiefläuft.

zuletzt dafür sorgen, dass es beim Booten gestartet wird:
sudo systemctl enable <name>.service
Bitte oben den Hinweis beachten: Das ist nichts für Anfänger und macht bitte vorher eine Sicherung der Systems.

---HMcfgUsb
[Unit]
Description=HMCFGUSB

[Service]
Type=forking
ExecStart=/opt/hmcfgusb/hmland -d -p 1234 -r 0
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
-- FHEM
Gefunden im  https://wiki.fhem.de/wiki/Benutzer:Benheim/Startscript_systemd
aber mit der Änderung für hmcfgusb ( nur nötig  wenn man auch einen Homematic USB stick benutzt)

[Unit]
Description=FHEM Home Automation
After=hmcfgusb.service
Wants=hmland.service

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

[Install]
WantedBy=multi-user.target
 
-- Alexa
[Unit]
Description=Alexa Fhem
Requires=fhem.service

[Service]
User=<user> (most probably "pi")
Type=simple
WorkingDirectory=/opt/fhem/alexa-fhem
ExecStartPre=/bin/sleep 5
ExecStart=/opt/fhem/alexa-fhem/bin/alexa
#Restart=always
RestartSec=5
StandardOutput=journal

[Install]
WantedBy=multi-user.target
--Homebridge
[Unit]
Description=Homebridge
After=alexa.service

[Service]
User=<user> (most probably "pi")
Type=simple
ExecStart=/usr/bin/homebridge

[Install]
WantedBy=multi-user.target


« Letzte Änderung: 15 März 2017, 13:33:20 von AB1970 »

Offline raimundl

  • Full Member
  • ***
  • Beiträge: 244
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #27 am: 01 März 2017, 16:17:52 »
Vorerst Danke!

Deine Ausführungen bringen mich im Thema systemd sicher weiter. Ich werde alles sorgfältig ausprobieren und dann auch berichten.
Homematic: Licht, Heizung, Alarm,...  auf zwei RaspberryPi3 mit OS "Jessie" und HM-MOD-RPI-PCB

Offline Tsturm

  • New Member
  • *
  • Beiträge: 13
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #28 am: 14 März 2017, 21:11:10 »
An AB1970... hättest Du noch dein Homebridge script - du hast versehentlich zweimal das Alexa-Script geposted...
VG timmo

Offline AB1970

  • New Member
  • *
  • Beiträge: 38
Antw:[HowTo] fhem als service unter systemd starten
« Antwort #29 am: 15 März 2017, 13:34:13 »
Danke für den Hinweis, ich hab es geändert :-)

 

decade-submarginal