zurück zur Startseite

zurück zur Übersicht der Heimautomatisierung

7. Die kleinen Hilfen (Stand 07.11.2018)

Ab und zu und sucht nach einer Lösung für ein eher kleines Problemchen. So hilfreich die Suchfunktionen sind, manchmal dauert es, bis man mehr oder weniger zufällig die benötigte Funktion findet. Im folgenden eine kleine Sammlung, die peu à peu am Entstehen ist.


FHEM wird immer automatisch gestartet, wenn der Raspberry bootet. Falls man ausnahmsweise mal auf Betriebssystemebene arbeiten muss und FHEM dabei nicht laufen darf, dann kann man FHEM wie folgt stoppen und später wieder starten. Bis Version 5.8 ging das wie folgt:

sudo /etc/init.d/fhem start
sudo /etc/init.d/fhem stop

Ab Version 5.9 (und dem neuesten Raspbian!) geht das nun so:

sudo systemctl start fhem
sudo systemctl stop fhem


So nützlich die Logfiles sind - sie werden immer größer. Schön, dass in FHEM die Logfiles jahresweise oder sogar monatsweise definiert werden können. Dafür sind es dann viele Dateien. Nur wie wird man die wieder los? Eine Lösung ist das FHEM-Kommando

{unlink ("./log/<filename.log>")}


In FHEM kann man mehrere Kommandos mit Semikolon aneinander hängen. Die Abarbeitung erfolgt dan in der programmierten Reihenfolge – so schnell wie der Prozessor das kann. Wenn man ein bestimmtes Kommando aber erst definierte Zeit nach einem anderen ausführen möchte, so hilft das Schlafkommando:

<Kommando 1>; sleep 300; <Kommando 2>

Zwischen den beiden Kommandos wartet FHEM nun 300 Sekunden. Achtung: Nie ein sleep-Kommando einzeln absetzen und auf keinen Fall den sleep-Befehl von perl verwenden. In beiden Fällen ist dann nämlich der Raspberry für diese Zeit völlig inaktiv.


FHEM kann auch Linux-Kommandos absetzen:

{system("ls -l /opt/fhem >> /tmp/liste.txt")}

schreibt in die Datei liste.txt, was im Verzeichnis /opt/fhem vorhanden ist.


Ab und an lohnt es sich auch mal das Linuxsystem zu aktualisieren:

sudo apt-get update && sudo apt-get upgrade -y && sudo reboot


Viele HomeMatic-Geräte senden regelmäßig ihre Daten, auch wenn sich diese gar nicht ändern. FHEM reagiert aber auf diese Ereignisse. Man kann nun ein Attribut setzen, damit nur noch ein Ereignis ausgelöst wird, wenn sich die Information auch wirklich ändert. Das kann man auch nachträglich elegant für alle Geräte mit einem Befehl erledigen.

attr TYPE=CUL_HM event-on-change-reading .*

Damit wird das Attribut "event-on-change-reading" von alles Geräten, die vom Typ "CUL_HM" (also die HomeMatic-Geräte) auf ".*" gesetzt. Das heißt, es wird für alle Änderungen ein Ereignis ausgelöst, aber eben nur für echte Änderungen.


In FHEM hat man immer wieder mit den "regular expressions" von Perl zu tun. es gibt mehrere Webseiten, wo man diese testen kann, eine davon ist:

regexr.com


Damit man z.B. die 99_myUtils.pm leichter editieren kann, gibt es die Möglichkeit eines entsprechenden Attributs für das Web-Interface.

attr WEB JavaScripts codemirror/fhem_codemirror.js


Die wichtigste Datei aus Sicht des Anwenders von FHEM ist die fhem.cfg. Normalerweise besteht kein Bedarf diese Datei direkt zu editieren - und ich empfehle es ausdrücklich nicht! Will man das in Ausnahmefällen doch mal aus dem Webfrontend tun, so muss man das freischalten:

attr WEB editConfig 1


Man kann die Uhrzeit des Raspberry auch manuell stellen, z.B.:

sudo date -s "Nov 08, 2018 15:26:45"

weiter zu: 8. Der Anfang