Diese Anleitung beschreibt ein komplettes Installieren von Smarthome.py inklusive eibd und SmartVISU.
Benutzt wurde ein Ubuntu 13.10 64 bit. Die Pfade wurden so gewählt dass sie soweit wie möglich der Raspberry PI Installation entsprechen.
Ich habe zum testen ein minimales Ubuntu Server in einer ESXi VM aufgespielt, ohne graphiche Oberfläsche.
Ich habe auch keine Serverdienste bei der install ausgewählt ausser apache webserver.
Da Deutsch für mich eine Fremdsprache ist bin ich dankbar für jede Korrektur. Auch sonstige Anregungen oder Hinweise auf Fehler sind erwünscht.
Ich werde diese Anleitung dann nach und nach anpassen. Ich wusste nicht wohin mit dieser Anleitung, deshalb habe ich sie mal hier gepostet.
Falls jemand einen besseren Ort dafür weiss bin ich Abnehmer.
*** smarthome.py installieren ***
Alle nötigen Packete für smarthome.py installieren
Ab hier hat man am besten sich mit
auf dem SmartHome Server einzuloggen und die folgenden Befehle per copy & paste einzuspielen.
Natürlich <ip_des_servers> ersetzen durch die IP Adresse oder den DNS Namen deines Servers.
Einfach den User benutzen den ihr während der Linux Installation angelegt habt.
Die folgende Zeile wird für neuere Linux Distributionen benötigt. Solltest du mir einer älteren arbeiten bekommst du wahrscheinlich eine Fehlermeldung.
Das benötigte Packet ist dann aber mit grösster Wahrscheinlichkeit sowieso bereits vorhanden.
Benutzer für smarthome anlegen und ihn in die www-data und sudo Gruppen hinzufügen
Verzeichnis für smarthome.py anlegen
Zu smarthome Benutzer wechseln und smarthome.py configurieren
Folgende Kommandos immer von der "cat" Zeile an bis zur Zeile unter "EOL" auswählen und an einem Stück in's ssh pasten.
Alternativ die Dateien mit "nano" oder sonst einem Editor erstellen.
Die smarthome.conf ist natürlich anzupassen. Diese lat / lon Werte werden gebraucht um unter anderem Sonnenaufgang / -untergang zu berechnen.
Der [knx] Teil kann weggelassen werden falls kein KNX / EIB benutzt wird.
Als root Benutzer startup Script anlegen.
Folgenden Inhalt in das Script pasten
Dateirechte richtig setzen und automatisches Starten aktivieren
*** SmartVISU installieren ***
SmartVISU web Dateien installieren. Beim erstellen dieser Anleitung war SmartVISU 2.7b gerade aktuell.
Vor dem installieren auf der Projektseite nachschauen und den Pfad gegebenfalls anpassen.
Rechte und Benutzer richtig setzen
Dann smarthome starten mit
Im Log schauen ob keine Fehlermeldung beim starten geschrieben wurde.
Die einzige die erscheinen darf ist ein Verbindungsproblem mit eibd falls du das aktiviert hast da wir eibd noch nicht installiert haben.
Dann versuchen mit einem Browser von einem anderen Rechner aus aus auf SmartVISU zuzugreifen.
<ip-des-servers> natürlich mit der IP oder dem Name deines SmartVISU Servers ersetzen: http://<ip-des-servers>/smartVISU
Bei "Checking your configuration" sollte alles mit einem grünen Häckchen versehen sein.
Jetzt auf den "Config" Knopf drücken. Damit müsstest du in das SmartVISU Interface gelangen, direkt auf die Config Seite.
Bei I/O Connection "Smarthome.py" auswählen. ACHTUNG: Bei Adresse (URL / IP) die Interface Adresse des Servers eingeben oder den DNS Namen.
Hier NICHT localhost oder 127.0.0.1 eingeben, denn diese Adresse wird vom Client Browser benutzt (Javascripts). Somit muss die Verbindung nicht nur vom SmartVISU Server funktionieren sondern auch von all deinen Geräten von denen aus du SmartVISU benutzen willst.
Dann ganz unten auf "Save" drücken.
Das Anlegen der Items und der Webseiten wird hier nicht beschrieben, das würde dann doch den Rahmen ein bischen sprengen :-)
*** eibd installieren ***
Soll kein KNX / EIB benutzt werden kann dieser Abschnitt natürlich weggelassen werden.
Das Repository für die KNX Packete hinzufügen. Dafür die sources.list Datei editieren
und folgendes am Ende reinpasten und mit ctrl-x speichern
eibd installieren
eibd configurieren
Folgenden Inhalt reinpasten und mit ctrl-x speichern. Natürlich <ip-des-knx-ip-modules> durch die IP des KNX IP Busadapters tauschen.
Als root Benutzer startup Script anlegen.
Folgenden Inhalt in das Script pasten
Dateirechte richtig setzen und automatisches Starten aktivieren
Daemon starten
Jetzt müsste alles installiert sein und alles funktionieren.
Edit1: Tippfehler
Edit2: eibd default settings geändert
Edit3: Tippfehler
Benutzt wurde ein Ubuntu 13.10 64 bit. Die Pfade wurden so gewählt dass sie soweit wie möglich der Raspberry PI Installation entsprechen.
Ich habe zum testen ein minimales Ubuntu Server in einer ESXi VM aufgespielt, ohne graphiche Oberfläsche.
Ich habe auch keine Serverdienste bei der install ausgewählt ausser apache webserver.
Da Deutsch für mich eine Fremdsprache ist bin ich dankbar für jede Korrektur. Auch sonstige Anregungen oder Hinweise auf Fehler sind erwünscht.
Ich werde diese Anleitung dann nach und nach anpassen. Ich wusste nicht wohin mit dieser Anleitung, deshalb habe ich sie mal hier gepostet.
Falls jemand einen besseren Ort dafür weiss bin ich Abnehmer.
*** smarthome.py installieren ***
Alle nötigen Packete für smarthome.py installieren
Code:
sudo apt-get update sudo apt-get install openssh-server openntpd python3 python3-dev python3-setuptools git unzip sudo easy_install3 pip sudo pip install ephem
Code:
ssh <ip_des_servers>
Natürlich <ip_des_servers> ersetzen durch die IP Adresse oder den DNS Namen deines Servers.
Einfach den User benutzen den ihr während der Linux Installation angelegt habt.
Die folgende Zeile wird für neuere Linux Distributionen benötigt. Solltest du mir einer älteren arbeiten bekommst du wahrscheinlich eine Fehlermeldung.
Das benötigte Packet ist dann aber mit grösster Wahrscheinlichkeit sowieso bereits vorhanden.
Code:
sudo apt-get install php5-json
Code:
sudo adduser smarthome sudo usermod -G www-data,sudo -a smarthome
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
Code:
su smarthome cd /usr/smarthome/etc touch logic.conf
Alternativ die Dateien mit "nano" oder sonst einem Editor erstellen.
Die smarthome.conf ist natürlich anzupassen. Diese lat / lon Werte werden gebraucht um unter anderem Sonnenaufgang / -untergang zu berechnen.
Der [knx] Teil kann weggelassen werden falls kein KNX / EIB benutzt wird.
Code:
cat >smarthome.conf <<EOL # smarthome.conf lat = 49.66 lon = 5.91715 elev = 380 tz = 'Europe/Luxembourg' EOL
Code:
cat >plugin.conf <<EOL # plugin.conf [knx] class_name = KNX class_path = plugins.knx host = 127.0.0.1 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 [visu] class_name = WebSocket class_path = plugins.visu smartvisu_dir = /var/www/smartVISU [cli] class_name = CLI class_path = plugins.cli ip = 0.0.0.0 update = True [sql] class_name = SQL class_path = plugins.sqlite EOL
Code:
cd /etc/init.d sudo nano smarthome
Code:
#!/bin/sh ### BEGIN INIT INFO # Provides: smarthome # Required-Start: $syslog $network # Required-Stop: $syslog $network # Should-Start: eibd owserver # Should-Stop: eibd owserver # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start SmartHome.py ### END INIT INFO export LANG=en_US.UTF-8 DESC="SmartHome.py" NAME=smarthome.py 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
Code:
sudo chmod 755 smarthome sudo update-rc.d smarthome defaults
SmartVISU web Dateien installieren. Beim erstellen dieser Anleitung war SmartVISU 2.7b gerade aktuell.
Vor dem installieren auf der Projektseite nachschauen und den Pfad gegebenfalls anpassen.
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
Code:
sudo chown -R www-data:www-data smartVISU sudo chmod -R 775 smartVISU
Code:
/etc/init.d/smarthome start
Die einzige die erscheinen darf ist ein Verbindungsproblem mit eibd falls du das aktiviert hast da wir eibd noch nicht installiert haben.
Code:
tail /usr/smarthome/var/log/smarthome.log
<ip-des-servers> natürlich mit der IP oder dem Name deines SmartVISU Servers ersetzen: http://<ip-des-servers>/smartVISU
Bei "Checking your configuration" sollte alles mit einem grünen Häckchen versehen sein.
Jetzt auf den "Config" Knopf drücken. Damit müsstest du in das SmartVISU Interface gelangen, direkt auf die Config Seite.
Bei I/O Connection "Smarthome.py" auswählen. ACHTUNG: Bei Adresse (URL / IP) die Interface Adresse des Servers eingeben oder den DNS Namen.
Hier NICHT localhost oder 127.0.0.1 eingeben, denn diese Adresse wird vom Client Browser benutzt (Javascripts). Somit muss die Verbindung nicht nur vom SmartVISU Server funktionieren sondern auch von all deinen Geräten von denen aus du SmartVISU benutzen willst.
Dann ganz unten auf "Save" drücken.
Das Anlegen der Items und der Webseiten wird hier nicht beschrieben, das würde dann doch den Rahmen ein bischen sprengen :-)
*** eibd installieren ***
Soll kein KNX / EIB benutzt werden kann dieser Abschnitt natürlich weggelassen werden.
Das Repository für die KNX Packete hinzufügen. Dafür die sources.list Datei editieren
Code:
sudo nano /etc/apt/sources.list
Code:
deb http://www.auto.tuwien.ac.at/~mkoegler/debian eib main deb-src http://www.auto.tuwien.ac.at/~mkoegler/debian eib main
Code:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3CB5CB58 sudo apt-get update sudo apt-get -y --force-yes install bcusdk
Code:
sudo nano /etc/default/eibd
Code:
EIB_ARGS="--daemon --Server --Tunnelling --Discovery --GroupCache --listen-tcp" #EIB_ADDR="0.0.0" EIB_IF="ipt:<ip-des-knx-ip-modules>" EIB_UID="smarthome"
Code:
cd /etc/init.d sudo nano eibd
Code:
#!/bin/sh ### BEGIN INIT INFO # Provides: eibd # Required-Start: $syslog $network # Required-Stop: $syslog $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start the eib daemon. ### END INIT INFO DESC="EIB daemon" NAME=eibd EIB_ARGS="--daemon --Server --Tunnelling --Discovery --GroupCache --listen-tcp" EIB_ADDR="0.0.1" EIB_IF="tpuarts:/dev/ttyAMA0" EIB_UID="smarthome" PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin DAEMON=/usr/bin/$NAME PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME [ -x "$DAEMON" ] || exit 0 [ -r /etc/default/$NAME ] && . /etc/default/$NAME DAEMON_ARGS="$EIB_ARGS --pid-file=$PIDFILE --eibaddr=$EIB_ADDR $EIB_IF" do_start() { touch $PIDFILE chown $EIB_UID $PIDFILE start-stop-daemon --start --quiet --chuid $EIB_UID --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1 start-stop-daemon --start --quiet --chuid $EIB_UID --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS || return 2 } do_stop() { start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 rm -f $PIDFILE 2> /dev/null return "$RETVAL" } do_reload() { start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME 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
Code:
sudo chmod 755 eibd sudo update-rc.d eibd defaults
Code:
sudo /etc/init.d/eibd start
Edit1: Tippfehler
Edit2: eibd default settings geändert
Edit3: Tippfehler
Kommentar