Qnap NAS: Unterschied zwischen den Versionen

Aus FHEMWiki
 
(7 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Randnotiz|RNTyp=Info|RNText=Ergänzungen und Aktualisierungen in {{Link2Forum|Topic=60300}} bitte beachten!}}
= Installation von FHEM auf einem QNAP NAS =
= Installation von FHEM auf einem QNAP NAS =
Diese Anleitung beschreibt detailiert, wie FHEM auf einer
Diese Anleitung beschreibt detailiert, wie FHEM auf einer
Zeile 21: Zeile 22:
Über die NAS Web-Administration kann das Optware IPKG Paket
Über die NAS Web-Administration kann das Optware IPKG Paket
Optware_0.99.163_arm-x09.qpkg Installiert werden.  
Optware_0.99.163_arm-x09.qpkg Installiert werden.  
In dem Paket für die TS-109 sind leider einige Fehler enthalten, welche
In dem Paket für die TS-109 sind leider einige Fehler enthalten, die
im folgenden korrigiert werden. Diese und alle weiteren Eingaben
im folgenden korrigiert werden. Diese und alle weiteren Eingaben
sind auf der [[Kommandozeilentools|Kommandozeile]] durchzuführen.
sind auf der [[Kommandozeilentools|Kommandozeile]] durchzuführen.
Zeile 28: Zeile 29:
=== Namen der Konfigurationsfiles korrigieren ===
=== Namen der Konfigurationsfiles korrigieren ===
  <nowiki># cd /share/HDA_DATA/.qpkg/Optware/etc/ipkg
  <nowiki># cd /share/HDA_DATA/.qpkg/Optware/etc/ipkg
# mv tsx19-kmod.conf tsx09-kmod.conf
  # mv tsx19-kmod.conf tsx09-kmod.conf
# mv tsx19.conf tsx09.conf</nowiki>
  # mv tsx19.conf tsx09.conf</nowiki>
=== Repository für ipkg Pakete korrigieren ===
=== Repository für ipkg Pakete korrigieren ===
  <nowiki># vi tsx09-kmod.conf
  <nowiki># vi tsx09-kmod.conf
Ändern von
  Ändern von
src tsx19 http://ipkg.nslu2-linux.org/feeds/optware/tsx19/cross/unstable
  src tsx19 http://ipkg.nslu2-linux.org/feeds/optware/tsx19/cross/unstable
in
  in
src tsx09 http://ipkg.nslu2-linux.org/feeds/optware/tsx09/cross/stable</nowiki>
  src tsx09 http://ipkg.nslu2-linux.org/feeds/optware/tsx09/cross/stable</nowiki>
=== Repository für die ipkg Kernel Module korrigieren ===
=== Repository für die ipkg Kernel Module korrigieren ===
  <nowiki># vi tsx09.conf
  <nowiki># vi tsx09.conf
Ändern von
  Ändern von
src cs08q1armel http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable
  src cs08q1armel http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable
in
  in
src cs05q3armel http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/unstable</nowiki>
  src cs05q3armel http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/unstable</nowiki>
=== Zusätzliches Installationsziel für ipkg in die Config aufnehmen ===
=== 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.
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.


  <nowiki># cd /share/HDA_DATA/.qpkg/Optware/etc
  <nowiki># cd /share/HDA_DATA/.qpkg/Optware/etc
# vi ipkg.conf
  # vi ipkg.conf
Hinzufügen von  
  Hinzufügen von  
dest opt /opt</nowiki>
  dest opt /opt</nowiki>
=== Anpassen des Paketnamens ===
=== Anpassen des Paketnamens ===
Es muss überall Optware-ipkg heissen.
Es muss überall Optware-ipkg heissen.


  <nowiki># cd /share/HDA_DATA/.qpkg/Optware
  <nowiki># cd /share/HDA_DATA/.qpkg/Optware
# mv Optware.sh Optware-ipkg.sh
  # mv Optware.sh Optware-ipkg.sh
# vi Optware-ipkg.sh
  # vi Optware-ipkg.sh
Ändern von
  Ändern von
QPKG_NAME=“Optware“
  QPKG_NAME=“Optware“
in
  in
QPKG_NAME=“Optware-ipkg“</nowiki>
  QPKG_NAME=“Optware-ipkg“</nowiki>
=== Optware „mounten“ ===
=== Optware „mounten“ ===
  <nowiki># /share/HDA_DATA/.qpkg/Optware/Optware-ipkg.sh restart</nowiki>
  <nowiki># /share/HDA_DATA/.qpkg/Optware/Optware-ipkg.sh restart</nowiki>
Zeile 80: Zeile 81:


  <nowiki># ipkg -d opt install ts209-kernel-module-usbserial
  <nowiki># ipkg -d opt install ts209-kernel-module-usbserial
# ipkg install -d opt ts209-kernel-module-ftdi-sio
  # ipkg install -d opt ts209-kernel-module-ftdi-sio
# ipkg install -d opt ts209-kernel-module-pl2303
  # ipkg install -d opt ts209-kernel-module-pl2303
# ipkg install libusb</nowiki>
  # ipkg install libusb</nowiki>
=== Kernel Module linken ===
=== Kernel Module linken ===
  <nowiki># ln -s /opt/lib/modules/2.6.12.6-arm1/kernel /lib/modules</nowiki>
  <nowiki># ln -s /opt/lib/modules/2.6.12.6-arm1/kernel /lib/modules</nowiki>
=== Module laden mit Vendor und Product ID für CUL ===
=== Module laden mit Vendor und Product ID für CUL ===
  <nowiki># insmod /lib/modules/kernel/drivers/usb/serial/usbserial.ko vendor=0x03eb product=0x204b
  <nowiki># insmod /lib/modules/kernel/drivers/usb/serial/usbserial.ko vendor=0x03eb product=0x204b
# insmod /lib/modules/kernel/drivers/usb/serial/ftdi_sio.ko
  # insmod /lib/modules/kernel/drivers/usb/serial/ftdi_sio.ko
# insmod /lib/modules/kernel/drivers/usb/serial/pl2303.ko</nowiki>
  # insmod /lib/modules/kernel/drivers/usb/serial/pl2303.ko</nowiki>
Nun kann man den CUL anstöpseln und prüfen, ob er erkannt wurde
Nun kann man den CUL anstöpseln und prüfen, ob er erkannt wurde


  <nowiki># cd /usr/local/share    # hier liegt usb.ids
  <nowiki># cd /usr/local/share    # hier liegt usb.ids
# lsusb
  # lsusb
Sollte u.A. folgendes ausgeben ...  
  Sollte u.A. folgendes ausgeben ...  
ID 03eb:204b Atmel Corp.
  ID 03eb:204b Atmel Corp.
# dmesg
  # dmesg
Sollte folgendes ausgeben ...
  Sollte folgendes ausgeben ...
usbserial_generic 2-1.4:1.1 Generic converter detected
  usbserial_generic 2-1.4:1.1 Generic converter detected
usb 2-1.4: Generic converter now attached to ttyUSB0</nowiki>
  usb 2-1.4: Generic converter now attached to ttyUSB0</nowiki>
== Benötigte Pakete für fhem insatllieren ==
== Benötigte Pakete für FHEM installieren ==
  <nowiki># ipkg install perl perl-device-serialport
  <nowiki># ipkg install perl perl-device-serialport
# ipkg install make                # für die fhem Installation
  # ipkg install make                # für die fhem Installation
# ipkg install gcc                # richtige libgcc für perl
  # ipkg install gcc                # richtige libgcc für perl
# ipkg install gnuplot              # optional, falls lediglich plotmode SVG verwendet</nowiki>
  # ipkg install gnuplot              # optional, falls lediglich plotmode SVG verwendet</nowiki>
= FHEM Installieren =
= FHEM installieren =
Fhem am PC downloaden und in ein QNAP Public Verzeichniss auspacken z.B.
FHEM am PC downloaden und in ein QNAP Public Verzeichnis auspacken z.B.


  <nowiki>/share/HDA_DATA/Public/TS109/fhem-4.8</nowiki>
  <nowiki>/share/HDA_DATA/Public/TS109/fhem-4.8</nowiki>
== Ins Download Verzeichniss wechseln ==
== Ins Download Verzeichnis wechseln ==
  <nowiki># cd /share/HDA_DATA/Public/TS109/fhem-4.8</nowiki>
  <nowiki># cd /share/HDA_DATA/Public/TS109/fhem-4.8</nowiki>
== Pfade im Makefile auf /opt/ .... ändern ==
== Pfade im Makefile auf /opt/ .... ändern ==
  <nowiki># vi Makefile
  <nowiki># vi Makefile
BINDIR=/opt/bin
  BINDIR=/opt/bin
MODDIR=/opt/lib
  MODDIR=/opt/lib
VARDIR=/opt/var/log/fhem</nowiki>
  VARDIR=/opt/var/log/fhem</nowiki>
== Logverzeichniss anlegen ==
== Logverzeichnis anlegen ==
Dieses Verzeichniss wird später auf einen Speicherstick ausgelagert.
Dieses Verzeichnis wird später auf einen Speicherstick ausgelagert.


  <nowiki># mkdir -p /opt/var/log/fhem</nowiki>
  <nowiki># mkdir -p /opt/var/log/fhem</nowiki>
== Installieren ==
== Installieren ==
  <nowiki># make install-pgm2</nowiki>
  <nowiki># make install-pgm2</nowiki>
== Pfad von perl in fhem.pl anpassen ==
== Pfad von Perl in fhem.pl anpassen ==
  <nowiki># vi /opt/bin/fhem.pl
  <nowiki># vi /opt/bin/fhem.pl
#!/opt/bin/perl</nowiki>
  #!/opt/bin/perl</nowiki>
== Konfigfile nach /opt/etc kopieren und editieren ==
== Configfile nach /opt/etc kopieren und editieren ==
  <nowiki># cp /opt/var/log/fhem/fhem.cfg /opt/etc/fhem.cfg
  <nowiki># cp /opt/var/log/fhem/fhem.cfg /opt/etc/fhem.cfg
#vi /opt/etc/fhem.cfg
  #vi /opt/etc/fhem.cfg
attr global logfile /opt/var/log/fhem/fhem-%Y-%V.log
  attr global logfile /opt/var/log/fhem/fhem-%Y-%V.log
attr global statefile /opt/var/log/fhem/fhem.savestate
  attr global statefile /opt/var/log/fhem/fhem.savestate
define CUL CUL /dev/usb/ttyUSB0 &lt;Hauscode&gt;</nowiki>
  define CUL CUL /dev/usb/ttyUSB0 &lt;Hauscode&gt;</nowiki>
== Probeweise starten ==
== Probeweise starten ==
  <nowiki># /opt/bin/fhem.pl /opt/etc/fhem.cfg</nowiki>
  <nowiki># /opt/bin/fhem.pl /opt/etc/fhem.cfg</nowiki>
Zeile 135: Zeile 136:
  <nowiki># killall fhem.pl</nowiki>
  <nowiki># killall fhem.pl</nowiki>
= Logfiles auf USB-Stick auslagern =
= Logfiles auf USB-Stick auslagern =
== Stick anstöpseln und prüfen, wo er gemounted wurde ==
== Stick einstecken und prüfen, wo er gemounted wurde ==
  <nowiki># mount|grep vfat
  <nowiki># mount|grep vfat
/dev/sdu on /share/external/sdu type vfat</nowiki>
  /dev/sdu on /share/external/sdu type vfat</nowiki>
== Lokale Logfiles verschieben und verlinken ==
== Lokale Logfiles verschieben und verlinken ==
  <nowiki># cd /opt/var/log
  <nowiki># cd /opt/var/log
# cp -r fhem /share/external/sdu
  # cp -r fhem /share/external/sdu
# mv fhem fhem.local
  # mv fhem fhem.local
# ln -s /share/external/sdu/fhem</nowiki>
  # ln -s /share/external/sdu/fhem</nowiki>
= Autostart und Stop einrichten =
= Autostart und Stop einrichten =
== Startskript anlegen ==
== Startskript anlegen ==
  <nowiki># vi /share/HDA_DATA/.qpkg/Optware/optstart.sh</nowiki>
  # vi /share/HDA_DATA/.qpkg/Optware/optstart.sh
<nowiki>#!/bin/sh
 
<pre>#!/bin/sh
# wait for optware init
# wait for optware init
while ( test -z &quot;$(grep /opt/bin /etc/profile)&quot; ); do sleep 10; done
while ( test -z &quot;$(grep /opt/bin /etc/profile)&quot; ); do sleep 10; done
Zeile 171: Zeile 173:
   &#160;;;
   &#160;;;
  esac
  esac
done</nowiki>
done</pre>
=== Startskript ausführbar machen ===
=== Startskript ausführbar machen ===
  <nowiki># chmod a+x optstart.sh</nowiki>
  # chmod a+x optstart.sh
== Und noch einmal als Stopskript mit kleinen Änderungen ==
 
  <nowiki># cp optstart.sh optstop.sh
== Und noch einmal als Stop-Skript mit kleinen Änderungen ==
# chmod a+x optstop.sh</nowiki>
  # cp optstart.sh optstop.sh
<nowiki>#!/bin/sh
# chmod a+x optstop.sh
 
<pre>#!/bin/sh
# Execute all kill scripts in /opt/etc/init.d
# Execute all kill scripts in /opt/etc/init.d
# executing them in numerical order.
# executing them in numerical order.
Zeile 198: Zeile 202:
   &#160;;;
   &#160;;;
  esac
  esac
done</nowiki>
done</pre>
== Start- und Stopskript aus Optware-ipkg.sh heraus aufrufen ==
 
== Start- und Stop-Skript aus Optware-ipkg.sh heraus aufrufen ==
  <nowiki># cd /etc/init.d
  <nowiki># cd /etc/init.d
# vi Optware-ipkg.sh
  # vi Optware-ipkg.sh
Die Sektion in start/stop folgendermassen anpassen
  Die Sektion in start/stop folgendermassen anpassen
 
 
case &quot;$1&quot; in
  case &quot;$1&quot; in
start)
  start)
    /bin/echo &quot;Enable Optware/ipkg&quot;
      /bin/echo &quot;Enable Optware/ipkg&quot;
    # sym-link $QPKG_DIR to /opt
      # sym-link $QPKG_DIR to /opt
    /bin/rm -rf /opt
      /bin/rm -rf /opt
    /bin/ln -sf $QPKG_DIR /opt
      /bin/ln -sf $QPKG_DIR /opt
    # adding Ipkg apps into system path ...
      # adding Ipkg apps into system path ...
    /bin/cat /etc/profile | /bin/grep &quot;PATH&quot; | /bin/grep &quot;/opt/bin&quot; \
      /bin/cat /etc/profile | /bin/grep &quot;PATH&quot; | /bin/grep &quot;/opt/bin&quot; \
1&gt;&gt;/dev/null 2&gt;&gt;/dev/null
  1&gt;&gt;/dev/null 2&gt;&gt;/dev/null
    [ $? -ne 0 ] &amp;&amp; /bin/echo &quot;export PATH=$PATH&quot;:/opt/bin:/opt/sbin \
      [ $? -ne 0 ] &amp;&amp; /bin/echo &quot;export PATH=$PATH&quot;:/opt/bin:/opt/sbin \
&gt;&gt; /etc/profile
  &gt;&gt; /etc/profile
    if [ -x /opt/optstart.sh ]; then
      if [ -x /opt/optstart.sh ]; then
        /opt/optstart.sh
          /opt/optstart.sh
      fi
      &#160;;;
  stop)
      /bin/echo &quot;Disable Optware/ipkg&quot;
      if [ -x /opt/optstop.sh ]; then
          /opt/optstop.sh
      fi
      export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
      /bin/sync
      /bin/sleep 1
      &#160;;;</nowiki>
== FHEM Init-Skript anlegen ==
<nowiki># cp /share/HDA_DATA/Public/TS109/fhem-4.8/contrib/init-skripts/fhem.2 \
  /opt/etc/init.s/init_fhem
  # vi /opt/etc/init.d/init_fhem
  #!/bin/sh
  # by Matthias Bauer
  case &quot;$1&quot; in
  start)
    echo &quot;Starting $0&quot;
    /opt/bin/fhem.pl /opt/etc/fhem.cfg
    &#160;;;
  stop)
    echo &quot;Stopping $0&quot;
    /opt/bin/fhem.pl 7072 shutdown
    &#160;;;
  status)
    cnt=`ps -ef | grep &quot;fhem.pl&quot; | grep -v grep | wc -l`
    if [ &quot;$cnt&quot; -eq &quot;0&quot; ]&#160;; then
    echo &quot;$0 is not running&quot;
    else
    echo &quot;$0 is running&quot;
     fi
     fi
     &#160;;;
     &#160;;;
stop)
   *)
    /bin/echo &quot;Disable Optware/ipkg&quot;
    echo &quot;Usage: $0 {start|stop|status}&quot;
    if [ -x /opt/optstop.sh ]; then
  exit 1
        /opt/optstop.sh
  esac
    fi
  exit 0</nowiki>
    export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
    /bin/sync
    /bin/sleep 1
    &#160;;;</nowiki>
== FHEM Initskript anlegen ==
<nowiki># cp /share/HDA_DATA/Public/TS109/fhem-4.8/contrib/init-skripts/fhem.2 \
/opt/etc/init.s/init_fhem
# vi /opt/etc/init.d/init_fhem
#!/bin/sh
# by Matthias Bauer
case &quot;$1&quot; in
start)
  echo &quot;Starting $0&quot;
  /opt/bin/fhem.pl /opt/etc/fhem.cfg
  &#160;;;
stop)
  echo &quot;Stopping $0&quot;
  /opt/bin/fhem.pl 7072 shutdown
  &#160;;;
status)
  cnt=`ps -ef | grep &quot;fhem.pl&quot; | grep -v grep | wc -l`
  if [ &quot;$cnt&quot; -eq &quot;0&quot; ]&#160;; then
   echo &quot;$0 is not running&quot;
  else
  echo &quot;$0 is running&quot;
  fi
  &#160;;;
*)
  echo &quot;Usage: $0 {start|stop|status}&quot;
exit 1
esac
exit 0</nowiki>
=== Ausführbar machen und Links anlegen ===
=== Ausführbar machen und Links anlegen ===
  <nowiki># chmod u+x init_fhem
  <nowiki># chmod u+x init_fhem
# ln -s init_fhem S30fhem
  # ln -s init_fhem S30fhem
# ln -s init_fhem K10fhem</nowiki>
  # ln -s init_fhem K10fhem</nowiki>
== Startskript zum Laden der Usb-serial Kernel Module anlegen ==
== Startskript zum Laden der USB-Serial Kernel Module anlegen ==
  <nowiki># vi S01kernel-modules
  <nowiki># vi S01kernel-modules
#!/bin/sh
  #!/bin/sh
ln -s /opt/lib/modules/2.6.12.6-arm1/kernel /lib/modules
  ln -s /opt/lib/modules/2.6.12.6-arm1/kernel /lib/modules
insmod /lib/modules/kernel/drivers/usb/serial/usbserial.ko vendor=0x03eb product=0x204b
  insmod /lib/modules/kernel/drivers/usb/serial/usbserial.ko vendor=0x03eb product=0x204b
insmod /lib/modules/kernel/drivers/usb/serial/ftdi_sio.ko
  insmod /lib/modules/kernel/drivers/usb/serial/ftdi_sio.ko
insmod /lib/modules/kernel/drivers/usb/serial/pl2303.ko</nowiki>
  insmod /lib/modules/kernel/drivers/usb/serial/pl2303.ko</nowiki>
=== Ausführbar machen ===
=== Ausführbar machen ===
  <nowiki># chmod u+x S01kernel-modules</nowiki>
  <nowiki># chmod u+x S01kernel-modules</nowiki>
Zeile 275: Zeile 280:


[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]
[[Kategorie:Glossary]]
[[Kategorie:Server Hardware]]

Aktuelle Version vom 6. Juni 2021, 21:27 Uhr

Info green.pngErgänzungen und Aktualisierungen in Thema bitte beachten!

Installation von FHEM auf einem QNAP NAS

Diese Anleitung beschreibt detailiert, wie FHEM auf einer QNAP Turbo Station TS-109 II pro installiert werden kann. Im wesentlichen wird die Vorgehensweise auch für weitere QNAP NAS gelten.


Überblick

Die aktuelle QNAP Firmware 3.1.0 Build 0708 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 bein Booten des NAS
  • Geordnetes Runterfahren von FHEM beim Herunterfahren des NAS

Installation des QPKG Paketes Optware IPKG

Über die NAS Web-Administration kann das Optware IPKG Paket Optware_0.99.163_arm-x09.qpkg Installiert werden. In dem Paket für die TS-109 sind leider einige Fehler enthalten, die im folgenden korrigiert werden. Diese und alle weiteren Eingaben sind auf der Kommandozeile durchzuführen.

Anpassen der ipkg Konfiguration

Namen der Konfigurationsfiles korrigieren

# cd /share/HDA_DATA/.qpkg/Optware/etc/ipkg
  # mv tsx19-kmod.conf tsx09-kmod.conf
  # mv tsx19.conf tsx09.conf

Repository für ipkg Pakete korrigieren

# vi tsx09-kmod.conf
  Ändern von
  src tsx19 http://ipkg.nslu2-linux.org/feeds/optware/tsx19/cross/unstable
  in
  src tsx09 http://ipkg.nslu2-linux.org/feeds/optware/tsx09/cross/stable

Repository für die ipkg Kernel Module korrigieren

# vi tsx09.conf
  Ändern von
  src cs08q1armel http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable
  in
  src cs05q3armel http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/unstable

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.

# cd /share/HDA_DATA/.qpkg/Optware/etc
  # vi ipkg.conf
  Hinzufügen von 
  dest opt /opt

Anpassen des Paketnamens

Es muss überall Optware-ipkg heissen.

# cd /share/HDA_DATA/.qpkg/Optware
  # mv Optware.sh Optware-ipkg.sh
  # vi Optware-ipkg.sh
  Ändern von
  QPKG_NAME=“Optware“
  in
  QPKG_NAME=“Optware-ipkg“

Optware „mounten“

# /share/HDA_DATA/.qpkg/Optware/Optware-ipkg.sh restart

Zusätzliche Software installieren

Nun können die für FHEM benötigten Pakete per ipkg installiert werden.

Paketliste aktualisieren

# ipkg update

Kernel Module für USB-Serial Hardware

Das usbserial Modul unterstützt diverse USB nach seriell Wandler. Für ein CUL sind keine weiteren Kernel Module nötig. Ein FHT-1000 benötigt zusätzlich des ftdi-sio Modul. Eine Reihe von günstigen USB nach seriell Adapterkabel benutzen den Proliftic PL-2303 Chip. Hierfür ist ebenfalls ein weiteres Modul nötig. Über ein solches Kabel ist dann Beispielsweise ein ELV M232 Modul anzuschliessen. Neben den Kernel Modulen habe ich noch die libusb installiert. Die benötige ich später einmal um einen IOWarrior anzusprechen.

Bei den Kernel Modulen beachten, dass diese nach /opt installiert werden.Sonst sind sie nach dem nächsten Reboot weg.

# ipkg -d opt install ts209-kernel-module-usbserial
  # ipkg install -d opt ts209-kernel-module-ftdi-sio
  # ipkg install -d opt ts209-kernel-module-pl2303
  # ipkg install libusb

Kernel Module linken

# ln -s /opt/lib/modules/2.6.12.6-arm1/kernel /lib/modules

Module laden mit Vendor und Product ID für CUL

# insmod /lib/modules/kernel/drivers/usb/serial/usbserial.ko vendor=0x03eb product=0x204b
  # insmod /lib/modules/kernel/drivers/usb/serial/ftdi_sio.ko
  # insmod /lib/modules/kernel/drivers/usb/serial/pl2303.ko

Nun kann man den CUL anstöpseln und prüfen, ob er erkannt wurde

# cd /usr/local/share    # hier liegt usb.ids
  # lsusb
  Sollte u.A. folgendes ausgeben ... 
  ID 03eb:204b Atmel Corp.
  # dmesg
  Sollte folgendes ausgeben ...
  usbserial_generic 2-1.4:1.1 Generic converter detected
  usb 2-1.4: Generic converter now attached to ttyUSB0

Benötigte Pakete für FHEM installieren

# ipkg install perl perl-device-serialport
  # ipkg install make                # für die fhem Installation
  # ipkg install gcc                # richtige libgcc für perl
  # ipkg install gnuplot              # optional, falls lediglich plotmode SVG verwendet

FHEM installieren

FHEM am PC downloaden und in ein QNAP Public Verzeichnis auspacken z.B.

/share/HDA_DATA/Public/TS109/fhem-4.8

Ins Download Verzeichnis wechseln

# cd /share/HDA_DATA/Public/TS109/fhem-4.8

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

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

Logverzeichnis anlegen

Dieses Verzeichnis wird später auf einen Speicherstick ausgelagert.

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

Installieren

# make install-pgm2

Pfad von Perl in fhem.pl anpassen

# vi /opt/bin/fhem.pl
  #!/opt/bin/perl

Configfile nach /opt/etc kopieren und editieren

# cp /opt/var/log/fhem/fhem.cfg /opt/etc/fhem.cfg
  #vi /opt/etc/fhem.cfg
  attr global logfile /opt/var/log/fhem/fhem-%Y-%V.log
  attr global statefile /opt/var/log/fhem/fhem.savestate
  define CUL CUL /dev/usb/ttyUSB0 <Hauscode>

Probeweise starten

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

Stoppen

# killall fhem.pl

Logfiles auf USB-Stick auslagern

Stick einstecken und prüfen, wo er gemounted wurde

# mount|grep vfat
  /dev/sdu on /share/external/sdu type vfat

Lokale Logfiles verschieben und verlinken

# cd /opt/var/log
  # cp -r fhem /share/external/sdu
  # mv fhem fhem.local
  # ln -s /share/external/sdu/fhem

Autostart und Stop einrichten

Startskript anlegen

# vi /share/HDA_DATA/.qpkg/Optware/optstart.sh
#!/bin/sh
# wait for optware init
while ( test -z "$(grep /opt/bin /etc/profile)" ); do sleep 10; done
# get new PATH
source /etc/profile
# Execute all start scripts in /opt/etc/init.d
# executing them in numerical order.
#
for i in /opt/etc/init.d/S??* ;do
  # Ignore dangling symlinks (if any).
  #[ ! -f "$i" ] && continue
  case "$i" in
 *.sh)
  # Source shell script for speed.
  (
  trap - INT QUIT TSTP
  set start
  . $i
  )
   ;;
 *)
  # No sh extension, so fork subprocess.
  $i start
   ;;
 esac
done

Startskript ausführbar machen

# chmod a+x optstart.sh

Und noch einmal als Stop-Skript mit kleinen Änderungen

# cp optstart.sh optstop.sh
# chmod a+x optstop.sh
#!/bin/sh
# Execute all kill scripts in /opt/etc/init.d
# executing them in numerical order.
#
for i in /opt/etc/init.d/K??* ;do
  # Ignore dangling symlinks (if any).
  #[ ! -f "$i" ] && continue
  case "$i" in
 *.sh)
  # Source shell script for speed.
  (
  trap - INT QUIT TSTP
  set stop
  . $i
  )
   ;;
 *)
  # No sh extension, so fork subprocess.
  $i stop
   ;;
 esac
done

Start- und Stop-Skript aus Optware-ipkg.sh heraus aufrufen

# cd /etc/init.d
  # vi Optware-ipkg.sh
  Die Sektion in start/stop folgendermassen anpassen
  
  case "$1" in
   start)
      /bin/echo "Enable Optware/ipkg"
      # sym-link $QPKG_DIR to /opt
      /bin/rm -rf /opt
      /bin/ln -sf $QPKG_DIR /opt
      # adding Ipkg apps into system path ...
      /bin/cat /etc/profile | /bin/grep "PATH" | /bin/grep "/opt/bin" \
   		1>>/dev/null 2>>/dev/null
      [ $? -ne 0 ] && /bin/echo "export PATH=$PATH":/opt/bin:/opt/sbin \
  		>> /etc/profile
      if [ -x /opt/optstart.sh ]; then
          /opt/optstart.sh
      fi
       ;;
   stop)
      /bin/echo "Disable Optware/ipkg"
      if [ -x /opt/optstop.sh ]; then
          /opt/optstop.sh
      fi
      export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
      /bin/sync
      /bin/sleep 1
       ;;

FHEM Init-Skript anlegen

# cp /share/HDA_DATA/Public/TS109/fhem-4.8/contrib/init-skripts/fhem.2 \
  	/opt/etc/init.s/init_fhem
  # vi /opt/etc/init.d/init_fhem
  #!/bin/sh
  # by Matthias Bauer
  case "$1" in
   start)
    echo "Starting $0"
    /opt/bin/fhem.pl /opt/etc/fhem.cfg
     ;;
   stop)
    echo "Stopping $0"
    /opt/bin/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

Ausführbar machen und Links anlegen

# chmod u+x init_fhem
  # ln -s init_fhem S30fhem
  # ln -s init_fhem K10fhem

Startskript zum Laden der USB-Serial Kernel Module anlegen

# vi S01kernel-modules
  #!/bin/sh
  ln -s /opt/lib/modules/2.6.12.6-arm1/kernel /lib/modules
  insmod /lib/modules/kernel/drivers/usb/serial/usbserial.ko vendor=0x03eb product=0x204b
  insmod /lib/modules/kernel/drivers/usb/serial/ftdi_sio.ko
  insmod /lib/modules/kernel/drivers/usb/serial/pl2303.ko

Ausführbar machen

# chmod u+x S01kernel-modules

Reboot und Test

Viel Spass

TorstenS 06.03.2010