Ich habe ab und an komische Probleme mit meinem FHEM. Nach einem reboot meines RPI startet das Ding nicht selber - auch nicht, wenn ich manuell per Terminal oder Putty starte. Nur ein Strom weg und wieder dran hilft.
Dann bekomme ich komische Fehlermeldungen, wie diese in der Weboberfläche:
Error messages while initializing FHEM:
configfile: Can't open /dev/ttyUSB0: Datei oder Verzeichnis nicht gefunden
Please define Viessmann first
Can't open ./log/eg_az_Jalousie-2014.log: Keine Berechtigung
Please define FileLog_eg_az_Jalousie first
Please define FileLog_eg_az_Jalousie first
Can't open ./log/eg_az_Deckenlicht_rechts-2014.log: Keine Berechtigung
Please define FileLog_eg_az_Deckenlicht_rechts first
Please define FileLog_eg_az_Deckenlicht_rechts first
Can't open ./log/eg_az_Deckenlicht_links-2014.log: Keine Berechtigung
Please define FileLog_eg_az_Deckenlicht_links first
Please define FileLog_eg_az_Deckenlicht_links first
Can't open ./log/eg_az_Schreibtischlampe-2014.log: Keine Berechtigung
Please define FileLog_eg_az_Schreibtischlampe first
Please define FileLog_eg_az_Schreibtischlampe first
Can't open ./log/eg_ez_fernbedienung-2014.log: Keine Berechtigung
Please define FileLog_eg_ez_fernbedienung first
Please define FileLog_eg_ez_fernbedienung first
Can't open ./log/eg_fl_Bewegungsmelder-2014.log: Keine Berechtigung
Please define FileLog_eg_fl_Bewegungsmelder first
Please define FileLog_eg_fl_Bewegungsmelder first
Can't open ./log/og_fl_Bewegungsmelder-2014.log: Keine Berechtigung
Please define FileLog_og_fl_Bewegungsmelder first
Please define FileLog_og_fl_Bewegungsmelder first
Can't open ./log/au_bewaesserung-2014.log: Keine Berechtigung
Please define FileLog_au_bewaesserung first
Please define FileLog_au_bewaesserung first
statefile: Please define FileLog_au_bewaesserung first
Please define FileLog_eg_az_Deckenlicht_links first
Please define FileLog_eg_az_Deckenlicht_rechts first
Please define FileLog_eg_az_Jalousie first
Please define FileLog_eg_az_Schreibtischlampe first
Please define FileLog_eg_ez_fernbedienung first
Please define FileLog_eg_fl_Bewegungsmelder first
Please define FileLog_og_fl_Bewegungsmelder first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Please define Viessmann first
Was mich wundert: Die Devices, für die keine Berechtigungen da sind, habe ich kürzlich erst angelegt (allerdings per autocreate).
Viessmann (meine Heizung) läuft soweit in FHEM. Trotzdem soll ich diese erst noch anlegen.
Was kann da falsch laufen?
Lief fhem damals unter einem anderen user?
Prüfe mal die Dateiberechtigungen und passe sie ggf. an.
In die denke ich auch gerade.
Hintergrund. Ich habe von einem User hier mal ein Imgae für den RPI bekommen (da er dort seine Viessmann-Heizung erfolgreich eingebunden hatte).
Wenn ich mich richtig erinnere, hat er mit dem User pi gearbeitet, den ich nun auch nutze.
Jetzt fliege ich wieder mit meinen mangelhaften Linux-Kenntnissen auf. Wie prüfe ich, die Berechtigungen?
anmelden, ins Log-Verzeichnis wechseln:
cd /opt/fhem/log/
Dateien auflisten:
ls -l
Es sollen alle Dateien beschreibbar sein. Am einfachsten für alle Benutzer, also soll überall "rw-rw-rw" stehen:
...
-rw-rw-rw- 1 fhem root 1045745 Jun 8 20:33 OG_DZ_TT01-2014-06.log
-rw-rw-rw- 1 fhem root 19923 Mär 26 20:51 OG_DZ_TT01-2014.log
-rw-rw-rw- 1 fhem root 1484181 Jun 8 20:33 OG_DZ_TT01_Clima-2014-06.log
-rw-rw-rw- 1 fhem root 61141 Apr 6 18:44 OG_FL_RC01.Rolladen-2014.log
-rw-rw-rw- 1 fhem root 1896 Feb 28 11:18 OG_FL_WT01.Alle_Rolladen-2014.log
-rw-rw-rw- 1 fhem root 1038564 Jun 8 20:34 OG_SZ_TT01-2014-06.log
-rw-rw-rw- 1 fhem root 24988 Mär 25 23:48 OG_SZ_TT01-2014.log
-rw-rw-rw- 1 fhem root 1474536 Jun 8 20:34 OG_SZ_TT01_Clima-2014-06.log
...
mit
sudo chmod a+rw *.log
(in dem Log-Verzeichnis aufgeführt) machst Du alle Log-Dateien für alle beschreibbar.
mit chown könntest Du ggf. auch die Besitzrechte korrigieren, aber es wird erstmal auch mit "für alle beschreibbar" tun.
Aber tue Dir unbedingt ein wenig Linux an, ganz ohne ist man beim kleinsten Problem aufgeschmissen.
Danke Dir!
Ja ich bin immer mal wieder phasenweise an meinem FHEM beschäftigt. Dann google ich mich wieder in ein wenig Linux rein. Leider scheine ich ein Sieb als Einsatz im Oberstübchen zu haben. Aber es bleibt immer wieder etwas mehr hängen...
Was mich halt wundert, warum autocreate etwas anlegt und ich das nicht beschreiben darf. Welchen User benutzt autocreate/ FHEM?
Hallo,
dafür hab ich mir das neben die Tastatur gelegt ;D
http://helmbold.de/artikel/linux-blatt (http://helmbold.de/artikel/linux-blatt)
Grüße
Cool! Danke Dir!
ZitatWelchen User benutzt autocreate/ FHEM?
FHEM benutzt für alles einen und derselben User. Bei mir heißt er "fhem".
Deinen siehst Du in der Datei-Listing.
Dann hat dieser User vermutlich nicht die richtigen Berechtigungen, bzw. ist einer falschen Gruppe zugeordnet.
pi@raspberrypi /opt/fhem/log $ groups fhem
fhem : dialout tty
pi@raspberrypi /opt/fhem/log $ groups pi
pi : pi adm tty dialout cdrom sudo audio video plugdev games users netdev input indiecity
Anscheinend sollte ich dem User fhem noch Gruppenzugehörigkeiten geben. Die Frage ist, welche Gruppe hier für die fhem-Berechtigungen entscheidend ist.
ZitatDie Frage ist, welche Gruppe hier für die fhem-Berechtigungen entscheidend ist.
Für die (Log-)Dateizugriffe ist das ohne Bedeutung. Hier sind die Dateirechte entscheidend.
Ich denke, Dein Problem sollte sich nach einer einmaligen Rechtekorrektur dauerhaft erledigen.
anscheinend nicht. Ich hatte nun schon das 3. Mal Probleme. Vorher hatte ich das immer einzeln korrigiert.
(Die fehlenden Rechte waren besonders beim fhem-update immer ein Problem.)
hm... welcher Benutzer war denn als Besitzer der Dateien eingestellt?
ahh: da ist als User fhem eingetragen mit Gruppe dialout
Die restlichen Dateien haben pi mit Gruppe pi
Jetzt ist die Frage, wie ich vorgehe um solche Probleme zukünftig zu vermeiden.
Hallo,
ZitatJetzt ist die Frage, wie ich vorgehe um solche Probleme zukünftig zu vermeiden.
Keine Images von anderen 1:1 ungeprüft verwenden würde ich mal sagen ;)
Wenn FHEM bei dir als user fhem läuft sollte es jetzt reichen den user fhem zu den passenden Gruppen hinzuzufügen.
Grüße
fhem:dialout ist ok.
Welche Dateien gehören an pi:pi? Alles unter /opt/fhem/... soll dem fehm-User angehören.
Wenn dem nicht so ist, wäre spannend zu wissen, was/wer die Dateien angetatscht hat. Die ändern ja den Besitz nich von alleine.
So:
pi@raspberrypi /opt/fhem $ ls -l
insgesamt 388
-rwxrwxrwx 1 fhem root 6081 Apr 6 22:46 99_VCONTROL.cfg
drwxrwxrwx 2 fhem dialout 4096 Jun 1 13:45 backup
-rwxrwxrwx 1 fhem dialout 71317 Jun 1 13:56 CHANGED
-rw-rw-rw- 1 fhem dialout 28815 Jun 1 13:56 configDB.pm
drwxrwxrwx 25 fhem root 12288 Apr 30 2013 contrib
drwxrwxrwx 4 fhem root 4096 Mai 12 19:37 docs
drwxrwxrwx 4 fhem root 20480 Jun 1 13:56 FHEM
-rwxrwxrwx 1 fhem root 76425 Jun 8 22:03 fhem.cfg
-rwxrwxrwx 1 fhem root 100298 Jun 1 13:56 fhem.pl
drwxrwxrwx 2 fhem root 4096 Aug 21 2013 firmware
drwxrwxrwx 2 fhem root 12288 Jun 8 11:36 log
-rw-r--r-- 1 pi pi 30293 Jun 8 18:11 myRegConfig.cfg
drwxrwxrwx 3 fhem root 4096 M?r 5 20:46 raspberrypi_cp210x_driver
drwxrwxrwx 2 fhem dialout 4096 Jun 6 2013 unused
drwxrwxrwx 9 fhem root 4096 Mai 12 19:37 www
Komisch dabei: Habe gestern über das Modul hm die COnfig gespeichert (Weboberfläche von fhem; myRegConfig.cfg). Sollte diese Datei nicht auch vom User fhem sein?
In anderen Ordnern ist es auch gemischt zwischen pi und fhem (dialout oder root).
Wer das war? Im Zweifelsfall war ich das. Aber wodurch ist mir gerade nicht klar. Wie gesagt, habe ich mal Berechtigungen angepasst, da ich sonst nicht hätte updaten können.
Kann es sein, dass du fhem auch mal per Hand gestartet hast? Dann liefe es unter dem pi User, was die Sache erklären würde. Denn wenn es dann wieder automatisch gestartet wird, Kann es dir Dateien nicht mehr lesen.
Ich würde Starscript so anpassen, dass fhem immer mit seinem eigenen User gestartet wird.
Eigentlich sollte FHEM auch alleine starten. Manchmal tut es das nicht. Ich muss dann USB-Devices (über USB-Hub mit eigenem Netzteil versorgt) abklemmen.
Also: Ja: manchmal muss ich selber über Console selbst starten (ist auch doof, da meine Frau das beim Ausfall nicht hinbekommt).
Wo finde ich dieses Startscript?
Wenn FHEM nicht von alleine startet, sollte man nach den Ursachen suchen. So ist das kein guter Zustand.
Wie startest Du den FHEM? Über /etc/init.d/fhem? Dann ist das dein Startscript.
Du kannst vor dem perl fhem.pl fhem.cfg noch die Anweisung zum User-Wechsel hinzufügen: sudo -u fhem
Mir ist die Verfügbarkeit wichtig, daher überwache ich die laufende FHEM-Instanz und starte sie bei Bedarf neu. Das Vorgehen habe ich hier beschrieben: http://s6z.de/cms/index.php/homeautomation/fhem/23-fhem-watchdog
Das macht aber natürlich nur Sinn, wenn FHEM sicher alleine anläuft.
Grundsätzlich hilft bei sowas das gute Deutsch-Form
ubuntuusers.de (http://ubuntuusers.de)
Für die Rechte könntest du auch folgendes ausprobieren:
sudo chown -cR fhem /opt/fhem
siehe http://wiki.ubuntuusers.de/chown (http://wiki.ubuntuusers.de/chown)
allerdings nur, wenn wirklich alle Dateien dem Benutzer fhem, oder welcher Benutzer auch immer fhem starten soll,legst.
Das mit dem automatischen starten... tja damit hatte ich auch schon einige Probleme. Sorg erstmal dafür, dass alles sicher läuft und dann kannst ein Startskript schreiben.
Was, gerade bei so 24/7 Sachen ganz gut ist, ist das man regelmäßig neustartet. Ich starte meinen Server(auch auf einem Raspberry + externe Festplatte) z.B. per Cronjob einmal am Tag(mitten in der Nacht) neu(inklusive updates etc.)
Hallo,
und das tägliche Zwangs-neustarten des Servers soll welchen Vorteil haben?
Grüße
Grad beim Raspberry Pi, kommt natürlich drauf an ob man übertaktet hat oder nicht, habe ich die Erfahrung gemacht, dass es hilft. Es beseitigt evtl. vorkommende Leichen(welcher Art auch immer). Insbesondere bei den Modellen aus China hab ich mir durch tägliches neustarten schon einiges gespart.
Es stimmt natürlich, dass dies nicht helfen muss, aber es kann helfen, ich habe auch einen RP in Betrieb gehabt, der über ein Jahr ohne Probleme gelaufen ist ;)
Ich sehe auch nichts Gutes in täglichen Neustarts. Das ist der letzte Notnagel. Schon besser mit Watchdogs zu arbeiten und so nur bei tatsächlichen Bedarf etwas (re)starten.
Wenn das Problem in der Hardware liegt, dann gehört diese ausgetauscht, die Softwarefehler müssen (soweit möglich) beseitigt werden.
So, das steht in meinem Startskript:
#!/bin/sh
# description: start or stop the fhem server
# 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
case "$1" in
'start')
Ist das erstmal korrekt?
Ich denke, da fehlt einiges, hier mein Script:
#!/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
cd /opt/fhem
port=7072
case "$1" in
'start')
echo "Starting fhem..."
perl fhem.pl fhem.cfg
RETVAL=$?
;;
'stop')
echo "Stopping fhem..."
perl fhem.pl $port "shutdown"
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
VG
Frank
Danke Frank! Ich hätte mal Scollen sollen... Alles drin.
zusätzlich steht bei mir noch:
echo "Enabling I2C on P5 ..."
sudo hipi-i2c e 0 1
sudo chown fhem:root /dev/i2c-0
Kann das die Probleme verursachen?