FHEM: Stolpersteine auf dem Weg zur funktionsfähigen Konfiguration

IM EINSATZ?

Dann schau dir UNSEREN LOXKURS an und profitiere von unserem Wissen!

Auf dem Weg zu einer funktionierenden Konfiguration gilt es in FHEM einige Stolpersteine zu passieren. Gerade der in Perl geschriebene Programmcode ist fehleranfällig, was die korrekte Syntax betrifft. Auch unsere Leser können davon ein Lied singen, in den letzten Jahren haben sich viele User per Kommentar an uns gewendet und um Hilfe gebeten. Damit das greifbare Ziel einer fehlerfreien fhem.cfg schnell erreicht werden kann, werden deshalb nachfolgend oft gemachte Fehler in diesem stetig wachsenden Blogpost aufgegriffen und Tipps zu deren Vermeidung gegeben.

Falsch formatierte Anführungszeichen: Can’t find string terminator ‚“‚

Gerade bei Copy&Paste von Programm-Code aus dem Internet kommt es schnell einmal zu Formatfehlern. Solche Syntaxfehler führen dann zwangsläufig auch dazu, dass der Programmablauf nicht so funktioniert, wie man das möchte. Deshalb hilft oftmals der Blick in die Logdatei, die wichtige hinweise geben kann, um den Fehler schneller zu finden. So konnte glücklicherweise auch das ursprüngliche Problem von Alex behoben werden.

Fehlerbehafteter Code

define HRWaschmaschineHoherVerbrauchAus notify HR.Waschmaschine_Power:power.* {fhem ("set HR.WaschmaschineHoherVerbrauch off") if (ReadingsVal("HR.Waschmaschine_Power","power","") <= 5 && Value("HR.WaschmaschineBetrieb") eq "on“)}

Logfile-Auszug
2014.11.25 22:36:31 3 HRWaschmaschineHoherVerbrauchAn return value: Can’t find string terminator ‚“‚ anywhere before EOF at (eval 339) line 1.

Lösung
Das letzte Anführungszeichen bei „on“ ist falsch formatiert, so dass es FHEM nicht korrekt interpretieren kann. Einfach ändern in „on“ und schon sollte der Fehler behoben sein.

Korrigierter Code

define HRWaschmaschineHoherVerbrauchAus notify HR.Waschmaschine_Power:power.* {fhem ("set HR.WaschmaschineHoherVerbrauch off") if (ReadingsVal("HR.Waschmaschine_Power","power","") <= 5 && Value("HR.WaschmaschineBetrieb") eq "on")}

Tipp
Bei Fehlern am besten als Erstes die Anführungszeichen kontrollieren, hier kann es schnell zu falschen Formatierung kommen, gerade wenn ein Codeschnipsel von einer Internetseite kopiert wurde. Ich nutze dazu immer den Texteditor TextEdit unter OSX, hier fallen solche Fehler relativ schnell ins Auge.

FHEM-Benutzername und Passwort generieren schlägt fehl: Unknown command echo, try help.

Wie im Artikel FHEM-Server auf dem Raspberry Pi in einer Stunde einrichten erklärt, lässt sich über den Terminalbefehl „echo -n Benutzername:Passwort | base64“ (ohne Anführungszeichen) eine Benutzername-Passwort-Kombination erstellen, die für den Login auf die FHEM-Oberfläche genutzt werden kann. Dabei laufen Anwender wie Michael oftmals in Zwickmühle, wenn obiger Code in die FHEM-Konsolenzeile auf der FHEM-Oberfläche eingegeben wird. Damit es zu keiner Fehlermeldung kommt und der Code akzeptiert wird, muss dieser in das ssh-Terminal eingegeben werden.

Termin-Login schlägt fehl: Permission denied, please try again. Access denied

Beim ssh-Login per Konsole kommt es schon mal zu Schwierigkeiten, wie auch bereis Klaus oder Frank merken mussten.

Mögliche Fehlerquellen
Beim Login gibt es gleich einige Stolperfallen:

  • Benutzername: Hier ist besonders auf die korrekte Groß- und Kleinschreibung des Benutzernamens zu achten. Wer einen Raspberry Pi mit wheezy einsetzt, muss sich etwa mit dem User „pi“ einloggen und dabei besonders auf die Kleinschreibung achten. Korrekt sieht es dann z.B. so aus: ssh pi@192.168.178.10
  • Passwort: Gerade Passwörter mit bestimmten Buchstaben und Sonderzeichen sind etwas problematisch. Das liegt daran, dass bspw. bei einem englischen Keyboard im Vergleich zu einer deutschen Tastatur alleine schon die Tasten y und z vertauscht sind. Das kann dann schnell zu Frustration führen, wenn bei einer falschen Tastatureinstellung das vermeintlich korrekt eingegebene Passwort nicht akzeptiert wird.
  • IP-Adresse: Auch die Adresse, auf die man sich verbinden möchte, kann zu Problemen führen. Gerade wenn die IP per DHCP vom Router selbstständig vergeben wurde, kann sich diese u.U. auch einmal ändern. Deshalb bei Problemen am besten sofort im Router selbst nachsehen, welche Geräte gerade welche IP-Adressen haben. Bei einer Fritz!Box stehen diese Informationen bspw. unter Heimnetz -> Netzwerk.

Änderungen in FHEM permanent speichern

FHEM Save configWer seine FHEM-Konfiguration über das Webinterface anpasst und bspw. für bestehende Devices neue Attribute vergibt, wird – wie Sven – evtl. schon einmal über das Problem gestolpert sein. Wird FHEM neugestartet, kann es vorkommen, dass die getätigten Änderungen nicht gespeichert wurden. Damit eine permanente Speicherung der Änderungen, sollte man sich angewöhnen, nach getätigten Anpassungen links oben im Interface „Save config“ anzuklicken, dann werden alle Änderungen auch dauerhaft gespeichert.

Bearbeitungsmodus für fhem.cfg aktivieren

Sofern die fhem.cfg nach einer Neuinstallation nicht sofort bearbeitet werden kann und die Meldung „You can enable saving this file by setting the editConfig attribute, but read the documentation first for the side effects.“ ausgegeben wird, muss der Bearbeitungsmodus wieder aktiviert werden. Um das zu tun, gibt man in die obige FHEM Kommandozeile

attr WEB editConfig 1

ein und bestätigt das Ganze mit der Enter-Taste. Im Anschluss noch links oben auf „Save config“ klicken und die Bearbeitung kann losgehen.

Aus meinem täglichen Leben

Selbstgestrickte Fehler in der eigenen fhem.cfg sind manchmal unvermeidbar. Hastig per Copy&Paste zusammengestellt, kennt man gerade am Anfang noch nicht einmal die korrekte Syntax und muss sich so oftmals von Fehler zu Fehler hangeln, durch das FHEM-Logfile kämpfen und mühsam dazulernen, um zum Ziel zu kommen. Aber auch daneben hält das Betriebssystem, auf welchem FHEM betrieben wird, einige Stolpersteine bereit, denen man sich bewusst sein sollte. Als Hilfestellung bzw. Anlaufstelle ist deshalb dieser stetig wachsende Blogpost gedacht, der oft gemachte und reproduzierbare Fehler sowie deren Fehlerbehebung strukturiert aufbereitet.

5 Kommentare
  1. Hallo,

    ich benutze FHEM seit ein paar Wochen, es lief auch alles gut, bis ich versehentlich den Inhalt fhem.cfg gelöscht habe und dann auch noch gespeichert habe. Zum Glück hatte ich ein paar Tage zuvor ein Backup erstellt indem ich die fhem.cfg kopiert habe. Also habe ich die kaputte fhem.cfg durch das Backup ersetzt, es funktioniert auch alles bis auf den Punkt, wenn ich die fhem.cfg speichern möchte steht da immer „Permission denied“.

    Was soll ich tun ?

    MFG
    Philipp

    1. Hi Philipp,
      ich würde mich an deiner Stelle per Terminal auf dem FHEM-Server einloggen und (quick and dirty) die Zugriffsrechte der fhem.cfg anpassen:

      sudo chmod 777 /opt/fhem/fhem.cfg

      Vermutlich gibt es auch eine geschicktere Möglichkeit, aber das sollte zumindest mal funktionieren.

      Grüße
      Jörg

    2. Hi,
      erstmal danke für die schnelle Antwort, jetzt klappt alles wieder, danke !

      MFG
      Philipp

  2. Ich versuche schon seit Tagen das Problem zu lösen, Ich hoffe dass sie mir vieeleicht hefen könnten. Sie sind meine letzte Hoffnung.

    Das Problem:
    Ich will eine Datei in fhem einbringen um sie zu bearbeten.

    define Leistung at +*00:01:00 { fhem ’set Leistung‘ my $fileName = ;
    my ($err, @content) = FileRead (FileName => FileName , ForceType => „Zahl.txt“)};;

    Aber immer kommt diese Fehlermeldung:
    2017.01.13 01:37:12 3: leistung: Unknown command {, try help.
    Unknown command my, try help.

    Ich habe nichts im Internet gefunden.

    MfG
    Klaus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte dir auch gefallen