Es sind immer die Kleinigkeiten über die ich stolpere:
Beim Betrieb des SCC Modules muss das gpio 17 richtig gesetzt sein.
if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi
echo out > /sys/class/gpio/gpio17/direction
echo 1 > /sys/class/gpio/gpio17/value
Bei jedem reboot des Raspberry muss ich das jeweils neu eingeben und danach FHEM neu starten.
Soweit ich verstanden habe ist das Startscript /etc/init.d/fhem. Ich habe die Zeilen dort eingetragen, allerdings der Erfolg hält sich in Grenzen.
Wieder einmal mehr, was mache ich falsch?
Hi,
an welche Stelle hast du die Zeilen reingeschrieben?
Die erste Zeile könnte man auch auf "echo 17 > /sys/class/gpio/export" reduzieren, denke ich.
:)
linuxpaul
Das fhem war im init.d nicht vorhanden, darum habe ich es erstellt:
#!/bin/sh
if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi
echo out > /sys/class/gpio/gpio17/direction
echo 1 > /sys/class/gpio/gpio17/value
Es funktioniert und wird im rc0.d - rc5.d aufgeführt.
Der Effekt ist immer noch gleich.
Die verkürzte Version der ersten Zeile erzeugt die Fehlermeldung sh: echo: I/O error
ich meinte wo in dem script die Zeilen eingebaut sind.
Gut dann eben kürzer, dass funktioniert bei mir: (/etc/init.d/fhem)
### 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
if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi
echo out > /sys/class/gpio/gpio17/direction
echo 1 > /sys/class/gpio/gpio17/value
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
man könnte das auch in den start Bereich packen und mit
echo 17 > /sys/class/gpio/unexport
im stop Bereich wieder löschen.
:)
linuxpaul
Hallo Paul
Meine verspätete Antwort tut mit leid.
Vielen Dank für das Script. In einem ersten Versuch hat es nicht funktioniert.
Allerdings habe ich noch eine andere Baustelle und kann erst später auf das Boot-Problem eingehen.
Gruss aus der Schweiz
Christoph
Hi,
kontrollieren kann man das auch in einerm Terminal mit
cat /sys/class/gpio/gpio17/value
Der Rückgabewert sollte 1 sein. (Ergebis von echo 1 ....).
Ist dort die 1 und es funktioniert trotzdem nicht, ist der Fehler nicht im Script, denke ich.
:)
linuxpaul
Hallo Paul
Ich kann das Problem jetzt eingrenzen:
Fhem wird nicht über das /etc/init.d/fhem hochgefahren, sondern das muss vorher passieren.
Lösche ich das File und mache einen Reboot, dann startet fhem trotzdem auf.
Gibt es in Linux so eine Art autostartdatei? Keine Ahnung wo ich suchen soll.
Gruss
Christophe
Hi Christophe,
versuche mal
grep -r fhem /etc/*
Ausgabe ist eine Liste mit Treffern auf den String "fhem" von allen Dateien unterhalb von /etc
evtl sieht man ja wo sich der Start vertsteckt
:)
linuxpaul
Das Ergebnis (ohne fhem im init.d)
Binary file /etc/apt/trusted.gpg matches
/etc/group:root:x:0:fhem,pi
/etc/group:tty:x:5:fhem,pi
/etc/group:gpio:x:997:pi,fhem
/etc/group-:tty:x:5:fhem,pi
/etc/group-:gpio:x:997:pi,fhem
/etc/gshadow:tty:*::fhem,pi
/etc/gshadow:gpio:!::pi,fhem
/etc/gshadow-:tty:*::fhem,pi
/etc/gshadow-:gpio:!::pi,fhem
/etc/passwd:fhem:x:999:20::/opt/fhem:/bin/false
/etc/passwd-:fhem:x:999:20::/opt/fhem:/bin/false
/etc/shadow:fhem:$6$t5Pl46LX$fk3oLMMUpqC2/D4ECpv2WbBwH.yKW1ptnW2mrnBE2eFRH7qawJQO3oI0lfpbuTQnejgbmqpUTAhThv26E9QJB0:17799::::::
/etc/shadow-:fhem:!:17785::::::
/etc/systemd/system/fhem.service:# $Id: fhem.service 16001 2018-01-26 11:54:41Z betateilchen $
/etc/systemd/system/fhem.service:User=fhem
/etc/systemd/system/fhem.service:WorkingDirectory=/opt/fhem
/etc/systemd/system/fhem.service:ExecStart=/usr/bin/perl fhem.pl fhem.cfg
/etc/systemd/system/fhem.service:#ExecStart=/usr/bin/perl fhem.pl configDB
Christoph
Dank dem Hinweis mit dem grep konnte ich das Problem lösen:
Der Inhalt der /etc/systemd/system/fhem.service Datei sah folgendermassen aus:
# $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
Das bedeutet, dass /etc/init.d/fhem gar nicht zum Zug kommt.
Nach etwas probieren und recherchieren habe ich folgende Lösung gefunden:
In der Datei /etc/rc.local
/etc/init.d/fhem start
ergänzt und nun funktioniert es.
Vielen Dank für die Hinweise, die mir geholfen haben etwas mehr über das Startup beim Raspberry zu lernen.
Gruss
Christophe
Hallo Christophe,
ganz sauber ist das evtl. nicht.
Unter Linux gibt es inzwischen mehrere Varianten einen Service zu starten.
Die "alte" Variante ist init und die neue über den systemd.
fhem startet bei dir warscheinlich über letzteres
/etc/systemd/system/fhem.service:# $Id: fhem.service 16001 2018-01-26 11:54:41Z betateilchen $
/etc/systemd/system/fhem.service:User=fhem
daher der Konflikt mit dem Script in init.d.
ggf solltest du den service im systemd deaktivieren und über init arbeiten.
systemctl disable fhem
Kleine Doku dazu:
https://medium.com/@johannes_gehrs/getting-started-with-systemd-on-debian-jessie-e024758ca63d (https://medium.com/@johannes_gehrs/getting-started-with-systemd-on-debian-jessie-e024758ca63d)
:)
linuxpaul