Windows - FHEM installieren: Unterschied zwischen den Versionen

Aus FHEMWiki
Zur Navigation springen Zur Suche springen
Zeile 172: Zeile 172:
[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]


=== FHEM als WIndows Dienst starten ===
=== FHEM automatisch mit Windowsstarten ===
 
==== FHEM durch AutoLogon starten ====
==== FHEM als Windows Dienst starten ====
[coming soon ...]
[coming soon ...]

Version vom 7. November 2014, 01:44 Uhr

FHEM unter Windows 7 installieren

Nachdem ich doch trotz der vorhandenen Dokumentation einige Mühe hatte, FHEM mit dem FS20-System unter Windows 7 zum Laufen zu bringen, habe ich die notwendigen Schritte in diesem Dokument aufgeschrieben, damit es andere vielleicht etwas einfacher haben.

Hardware bestellen

Neben den CUL zur Steuerung der Komponenten vom Computer aus 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.

Danach muss noch der Windows-Treiber für den CUL868 installiert werden. Dieser kann von busware heruntergeladen werden und im Windows Gerätemanager installiert werden:

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

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.

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, er 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 und daher bei jeder Installation anders ist - Sie müssen den Verzeichnisnamen auf Ihrem Rechner selber nachsehen. 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 er 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 en Masse 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

Nach dem Download von FHEM wird dieses mittels 7-Zip auf C:\ extrahiert. Der Download sollte dabei nicht auf ein Benutzerverzeichnis erfolgen, da 7-Zip darauf nicht zugreift (zumindest bei mir). In 7-Zip bis zum Ordner „fhem-51“ durchklicken und erst diesen auf C:\ entpacken.

Da das makefile unter Windows nicht funktioniert, müssen die darin enthaltenen Kopierbefehle zur Installation des Webfrontend PGM2 selbst durchgeführt werden. Ich habe dazu folgende Batchprozedur erstellt:

@Echo makefile fuer Windows
 @Echo.
 @Echo Startaufruf:
 cd c:\fhem-5.1\
 xcopy .\webfrontend\pgm2\*.* .\FHEM\
 xcopy .\docs\commandref.html .\FHEM\
 xcopy .\docs\faq.html .\FHEM\
 xcopy .\docs\HOWTO.html .\FHEM\
 xcopy .\docs\*.png .\FHEM\
 xcopy .\docs\*.jpg .\FHEM\
 cd examples
 for %%f in (*.*) do (
 copy %%f "..\FHEM\example.%%f"
 )
 cd..
 copy .\examples\sample_pgm2 .\FHEM\fhem.cfg
 md tmp
 PAUSE

Danach muss die Datei „fhem.cfg“ noch angepasst werden, so dass diese wie folgt aussieht (nach http://www.russellallen.info/post/FHEM-Setup-on-Windows-Home-Server-Part-2-of-2.aspx):

attr global logfile .\tmp\fhem.log
 attr global modpath .
 attr global nofork 1
 
 # "global" keyword at the end of following command allows connection from any host
 attr global port 7072 global
 
 attr global statefile \tmp\fhem.save
 attr global verbose 5
 
 define CUL CUL com14@9600 1234
 # bei com14 den tatsächlichen Port gemäß Gerätemanager angeben
 
 define autocreate autocreate
 
 define WEB FHEMWEB 8083 global
 
 define WEBphone FHEMWEB 8084 global
 attr WEBphone smallscreen 1
 
 define WEBtablet FHEMWEB 8085 global
 attr WEBtablet touchpad 1

Außerdem muss noch die leere Log-Datei (z.B. fhem.log) im Ordner tmp bereitgestellt werden (über einen einfachen Editor Datei-Neu und dann Speichern unter).

Danach kann der FHEM-Server gestartet werden mittels

  • CMD (Befehlszeile) aufrufen
  • ins Verzeichnis C:\FHEM-5.1 wechseln
  • „perl fhem.pl fhem.cfg“ eingeben

Nun kann FHEM im Browser unter http://localhost:8083/fhem aufgerufen werden.

Jetzt können die Schalter 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.

FHEM automatisch mit Windowsstarten

FHEM durch AutoLogon starten

FHEM als Windows Dienst starten

[coming soon ...]