Debian SisPM

Aus Wiki
Zur Navigation springen Zur Suche springen

Einleitung

Von der Firma Gembird gibt es eine Schaltbare Steckdosenleiste (Sis-PM / SIS-PMS : [1]), die mittels USB-Port angesteuert werden kann. Diese enthält 6 Steckdosen, wobei vier davon unabhängig voneinander via USB ein/ausgeschaltet werden können. Weiterhin enthält sie einen Überspannungsschutz für die angeschlossenen Geräte.

Zur Ansteuerung der Leiste liegt eine Windows-Software bei. Im Internet: gibt es unter: http://sispmctl.sourceforge.net die unter Open Source (GPL) stehende Linux-Software sispmctl, die sowohl im Quelltext, als auch als Debian Paket verfügbar ist. Da der Version des Debian-Paketes das Web-Interface fehlt, wird im folgenden sispmctl selbst kompiliert und installiert.

Ideale Anwendungen:

  • Automatisches → Backup, bei dem die Backup Festplatte automatisch eingeschaltet und nach dem Backup wieder ausgeschaltet wird.
  • → Drucker für einen Ausdruck automatisch einschalten und nach einer gewissen Wartezeit wieder ausschalten


Voraussetzung:


Installation

apt-get install libusb-dev adduser sudo
mkdir -p /usr/local/src
cd /usr/local/src
wget http://downloads.sourceforge.net/sispmctl/sispmctl-3.0.tar.gz
tar xzvf sispmctl-3.0.tar.gz
cd sispmctl-3.0
./configure 
make
make install


Funktionstest

Test mit:

sispmctl -s

Statusinformationen zum gefundenen Gembird SIS-PM werden ausgegeben

sispmctl -o all

Alle Steckdosen werden eingeschaltet

sispmctl -f all

Alle Steckdosen aus


Benutzung

Einschalten von Steckdosen:

sispmctl -o 1|2|3|4|all

Ausschalten von Steckdosen:

sispmctl -f 1|2|3|4|all

z.B.

sispmctl -o 3    (schaltet Steckdose 3 ein)
sispmctl -f all  (schaltet alle Steckdosen aus)

Falls mehrere Gembird Devices am Rechner hängen, kann die Devicenummer (1,2,..) mittels Option -d angegeben werden:

sispmctl -d 1-o all (schaltet alle Steckdosen des ersten Device ein)
sispmctl -d 3 -f all (schaltet alle Steckdosen von Device 3 aus)


Optional: SIS PM mit User Rechten

Bisher ist lediglich der Superuser root berechtigt, die Steckdose zu schalten. Falls die Steckdosenleiste auch von "normalen" Usern (die im nächsten Abschnitt beschriebene Weboberfläche läuft auch mit Userrechten, anstatt mit root-Rechten) bedient werden soll, müssen noch einige Userrechte angepasst werden.

Anlegen eines Users und zugehöriger Gruppe sispm:

useradd --system --user-group --shell /bin/false sispm

User der Gruppe sispm zufügen: User root und sispmder Gruppe sispm zufügen, sodass diese Zugriff auf die Steckdosenleiste haben.

adduser root sispm
adduser sispm sispm

UDEV-Rule anlegen:

vi /etc/udev/rules.d/74-sispmctl.rules

Folgendes einfügen:

### SiS-PM Gembirds (Gembird Silver Shield power outlets controlled by sispmctl):
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="fd1[0-3]", GROUP="sispm", MODE="0660"

Damit die UDev-Regeln angewendet werden, die Steckdosenleiste kurz vom USB-Port trennen und wieder anstecken.

Check des Zugriffs mit Userrechten (User sispm):

sudo -u sispm sispmctl -s

Es muß die Serialnummer der Steckdosenleiste ausgegeben werden. Falls "USB set configuration could not set config 1: Operation not permitted" ausgegeben wird ist bei der Konfiguration etwas schief gegangen.


Optional: Webserver

Das Programm sispmctl enthält einen einfachen, integrierten Webserver, der standardmäßig auf dem Port 2638 auf Anfragen lauscht. Dieser Webserver ermöglicht es, Schaltbefehle per Webbrowser auszführen. Der Webserver bietet leider (noch) keinerlei Möglichkeit der Authorisierung. Aus diesem Grund sollte der Webserver nur aus dem lokalen LAN verwendet werden und nicht aus dem Internet, da jeder, der die URL kennt, anonsten die angeschlossenen Geräte ein- und ausschalten könnte. Voraussetzung:

  • SIS PM wurde konfiguriert, um mit Userrechten bedient zu werden (siehe vorhergehender Abschnitt).

Anpassung der Zuordnung der Geräte zu den 4 Steckdosen

Standardmäßig sind die 4 Buttons in der Weboberfläche durchnummeriert (Socket 1 bis Socket 4). Durch editieren des HTML-Files können aber auch die angeschlossenen Geräte ausgegeben werden, was die Zuordnung erheblich vereinfacht.

vi /usr/local/share/httpd/sispmctl/doc/index.html

Die Zeilen mit Socket 1 bis Socket 4:

Socket 1 Socket 2 Socket 3 Socket 4

durch die gewünschte Bezeichnung in der Weboberfläche ersetzen, z.B.

Laserdrucker Scanner unbenutzt Festplatte


Startscript

Wenn der Webserver mit dem Kommando 'sispmctl -l' gestartet wird, blockiert er das Putty-Fenster, und sobald dieses geschlossen wird, ist der SIS-PM Webserver nicht mehr erreichbar, da er mit beendet wird. Deshalb muß noch ein Startscript angelegt werden, das den Webserver automatisch beim Systemstart mitstartet:

vi /etc/init.d/sispm_web

Folgende Zeilen einfügen:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          sispm_web
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Should-Start:      $syslog
# Should-Stop:       $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop sispm_web
# Description:       Start/stop SisPM Webinterface
### END INIT INFO

START="yes"
DAEMON=/usr/local/bin/sispmctl
OPTIONS="-l"
PIDFILE=/var/run/sispm.pid
USER="sispm"
GROUP="sispm"

if [ "$START" != "yes" ]; then
   echo "To enable Webinterface edit $1 and set START=yes"
   return 0
fi

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

start()
{
  echo -n "Starting SIS-PM Webinterface..."

  #Check, if running
  start-stop-daemon --chuid $USER --group $GROUP --background --make-pidfile --pidfile $PIDFILE \
  --start --test --exec $DAEMON -- $OPTIONS  > /dev/null
  if [ "$?" -ne 0 ]; then
     echo "   [already running]"
     return 1
  fi

  #Start
  start-stop-daemon --chuid $USER --group $GROUP --background --make-pidfile --pidfile $PIDFILE \
  --start --exec $DAEMON -- $OPTIONS > /dev/null
  if [ "$?" -ne 0 ]; then
     echo "    [failed]"
     return 1
  fi
  echo "    [ok]"
  return 0
}

stop()
{
  echo -n "Stopping SIS-PM Webinterface..."
  start-stop-daemon --chuid $USER --group $GROUP --pidfile $PIDFILE --stop --exec $DAEMON
  if [ "$?" -eq 2 ]; then
     echo "    [failed]"
     return 2
  fi
  if [ "$?" -eq 1 ]; then
     echo "    [not running]"
     return 1
  fi
  rm -f $PIDFILE
  echo "    [ok]"
  return 0
}

case "$1" in
  start)
       start
       ;;
  stop)
       stop
       ;;
  restart|reload)
       stop
       start
       ;;
  *)
      echo "Usage: $0 {start|stop|restart|reload}"
      exit 3
esac

Startscript ausführbar machen:

chmod +x /etc/init.d/sispm_web


Start des Webservers

Der Webserver wird mittels eben angelegtem Startscript gestartet:

/etc/init.d/sispm_web start


Funktionstest

Webbrowser öffnen und Adresse http://IP_des_Servers:2638 eingeben. Es sollte die Webpage der SIS-PM angezeigt werden. Testweise einige Schaltbefehle durch anklicken der jeweiligen Schaltflächen ausführen.


Start beim Systemstart

Nach erfolgreichem Funktionischeck des Webservers, kann dieser konfiguriert werden, damit er beim Systemstart mit gestartet wird:

update-rc.d sispm_web defaults


Anwendung: Schalten eines Gerätes vom Windows-PC

Wenn auf dem Windows-PC Putty installiert ist (→ siehe hier), dann kann mit einer Verknüpfung ein Gerät ein und mit einer zweiten wieder ausgeschaltet werden. Zusammen mit Putty wurde das Programm plink.exe installiert, welches diese Funktion ermöglicht.

Voraussetzung:


Verknüpfung zum Einschalten des Gerätes (z.B. Drucker):

  • Verknüpfung zu plink.exe (z.B. in C:\Programme\Putty\plink.exe) erstellen
  • Die Verknüpfung umbenennen und einen sinnvollen Namen geben, z.B. Drucker_ein
  • Die Verknüpfung mit der rechten Maustaste anklicken und Eigenschaften auswählen
  • Im Eingabefeld Ziel (nach plink.exe) die Bezeichnung der SSH-Verbindung (die in Putty angelegt wurde) und den Befehl "sispmctl -o Steckdosennummer" anhängen.
Z.B. um die Steckdose 1 über die Putty-SSH-Verbindung Debian_Server einzuschalten:
C:\Programme\Putty\plink.exe Debian_Server sispmctl -o 1
  • Änderungen mit OK speichern


Verknüpfung zum Ausschalten des Gerätes (z.B. Drucker):

  • Verknüpfung zu plink.exe (z.B. in C:\Programme\Putty\plink.exe) erstellen
  • Die Verknüpfung umbenennen und einen sinnvollen Namen geben, z.B. Drucker_aus
  • Die Verknüpfung mit der rechten Maustaste anklicken und Eigenschaften auswählen
  • Im Eingabefeld Ziel (nach plink.exe) die Bezeichnung der SSH-Verbindung (die in Putty angelegt wurde) und den Befehl "sispmctl -f Steckdosennummer" anhängen.
Z.B. um die Steckdose 1 über die Putty-SSH-Verbindung Debian_Server auszuschalten:
C:\Programme\Putty\plink.exe Debian_Server sispmctl -f 1
  • Änderungen mit OK speichern