Windows - FHEM installieren

Aus FHEMWiki
Version vom 15. November 2015, 20:31 Uhr von ArminLinder (Diskussion | Beiträge) (Anleitung FHEM Download/Installation neu gemacht)

FHEM unter Windows 7/8/8.1 installieren

Hardware bestellen

Zur Steuerung der Komponenten vom Computer aus wird ein serieller Empfänger zum Anschluss an einen USB Port (CUL) oder ein serieller Empfänger mit Netzwerkschnittstelle (CUNO) benötigt. Ich habe diesen wie im Dokument fhem für Einsteiger genannt bei busware.de bestellt und zwar mit den Optionen

  • Abschirmung: ohne
  • Antenne: Draht (gemäß busware-FAQ empfohlen)
  • Gehäuse: Plastik transparent
  • USB-Verlängerung: ohne

Nach wenigen Tagen wurde dieser geliefert. Das „flashen“ erfolgte nach „fhem für Einsteiger“:

  1. FLIP runterladen (Programm zum flashen des ROMs auf dem CUL) von [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3886 http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3886]

Habe die Version FLIP 3.4.3 for Windows (requires Java Runtime Environment) runtergeladen und verwendet

  1. CUL in den Rechner stecken (beim einstecken Mikroschalter gedrückt halten!), dann zum installieren des USB-Treibers: Im Windows Gerätemanager den device ATMEL xxxx anklicken, Eigenschaften, Gerätetreiber aktualisieren, von Festplatte, Verzeichnis c:\Programme\Atmel\Flip 3.4.3\USB auswählen und Treiber installieren lassen.
  2. CUL-Firmware (Hex) für FHEM runterladen von [http://cvs.berlios.de/cgi-bin/viewvc.cgi/culfw/culfw/Devices/CUL/ http://cvs.berlios.de/cgi-bin/viewvc.cgi/culfw/culfw/Devices/CUL/] (Version passend zur CUL-Hardware-Version auswählen, bei mir CUL-Hardware-Version V3.2, also hex V3)
  3. Flip starten, unter ‚select device‘ exakt den Chip auswählen, der als Name des CUL im Geräte-Manager angezeigt wird (je nach Modell, zB ATU822U4), danach in der Flip Symbolleiste auf den 2. Button von links klicken (auch wenn der grau sein sollte – funktioniert trotzdem) und ‚USB‘ auswählen. Sollte hier eine Fehlermeldung auftauchen, hat Schritt 2 nicht geklappt oder es wurde der falsche Chip ausgewählt. Dann mittels Menü Datei das bei Schritt 3 geladene hex-file nach Flip einlesen und mit button unten links auf den CUL flashen
  4. Wenn der CUL nach Abziehen und erneut in den Rechner stecken langsam grün blinkt, hat’s wohl geklappt.

CUL Treiber installieren

Nach dem Anstecken an einen USB Port wird der CUL im Windows Geräte-Manager erst einmal als unbekanntes Gerät (Gerät ohne Treiber) gelistet. Bevor der CUL868 als COM-Port sichtbar wird, muss noch der Windows-Treiber für den CUL868 installiert werden. Dieser muss erst einmal von busware heruntergeladen werden:

http://www.busware.de/tiki-download_file.php?fileId=8

Man speichert die Datei irgendwo hin, rechtsklickt im Windows Geräte-Manager den gelb markierten CUL868 und wählt "Treibersoftware aktualisieren". Im darauffolgenden Dialog wählt man "Auf dem Computer nach Treibersoftware suchen" und zeigt dem Geräte-Manager das Verzeichnis, in dem man die CUL.inf abgelegt hat. Fertig, oder na ja, fast fertig: leider gerät diese Datei neuerdings in die Mühle der Microsoft Treibersignatur-Prüfung, und fällt natürlich durch, weil die inf Datei nicht signiert ist.

Bei Windows 7 führt das nur zu einer empörten Sicherheits-Warnung des Geräte-Managers, die man quittieren kann, und danach ist der Treiber installiert.

Ab Windows 8 wurde die Sicherheits-Schraube enger angezogen, jetzt kann man die Signaturprüfung leider nicht mehr ignorieren. Statt dessen muss man Windows in einem speziellen Modus starten, um unsignierte Treiber nützen zu dürfen. Dazu gibt es x Wege und y Anleitungen, hier der Weg den ich empfehle (aufgezeichnet mit Windows 8.1, Windows 8 sollte nicht viel anders gehen):

- starte eine Eingabezeile (mit administrativen Rechten) und gib den Befehl

shutdown /r /o /f /t 0

ein. Du erhältst ein Menü zur "Problembehandlung", wähle dort "Erweiterte Optionen" und weiters "Starteinstellungen". Auf diesem Bildschirm befindet sich ein Button "Neu Starten", den Du drückst. Der Rechner macht einen Neustart, beim Hochfahren kommst Du automatisch ins Windows Menü "Starteinstellungen" (das man früher mit <F8> aufrufen konnte, was nun aber nicht mehr so geht). Dort wählst Du Punkt 7: "Erzwingen der Treibersignatur deaktiveren". Jetzt startet Windows eine Sitzung mit abgeschalteter Signaturprüfung, und nun kannst Du die CUL.inf wie oben beschrieben über den Geräte-Manager einspielen. Der motzt zwar noch, dass "Der Herausgeber der Treibersoftware nicht überprüft werden konnte", aber man kann die Meldung mit "Diese Treibersoftware trotzdem installieren" übergehen, und danach ist der CUL Treiber aktiviert. Die Einstellung gilt bis zum nächsten Reboot, man muss sie also nicht wieder rücksetzen, das macht der nächste Reboot von selbst.

Eigentlich ist das Ganze eine Farce, weil der Microsoft Treiber "usbser.sys", der den CUL letztendlich ansteuert, bei Windows mit dabei und selbstverständlich signiert ist. Die CUL.inf enthält also gar keinen Treiber, lediglich die Konfigurationsroutine für einen schon bestehenden (signierten) Treiber, aber die CUL.inf selber ist eben nicht signiert. Nach der erfolgreichen Installation wird die .inf nicht mehr benötigt, daher kann die Signaturprüfung ruhig wieder eingeschaltet werden. Wäre dagegen ein spezieller Treiber nötig gewesen (.sys), und wäre dieser auch nicht signiert, müsste man sich etwas einfallen lassen, die Treibersignaturprüfung für alle Zeiten auszuschalten - ein Reboot setzt sie ja wie schon erwähnt wieder aktiv, und der unsignierte Treiber würde nicht mehr geladen. Auch dafür gibt es Tools und Wege, aber wie gesagt, für den Betrieb des CUL ist das nicht notwendig, weil der eigentliche Treiber usbser.sys signiert ist.

Perl installieren

Die folgende Anleitung wurde mit Windows 7 / Windows 2008 Server (64-Bit) erstellt und getestet, andere Windows Versionen funktionieren mit geringfügigen Abweichungen bei den Verzeichnisnamen gleich. "C:\Program Files" heißt eventuell "C:\Programme" (Windows XP), oder "C:\Program Files (x64)" (32-Bit Perl auf 64-Bit Windows), und auch der vorgeschlagene Perl Verzeichnisname variiert je nach Version (Perl / Perl64).

Da FHEM einen Perl Interpreter benötigt, und Windows keinen mitbringt, muss man sich zuerst für einen Perl Interpreter entscheiden. Derzeit sind unter Windows zwei kostenlose Varianten von Perl verbreitet, die beide gleichermaßen für den Betrieb von FHEM geeignet sind: ActivePerl Community Editon ([1]) und Strawberry Perl ([2]).

ACHTUNG! Benutzer von 64-Bit Windows Versionen können sich theoretisch aussuchen, ob sie lieber die 32- oder die 64-Bit Version von ActiveState- oder Strawberry Perl verwenden. In den derzeit aktuellsten Versionen beider Perl Varianten (11/2014) funktioneren die 64-Bit Versionen der Bibliothek zur Ansteuerung serieller Geräte (Win32::SerialPort) nicht zufriedenstellend. Die Installation der 64-Bit Bibliothek bereitet bereits erhebliche Probleme, und als Lohn der Mühe bleibt der COM Port des CUL im Zustand "opened" stecken, laut Perl Konsole weil der Code wegen uninitialisierter Variablen abbricht. Es existiert derzeit meines Wissens keine FHEM kompatible 64-Bit Version von Win32::SerialPort. Ich kann deshalb derzeit für FHEM nur die 32-Bit Version von Perl uneingeschränkt empfehlen, außer man kann sicher ausschließen, dass man jemals serielle Geräte nützen möchte.

ActivePerl installieren

ActiveState bietet Privatleuten seit Jahren eine kostenlose "Community Edition" seines kommerziellen Perl Interpreters an, der für FHEM völlig ausreicht. Im Moment (11/2014) spricht nichts dagegen, diese Version einzusetzen, da einem weder Werbung auf- noch eine Registrierung abgenötigt wird. Gegenüber Strawberry Perl punktet ActiveState Perl mit einer deutlich besseren Installationsroutine, sie lässt sich besser anpassen und hat den lästigen COM1 Bug nicht, mit dem Strawberry Perl Benutzern serieller Empfänger (CUL) erst einmal eine unnötige Installationshürde in den Weg stellt.

Nach dem Download der Community Edition von ActiveState Perl ([3]) (ich empfehle derzeit auch für 64-Bit Systeme die 32-Bit Version zu installieren - Details siehe oben) startet man den Installer...

Activeperl downloadl.png

... und los gehts.

Activeperl welcome.png

Nach dem Quittieren einer EULA kann man, wenn man möchte, ein wenig Platz sparen und das Perl Installationsverzeichnis Windows-like richtig einsortieren. Der aktuelle Installer (Stand 11/2014, V5.16.3) hat allerdings einen seltsamen Bug: wenn man den Installationspfad anpassen möchte muss man das tun, bevor man eventuell auch noch viel Zeit und ein wenig Platz spart, und die Installation der für FHEM unnötigen Perl Dokumentation und der Beispiele abwählt. Sobald man eine diese Optionen ändert wird das Eingabefeld für den Installationspfad aus dem Dialog entfernt. Ändert man erst den Pfad, und danach die Optionen, klappt es.

Activeperl install.png

Wer keinen Wert auf Optimierung legt, kann auch alle Dialoge mit den Standardwerten übernehmen, Perl landet dann allerdings wenig Windows-like im Verzeichnis C:\Perl, und die Installation dauert deutlich länger.

Nach Abschluss der Installation kann man Perl kurz testen, indem man sich die Versionsnummer des Interpreters anzeigen lässt. Wichtig ist, dass man die dazu notwendige Kommandozeile erst nach Abschluss der Perl Installation öffnet, damit die aktuellste PATH Variable verwendet wird. Der Befehl zum Auslesen der Perl Version lautet

perl -v

Activeperl installcheck.png

Als letzten Perl Installationsschritt müssen Anwender, die serielle Empfänger (CUL) verwenden, noch die Perl Bibliothek zur Ansteuerung serieller Geräte (Win32::SerialPort) herunterladen und installieren, sie gehört nicht (mehr) zum Standardlieferumfang von Perl. Der Befehl dazu lautet

ppm install Win32-SerialPort Activeperl installserial.png

... und damit ist die Perl Installation fit gemacht für serielle Empfänger.

Anmerkung: das Alternativprodukt "Strawberry Perl" - siehe nächster Abschnitt - hat einen unangenehmen Installations-Bug der zuschlägt, wenn der Computer keinen seriellen Port COM1 hat. ActiveState Perl hat diesen Bug nicht.

Strawberry Perl installieren

Wem ActiveState Perl zu kommerziell angehaucht erscheint, der kann statt dessen das quelloffene Strawberry Perl verwenden. Der Installationsweg ist geringfügig anders, und im Detail auch etwas hakeliger, aber aus Sicht von FHEM sind nach der Installation beide Versionen gleich gut geeignet. Als Vorteil von Strawberry Perl werten manche, dass Strawberry Perl als Open Source vorliegt und zumindest derzeit keine kommerziellen Ambitionen zeigt.

Nach dem Download von Strawberry Perl ([4]) (ich empfehle derzeit auch für 64-Bit Systeme die 32-Bit Version zu installieren - Details siehe oben) startet man den Installer...

Strawberry download.png

...und los gehts.

Strawberry welcome.png

Nach dem Quittieren einer EULA kann man den Installationspfad verändern, wenn man möchte. Im Unterschied zu ActiveState Perl verweigert Strawberry Perl allerdings die Installation in das Windows Programmverzeichnis ("C:\Program Files" bzw. "C:\Program Files (x86)", weil es im Dateipfad weder Leer- noch Sonderzeichen duldet. Man wird daher wohl am zweitbesten beim Standard "C:\Strawberry" bleiben, obwohl das nicht gerade Windows-like ist.

Strawberry folder.png

Nach Abschluss der Installation kann man Perl kurz testen, indem man sich die Versionsnummer des Interpreters anzeigen lässt. Wichtig ist, dass man die dazu notwendige Kommandozeile erst nach Abschluss der Perl Installation öffnet, damit die aktuellste PATH Variable verwendet wird. Der Befehl zum Auslesen der Perl Version lautet

perl -v

Strawberry versioncheck.png

Als letzten Perl Installationsschritt müssen Anwender, die serielle Empfänger (CUL) verwenden, noch die Bibliothek zur Ansteuerung serieller Geräte (Win32::SerialPort) herunterladen und installieren, sie gehört nicht (mehr) zum Standardlieferumfang von Perl. Der Befehl dazu lautet

perl -MCPAN -e "install Win32::SerialPort"

Strawberry serialinstall.png

Leider hat es der Programmierer des Makefiles etwas zu gut mit der Welt gemeint: am Anfang des Prozesses wird das Funktionieren der Bibliothek getestet, und die Testroutine ist hart auf den seriellen Port COM1 codiert. Computer, die keinen COM1 Port haben, können die serielle Bibliothek nicht automatisch installieren, perl -MCPAN ... bricht bereits nach wenigen Zeilen ab:

Strawberry failcom1.png

Um manuell nachzuhelfen, wartet man das Ende von perl -MCPAN ... ab, und ignoriert alle Fehlermeldungen. Danach wechselt man in das Make-Verzeichnis der seriellen Bibliothek:

cd /D "C:\Strawberry\cpan\build\Win32-SerialPort-0.22-xxxxxx"

wobei der hinterste Teil (...-xxxxxx) des Pfades leider per Zufall generiert wird, und daher bei jeder Installation anders ist - man muss den Verzeichnisnamen auf dem Rechner selber heraussuchen. Im richtigen Verzeichnis angekommen, wirft man die Installation der Bibliothek von Hand an. Dabei muss man einen existierenden COM Port angeben, auf meinem Testsystem machte es sich der CUL laut Windows Geräte-Manager auf COM4 bequem, einen anderen seriellen Port hat die Maschine nicht, also musste der CUL Port als Testport herhalten.

perl makefile.pl TESTPORT=COM4

Strawberry cominstall 1.png

Der Befehl testet das Vorhandensein des angegebenen COM Ports und generiert danach unter anderem die Datei nomake_install.pl, die man für den nächsten (und Gott sei Dank letzten) Schritt benötigt:

perl nomake_install

Strawberry cominstall 3.png

Puh, geschafft. Man könnte nun auch noch den COM Port Test mit "perl nomake_test" anschubsen, aber dieser kommt meinen Tests zufolge mit einem CUL COM Port nicht zurecht und spuckt nur wirre Fehlermeldungen aus. FHEM funktioniert aber auch ohne Test, sobald nomake_install gelaufen ist. Und da der ganze Voodoo nur nötig ist, um eine übereifrige Installationsroutine auszutricksen, braucht man das nie mehr zu widerholen, selbst wenn sich der COM Port des CUL ändert, oder wenn andere serielle Geräte dazu kommen sollten.

FHEM extrahieren und anpassen und manuell starten

Nach dem Download von FHEM als .tar.gz Datei muss diese mittels eines Entpacker-Tools (ich empfehle 7-Zip) in zwei Schritten extrahiert werden: der erste Schritt extrahiert aus der .tar.gz Datei die darin enthaltene .tar Datei, und wenn man diese wiederum entpackt erhält man das eigentliche FHEM Verzeichnis. Wo genau man nun das FHEM Verzeichnis letztendlich hin speichert ist eine Geschmacksfrage, ich weise lediglich darauf hin, dass FHEM Schreibrechte in seine Verzeichnisse benötigt, sonst kann man weder Konfigurationen speichern noch Daten aufzeichnen. Für die einfachste Konfiguration, nämlich FHEM mit dem Benutzer-Account zu betreiben, mit dem man das Programm heruntergeladen und installiert hat, bietet es sich an, FHEM in irgendein Unterverzeichnis des Ordners "Dokumente" des Benutzers zu speichern, da der Benutzer auf Grund der voreingestellten Rechtevererbung auf diesen Ordner und alle Unterordner automatisch Vollzugriff erhält. Wählt man einen anderen Ordner (z.B. c:\Programme\FHEM-5.x) und/oder einen anderen Benutzer-Account (z.B. um FHEM später im Hintergrund als Systemdienst laufen zu lassen) muss man die Ordnerberechtigungen entsprechend anpassen.

Danach kann der FHEM-Server gestartet werden mittels

  • CMD (Befehlszeile) aufrufen
  • Mit CD ins Verzeichnis wechseln, in welches man FHEM kopiert hat
  • Den Befehl perl fhem.pl fhem.cfg eingeben

oder man erstellt sich noch schnell eine Stapeldatei, ich nenne sie "StartFHEM.bat", die man im FHEM Verzeichnis (da wo sich auch fhem.pl und fhem.cfg befinden) speichert, dann kann man FHEM über einen Doppelklick von der Windows GUI aus starten:

set FHEMDir=%~dp0
set FHEMDir=%FHEMDir:"=%
cd /d "%FHEMDir%"
start perl fhem.pl fhem.cfg

Ein Doppelklick auf die Datei startet nun den PERL Interpreter mit allen notwendigen Parametern, und ein Fenster mit einer (leeren) FHEM Konsole erscheint. Schließt man das Fenster, beendet man auch FHEM.

Wenn FHEM Läuft, kann man FHEM im Browser unter http://localhost:8083/fhem aufrufen. Ohne weitere Konfiguration erscheint erst einmal die leere FHEM Hauptseite mit einigen allgemeinen Links und Hinweistexten. Jetzt können geräte angelernt und es kann mit dem System gearbeitet werden. Nähere Infos hierzu sind dem bereits mehrfach erwähnten Dokument „fhem für Einsteiger“ zu entnehmen.

Windows Firewall für FHEM konfigurieren

Wer Windows mit eingeschalteter Windows Firewall betreibt (was empfohlen wird) muss den FHEM Port von außen zugänglich machen. Der Mechnismus ist verwandt mit der Portfreigabe, die man auf Routern eintragen muss, wenn man FHEM aus dem Internet heraus ansprechen möchte. Für eine Benützung im LAN genügt es, die Windows Firewall gegenüber anderen LAN Geräten zu öffnen, will man vom Internet aus zugreifen ist zusätzlich(!) auch noch eine Portfreigabe mit NAT im Router einzutragen. Windows fordert den Benutzer beim ersten Start einer Software, die Netzwerkdienste nach außen bereitstellen möchte, automatisch auf, die Portfreigabe zu bestätigen.
Windows firewall auto.png
Windows fragt nur ein Mal - lehnt man das ab, hat man die Chance vertan und muss die Windows Firewall von Hand konfigurieren. Daher macht es Sinn, FHEM mindestens einmal von Hand zu starten, bevor man es als Dienst laufen lässt.
Hinweis: der Windows Firewallregelassistent ist recht freigiebig und gibt, wenn man den Zugriff zulässt, alle Ports für perl.exe frei. Andert man die FHEM Ports nachträglich, muss man die Firewall-Ports deshalb nicht nachpflegen
Selbstverstndlich kann man die FHEM Portfreigabe auch direkt in die Windows Firewall einpflegen, oder die Eingtragung kontrollieren oder ändern wenn nötig. Da FHEM als interpretierter Code innerhalb des PERL Interpreters läuft, muss bei der Portfreigabe perl.exe als berechtigtes Programm angegeben werden.
Man gelangt zur Windows Firewall Konfiguration über "Start" - "Systemsteuerung" - "System und Sicherheit" - "Windows-Firewall" - "Erweiterte Einstellungen" - "Eingehende Regeln". Der Screenshot zeigt die Standardregeln, die der Windows Assistent automatisch erzeugt, wenn man ihm FHEM (bzw. PERL) beim Erststart von FHEM den Zugriff erlaubt.
Windows Firewall Advanced.png
Eine ausführliche Behandlung der Windows Firewall würde den Rahmen dieses Artikels sprengen, es gibt aber unzähliche Internetquellen dazu. Besonders aufmerksam sollte man die Querverbindungen in die Windows Standorterkennung beachten, diese orientiert sich an der MAC Adresse des Standardgateways. Gibt man FHEM nicht für alle Profile, incl. "öffentlich" frei, kann ein Hardwarewechsel des Internetrouters FHEM - wie viele andere Windows Programme auch - erst einmal lahmlegen.
Wenn man Zugriffsprobleme auf die FHEM Oberfläche hat, obwohl FHEM augenscheinlich läuft, liegt es nahe, die Windows Firewall als Ursache zu vermuten. Man kann die Firewall dann tesweiset über die Systemsteuerung kurz abschalten um zu testen ob es daran liegt. Der Weg dahin ist: "Start" - "Systemsteuerung" - "System und Sicherheit" - "Windows-Firewall" - "Windows Firewall ein- oder ausschalten".
Windows Firewall Off.png
Ein Dauerbetrieb mit abgeschalteter Firewall ist aus Sicherheitsgründen nicht zu empfehlen.

Rechner im Dauerbetrieb halten - Energiesparplan anpassen

Windows kann mit seinen zahllosen voreingestellten Segnungen ab und zu ein ziemlicher Spielverderber sein. Normale Windows Clients werden von Microsoft so eingestellt, dass sie automatisch in den Standby Modus gehen, wenn eine Weile lang keine Tastatur- oder Mauseingaben erfolgen. Für Dauerbetrieb muss man daher den aktuell eingestellten Energiesparplan ändern und ihn so einstellen, dass der Rechner nicht in den Energiespar-Modus wechselt.
Wer es sich einfach machen möchte, wählt einfach den Energiesparplan "Höchste Leistung", aber das ist irgendwie Overkill für FHEM, weil dann auch viele Energiesparmaßnahmen, die FHEM nicht stören, aber der Stromrechung zugute kommen, mit abgeschaltet werden. Es bietet sich an, den Energieoption "Energiesparmodus" als Ausgangsbasis zu nehmen, und dort die Einstellung "Energiesparmodus nach:" auf "Niemals" zu setzen.
Windows Powersave Config.png
Zu den Energieeinstellungen gelangt man über "Start" - "Systemsteuerung" - "System und Sicherheit" - "Energieoptionen".

Rechner automatisch starten

Wenn man den FHEM Rechner eingeschaltet hat, schaltet man ihn normalerweise nicht mehr aus. Ein Stromausfall könnte den Rechner aber lahmlegen, sofern er danach nicht von selbst wieder startet. Diese unterste Ebene des Autostarts ist die Basis für den nachfolgend beschriebenen Autostart der FHEM Software. Man kann den Autostart der Hardware auf zwei Arten lösen. Die Einfache: viele BIOS Varianten haben eine Option mit einem Namen wie "AC Back Function" (Beispiel aus dem Award BIOS, zu finden unter "Power Management"). Steht sie auf "Full-On" (Award) schaltet sich der Rechner automatisch ein, wenn die Netzspannung wieder zurückkommt. Das Award BIOS hat auch noch Varianten, bei denen der Rechner nur dann einschaltet, wenn er vor dem Stromausfall eingeschaltet war. <-- Screenshot AWARD BIOS Power on --> Für viele Computer, die kein solches BIOS haben, ist dennoch nicht alles verloren: man kann als halbwegs Elektronik affiner Bastler einen kleinen Kondensator (Elko, einige 10uF, Wert ausprobieren, Polarität beachten) parallel zu den Kontakten des Einschaltknopfs löten, und bekommt den gleichen Effekt: der Kondensator startet den Rechner, sobald das Rechnernetzteil wieder Strom bekommt. Es sind im Internet auch verschiedene Schaltungen zu finden, die das noch etwas "waidmännischer" machen, und die wohl - so liest man - beim einen oer anderen Board nötig sind, weil bei manchen der Kondensatortrick nicht (mehr?) zu funktionieren scheint.

FHEM automatisch mit Windows starten

Für den Anfang wird man FHEM von Hand starten, das ist sogar notwendig, um beim ersten Start von FHEM den Assistenten zur Konfiguration der Windows Firewall richtig einstellen zu können. Spätestens wenn der Rechner einmal unvorhergesehen neu startet, sei es durch ein "wichtiges" Windows Update, oder einen Stromausfall, wird man sich wünschen, dass FHEM automatisch mit dem Rechner mit startet. Ich beschreibe im Folgenden die beiden wahrscheinlich häufigsten Methoden, um das zu erreichen. Es gibt auch noch andere, z.B. Load- oder Run Anweisungen in der Windows Registry, Startup- oder Login-Scripte und noch einige mehr, alle sind der "Autostart" Methode, sehr ähnlich.

Die "Autostart" Methode

Die "Autostart" Methode ist auch für Windows Neulinge gut zu beherrschen, und eigent sich auch als Vorarbeit für die "Hintergrunddienst" Methode. Man kann alle Programmaktivitäten ganz normal am Bidschirm sehen, was die Fehlersuche sehr erleichtert. Der prinzipbedingte Nachteil dieser Methode besteht darin, dass FHEM nur so lange läuft, wie der Benutzer nicht abgemeldet wird.

AutoLogin/AutoLogon einrichten

Ein Autologon sorgt dafür, dass sich der Computer nach einem Neustart automatisch mit einem bestimmten Benutzerkonto anmeldet. In der einfachsten Form braucht man dafür überhaupt nichts zu tun: so lange man bei einem Windows 7 Rechner, der nicht Windows Active-Directory Domänenmitglied ist, dem Konto, das bei der Standardinstallation automatisch angelegt wurde, kein Passwort zuweist, und keine weiteren Konten anlegt bzw. aktiviert, meldet sich Windows bei jedem Start vollautomatisch mit diesem Konto an. Das sind natürlich sehr enge Rahmenbedingungen, und wer hat schon gerne einen unversperrten Windows PC 24/7 herumstehen, aber wen das nicht weiter stört, der kann den folgenden Abschnitt überspringen und bei "Autostart konfigurieren" weiterlesen.
Für den Anmeldeschirm nach dem Start des Computers ist der Winlogon Prozess zuständig. Er hatte immer schon die Möglichkeit, Benutzername und Passwort nicht nur von der Tastatur, sondern auch aus der Windows Registry entgegen zu nehmen - in den moderneren Windows Versionen sogar in verschlüsselter Form. Zum Setzen der benötigten Einträge gibt es viele Wege, von der manuellen Methode mit dem Registry-Editor bis zu zahlreichen Tools, ich zeige stellvertretend das freie "Autologon" Tool von Sysinternals [5].
Nach dem Start des Tools und dem Abnicken eines Lizenzvertrages sieht man folgenden Bildschirm:
Autologon Main.png
Notwendige Angaben
Username: Benutzername für die automatische Anmeldung
Domain: der eigene Computername, bzw. der Name der Active Directory Domäne (wenn man eine hat)
Password: das Kennwort des Benutzers (wird verschlüsselt gespeichert)
AutoLogon Confim.png
Nach dem Setzen der Einträge kann man Windows testweise neu starten lassen - und der mit Autologon eingetragene Benutzer wird automatisch mit seinem Passwort angemeldet. Für mehr Zugriffsschutz kann man nun auch den passwortgeschützten Bildschirmschoner aktivieren, und damit ein gewisses Maß an Zugriffsschutz auf den Rechner erreichen. Nach dem Autologon muss man nur noch FHEM starten, und fertig.
Hinweis: man kann einen aktivierten Autologon außer Kraft setzen, indem man während des Windows Starts die rechte Hochstelltaste (Shift) gedrückt hält, bis der Anmeldebildschirm erscheint

FHEM über eine Link-Datei (.lnk) starten

Wenn man nur FHEM alleine starten möchte, ist die billigste Variante, eine Link (.lnk) Datei in den Autostart Ordner eines Benutzers zu legen, und für ihn einen Autologon (siehe vorigen Abschnitt) zu konfigurieren.
Nachdem man sich mit dem Benutzerkonto angemeldet hat, öffnet man den Autostart Ordner des Benutzers über die Sequenz "Start" - "Alle Programme" - (Rechtsmausklick)"Autostart" - "Öffnen"
. Autostart OpenFolder.png
Es öffnet sich ein Fenster, in dem ggf. bereits exitierende Autostarts aufgelistet werden. Man fügt einen neuen Autostart hinzu, indem man irgendwo im leeren Fensterbereich (Rechtsmausklick)"Neue Verknüpfung" wählt. Es öffnet sich der Dialog zum Erstellen neuer Verknüpfungen.
Autostart CreateLink.png
Notwendige Angaben
Eigabefeld "... Speicherort des Elements ...": "Pfad zum PERL Interpreter" - Leerzeichen - "fhem.pl" - Leerzeichen - "Name der FHEM Konfigurationsdatei" (idR "fhem.cfg"). Siehe Screenshot.
Noch Klick auf "Weiter" folgt ein Dialog, in dem man dem Link irgendeinen Namen geben kann, ich habe ihn "Starte FHEM" genannt. Nach Klick auf "Beenden" wird der Link erstellt, aber er ist noch nicht ganz fertig.
Damit der Link funktioniert, ist noch eine Änderung erforderlich, und eine weitere Änderung ist unter Umständen nützlich. Um den gerade erstellten Link zu ändern, muss man mit (Rechtsmausklick)Eigenschaften seine Einstellungen öffnen.
Autostart ModifyLink.png
Notwendige Angaben
Ausführen in: Dateipfad (in Hochkommas) in dem FHEM installiert wurde.
Ob man zusätzlich in der Auswahlliste "Ausführen" den Fenstermodus von "Normales Fenster" (Default) auf "Minimiert" (Das FHEM Fenster erscheint erst einmal nur in der Taskleiste, von wo man es bei Bedarf durch Anklicken auf den Bildschirm holen kann) ist Geschmackssache, ich finde es nützlich.
Zum Testen kann man den neu erstellten Link jetzt per Doppelklick starten.
Autostart Success.png
Wenn alles richtig installiert und eingestellt wurde, öffnet sich die FHEM Konsole. Solange alles gut läuft ist die FHEM Konsole nicht gerade gesprächig, aber wenn sie sich nicht sofort wieder schließt ist alles OK, und man kann sich jetzt mit dem Browser zur FHEM Benutzeroberfläche verbinden.
Und dann kommt natürlich noch der letzte, entscheidende Test: nach jedem Login muss sich nun automatisch auch FHEM starten, entweder als Fenser, oder minimiert in der Tasklsiste. Zusammen mit dem vorstehend beschrieben automatischen Login ergibt sich ein selbstanmeldendes und selbststartendes FHEM. Es hat nur noch einen kleinen Schönheitsfehler: schließt man das FHEM Fenster versehentlich, wird FHEM beendet. Vor allem bei Computern, auf denen parallel zu FHEM auch gearbeitet wird, ist die folgend beschriebene Methode, FHEM im Hintergrund laufen zu lassen, besser geeignet.

FHEM im Hintergrund als Windows Task starten

Lässt man FHEM als Prozess im Hintergrund laufen, wird FHEM auch ausgeführt, wenn man sich überhaupt nicht anmeldet, folglich kann man sich das Autologon-Tool sparen. Es ist auch nicht möglich, FHEM durch einen versehentlichen Logout zu beenden, man muss FHEM - mit Administratorrechten - über die Windows Tools "Aufgabenplanung" bzw. "Task-Manager" stoppen. Nachteilig an dieser Betriebsart ist, dass man die Konsole von FHEM nicht mehr sehen kann, da im Hintergrud laufende Prozesse keine Bildschirmausgaben machen können. Die Fehlersuche wird daher etwas schwieriger. Ich gehe in der Praxis so vor, dass ich FHEM erst eine Weile mit der Autostart Methode laufen lasse, um die Konsole zu sehen. Wenn ich dann sicher bin, dass ich die Konfiguration fehlerfrei hinbekommen habe, und wenn FHEM stail läuft, verbanne ich es in den Hintergrund. Eins muss man sich vorher noch überlegen, ob man FHEM im Systemkontext (uneingeschränkte Rechte - Konto "SYSTEM") laufen lassen möchte, oder ob man ein eingeschränktes Benutzerkonto für FHEM erstellt. Ich möchte jetzt aber nicht auf das Thema Windows Sicherheit und FHEM auch noch eingehen, wer FHEM nur im eigenen Heimnetz betreibt kann das ziemlich entspannt sehen, wer FHEM allerdings per Portfreigabe durch seinen Router hindurch ins Internet stellt sollte dem Thema "Sicherheit" sehr viel mehr Aufmerksamkeit zukommen lassen - aber das würde den Rahmen dieser Anleitung endgültig sprengen.

Einen Hintergrundprozess für FHEM konfigurieren

Um FHEM als im Hintergrund auszuführen, muss man unter "Start" - "Systemsteuerung" - "System und Sicherheit" - "Verwaltung" - "Aufgaben planen" eine neue "Geplante Aufgabe" erstellen.
Scheduler NewTask.png
Der Dialog "Aufgabe erstellen" erscheint, er hat fünf Karteikarten zur Einstellung der "Geplanten Aufgabe"
Scheduler NewTask Common.png
Karteikarte: "Allgemein"
Folgende Eingaben sind zu machen:
Name: Irgendein Name für den Task
Benutzerkonto: Unter "Benutzer oder Gruppe auswählen" entweder "SYSTEM" eingeben oder ein Benutzerkonto wählen
Anmerkung: wenn man ein Benutzerkonto verwendet, wird man aufgefordert, das Passwort zu hinterlegen. Das Passwort darf sich nicht ändern, deshalb muss man in den Konten-Einstellungen des Benutzerkontos die Option "Kennwort läuft nie ab" setzen, sonst läuft der FHEM Task nur einige Wochen lang, bis er mit einem Anmeldefehler abbricht. Es empfiehlt sich außerdem, dem Benutzerkonto so viele Berechtigungen als möglich wegzunehmen, dies vor allem dann, wenn man seinen FHEM Server per Portfreigabe ins Internet stellt. Wenn FHEM unter "SYSTEM" läuft würde ich meine FHEM Dienste überhaupt niemals nicht ins Internet stellen, dieses Konto lässt sich nicht einschränken, und hat alle Berechtigungen überall hin.
Karteikarte: Trigger
Scheduler NewTask Trigger.png
Folgende Eingaben sind zu machen:
Aufgabe starten: beim Start (des Computers/Betriebssystems)
Aktiviert: akivieren
Karteikarte Action
Scheduler NewTask Action.png
Folgende Eingaben sind zu machen:
Aktion: Programm starten
Programm/Script: Pfad zum PERL Interpreter, in Hochkomma
Argumene: fhem.pl - Leerzeichen - Name der FHEM Konfigurationsdatei (idR "fhem.cfg")
Starten in: das Verzeichnis, in dem FHEM installiert wurde, also wo sich fhem.pl und fhem.cfg befinden, und zwar - kurioserweise - keinesfalls in Hochkomma eingeschlossen, sonst lässt sich der Task nicht starten.
Karteikarte Bedingungen
Scheduler NewTask Condtions.png
Folgende Eingaben sind zu machen:
Energie: Je nachdem ob der Rechner ein Laptop ist oder nicht, und wie man seinen Akku verwenden will, wird man hier seine Einstellungen wählen.
Karteikarte Einstellungen
Scheduler NewTask Settings.png
Folgende Eingaben sind zu machen:
Ausführung bei Bedarf: Manuelle Steuerung des Tasks über die Aufgabenplanung ist erlaubt.
Aufgabe beenden, falls ... Deaktivieren, sonst wird FHEM nach 3 Tagen abgebrochen.
Beenden erzwingen: Abgestürztes FHEM manuell killen dürfen.
Vorhandene Instanz anhalten: Startet ein frisches FHEM, wenn man den Task mehrmals startet.
Das wars, der Task ist definiert. Man kann den Task nun testweie gleich von Hand starten (links auf "Aufgabenplanungsbibliothek" wechseln, dann erscheint rechts eine Liste wo man den Task starten, und ggf, auch ändern kann) und sehen, ob er läuft, indem man die FHEM Weboberfläche öffnet. Ein weiteres Indiz ist, dass man im Task-Manager, sobald man die "Prozesse aller Benutzer anzeigen" Option aktiviert, den Task "Perl.exe" laufen sieht.
Scheduler NewTask Success.png
Beim nächsten Computerstart wird FHEM dann automatisch im Hintergrund gestartet.