Raspberry

Aus Home24
Wechseln zu: Navigation, Suche

Sinn und Zweck des Raspberry PI Projektes war eigentlich nur eine sichere Verbindung zur CCU herzustellen ohne meinen stromfressenden HomeServer 24h laufen lassen zu müssen. Auch wollte ich keinen besseren Router, als den von meinem DSL Anbieter, anschaffen oder ein Cloud Dienste wie z.B. meine-homematic.de verwenden. Da es bereits tausende ausführliche Tutorials zum Raspberry PI gibt werde ich euch hier nur eine grobe Zusammenfassung mit entsprechenden links veröffentlichen.

Grundsystem
Um starten zu können braucht ihr natürlich als erstes den Raspberry PI eine SD, Netzteil und ein Case. Als System hatte ich ursprünglich das RASPBMC (jetzt OpenELEC) verwendet da ich ihn gleich noch als Media Center Client verwenden wollte. Allerdings ist OpenELEC nur noch auf den Betrieb als Mediacenter ausgerichtet auf das man nur die Kodi Add-ons, apt-get geh nicht mehr, installieren kann. Dadurch musste ich einen zweiten Raspberry anschaffen der mit RASPBIAN läuft.

Auf das Terminal könnt ihr bei RASPBIAN (User: pi / Password: raspberry) mit Putty über den Port 22 zugreifen.

VPN über den PI

Falls euer Router keine eigenen VPN Server an Bord hat oder dieser nur mit irgendwelchen zusätzlichen VPN Client Apps zu erreichen ist könnt ihr auf dem RPI den PPTP-VPN Server Tutorial (de.) Tutorial (Engl.) installieren. Der Vorteil bei PPTP-VPN ist das er in fast allen Betriebssysteme (Windows, Android usw.) implementiert ist.

Webserver

Als Webserver habe ich den Lighttpd verwendet Tutorial.

weiter Module für den Server
Verzeichnisschutz/HTTP-Authentifizierung Tutorial 1 oder Tutorial 2
SSL für eine sichere Verbindung Tutorial

Proxy mit HTTPS Authentifizierung

Was ein Proxy ist oder macht könnt ihr hier nachlesen.

Ihr erweitert einfach den von mir beschrieben Lighttpd Server in der Config sudo nano /etc/lighttpd/lighttpd.conf unter Module "server.modules" mit der Zeile "mod_proxy".

und fügt den folgenden Code weiter unten hinzu

//http
$HTTP["url"] =~ "(^/path1/)" {
  proxy.server  = ( "" => ("" => ( "host" => "127.0.0.1", "port" => 80 )))
}
$SERVER["socket"] == ":80" {
  url.rewrite-once = ( "^/paht1/(.*)$" => "/$1" )
  proxy.server  = ( "" => ( "" => ( "host" => "192.168.1.2", "port" => 80 )))
}

// https
$HTTP["url"] =~ "(^/path1/)" {
  proxy.server  = ( "" => ("" => ( "host" => "127.0.0.1", "port" => 443 )))
}
$SERVER["socket"] == ":443" {
  ssl.engine = "enable"
  ssl.pemfile = "/etc/lighttpd/server.pem"
  url.rewrite-once = ( "^/paht1/(.*)$" => "/$1" )
  proxy.server  = ( "" => ( "" => ( "host" => "192.168.1.2", "port" => 443 )))
}


Im FHZ habe ich noch eine Anleitung mit dem Apache Web Server gefunden https Reverse Proxy für Sicheren CCU Zugriff von Unterwegs.

Temperatursensor

Raspi 1wire diagram.png

Die erforderlichen Kernelmodule sind Bestandteil der Linux-Distribution Raspbian und diese müsst ihr nur noch laden.

In die /boot/config.txt fügt ihr folgende Zeile hinzu und macht danach einen Reboot.

dtoverlay=w1-gpio,gpiopin=4,pullup=on

Jetzt könnt ihr die erforderlichen Module, im Terminal, laden mit:

sudo modprobe wire
sudo modprobe w1-gpio pullup=1
sudo modprobe w1-therm

Die Module legen unter /sys/bus/w1/devices für jeden Sensor ein Verzeichnis z.B. /sys/bus/w1/devices/10-000802778f52 an. In diesem Unterverzeichnis findet ihr die w1_slave in der die aktuelle Temperatur z.B. t=19547 steht.

Wenn das soweit funktioniert, solltet ihr die Module noch in /etc/modules hinzufügen, damit sie automatisch bei einem neustart des Raspi geladen werden.

w1-gpio pullup=1
w1-therm

Mit diesem Beispiel Code könnt ihr dann die Temperaturen in mehreren Variablen der CCU speichert. Auf der CCU muss das XML-API Addon installiert sein. In der ZIP befindet sich die main.py in der ihr den Sende-Zeitintervall einstellen könnt und in der one_wire.py unter "def send1Wire(self):" legt ihr fest, in welche Variable der Sensor gespeichert werden soll.

Mit dem Kommando "sudo python main.py" könnt ihr einen ersten test starten.
Damit dann später der Code automatisch nach einem reboot des PI's ausgeführt wird, könnt ihr unter 'sudo crontab -e' einfach folgendes '@reboot python /home/pi/python/1wire/main.py' (Verzeichnis muss angepasst werden) eintragen.

PI als IP-Cam

Ich konnte es mal wieder nicht lassen und habe mir noch die PI-Cam zugelegt. Allerdings wollte das Paket Motion nicht so richtig funktionieren bis ich auf dieses Tutorial gestoßen bin. In diesem wird auf eine angepasste Version von Motion hingewiesen da das Original von Motion nur für USB Cams gedacht ist!

Damit nicht jeder, von außen, auf die Cam zugreifen kann. Habe ich im Lighttpd noch den Port getunnelt.

$HTTP["url"] =~ "(^/pathcam/)" {
  proxy.server  = ( "" => ("" => ( "host" => "127.0.0.1", "port" => 8082 )))
}

$SERVER["socket"] == ":8082" {
  auth.backend = "htpasswd"
  auth.backend.htpasswd.userfile = "/etc/lighttpd/passwd"
  auth.require = ("" => ("method" => "basic", "realm" => "Anmelden", "require" => "user=USER_NAME"))
  url.rewrite-once = ( "^/pahtcam/(.*)$" => "/$1" )
  proxy.server  = ( "" => ( "" => ( "host" => "127.0.0.1", "port" => 8081 )))
}