Ankündigung

Einklappen
Keine Ankündigung bisher.

IGEL Thin Client Alternative, Anleitung für Debian, eibd, sh.py, smartVISU komplett

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Handbuch] IGEL Thin Client Alternative, Anleitung für Debian, eibd, sh.py, smartVISU komplett

    Anleitung zur Installation von Smarthome.py und Smartvisu auf einem IGEL Thin Client

    Da ja diverse Einplatinen Computer schnell an ihre Grenzen kommen habe ich eine Alternative gefunden welche super funktioniert, sehr schnell ist, oft günstiger und sogar noch eine PCI Anschluss hat. Stromverbrauch liegt übrigens weit unter 10Watt.

    Ich habe mir einen IGEL Thin Client mit 1,4 GHZ für 33 Euro in der Bucht besorgt.
    Dazu noch eine Sandisk Compact Flash Speicherkarte Extreme 8GB 60MB Edition für 28 Euro von Amazon. (Es reicht auch eine normale mit 4GB, denn alles in allem brauchen wir so ca. 1,7GB aber so hat man noch etwas Reserve für ggf. zusätzliche Aufgaben.) Macht also 61 Euro und alles ist in einem Gehäuse, natürlich Lüfter frei.


    Zum öffnen des Gehäuses hinten die Schrauben lösen (Seite: Maus Anschluss) und das Oberteil nach hinten ziehen.
    Ich habe erst einmal den Card Reader ausgebaut, denn der braucht nur Strom und wir benötigen den nicht.Um an die CF Card ran zukommen muss der sowieso raus.

    Los gehts mit der

    Flash Card

    Die FlashCard (also die SanDisk Extreme 60MB/s 8GB) mit z.B. Windows über einen Cardreader mit Fat32 formatieren (Schnellformatierung reicht aus).

    Danach besorgen wir uns über die
    Unetbootin Homepage das sehr hilfreiche Programm für Windows. Nach dem Download starten wir Unetbootin. Wir wählen als Distribution Debian mit der Stable Netinstall. Unten dann das Laufwerk mit der CF Card und OK klicken. Somit wird ein eine bootbare CF Card erstellt und alles andere wird dann aus dem Netz nachinstalliert.

    An den ordnungsgemäß verschlossenen Igel schliessen wir nun das Netzwerkkabel, die Tastatur, den VGA Monitor und zum Schluss das Stromkabel an.

    BIOS


    Während der IGEL startet drücken wir mehrmals ENTF auf der Tastatur. Damit gelangen wir ins BIOS.
    Für eine ordentliche Ausgangsposition laden wir die optimalen BIOS Einstellungen. Dort nehmen wir diverse Einstellungen vor, um uns das Leben mit dem ThinClient und der nun folgenden Debian Installation zu erleichtern.


    !Bitte ein korrektes Datum samt Uhrzeit im BIOS einstellen, sonst kommt es im Verlauf der Installation u.U. zu Problemen und Fehlermeldungen!

    Zuerst einmal soll der Igel natürlich später ohne Tastatur booten. Dazu stellen wir in den Standard CMOS Features die Position Halt On auf No Errors
    Damit der IGEL bei einem Stromausfall später wieder automatisch startet, stellen wir im Punkt Power Management Setup das AC Loss Auto Restart auf ON

    Weiterhin stellen wir Shared Memory der Grafikkarte auf 16MB.
    Ebenso stellen wir die Grafikausgabe auf CRT, um Fehler bei der Anzeige zu vermeiden.
    Einstellungen speichern und das BIOS verlassen.

    Debian

    Der Igel startet von der CF Karte die Debian Installation.
    Nun die verschiedenen Sprachen auswählen und immer OK (Enter).
    Debian fragt nach Sprache (German), Standort (Deutschland), Tastaturbelegung (Deutsch), Namen des Rechners im Netz (variabel, z.B. EIBServer), Domainname (variabel, z.B. .igel_eib), usw.. Festplatte partitionieren (geführt, vollständige Festplatte verwenden), Festplatte auswählen (Enter), Art der Partitionierung (alle Dateien auf eine Partition, für Anfänger), Partitionierung (alles mit Ja bestätigen bzw. Entertaste) , Änderungen schreiben (JA).
    Nach dem das Grundsystem installiert wurde, das Passwort für den root Benutzer vergeben. Es sollte sicher sein. Bitte aufschreiben!
    Danach noch den Benutzernamen
    smarthome samt Passwort vergeben. Bitte aufschreiben!
    Danach noch den Standard Spiegelserver in Deutschland wählen.
    Proxy Abfrage leer lassen. OK.
    An der Paketverwendungsaktion nicht teilnehmen OK.
    Bei der Softwareauswahl mit Space alles deaktivieren außer SSH Server. Genügt.
    Grub Bootloader in Master Boot Record schreiben. Natürlich.
    System neu starten lassen.

    Debian ist standardmäßig für Erhalt einer IP im Netz per DHCP konfiguriert. Die von eurem Router zugewiesene IP könnt ihr mit folgendem Befehl erfahren. (brauchen wir im nächsten Kapitel für Putty)
    Code:
    ifconfig


    Putty

    Fernbedienung via SSH
    Ladet euch auf einem Windows Rechner der auch im Netzwerk mit dem Igel hängt Puttyaus dem Netz herunter und startet es. Dort die IP Adresse des Igel eingeben (hat der Befehl ifconf auf dem Bildschirm ja ausgeworfen) und öffnen. (man kann die Einstellungen später auch speichern um die nicht immer neu einzugeben)
    Es kommt eine Abfrage nach dem Schlüssel den mit OK bestätigen.
    Nun öffnet sich ein Fenster, dort gebt ihr
    root ein und Entertaste.
    Nun wird das vorhin vergebene Passwort für
    root abgefragt. Das eingeben. Achtung, dabei erscheinen in der Konsole keine Zeichen oder Platzhalter, das Passwort wird im Hintergrund angenommen.
    Von hier ab kann der Igel ferngesteuert werden egal wo er sich befindet und benötigen keinen Bildschirm und Tastatur am IGEL selber mehr.
    Um z.B. zu sehen was alles für Prozesse auf dem IGEL laufen einfach mal
    top eingeben. Es erscheint eine sich ständig aktualisierende Liste der aktuellen Prozesse. Beendet wird das wieder mit Strg+c.
    Tip
    Putty merkt sich alle Befehle die eingegeben wurden, an die gelangt man über die Pfeil hoch und runter Tasten.
    Um einen Befehl aus z.B. dem Web einzugeben reicht es diesen im Browser zu kopieren und dann in Putty die rechte Maustaste zu drücken.
    Andersrum reicht es in Putty eine Textstelle einfach nur zu markieren, damit ist die schon im Zwischenspeicher (alleine das markieren reicht) und kann dann z.B. in einem Forum ganz normal eingefügt werden.

    Für die Arbeit an Dateien empfehle ich das Programm WinSCP zu verwenden. Auch dort wieder IP Adresse eintragen, root, PW usw. Glaube da muss ich nichts weiter dazu sagen.
    So nun gehts los.

    Debian konfigurieren

    Da es blöd ist, nie zu wissen was DHCP vom Router dem IGEL gerade für eine IP gegeben hat, geben wir dem erst mal eine feste IP Adresse.
    Dazu öffnet ihr per WinSCP die Datei
    /etc/network/interfaces
    Die roten Einträge ändern und mit der festen IP Adresse ersetzen. (z.B. 192.168.0.3)

    Code:
    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
    
    # The loopback network interface
    auto lo
    iface lo inet loopback
    
    # The primary network interface
    allow-hotplug eth0
    # iface eth0 inet dhcp
    
    iface eth0 inet static
      address 192.168.0.3
      netmask 255.255.255.0
      broadcast 192.168.0.255
      gateway 192.168.0.1
    Danach kann man den Igel ruhigen Gewissens einmal rebooten über die Konsole.
    Code:
    shutdown -r now
    Der Igel ist nun unter der Neuen IP Adresse zu erreichen. Bitte beachtet das in Putty und WinSCP.
    So jetzt installieren wir erstmal das was wir alles brauchen, dazu in der Konsole eingeben:
    Code:
    apt-get -y install build-essential cmake make subversion
    apt-get install libxml2-dev liblua5.1-0-dev bin86  libesmtp-dev libcppunit-dev libcurl4-openssl-dev liblog4cpp5-dev liblua5.1-0  liblua50 liblua50-dev liblualib50 liblualib50-dev lua5.1 lua50 sudo apache2 php5 libapache2-mod-php5 rcconf
    
    apt-get install openssh-server openntpd python3 python3-dev python3-setuptools git unzip
    Code:
    easy_install3 pip
    pip install ephem
    eibd

    Erweitern der sources.list.
    Öffnet mit WinSCP

    /etc/apt/sources.list


    und folgenden Zeilen am Ende hinzufügen und speichern.
    Code:
    deb http://www.auto.tuwien.ac.at/~mkoegler/debian eib main
    deb-src http://www.auto.tuwien.ac.at/~mkoegler/debian eib main
    deb http://ppa.launchpad.net/mkoegler/bcusdk/ubuntu oneiric main
    deb-src http://ppa.launchpad.net/mkoegler/bcusdk/ubuntu oneiric main
    Das Repository von der TU Wien ist nur mit einem Key zu nutzen. Den müsst ihr noch installieren. Ihr bekommt ihn hier. Dazu kopiert ihr den Schlüssel in eine Datei beliebigen Namens zB ~root/qw und gebt danach folgendes ein.
    Danach ein
    Code:
    cd ~root
    apt-key add qw
    apt-get update
    
    apt-get install[URL="http://redaktion.knx-user-forum.de/lexikon/eibd/"] eibd[/URL]-clients[URL="http://redaktion.knx-user-forum.de/lexikon/eibd/"] eibd[/URL]-server libeibclient-dev
    zum straten dann
    Code:
    eibd -d -i ipt:192.168.0.3
    Nachdem der eibd jetzt rudimentär läuft wollen wir eibd bei jedem hochfahren des Rechners automatisch starten.
    Dazu nutzen wir die Standard Mechanismen von Debian und erstellen eine Datei /etc/init.d/eibd mit folgendem Inhalt:



    Code:
    #! /bin/sh
     
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    DESC="Description of the service"
    NAME=eibd
    DAEMON=/usr/bin/$NAME
    DAEMON_ARGS="-D -T -S -d -i --pid-file=/var/run/eibd.pid ipt:192.168.0.6"
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
     
    # Exit if the package is not installed
    [ -x "$DAEMON" ] || exit 0
     
    # Read configuration variable file if it is present
    [ -r /etc/default/$NAME ] && . /etc/default/$NAME
     
    # Load the VERBOSE setting and other rcS variables
    . /lib/init/vars.sh
     
    # Define LSB log_* functions.
    # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
    . /lib/lsb/init-functions
     
    #
    # Function that starts the daemon/service
    #
    do_start()
    {
    # Return
    # 0 if daemon has been started
    # 1 if daemon was already running
    # 2 if daemon could not be started
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
    || return 1
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
    $DAEMON_ARGS \
    || return 2
    # Add code here, if necessary, that waits for the process to be ready
    # to handle requests from services started subsequently which depend
    # on this one. As a last resort, sleep for some time.
    }
    #
    # Function that stops the daemon/service
    #
    do_stop()
    {
    # Return
    # 0 if daemon has been stopped
    # 1 if daemon was already stopped
    # 2 if daemon could not be stopped
    # other if a failure occurred
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    # Wait for children to finish too if this is a daemon that forks
    # and if the daemon is only ever run from this initscript.
    # If the above conditions are not satisfied then add some other code
    # that waits for the process to drop all resources that could be
    # needed by services started subsequently. A last resort is to
    # sleep for some time.
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
    [ "$?" = 2 ] && return 2
    # Many daemons don't delete their pidfiles when they exit.
    rm -f $PIDFILE
    return "$RETVAL"
    }
     
    #
    # Function that sends a SIGHUP to the daemon/service
    #
    do_reload() {
    #
    # If the daemon can reload its configuration without
    # restarting (for example, when it is sent a SIGHUP),
    # then implement that here.
    #
    start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
    return 0
    }
     
    case "$1" in
    start)
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
    do_start
    case "$?" in
    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
    stop)
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
    do_stop
    case "$?" in
    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
    #reload|force-reload)
    #
    # If do_reload() is not implemented then leave this commented out
    # and leave 'force-reload' as an alias for 'restart'.
    #
    #log_daemon_msg "Reloading $DESC" "$NAME"
    #do_reload
    #log_end_msg $?
    #;;
    restart|force-reload)
    #
    # If the "reload" option is implemented then remove the
    # 'force-reload' alias
    #
    log_daemon_msg "Restarting $DESC" "$NAME"
    do_stop
    case "$?" in
    0|1)
    do_start
    case "$?" in
    0) log_end_msg 0 ;;
    1) log_end_msg 1 ;; # Old process is still running
    *) log_end_msg 1 ;; # Failed to start
    esac
    ;;
    *)
     
    # Failed to stop
    log_end_msg 1
    ;;
    esac
    ;;
    *)
    #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
    exit 3
    ;;
    esac
    Zeile 6 dazu an das entsprechende Interface anpassen:
    Für KNX via IP: (IP natürlich anpassen)
    Code:
    DAEMON_ARGS="-D -T -S -d -i --pid-file=/var/run/eibd.pid ipt:192.168.0.6"
    Ausführbar machen:
    Code:
    chmod a+x /etc/init.d/eibd
    setzen wir vor der Zeile eibd das entsprechende Häckchen mit Space und beenden mit Return. Evtl. müsst ihr weiter runter scrollen um die Zeile eibd zu finden.
    Code:
    cd /etc/init.d/
    rcconf
    Nach einem Reboot (den ihr bei Linux jetzt im Gegensatz zu Windows nicht braucht) läuft dereibd automatisch.
    test ob Eibd funktioniert (1/0/23 = eine GA eines z.B. Lichtes, die 1 einschalten, 0 wäre dann ausschalten)
    Licht an
    Code:
    groupswrite ip:127.0.0.1 1/0/23 1

    Licht aus:

    Code:
    groupswrite ip:127.0.0.1 1/0/23 0

    Installation Smarthome.py


    Benutzer smarthome bearbeiten:

    Code:
    sudo usermod -G www-data,sudo -a smarthome
    Verzeichnis Smarthome anlegen und Rechte vergeben
    Code:
    cd /usr
    sudo git clone git://github.com/mknx/smarthome.git
    sudo mkdir -p /usr/smarthome/var/run
    sudo chown -R smarthome:smarthome /usr/smarthome
    Notwendige Dateien anlegen wenn noch nicht vorhanden unter /usr/smarthome/etc

    logic.conf (erstmal leer)

    smarthome.conf
    Inhalt:
    Code:
    # /usr/local/smarthome/etc/smarthome.conf
    
    lat = 51.15482
    lon = 13.96297
    elev = 500
    
    tz = 'Europe/Berlin'
     
    plugin.conf
    Inhalt:
    # /usr/local/smarthome/etc/plugin.conf
    [knx]
       class_name = KNX
       class_path = plugins.knx
    #   host = 192.168.0.3
    #   port = 6720
    #   send_time = 600 # update date/time every 600 seconds, default none
    #   time_ga = 1/1/1 # default none
    #   date_ga = 1/1/2 # default none
    
    #[ow]
    #    class_name = OneWire
    #    class_path = plugins.onewire
    #    host = 127.0.0.1
    #    port = 4304
    
    [cli]
        class_name = CLI
        class_path = plugins.cli
        ip = 192.168.0.3
        update = True
    
    [visu]
        class_name = WebSocket
        class_path = plugins.visu
    #   ip='0.0.0.0'
    #   port=2424
    #    visu_dir = /var/www
        smartvisu_dir = /var/www/
    
    [sql]
        class_name = SQL
        class_path = plugins.sqlite
    
    #[rrd]
    #    class_name = RRD
    #    class_path = plugins.rrd
    #    step = 300
    Autostart:
    unter /etc/init.d/ Datei anlegen: smarthome
    mit folgendem Inhalt:
    Code:
    #!/bin/sh
    ### BEGIN INIT INFO
    # Provides:          smarthome
    # Required-Start:    $syslog $network
    # Required-Stop:     $syslog $network
    # Should-Start:     [URL="http://redaktion.knx-user-forum.de/lexikon/eibd/"] eibd[/URL] owserver
    # Should-Stop:      [URL="http://redaktion.knx-user-forum.de/lexikon/eibd/"] eibd[/URL] owserver
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Start[URL="http://redaktion.knx-user-forum.de/lexikon/SmartHome.py/"] SmartHome.[/URL][URL="http://redaktion.knx-user-forum.de/lexikon/py/"]py[/URL]
    ### END INIT INFO
    
    
    DESC="SmartHome.[URL="http://redaktion.knx-user-forum.de/lexikon/py/"]py[/URL]"
    NAME=smarthome.[URL="http://redaktion.knx-user-forum.de/lexikon/py/"]py[/URL]
    SH_ARGS="-q"
    SH_UID='smarthome'
    
    PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
    DAEMON=/usr/smarthome/bin/$NAME
    SCRIPTNAME=/etc/init.d/$NAME
    PIDFILE=/usr/smarthome/var/run/smarthome.pid
    
    [ -x "$DAEMON" ] || exit 0
    [ -r /etc/default/$NAME ] && . /etc/default/$NAME
    
    DAEMON_ARGS="$SH_ARGS"
    
    do_start()
    {
        sudo -u $SH_UID $DAEMON $DAEMON_ARGS
        ps ax | grep $DAEMON | grep -v grep | awk '{print $1}' > $PIDFILE
    }
    do_stop()
    {
        sudo -u $SH_UID $DAEMON --stop
        rm -f $PIDFILE
    }
    
    do_reload() {
        sudo -u $SH_UID $DAEMON --reload
        return 0
    }
    
    case "$1" in
        start)
            do_start
            ;;
        stop)
            do_stop
            ;;
        #reload|force-reload)
            #echo "Reloading $DESC" "$NAME"
            #do_reload
            #log_end_msg $?
            #;;
        restart)
            #
            # If the "reload" option is implemented then remove the
            # 'force-reload' alias
            #
            echo "Restarting $DESC" "$NAME"
            do_stop
            sleep 1
            do_start
            ;;
        *)
            echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
            exit 3
            ;;
    esac
    
    exit 0
    Dateirechte setzen mit:
    Code:
    cd /etc/init.d/
     chmod 755 smarthome
     update-rc.d smarthome defaults

    Smartvisu installieren:


    aktuelle Version
    checken (hier die 2.7, ggf. dann die nummer in den Anweisungen ersetzen) laden und in den Apache entpacken:
    Code:
    cd /var/www
    sudo rm index.html
    sudo wget http://smartvisu.googlecode.com/files/smartVISU_2.7.zip
    sudo unzip smartVISU_2.7.zip
    sudo rm smartVISU_2.7.zip
    Rechte setzen:
    Code:
    sudo chown -R www-data:www-data[URL="http://redaktion.knx-user-forum.de/lexikon/smartVISU/"] smartVISU[/URL]
    sudo chmod -R 775[URL="http://redaktion.knx-user-forum.de/lexikon/smartVISU/"] smartVISU[/URL]

    Hinweis:


    Apache nimmt sich Rechte am Ordner
    icons, daher symlink alias.conf löschen unter:/etc/apache2/mods-enabled

    Viel Spass
    Gruß Haxley




Lädt...
X