[Howto] FHEM Server auf QNAP TS-221 (QTS 4.0.X) installieren

  • Installation von FHEM auf einem QNAP NAS
    Update 10.02.2014


    [NAS Typ:] TS-xxx
    [Firmware:] 4.0.X
    [Getestet:] ja
    [Sonstige Modifikationen:] keine


    Diese Anleitung beschreibt detailiert, wie FHEM auf einer QNAP Turbo Station TS-221 installiert werden kann. Im wesentlichen wird die Vorgehensweise auch für weitere QNAP NAS gelten.
    Die Anleitung stammt im Orginal von http://www.fhemwiki.de/wiki/Qnap_NAS und wurde von mir mithilfe von http://forum.qnapclub.de/viewt…158936&hilit=fhem#p158936
    und http://wiki.qnap.com/wiki/Runn…t_Startup#Skills_required
    modifiziert.


    Überblick
    Die aktuelle QNAP Firmware 4.0.X unterstützt die Installation von IPKG Paketen. Sämtliche für FHEM benötigte Software ist auf diese Weise verfügbar, so dass die Installation eigentlich sehr einfach vonstatten gehen könnte. Leider hat QNAP an einigen Stellen geschlampt und man muss von Hand etwas nachhelfen. Desweiteren ist Handarbeit gefragt für folgende Zusatzfunktionen
    Auslagerung der FHEM Logfiles auf einen Speicherstick. Somit kann die interne Festplatte weiterhin in den Spin Down gehen.
    • Autostart von FHEM beim Booten des NAS
    • Geordnetes Runterfahren von FHEM beim Herunterfahren des NAS


    QNAP Konfiguration
    ... mit Einzeldisks
    hier ist in den verschiedensten Pfadangaben "HDA_DATA" zu verwenden
    ... mit RAID
    hier ist in den verschiedensten Pfadangaben "HDA_DATA" in "MD0_DATA" auszutauschen
    wer nicht weiß wie seine QNAP konfiguriert ist checkt es mit

    Code
    cd /ls share/HDA_DATAls share/MD0_DATA


    ... und kuckt welcher Ordner in Verwendung ist!



    Installation des QPKG Paketes Optware IPKG
    Über die NAS Web-Administration(App Center) kann das Optware IPKG Paket installiert werden.
    Telnet starten
    Zusätzliches Installationsziel für ipkg in die Config aufnehmen
    Die Kernel Module werden sonst nach /lib/modules installiert, und das wird bei jedem reboot überschrieben.
    Also müssen sie explizit nach /opt/lib/modules installiert werden.

    Code
    cd /share/HDA_DATA/.qpkg/Optware/etcvi ipkg.conf


    Hinzufügen von: (Taste i für Einfügemodus)

    Code
    dest opt /opt


    Speichern und Exit (ESC :wq)


    Paketliste aktualisieren

    Code
    ipkg update


    Benötigte Pakete für fhem installieren

    Code
    ipkg install perl perl-device-serialportipkg install make # für die fhem Installationipkg install gcc # richtige libgcc für perlipkg install gnuplot # optional, falls lediglich plotmode SVG verwendet



    FHEM Installieren
    Fhem am PC downloaden und in ein QNAP Public Verzeichniss auspacken z.B.
    /share/Public/fhem
    Ins Download Verzeichniss wechseln

    Code
    cd /share/Public/fhem


    Pfade im Makefile auf /opt/ .... ändern

    Code
    vi Makefile


    Ändern in: (Taste i für Einfügemodus)

    Code
    BINDIR=/opt/bin/fhem MODDIR=/opt/lib/fhem VARDIR=/opt/var/log/fhem


    Speichern und Exit (ESC :wq)


    Code
    mkdir /opt/bin/fhemmkdir /opt/lib/fhem


    Logverzeichniss anlegen
    Dieses Verzeichniss wird später auf einen Speicherstick ausgelagert.

    Code
    mkdir -p /opt/var/log/fhem


    Installieren

    Code
    make install



    Pfad von perl in fhem.pl anpassen
    ACHTUNG, dies ist evtl. nach einem FHEM update zu wiederholen, also nach jedem update checken

    Code
    vi /opt/bin/fhem/fhem.pl


    Ändern in: (Taste i für Einfügemodus)

    Code
    !/opt/bin/perl


    Speichern und Exit (ESC :wq)


    Konfigfile nach /opt/etc kopieren und editieren

    Code
    cp /opt/bin/fhem.cfg /opt/etc/fhem.cfgvi /opt/etc/fhem.cfg


    Hinzufügen von: (Taste i für Einfügemodus)

    Code
    attr global logfile /opt/var/log/fhem/fhem-%Y-%V.log attr global statefile /opt/var/log/fhem/fhem.savestate


    Speichern und Exit (ESC :wq)


    Probeweise starten

    Code
    /opt/bin/fhem/fhem.pl /opt/etc/fhem.cfg



    Stoppen

    Code
    killall fhem.pl


    Logfiles auf USB-Stick auslagern
    Stick anstöpseln und prüfen, wo er gemounted wurde

    Code
    mount|grep vfat


    Ausgabe z.B.:
    /dev/sdq1 on /share/external/sdq1 type vfat (rw,utf8,dmask=0000,fmask=0111,shortname=mixed)


    Lokale Logfiles verschieben und verlinken

    Code
    cd /opt/var/logcp -r fhem /share/external/sdq1mv fhem fhem.localln -s /share/external/sdq1/fhem



    FHEM QPKG-based start-/stopbar machen
    Editiren des QPKG config file:

    Code
    vi /etc/config/qpkg.conf


    QPK Paket definieren: z.B.
    Hinzufügen von: (Taste i für Einfügemodus)

    Code
    [FHEM] Name = fhem Version = 5.5 Author = Kai Date = 2013-12-30 Shell = /share/HDA_DATA/.qpkg/fhem/fhemstart.sh Install_Path = /share/HDA_DATA/.qpkg/fhem QPKG_File = fhemstart.qpkg Enable = TRUE


    Speichern und Exit (ESC :wq)


    dummy package directory erstellen:

    Code
    mkdir /share/HDA_DATA/.qpkg/fhem


    Erstellen des autorun script:

    Code
    vi /share/HDA_DATA/.qpkg/fhem/fhemstart.sh


    Hinzufügen von: (Taste i für Einfügemodus)

    Bash
    #!/bin/sh # by Matthias Bauer # modified by Kai case "$1" in start) echo "Starting $0" /opt/bin/fhem/fhem.pl /opt/etc/fhem.cfg### Nur nötig wenn die Prozesspriorität von FHEM erhöht werden muß ###### sleep 5 Prozess=`pidof fhem.pl` renice -10 $Prozess######################################################################### ;; stop) echo "Stopping $0" /opt/bin/fhem/fhem.pl 7072 shutdown ;; status) cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l` if [ "$cnt" -eq "0" ] ; then echo "$0 is not running" else echo "$0 is running" fi ;; *) echo "Usage: $0 {start|stop|status}" exit 1 esac exit 0


    Speichern und Exit (ESC :wq)


    Ausführbar machen:

    Code
    chmod +x /share/HDA_DATA/.qpkg/fhem/fhemstart.sh



    ... und fertig.


    FHEM kann nun per App Center gestartet und gestoppt werden

    3 Mal editiert, zuletzt von christian () aus folgendem Grund: Anleitung aktualisiert.

  • Ich verschiebe den Thread mal in unser Unterforum "Anleitungen".


    Ich würde noch gern darum bitten, statt der Kursivschrift gemäss unserer Forenregeln diese Befehlszeilen in CodeBlöcke zu setzen, vielleicht kannst Du das ja noch nachholen. --> EDIT: Erledigt.



    Danke, Liebe Grüsse und Guten Rutsch!
    GBD

  • Hallo,


    ich möchte fhem auf meinem TS-219P v4.0.2 installieren und bin auf einige Probleme gestossen:


    Logverzeichniss anlegen
    Dieses Verzeichniss wird später auf einen Speicherstick ausgelagert.

    Code
    # mkdir -p /opt/var/log/fhem --> OK


    Installieren

    Code
    # make install --> Fehler: make: *** No rule to make target `install'.  Stop.


    Was mache ich falsch???



    Pfad von perl in fhem.pl anpassen

    Code
    # vi /opt/bin/fhem/fhem.pl --> [b]file fhem.pl existiert nicht?[/b]#!/opt/bin/perl


    Danke für eure Hilfe..



    Konfigfile nach /opt/etc kopieren und editieren

    Code
    # cp /opt/bin/fhem.cfg /opt/etc/fhem.cfg --> Fehler: [b]cp: cannot stat `/opt/bin/fhem.cfg': No such file or directory[/b]  das file fhem.cfg existiert nicht?
    #vi /opt/etc/fhem.cfg

    Einmal editiert, zuletzt von GorillaBD () aus folgendem Grund: Code Block hinzugefügt! Siehe Forenregeln.

  • Hallo Jürgen,


    hast du das Schritt für Schritt gemacht?


    1. Fhem am PC downloaden und in ein QNAP Public Verzeichniss auspacken z.B.
    /share/Public/fhem


    2. Ins Download Verzeichniss wechseln

    Code
    cd /share/Public/fhem


    3. Pfade im Makefile auf /opt/ .... ändern

    Code
    # vi Makefile BINDIR=/opt/bin/fhem MODDIR=/opt/lib/fhem VARDIR=/opt/var/log/fhem


    Speichern und Exit


    4.

    Code
    mkdir /opt/bin/fhemmkdir /opt/lib/fhem


    5. Logverzeichniss anlegen
    Dieses Verzeichniss wird später auf einen Speicherstick ausgelagert.

    Code
    mkdir -p /opt/var/log/fhem


    6. Installieren (du bist immer noch in /share/Public/fhem)


    Code
    make install


    Gruß


    Kai

  • Ja, das Project steht als nächstes bei mir an. Mein Sohn und ich haben es gerade auf einen Raspberry geladen und wollen ein bisschen spielen. Wenns läuft, kommt der Server aufs NAS. Schön, dass sich hier noch ein paar damit beschäfftigen. :)

  • @ Kai: Danke für deine Antwort. JA, habe alles gemacht. Allerdings hat der letzte Punkt (make install) nicht geklappt:

    Code
    make install


    --> Fehlermeldung: make: *** No rule to make target `install'. Stop.
    Was mache ich falsch?


    Dann habe ich noch was komisches in der Anleitung zu FHEM QPKG-based start-/stopbar machen gefunden:
    dummy package directory erstellen:

    Code
    # mkdir /share/MD0_DATA/.qpkg/fhem


    --> Sollte das nicht "HDA_DATA" sein?


    Erstellen des autorun script:

    Code
    # vi /share/MD0_DATA/.qpkg/fhem/fhemstart.sh


    --> Sollte das nicht "HDA_DATA" sein?



    @ biboca: Genau DAS habe ich auch vor:
    Dig. Stromzähler mit S0 Taktausgang am Raspberry PI anschliessen. Hierzu braucht man allerdings noch ne S0 (nicht verwechseln mit dem ISDN So) PI Erweiterung. Dann mit fhem Darstellen.

    Einmal editiert, zuletzt von GorillaBD () aus folgendem Grund: Unnötiges Volltextzitat entfernt! Code Block hinzugefügt! Siehe Forenregeln!

  • Hallo Jürgen,


    ja da sind noch ein paar Tippfehler drin die ich beim verifizieren auch nicht gesehen hab.
    Leider darf ich meinen Beitrag nicht mehr modifizieren :cry:


    Also


    MD0_DATA oder HDA_DATA
    Je nach dem wie du dein System eingerichtet hast.
    Festplatten als Einzeldiks -> HDA_DATA, HDB_DATA
    als RAID MD0_DATA


    Setz also immer das ein was du bei deinem System benötigst.



    Nun zum "make" Problem:


    Ich nehme an, du hast fhem 5.5 in folgendes Verzeichnis auf deinem Qnap entpackt "/share/Public/fhem"
    Schick mir doch bitte mal folgenden output:


    Code
    cd /share/Public/fhem
    ls
    cat Makefile


    Gruß


    Kai

  • Hallo Kai,


    here we go:


    Code
    [~] # cd /share/Public/fhem[/share/Public/fhem] # lsFHEM/            demolog/         fhem.pl          perlMakefile         docs/            kernel/          startfhemREADME_DEMO.txt  fhem.cfg         lib/             startfhemDemobackup.sh        fhem.cfg.demo    log/             www/


    Code
    [/share/Public/fhem] # cat Makefile
    BINDIR=/opt/bin/fhem
    MODDIR=/opt/lib/fhem
    VARDIR=/opt/var/log/fhem



    Danke

    Einmal editiert, zuletzt von GorillaBD () aus folgendem Grund: Code Block hinzugefügt! Siehe Forenregeln.

  • Hallo Jürgen,


    wie hast du denn deine Festplatten konfiguriert?


    Einzeldisk?
    oder RAID?


    Du kannst auch


    Code
    cd /
    ls share/HDA_DATA
    ls share/MD0_DATA


    probieren.


    Welches davon enthält deine shared drives?


    Gruß


    Kai

  • Hi Kai,


    auf share/HDA_DATA sind keine files.
    auf share/MD0_DATA sind alle meine Verzeichnisse


    Und Ja, ich habe 2 TB Platten in RAID modus. Somit 1TB log. drive


    Hilft das weiter??


    Vielen Dank!

  • Zitat von "fkai"

    ja da sind noch ein paar Tippfehler drin die ich beim verifizieren auch nicht gesehen hab.
    Leider darf ich meinen Beitrag nicht mehr modifizieren :cry:


    Wenn Du möchtest, kannst Du den Beitrag in korrigierter Form hier nochmal einstellen. Ich tausche den dann gerne entsprechend gegen das alte Original aus.


    GLG GBD

  • Hallo Jürgen,


    das dachte ich mir ;)


    Allerdings wundert es mich daß

    Code
    cd /share/HDA_DATA/.qpkg/Optware/etc


    am Anfang der Anleitung funktioniert hat, oder hattest du das ausgelassen?


    Ich habe die Installation von FHEM auf einem QNAP-RAID System noch nicht gemacht.
    Hatte damals nur die QPKG integration auf nem RAID-System verifiziert, deshalb steht hier MD0_DATA :)


    Allerdings wüsste ich im Moment nichts, was dagegen steht. Du mußt die Anleitung einfach SCHRITT für SCHRITT wiederholen und überall wo HDA_DATA steht mit MD0_DATA ersetzen.
    Wenn ich mal Zeit übrig hab, mach ich das auf meiner alten "test" QNAP und schreib vielleicht ne neue Anleitung (hoffentlich ohne Tippfehler) für beide Fälle.


    So, nun warte ich mal ob es bei dir jetzt funktioniert.


    Gruß


    Kai

  • Hallo,


    ich habe ein Problem nach der Installation.
    Die Probe bringt das hervor, womit ich so recht noch nichts anfangen kann.

    Code
    [~] # cd /share/Public/fhem
    [/share/Public/fhem] # /opt/bin/fhem/fhem.pl /opt/etc/fhem.cfg
    /opt/bin/fhem/fhem.pl: line 1: !/opt/bin/perl[/i]: No such file or directory
    /opt/bin/fhem/fhem.pl: line 33: use: command not found
    /opt/bin/fhem/fhem.pl: line 34: use: command not found
    /opt/bin/fhem/fhem.pl: line 35: use: command not found
    /opt/bin/fhem/fhem.pl: line 36: syntax error near unexpected token `('
    /opt/bin/fhem/fhem.pl: line 36: `use Time::HiRes qw(gettimeofday);'
    [/share/Public/fhem] #


    Dennoch kam ich über http://meine-ip:8083/fhem auf die "Startseite". Nach einem Neustart der Qnap ist diese nicht mehr erreichbar.
    Ich stehe jetzt etwas auf dem Schlauch. :oops:


    Gruß
    toolted

  • Hi toolted,


    Zitat von "toolted"


    /opt/bin/fhem/fhem.pl: line 1: !/opt/bin/perl[/i]: No such file or directory


    ... würde bedeuten, das perl nicht im verzeichnis /opt/bin/ zu finden ist!
    Aber mich irretiert das "[/i]" hinter perl.


    Machmal

    Code
    ls /opt/bin/perl*


    Sind die Perlmodule enthalten?


    /opt/bin/perl@ /opt/bin/perl5.10.0* /opt/bin/perlbug* /opt/bin/perlivp*


    Wenn Nein, dann perl installieren


    Wenn Ja, dann


    Code
    cd /opt/bin/fhem vi fhem.pl


    Die 1. Zeile sollte so aussehen

    Code
    #!/opt/bin/perl


    Gruß


    Kai

  • Hallo Kai,


    die Einstellungen passten soweit.
    Ich habe noch mal von vorn angefangen.


    Mir ist aufgefallen, dass in der Anleitung bei den Pfadangaben Fehler enthalten sind.
    Die fehlenden Pfadangaben habe ich vor dem Code noch mal angegeben.


    /opt/bin/fhem/fhem.pl /opt/etc/fhem/fhem.cfg

    Bash
    #!/bin/sh# by Matthias Bauer# modified by Kaicase "$1" instart)echo "Starting $0"/opt/bin/fhem/fhem.pl /opt/etc/fhem/fhem.cfg### Nur nötig wenn die Prozesspriorität von FHEM erhöht werden muß ######sleep 5Prozess=`pidof fhem.pl`renice -10 $Prozess#########################################################################;;stop)echo "Stopping $0"/opt/bin/fhem/fhem.pl 7072 shutdown;;status)cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`if [ "$cnt" -eq "0" ] ; thenecho "$0 is not running"elseecho "$0 is running"fi;;*)echo "Usage: $0 {start|stop|status}"exit 1esacexit 0


    cp /opt/bin/fhem/fhem.cfg /opt/etc/fhem/fhem.cfg
    vi /opt/etc/fhem/fhem.cfg

    Code
    cp /opt/bin/fhem.cfg /opt/etc/fhem.cfgvi /opt/etc/fhem.cfg


    /opt/bin/fhem/fhem.pl /opt/etc/fhem/fhem.cfg

    Code
    /opt/bin/fhem/fhem.pl /opt/etc/fhem.cfg


    Ansonsten besteht bei mir noch das Problem, dass nach einem Neustart die Weboberfläche nicht erreichbar ist.
    perl /opt/bin/fhem/fhem.pl /opt/bin/fhem/fhem.cfg bringt einen Fehler.


    Erst nach

    Code
    make install

    und

    Code
    perl /opt/bin/fhem/fhem.pl /opt/bin/fhem/fhem.cfg

    läuft alles wieder.


    Gruß
    Andreas

  • Hi toolted,


    meine Anleitung ist so aufgebaut, daß das fhem perl script in
    /opt/bin/fhem liegt
    und das config file in
    /opt/etc


    Somit sollten alle Angaben in der Anleitung passen.


    Den einzigen Tippfehler den ich entdeckt habe ist wie schon erwähnt im Abschnitt
    Pfad von perl in fhem.pl anpassen
    da gehört das [/i] nicht dahinter!



    Du hast das config file in ein fhem Unterverzeichnis in /opt/etc geschoben.
    Prüfe doch mal ob das nach einem Neustart immer noch da ist.
    Prüfe ob nach einem Neustart der fhem.pl prozess läuft!


    Gruß


    Kai

  • Hallo Kai,


    ich bin jeden Punkt so angegangen wie beschrieben. Dabei liegt dann das fhem perl script in
    /opt/bin/fhem
    bzw
    /opt/etc/fhem


    Warum kann ich im Moment nicht sagen. Ich werde das nochmal probieren, habe aber erst Morgen die Möglichkeit.


    toolted



    ---Edit---



    Hallo Kai,


    nach dem Neustart is die fhem.cfg vorhanden, s. unten.

    Code
    [/opt/etc] # ls
    fhem/      init.d/    ipkg.conf  profile    sudoers.d/
    fonts/     ipkg/      pango/     sudoers
    [/opt/etc] # cd /opt/etc/fhem/
    [/opt/etc/fhem] # ls
    fhem.cfg*
    [/opt/etc/fhem] #


    Der Prozess läuft nach dem Neustart nicht mehr.

    Einmal editiert, zuletzt von bladekiller () aus folgendem Grund: Editierfunktion nutzen und doppelte Beiträge vermeiden, siehe Forenregeln!

  • Erstmal vielen Dank für die super Anleitung! Sollte evtl. auch ins FHEM Wiki, denn die dortige Anleitung funktionier bei mir so nicht.


    Allerdings bin ich jetzt auf ein Problem gestoßen. Das Modul ENIGMA2 (70_ENIGMA2.pgm) benötigt mindestens Perl 5.12. Wisst ihr, ob es eine Möglichkeit gibt, das sauber via Paketmanager zu installieren? Gibt es hierfür ein spezielles Repository?

  • Hallo @all ,


    habe schon am Anfang ein Problem :(


    Beim :


    Installation des QPKG Paketes Optware IPKG
    Über die NAS Web-Administration(App Center) kann das Optware IPKG Paket installiert werden.
    Telnet starten
    Zusätzliches Installationsziel für ipkg in die Config aufnehmen
    Die Kernel Module werden sonst nach /lib/modules installiert, und das wird bei jedem reboot überschrieben.
    Also müssen sie explizit nach /opt/lib/modules installiert werden.


    Code
    cd /share/HDA_DATA/.qpkg/Optware/etc


    Da bekomme ich schon einen Fehler !


    Code
    -sh: cd: /share/HDA_DATA/.qpkg/Optware/etc: No such file or directory


    Optware ist aber installiert !!! Und ich nutze auch kein Raid sondern Einzeldisks ....


    Auch ein deinstallieren und erneutes installieren von Optware brachte kein anderes Ergebnis ... :(


    Was mache ich falsch bzw. wo ist mein Optware auf der Qnap installiert ?


    EDIT:
    wenn ich den Pfad ändere in ..... opt/etc finde ich die ipkg.conf dort !!!
    Dann funkt soweit auch alles ....fhem lässt sich Probeweise starten !
    Versuche ich nun das Logfile auf USB Stick auszulagern .... lässt sich fhem nicht mehr starten :(
    mount|grep vfat
    ergibt bei mir :

    Code
    /dev/sds1 on /share/external/sds1 type vfat (rw,utf8,dmask=0000,fmask=0111,shortname=mixed)


    sds1 im HowToDow habe ich angepasst !!!


    ES kommt folgende Fehlermeldung :


    Code
    Use of uninitialized value in concatenation (.) or string at /opt/bin/fhem/fhem.pl line 448.

    Einmal editiert, zuletzt von GorillaBD () aus folgendem Grund: Code Block hinzugefügt! Siehe Forenregeln.