Wetterstation mit Webinterface

Heute möchte ich euch zeigen, wie ihr die Wetterstation WS3080
mit WeeWx zum laufen bekommt.

Die Wetterstation WS3080 bietet für 100 € einige Sensoren und einen USB-Anschluss zur Logdatenerfassung.
Als Software verwende ich Weewx, welche eine sehr ausführliche Installationsanleitung bietet.

Für die WS3080 müssen wir den Treiber fousb verwenden.
Bei laufendem Apache kann in der Config WeeWx.conf einfach der
Pfad /var/www/weewx eingetragen werden.
Die Zeiten der Aktualisierung der Daten lassen u.U. sehr sehr lange auf
sich warten, da die Wetterstation die Zeitvorgabe des Archiving-Intervalls
überschreibt.

Nun zur Installation:

wget http://sourceforge.net/projects/weewx/files/weewx_2.4.0-1_all.deb
dpkg --install weewx_2.4.0-1_all.deb
apt-get install -f

danach erscheint ein Konfigurationsfenster, in dem Ihr den Ort und die Koordinaten eintragen
müsst. Vorsicht! die genaue Schreibweise verwenden !

Bei Weather Station Type wählen wir FineOffsetUSB aus und geben im nächsten Fenster WS3080 ein.
nach der Installation prüfen wir, ob Werte gelesen werden mit:
wee_config_fousb --info
und setzen das Logging-Interval auf 1 Minute
wee_config_fousb --set-interval=1 -y

danach erstellen wir im Apache-Ordner noch einen Ordner für WeeWx:
cd /var/www
mkdir weewx
chmod 777 weewx

Danach gehts an die Config mit
nano /etc/weewx/weewx.conf

und setzen
week_start auf 0 für Montag,
Polling_Mode auf ADAPTIVE,
archive_interval auf 60,
record_generation auf Software

und starten den Service mit
service weewx restart
durch. (Bei Fehler nochmal).

danach editieren wir die Konfigurationsdateien fürs Web.
die /etc/weewx/skins/Standard/standard.conf
=> Hier tragen wir für alle Fahrenheit-angaben C ein und
für alle Meilen Km.
in der /etc/weewxskins/Index-default.tpl tragen wir (wenn wir so
möchten) noch die InHumidity als HTML Row ein.

Danach nochmal Speichern und neustarten.



Deinstallieren:
dpkg -r weewx
dpkg --purge weewx
sudo rm -r /var/lib/weewx 
sudo rm -r /var/www/weewx


Raspi als Car-PC vorbereiten


Raspi als Car-PC vorbereiten

Für Automatisierung von Tastatur- und Mausaktionen:

apt-get install xkbd (Virtuelle Tastatur)
apt-get install xautomation (für xte)
apt-get install xnee http://xnee.wordpress.com/ (xresponse)


Beispiele:

 xresponse -k Tab,100 -t Hello -k Return,100
 xresponse -k Tab,100 -w 1
 xresponse -t Hello -w 1
 xresponse -k Return,100 -w 1

 xresponse -k Tab,100 -b 250
 xresponse -t Hello -b 250
 xresponse -k Return,100 -b 250

XBMC

nano /etc/apt/sources.list.d/mene.list
folgenden Text am Ende einfügen: deb http://archive.mene.za.net/raspbian wheezy contrib
STRG + O + STRG + X
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED


apt-get update
apt-get upgrade

sudo apt-get install xbmc

VLC-Player installieren:

apt-get install vlc

BLUETOOTH CSL - USB nano Bluetooth-Adapter V4.0

sudo apt-get install bluetooth bluez-utils blueman

VNC Server

Als erstes holen wir uns mit apt-get update die aktuellsten Pakete.
Danch führen wir apt-get install tightvncserver aus.

Jetzt starten wir den Server mit 
tightvncserver
und vergeben ein Kennwort für den Server.

und schon kann es losgehen, indem wir eine neue Session mit
vncserver :1 -geometry 1024x768 -depth 24 -- httpport 9501
öffnen .

Um den VNCServer beim Booten mitzustarten legen wir ein Startscript mit folgendem Inhalt unter /etx/init.d ab:


#!/bin/sh
#
# /etc/init.d/vncserver                 this Script
# /usr/bin/vncserver                    Program
#
### BEGIN INIT INFO
# Provides:          tightvncserver
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: vnc server
# Description:
#
### END INIT INFO
# Check for missing binaries
FOO_BIN=/usr/bin/vncserver
test -x $FOO_BIN || exit 5

# User, unter dem der VNC-Server ausgefuehrt wird
VNC_USER=""
export VNC_USER

# Set HOME of User
HOME=""
export HOME

# Set ID for Connections
FOO_ID=1

case "$1" in
    start)
        echo -n "Starting Vnc-Server with Terminal-ID $FOO_ID "

        # Delete old PIDs
        rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.pid

        if [ -e $HOME/.vnc/$HOSTNAME:$FOO_ID.log ]; then
           cat $HOME/.vnc/$HOSTNAME:$FOO_ID.log >> /var/log/vncserver.log 2>&1
           rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.log
        fi

        sudo -u $VNC_USER -H $FOO_BIN :$FOO_ID 2>&1
        ;;
#
     stop)
        echo -n "Shutting down Vnc-Server "
        $FOO_BIN -kill :$FOO_ID 2>&1

        cat $HOME/.vnc/$HOSTNAME:$FOO_ID.log >> /var/log/vncserver.log 2>&1
        rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.log

        ;;
#
     restart)
        $0 stop
        $0 start
        ;;
#
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

danach noch folgende Befehle ausführen:

sudo chown root:root /etc/init.d/vncserver
sudo chmod 0755 /etc/init.d/vncserver

sudo update-rc.d vncserver defaults

Im Windows holen wir uns einen VNC-Client, UltraVNC ist hier meine wahl
und geben als IP-Adresse die Adresse des Raspberry ein und danach den Port (:9501)

schon sehen wir das LXDE im VNC-Viewer.

Navis:

apt-get install monav
apt-get install navit

Messenger:

apt-get install pidgin

Chrome:

sudo apt-get install chromium-browser

Verbindung zum Mobiltelefon

apt-get install gammu
apt-get install xgnokii

Tethering über Android einrichten

Nachdem wir das Handy angesteckt haben prüfen wir mit ifconfig ob das Netzwerkinterface usb0 vorhanden ist.
Mit einem sudo dhclient usb0 starten wir DHCP auf diesem Interface
nano /etc/network/interfaces
und folgendes dort am Ende einfügen:
iface usb0 inet dhcp
danach folgendes ausführen:
ifup usb0
mit ifconfig prüfen ob USB0 eine Ip-Adresse erhalten hat.
Anschließend:

SICHERUNG MACHEN !!!!!!!!!!!!!!!!!!
und die Feineinstellungen im Auto vornehmen.

Read-Only Pi:

http://raspberrycenter.de/forum/umruestung-raspberry-pi-read-only-root-filesystem

Swap-File abschalten
Zuerst sollte man das Swap-File ausschalten und deaktivieren. Hierzu kann man zuerst folgendes ausführen:
# dphys-swapfile swapoff
# dphys-swapfile uninstall
Danach sollte der vom Init gestartete Service ausgeschaltet werden:
# update-rc.d dphys-swapfile disable

mount -o remount,rw /

Spannungsversorgung:

Hintergrund: 

Mein Fahrzeug (Golf 6) schaltet die Stromversorgung
des Zigarettenanzünders beim Starten und Stoppen des
Motors aus (komplett aus, keine Versorgung vom
Zigarettenanzünder an die Batterie => Deshalb keine 
Diode beim laden der Goldcaps). Wenn ich jetzt das
Fahrzeug starte und den Motor abstelle, so soll der Raspi
die Spannungslose Zeit über die Goldcaps überbrücken.

Nach vielen Bastlereien und Lötereien ist die am besten geeignetste
Lösung auch die simpelste: 14 Goldcaps parallel geschalten, die Direkt
vom Zigarettenanzünder geladen werden. Der Raspi samt USB-Hub 
ebenfalls parallel zu der Schaltung. 

Bei I > 0,50 wird der Raspi zwar noch versorgt, jedoch brechen die USB-
Geräte teils für den gesamten Betrieb bis zum Neustart weg. Ich werde 
weitere Versuche mit einem Step-Up Converter machen, der bis 3.5V die 
Spannung konstant auf 5V hält. Das USB-Hub sollte mitversorgt werden,
da ansonsten 1. die Geräte wegbrechen (dauerhaft) und 2. der Raspi durch
das erkennen und entfernen der USB-Geräte enorme zicken macht !

Nachteil der Schaltung ist dass der Raspi durch das auf- und abbauen
der Spannung der Kondensatoren ~ 3 Neustarts versucht, die nach kurzer
Zeit (5 Sec. bis zum Anstieg des Stromes auf ~ 0,4 A) wieder zu einem 
Neustart führt. Ich denke dass dieses Problem mit dem Step-Up ebenfalls
behoben wird.

gemessene Werte:

Raspi I(A): 
Min / Norm / Max
0,34 / 0.34 / 0,43 
0,13 - 0,20 beim booten (Die ersten 5 Sec.)
(Abschaltung bei 4,20V- 4,12V)

Raspi am USB Hub mit Wlan, BT und Tastatur I(A):
Min / Norm / Max
0,48 / 0,53 / 0,60

+ Maus (optisch) + Handy (Laden + Tethering)
Min / Norm / Max
0,59 / 0,59 / 0,60

1 Goldcap 1F 5,5V 
Ladestrom: 0,10 A
Max Ausgang: 0,10 A

So ergibt sich für meine Spannungsversorgung:
14F 5,5V Parallel (Ladestrom 1,4 A) + 0,6 A Raspi
= 2A USB-Adapter 
durch die Ladekurve der Kondesatoren (Stromaufnahme
verringert sich nach ~ 2Sec enorm können Max. 18 Goldcaps 
verbaut werden => 18F, 5,5 V. 

Möglicherweise auch 20F wenn die sichergestellt ist dass die 
Goldcaps vorgeladen sind (die Goldcaps nicht komplett entladen werden).
Somit ist die Startlast wiederrum < 2A. Ebenfalls zu berücksichtigen ist dass
die 2A (meine Meinung) sich auf eine Dauerlast beziehen und eine kurzfristige
Überlast aushalten. Die Erstladung der Goldcaps stellt  eine *kurzfristige* 
Überlast dar ... 

Links:

http://www.therasberrypi.com/how-to-usb-tether-android-to-your-raspberry-pi/
http://www.elstel.org/Handy.html#creatdev
http://michael.gorven.za.net/blog/2012/08/06/xbmc-packages-raspberry-pi-running-raspbian#comment-116
https://www.modmypi.com/blog/installing-the-raspberry-pi-nano-bluetooth-dongle
http://wiki.openmoko.org/wiki/Manually_using_Bluetooth

GUI Programmierung auf dem PI


GUI Programmierung auf dem PI

Mono

zuerst holen wir uns Mono mit:

apt-get update
apt-get upgrade
apt-get install mono-complete --fix-missing

anschließend öffnen wir Nano und fügen folgenden Sourcecode ein:
using System;
using System.Windows.Forms;
using System.Drawing;

class Programm{
public static void Main (string[] args){
Application.EnableVisualStyles();
var f = new Form();
f.SetBounds (0,0,200,200);
Application.Run(f);
}
}

und Speichern das ganze unter "Test.cs"
jetzt führen wir gmcs mit den Imports aus und compilieren unsere Anwendung:
gmcs test.cs /r:System.dll,System.Drawing.dll,System.Windows.Forms.dll

Im Ordner, in der unsere cs-Datei liegt finden wir jetzt auch eine .exe Datei mit dem
gleichen Namen. 

Jetzt können wir die Anwendung auch schon Testen mit mono Test.exe

Bootauswahl mittels Raspiboot


Bootauswahl mittels Raspiboot auf einem USB-Stick.

Als erstes lade ich mir das Zip-Paket von
http://sourceforge.net/projects/berryboot/files/berryboot-cubieboard-beta6.zip/download
herunter.
Das entpackte Image lade ich mittels W32DiskImager auf die SD-Karte.
Der Raspi hat an einem USB-Anschluss eine Tastatur und am 2. USB einen USB-Stick angeschlossen.

Jetzt starte ich den Raspi mit der eingelegten SD-Karte.
Eine Benutzeroberfläche zeigt mir meinen USB-Stick an, den ich nach EXT4 Formatiere.

Nach dem Update des Raspiboot und anschließendem Neustart des Systems kann ich mir jetzt
mit "ADD OS" ein Betriebssystem aus der Auswahl aufspielen Bzw. ein Backup davon machen.

Ich wähle das Raspian aus, das auch gleich heruntergeladen und auf dem USB-Stick installiert wird.

Nachdem ich das heruntergeladene System auf Default gesetzt habe, wird nach dem Reboot ein Auswahlfenster mit den Betriebssystemen angezeigt, und das gewählte nach 10 Sec. gestartet.

Perfekt !

Pi in das Automatisierungssystem EVAGui mit einbinden.


Schaut auch mal bei EVAGui2 (Windows-Tool für Automatisierung) vorbei !


Dort finden sich Projekte, wie ihr mit den Pi als Client für EVAGui2
Heimautomatisierungsprojekte umsetzen könnt.

Ein Blick lohnt auf alle Fälle !

DynDNS Client mit dem Raspberry


DynDNS Client mit dem Raspberry

Alles was dazu benötigt wird, ist ein DynDNS.org Account und das Programm “ddclient” für Linux.

Installation:
Um ddclient zu installieren müssen lediglich folgende Befehle in die Shell eingegeben werden

sudo apt-get update
sudo apt-get install ddclient


Konfiguration:
Schon während der Installation startet der Konfigurationsassistent, der nachfragt, welcher DynDNS Service genutzt werden soll.

Im Anschluss müssen als erstes der Benutzername und das Passwort eingegeben werden.

Außerdem wird gefragt, ob der IPCheck von DynDNS genutzt werden soll. Diese Frage bestätigt man mit “yes“.

Ist dies erledigt, so muss nun nur noch die richtige Domain ausgewählt, und bestätigt werden. Dazu wird im ersten Schritt der Menüpunkt “From List” ausgewählt, und anschließend ein Sternchen vor der gewünschten Domain gesetzt werden.

TV-Streaming mit dem Pi


Dieser Artikel befindet sich gerade im Aufbau ...

Als erstes holen wir uns die aktuelle Version von GitHub mit
git clone https://github.com/tvheadend/tvheadend.git
danach wechseln wir in das Verzeichnis mit TVheadend
mit cd tvheadend.

dann updaten wir die Paketlisten mit
apt-get update && apt-get upgrade

apt-get install libssl.dev  openssl.dev  libcurl4-openssl-dev  libavcodec-dev  libavformat-dev  libswscale-dev unrar-free

jetzt führen wir
./configure
make && make install aus, um die Pakete zu compilieren.

danach können wir das ganze auch schon mit tvheadend --noacl starten und einen
ersten Benutzer erstellen.
In meinem Fall habe ich auch einen 2. Streamingbenutzer ohne Kennwort erstellt, um
beim öffnen der Videos über VLC keine Benutzerdateneingabe machen zu müssen.

 Nach dem Installieren der Pakete geht es nun an die Installation des Tevii DVB-S2 USB.

apt-get install -y mercurial gcc libc6-dev
wget http://www.tevii.com/dvb-usb.rar
wget http://www.tevii.com/dvb-fe-ds3000.rar

die Dateien entpacken wir und kopieren die fw-Dateien in den Ordner
cp -pv dvb-usb-s660.fw /lib/firmware
cp -pv dvb-fe-ds3000.fw /lib/firmware

Danach noch ein Neustart des Systems mit
init 6

Nach dem Neustart starten wir tvheadend und melden uns auf der Seite
http://IP-des-Raspi:9981 mit
Benutzernamen/Kennwort an, Gehen unter Configuration -> DVB Inputs -> TV-Adapters
und wählen unseren TV-Adapter aus. danach müssen wir den Satelliten (Bei mir Astra 19.2E) hinzufügen und einen ersten Scan ausführen.

Jetzt werden alle Sender des Satelliten gesucht. Nach der Suche können wir unter Mapping die gefundenen Sender auf Kanäle mappen.

ansehen kann man sich das ganze (SDTV und Radio) am besten mit dem VLC-Player
wenn wir den Link hinter "Play" kopieren und im VLC-Player öffnen und unsere Benutzerdaten
nochmals eingeben bzw. den allgemeinen Streaming-User * verwenden.

Links für VLC sind:
http://IP-Raspberry:9981/playlist/channels
um eine Auflistung der Kanäle zu erhalten
oder
http://192.168.1.110:9981/stream/channelid/15
um einen bestimmten Kanal aufzurufen.

Wenn wir eine Liste der aktuell laufenden Sendungen erhalten wollen dann können wir den Link
http://192.168.1.110:9981/epg
verwendn. Dieser Link liefert eine JSON-Datei zurück, die wir leicht (z.B. mit NodeBrowser aus EVACMD) parsen können.

... und hier wie gewünscht eine Anleitung für den Autostart:

Startscript erstellen für Tvheadend Server

nano /etc/init.d/tvheadend

mit diesem Inhalt füllen

#!/bin/bash

TVHNAME="tvheadend"
TVHBIN="/usr/local/bin/tvheadend"
TVHUSER="root"
TVHGROUP="root"

case "$1" in
start)
echo "Starting tvheadend"
start-stop-daemon --start --user ${TVHUSER} --exec ${TVHBIN} -- \
-u ${TVHUSER} -g ${TVHGROUP} -f -C
;;
stop)
echo "Stopping tvheadend"
start-stop-daemon --stop --quiet --name ${TVHNAME} --signal 2
;;
restart)
echo "Restarting tvheadend"

start-stop-daemon --stop --quiet --name ${TVHNAME} --signal 2

start-stop-daemon --start --user ${TVHUSER} --exec ${TVHBIN} -- \
-u ${TVHUSER} -g ${TVHGROUP} -f -C

;;
*)
echo "Usage: tvheadend {start|stop|restart}"
exit 1
esac
exit 0


Startscript ausführbar machen
chmod 755 /etc/init.d/tvheadend


und im Bootprozess anlegen
update-rc.d tvheadend defaults

USB Stick mit FAT 32 in fstab fest einbinden.

cd /media
mkdir DVBS
chmod -R 777 DVBS/
nano /etc/fstab
/dev/sda1 /media/DVBS auto defaults
mount -a


Links: http://christian-nagel.net/?p=285

Angetestet - Fedora für den Pi


Hier mal ein kleiner Test des angepassten Fedora-Linux für den Pi.

Erstmal muss man das Image von: http://pidora.ca/pidora/releases/18/images/pidora-18-r1c.zip
von http://pidora.ca/ herunterladen.

Danach beginnt das Entpacken des Images und das aufspielen auf die SD-Karte mithilfe von
Disk-Imager (Aus dem Blog Grundeinrichtung).
Nach dem aufspielen auf die SD-Karte und starten des PI finden wir auch gleich eine Benutzeroberfläche für die Konfiguration, die sehr schnell beendet ist.
Nach dem Setup können wir uns an dem XFCE-Desktop anmelden.



Spracherkennung auf dem RaspberryPi

Linkliste:

http://stevenhickson.blogspot.com/2013/05/voice-command-v20-for-raspberry-pi.html
http://aonsquared.co.uk/raspi_voice_control 
http://voxforge.org/home/dev/acousticmodels/windows/create/htkjulius/tutorial/data-prep/step-1

Am besten funktioniert jedoch Atom Electron, welches ein NodeJS mit Webkit ist und Spracherkennung als HTML Api beinhaltet. Um an die Daten zu kommen verwende ich momentan Websockets. Bei Fragen meldet euch einfach !

Asterisk auf dem Raspi


Hier folgt noch eine Anleitung

Ampache auf dem Raspi


apt-get install ampache

nach dem Setup im Browser mit
IP-DES-RASPBERRY/Ampache 
 starten.

und den Anweisungen für das Setup folgen.

Face Detection


Face Detection (Gesichtserkennung) auf dem Raspberry-PI:

Als erstes erstellen wir uns auf dem Raspi einen Ordner mit
mkdir facedetect && cd facedetect
danach installieren wir die Pakete mit:
apt-get install python-opencv festival 

und laden uns die Dateien mit 
git clone https://github.com/vectrasoft/raspi-face-talk.git
herunter.

schon können wir das ganze mit 
python facedetect.py --cascade=face.xml 0
starten und sehen im Ausgabefenster einen Rahmen
um das erkannte Gesicht. 

Ein zusätzliches Paket ist Motion, das ein Webinterface
und Bewegungserkennung bietet, dieses kann sogar mit 
EVACMD verwendet werden, wenn es bei einem Ereignis
einen Code an das Webinterface per HTTPGet sendet.

VNC Server installieren


VNC Server installieren und starten ..

Als erstes holen wir uns mit apt-get update die aktuellsten Pakete.
Danch führen wir apt-get install tightvncserver aus.

Jetzt starten wir den Server mit 
tightvncserver
und vergeben ein Kennwort für den Server.

und schon kann es losgehen, indem wir eine neue Session mit
vncserver :1 -geometry 1024x768 -depth 24 -- httpport 9501
öffnen .

Um den VNCServer beim Booten mitzustarten legen wir ein Startscript mit folgendem Inhalt unter /etx/init.d ab:

#!/bin/sh
#
# /etc/init.d/vncserver                 this Script
# /usr/bin/vncserver                    Program
#
### BEGIN INIT INFO
# Provides:          tightvncserver
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: vnc server
# Description:
#
### END INIT INFO
# Check for missing binaries
FOO_BIN=/usr/bin/vncserver
test -x $FOO_BIN || exit 5

# User, unter dem der VNC-Server ausgefuehrt wird
VNC_USER=""
export VNC_USER

# Set HOME of User
HOME=""
export HOME

# Set ID for Connections
FOO_ID=1

case "$1" in
    start)
        echo -n "Starting Vnc-Server with Terminal-ID $FOO_ID "

        # Delete old PIDs
        rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.pid

        if [ -e $HOME/.vnc/$HOSTNAME:$FOO_ID.log ]; then
           cat $HOME/.vnc/$HOSTNAME:$FOO_ID.log >> /var/log/vncserver.log 2>&1
           rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.log
        fi

        sudo -u $VNC_USER -H $FOO_BIN :$FOO_ID 2>&1
        ;;
#
     stop)
        echo -n "Shutting down Vnc-Server "
        $FOO_BIN -kill :$FOO_ID 2>&1

        cat $HOME/.vnc/$HOSTNAME:$FOO_ID.log >> /var/log/vncserver.log 2>&1
        rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.log

        ;;
#
     restart)
        $0 stop
        $0 start
        ;;
#
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

danach noch folgende Befehle ausführen:

sudo chown root:root /etc/init.d/vncserver
sudo chmod 0755 /etc/init.d/vncserver

sudo update-rc.d vncserver defaults

Im Windows holen wir uns einen VNC-Client, UltraVNC ist hier meine wahl
und geben als IP-Adresse die Adresse des Raspberry ein und danach den Port (:9501)

schon sehen wir das LXDE im VNC-Viewer.













Webcam Server über FFMPEG und Motion

Webcam Server über FFMPEG und Motion

Um den Pi als Webcamserver zu verwenden benötigen wir die Software Motion, die wir einfach in der Konsole als Root mit dem Befehl:

apt-get update && apt-get upgrade
apt-get install motion 

installieren können.
Nach der Installation können wir das Programm auf dem PI unter Localhost:8080 starten.
Um Motion von einem anderen Computer aus zu konfigurieren starten wir:
nano /etc/motion/motion.conf
und suchen nach der Zeile:
control_localhost on

Diese Zeile muss auf contol_localhost off geändert werden.
Nach dem Speichern mit Strg + O , Strg + X starten wir Motion erneut mit der eingabe
von "Motion" und können unter IP-Raspberry:8080 weitere Einstellungen konfigurieren.

unter Config-List im Webinterface können wir nun die Einzelheiten der Config bearbeiten.

USB over IP

USB Over IP

Hier folgt demnächst eine Anleitung ...

sudo apt-get install git
git clone git://github.com/raspberrypi/linux.git kernel
cd kernel
wget https://raw.github.com/raspberrypi/firmware/master/extra/Module.symvers
zcat /proc/config.gz > .config


http://www.raspberrypi.org/phpBB3/viewtopic.php?p=121691#p121691

PHPMyAdmin (Datenbankverwaltung)

Installation von PHPMyAdmin auf dem PI 

apt-get install phpmyadmin

und danach den Anweisungen auf dem Bildschirm folgen.

Als Webserver wählen wir Apache aus und vergeben ein Kennwort für
die Datenbank und für die Weboberfläche.

Nach der Installation ist PhpMyAdmin unter
http://IP-Adresse/phpmyadmin
erreichbar.

Grundeinrichtung des PI

Einrichtung des Raspberry Pi

Im 1. Schritt nehmen wir die Grundeinrichtung des Raspberry PI vor.

Dazu brauchen wir die Software DiskImager für Windows und das aktuellste Image (Raspbian “wheezy”) von RaspberryPi.org.
Im Diskimager wählen wir nur die SD-Karte und das gerade geladene Image aus.

Die SD-Karte sollte wenn möglich eine Class 10 SD-Karte sein, wenn wir den
Raspberry als Webserver betreiben wollen.
Meine Empfehlung ist hier eine
SanDisk Class 10 Ultra SDHC 8GB, die es schon für ~ 10 € gibt (Schreibrate 35MB/s)
oder eine  
Sandisk Extreme Pro SDHC 8GB für ~ 20 €, (Schreibrate 95 MB/s ).
Die SD-Karte kann die Bootzeit und diverse Prozesse enorm beschleunigen.
Hier solle nicht gespart werden! 

Danach flashen wir das geladene Image auf die SD-Karte, packen diese in den Raspberry-Pi.
Nach dem Booten wird auch gleich das Setup gestartet.

Mit der IP des des Raspberry (ifconfig) starte ich Putty und melde mich am PI an.
Eine 'neuere' Version von Putty ist Kitty.

Benutzername ist 'pi'
Kennwort ist 'raspberry'

Zudem empfehle ich den Download von WinScp, um Dateien vom Computer
und dem Raspberry auszutauschen.

Danach wechsle ich zu root mit sudo su und rufe die Konfiguration mit raspi-config auf.
  • Expand RootFS aufrufen
  • configure Keyboard- Set keyboard layout = Sprache des Keybords beantwortet man 2 mal mit "German". Die Frage, ob per Control+Alt-Backspace, den X-Server beendet werden soll, sollte man mit "Yes" beantworten.
  • Change Password
  • change_locale - Set locale = Hier de_DE ISO-8859-1 auswählen mit Leertaste 
  • .Im nächsten Fenster en_GB auswählen.
  • Memory Split einstellen auf 16 MB (Über Terminal brauchen wir keine Grafik ...)
  • Overclock auf Turbo (Es wird nur hochgetaktet wenn die Leistung benötigt wird. Bei Webanwendungen lief bei mir alles doppelt so schnell mit dieser Einstellung. Manche Benutzer melden jedoch Probleme mit der SD-Karte bei dieser Geschwindigkeit. Die CPU würde sich zurücktakten wenn Sie zu heiß werden würde.). Durch das Takten auf 1 GHz laufen die Gleitkommaberechnungen um ca. 64 % und die Integerberechnungen um ca. 52 % schneller. Zudem ist der Speicher rund 55 % schneller als zuvor. Alles in allem ein richtiger Kraftprotz mit diesen Einstellungen. Meine 2 Pi´s laufen sehr stabil mit diesen Einstellungen (kein Kühlkörper).
  • Danch mit Finish einen neustart durchführen.
Nach dem neustart Updaten wir den Pi auf eine aktualisierte Version mit:

sudo su
apt-get update 
apt-get upgrade
apt-get install lsb-release git-core

wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update

rpi-update


echo "" >> /etc/apt/sources.list
nano /etc/apt/sources.list
und fügen den kopierten Inhalt von: 
ein.

STRG+O + STRG + X

und zum Abschluss der Grundkonfiguration noch ein  
init 6

An diesem Punkt der Konfiguration empfehle ich eine Sicherung des aktuellen Systems
mithilfe von Diskimager. Dazu einfach den Pfad unter Source eintragen und auf Lesen
drücken (z.B: C:\Wheezy_Update_1.bin).Sollte etwas schief laufen wollen wir nicht wieder Stunden warten bis alle Updates abgeschlossen sind.

Links: how-to-raspberry-pi-web-server

SNORT mit SNORBY (Intrusion Detection System)

Installation von Snort auf dem PI

Webserver installieren:

apt-get update
apt-get install apache2 apache2-utils apache2.2-bin apache2.2-common libapache2-mod-php5

MySQL Datenbankserver installieren:

apt-get install mysql-client mysql-common mysql-server libmysqlclient-dev

während der Installation müssen Sie ein Passwort für den User 'root' vergeben.
Dieses Kennwort wird uns noch lange begleiten...

Installation von Abhängigkeiten:

apt-get install g++ make autoconf automake libtool flex bison gcc libnet1 libnet1-dev libcrypt-ssleay-perl libpcre3 libpcre3-dev libphp-adodb libssl-dev libtool libwww-perl ntp php5-cli php5-gd php5-mysql php-pear

Installation von Abhängigkeiten für SNORT:

cd /usr/src
wget http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz
wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz
wget http://www.snort.org/dl/snort-current/daq-1.1.1.tar.gz

tar -zxf libpcap-1.3.0.tar.gz
tar -zxf libdnet-1.12.tgz
tar -zxf daq-1.1.1.tar.gz

rm *.tgz && rm *.tar.gz

cd libpcap-1.3.0 &&./configure --prefix=/usr --enable-shared && make && make install
cd ../libdnet-1.12 &&  ./configure --prefix=/usr --enable-shared && make && make install
cd ../daq-1.1.1 && ./configure && make && make install

Library-Pfad aktualisieren:

echo >> /etc/ld.so.conf /usr/lib 
echo >> /etc/ld.so.conf /usr/local/lib && ldconfig

Snort installieren und einrichten:

cd /usr/src
wget http://nbhcrew.de/zmod/downloads/Configs/snort.conf
wget http://nbhcrew.de/zmod/downloads/Configs/local.rules
wget http://nbhcrew.de/zmod/downloads/Configs/barnyard2.conf
wget http://www.snort.org/dl/snort-current/snort-2.9.3.1.tar.gz -O snort-2.9.3.1.tar.gz 

tar -zxf snort-2.9.3.1.tar.gz && cd snort-2.9.3.1 && rm ../*.tar.gz
./configure --enable-sourcefire && make && make install 

mkdir /etc/snort /etc/snort/rules /var/log/snort /var/log/barnyard2 /usr/local/lib/snort_dynamicrules
touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules /etc/snort/rules/local.rules
groupadd snort && useradd -g snort snort 
chown snort:snort /var/log/snort /var/log/barnyard2 
cp /usr/src/snort-2.9.3.1/etc/*.conf* /etc/snort 
cp /usr/src/snort-2.9.3.1/etc/*.map /etc/snort
cp /usr/src/snort.conf /etc/snort
cp /usr/src/local.rules /etc/snort/rules

Snort starten und einen ersten Ping-Test ausführen:

/usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

Barnyard2 installieren (Schnittstelle für Snort)

cd /usr/src && wget https://github.com/firnsy/barnyard2/tarball/master

tar -zxf master && cd firnsy-barnyard2-* 
autoreconf -fvi -I ./m4 
./configure --with-mysql && make && make install 

cp /usr/src/barnyard2.conf /etc/snort
cp schemas/create_mysql /usr/src

 MYSQL konfigurieren:

mysql -uroot -pPASS

create database snort; 

create database archive;
grant usage on snort.* to snort@localhost;
grant usage on snort.* to snort@127.0.0.1; 
grant usage on archive.* to snort@localhost; grant usage on archive.* to snort@127.0.0.1;
set password for snort@localhost=PASSWORD('PASS'); 
grant all privileges on snort.* to snort@localhost;  
grant all privileges on snort.* to snort@127.0.0.1;
grant all privileges on archive.* to snort@localhost; 
flush privileges;

use snort; 
source /usr/src/create_mysql 
exit

Testen von Snort mit Barnyard2:

/usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /etc/snort/bylog.waldo -G /etc/snort/gen-msg.map -S /etc/snort/sid-msg.map -C /etc/snort/classification.config &
Services installieren:

touch /etc/init.d/snortbarn
nano /etc/init.d/snortbarn

#! /bin/sh
#set -x
#
### BEGIN INIT INFO
# Provides: snortbarn
# Required-Start: $remote_fs $syslog mysql
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Start Snort and Barnyard
### END INIT INFO
. /lib/init/vars.sh
. /lib/lsb/init-functions
do_start()
{
log_daemon_msg "Starting Snort and Barnyard" ""
/sbin/ifconfig eth0 up
/usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0 &
/usr/local/bin/barnyard2 -q -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /etc/snort/bylog.waldo -G /etc/snort/gen-msg.map –S /etc/snort/sid-msg.map -C /etc/snort/classification.config 2> /dev/null &
log_end_msg 0
return 0
}
do_stop()
{
log_daemon_msg "Stopping Snort and Barnyard" ""
kill $(pidof snort) 2> /dev/null
kill $(pidof barnyard2) 2> /dev/null
log_end_msg 0
return 0
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
do_start
;;
*)
echo "Usage: snort-barn {start|stop|restart}" >&2
exit 3
;;
esac
exit 0

chmod +x /etc/init.d/snortbarn
update-rc.d snortbarn defaults

CleanUp:

rm /var/www/index.html 
pkill snort && pkill barnyard2 
rm -rf /var/log/snort/* /var/log/barnyard2/*
sudo service snortbarn start

Nano /etc/snort/snort.conf
Zeile 553: include $RULE_PATH/snort.rules
sudo service snortbarn start
Regeln aktualisieren:

Bei www.snort.org registrieren und einen Oinkcode beschaffen .

cd /usr/src && wget http://pulledpork.googlecode.com/files/pulledpork-0.6.1.tar.gz
tar -zxf pulledpork-0.6.1.tar.gz && cd pulledpork-0.6.1
cp pulledpork.pl /usr/local/bin && cp etc/*.conf /etc/snort

Edit "/etc/snort/pulledpork.conf":

Comment out lines 22 & 26

Line 20: enter your “oinkcode” where appropriate or comment out the line if you didn’t get one above
Line 23: leave alone (uncommented) to use the Emerging Threats rule set
Line 71: change to: rule_path=/etc/snort/rules/snort.rules
Line 86: change to: local_rules =/etc/snort/rules/local.rules
Line 89: change to: sid_msg=/etc/snort/sid-msg.map
Line 112: change to: config_path=/etc/snort/snort.conf
Line 124: change to: distro=Debian-Lenny
Line 171: Uncomment and change to: enablesid=/etc/snort/enablesid.conf
Line 173: Uncomment and change to: disablesid=/etc/snort/disablesid.conf
Line 174: Uncomment and change to: modifysid=/etc/snort/modifysid.conf

/usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf -T -l




apt-get install Nikto
perl nikto.pl -h HOST -p PORT

Installation von SNORBY:
(geht jetzt endlich!)


echo "gem: --no-rdoc --no-ri" >> ~/.gemrc

curl -L https://get.rvm.io | bash -s stable --ruby --rails
source /usr/local/rvm/scripts/rvm
rvm autolibs enable
rvm pkg install openssl
rvm install 1.9.2 --with-openssl-dir=$HOME/.rvm/usr



aptitude install -y imagemagick wkhtmltopdf openjdk-6-jdk

aptitude install -y make unzip git libxml2-dev libxslt1-dev libmysqlclient-dev g++ libmagickcore-dev libmagickwand-dev libcurl4-openssl-dev libssl-dev apache2-prefork-dev libapr1-dev libaprutil1-dev build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion libiconv libiconv-dev

gem install rails 
gem install pdfkit
gem install rake
cd /var/www
git clone http://github.com/Snorby/snorby.git
cd config
bundle install

cp database.yml.example database.yml
cp snorby_config.yml.example snorby_config.yml


database.yml konfigurieren
sed -i "s|username:.*|username: root|g" database.yml
sed -i "s|password:.*|password: Password|g" database.yml
sed -i "s|host:.*|host: localhost|g" database.yml
sed -i "s|database:.*|database: snorby|g" database.yml


config.yml konfigurieren
sed -i "s|domain:.*|domain: localhost:3000|g" snorby_config.yml

rake snorby:setup
cd/var/www/snorby/
bundle exec rails server -e production


Dann zu der Seite:
http://IP-DES-RASPBERRY:3000 gehen

Snorby-login.png

und einloggen mit
  • Benutzername: snorby@snorby.org
  • Passwort: snorby

Links:
howto-guide-to-snort-ids-in-debian
Snorby
https://snorby.org/

Zabbix (Netzwerküberwachung)


apt-get install fping apache2 sqlite3 libsnmp-dev libcurl4-openssl-dev libapache2-mod-php5 php5-gd php5-sqlite php5-dev libiksemel-dev libsqlite3-dev php5-mysql

cd /usr/src
wget "http://sourceforge.net/projects/zabbix/files/ZABBIX Latest Stable/2.0.5/zabbix-2.0.5.tar.gz"
tar zxvf zabbix-2.0.5.tar.gz
cd zabbix-2.0.5/database/mysql

sudo adduser zabbix
sudo adduser zabbix root
sudo adduser www-data zabbix

mysql -uroot -pPASS
# drop database zabbix;
create database zabbix;
quit;

mysql -uroot -pPASS zabbix < schema.sql;
mysql -uroot -pPASS zabbix < images.sql;
mysql -uroot -pPASS zabbix < data.sql;

cd ../..
./configure --prefix=/usr --with-net-snmp --with-mysql --with-ssh2 --enable-agent --enable-server --with-libcurl
make install

mkdir /var/www/zabbix
cp -a frontends/php/* /var/www/zabbix/
chown -R www-data /var/www/zabbix

nano /etc/php5/apache2/php.ini
und mit STRG + W nach folgenden Einstellungen suchen und ersetzen

max_execution_time = 300zab
max_input_time = 300
post_max_size = 16M
date.timezone = de_de

STRG + O
STRG + X

apache2 restart

sudo cp misc/init.d/debian/zabbix-server /etc/init.d/
sudo cp misc/init.d/debian/zabbix-agent /etc/init.d/

nano /usr/etc/zabbix_server.conf
zabbix_server
nano /tmp/zabbix_server.log

Links:

Zabbix
https://www.zabbix.com/documentation/2.0

Icinga (Netzwerküberwachung) und Konfiguration mit NConf


apt-get update
apt-get upgrade

apt-get install php5 php5-cli php-pear php5-xmlrpc php5-xsl php5-pdo php5-ldap php5-soap php5-gd php5-mysql

apt-get install apache2 build-essential libgd2-xpm-dev 
apt-get install libjpeg62 libjpeg62-dev libpng12 libpng12-dev 
apt-get install snmp libsnmp5-dev

apt-get intall icinga

danach ist das Webinterface erreichbar unter:
http://IP-DES_RASPBERRY/Icinga

mit den Benutzerdaten
"icingaadmin" und ihr Kennwort

wget https://sourceforge.net/projects/nconf/files/nconf/1.3.0-0/nconf-1.3.0-0.tgz
tar -xzf  nconf-1.3.0-0.tgz
chmod 777 -R nconf
http://IP-DES_RASPBERRY/nconf
Bei der installation den MYSQL Server auswählen und Datenbank erstellen.
unter Icinga-Binarys "/usr/sbin/icinga" eintragen
rm UPDATE* -R
rm INSTALL* -R
nano config/deployment.ini
und alles bis auf nagios config unter local deployment ausdokumentieren.

mkdir /etc/nagios
chmod 777 /etc/nagios

nano /etc/icinga/icinga.cfg
und alle cfg_dir und cfg_file auskommentieren
und folgende 2 Zeilen eintragen:

cfg_dir=/etc/nagios/global
cfg_dir=/etc/nagios/Default_collector

dann mit STRG + O speichern
und mit STRG + X verlassen

jetzt auf der Weboberfläche von NConf eine Konfiguration erstellen
und auf Deploy drücken.
Danach im Terminal
service icinga restart
eingeben.
und das Resultat auf der Icinga Weboberfläche überprüfen.

Webmin (Verwaltung)

Installation von Webmin auf dem Raspery-Pi 

Für eine einfache und komfortable Verwaltung des Raspi empfehle ich die Installation von Webmin.

cd /usr/src && wget http://sourceforge.net/projects/webadmin/files/webmin/1.620/webmin_1.620_all.deb

apt-get install libauthen-pam-perl libapt-pkg-perl libio-pty-perl apt-show-versions
dpgk --install webmin_1.620_all.deb
rm webmin_1.620_all.deb

Nach der Installation ist Webmin unter:
http://IP-Adresse:10000
erreichbar.

NTOP (Netzwerkstatistik) mit NetFlow für OpenWRT am TPLink WR1043ND

Installation von NTop

Ntop  kann über:

apt-get update
apt-get upgrade

apt-get install libpcap-dev libgdbm-dev libevent-dev librrd-dev python-dev libgeoip-dev rrdtool libtool automake autoconf svn subversion

wget http://sourceforge.net/projects/ntop/files/ntop/Stable/ntop-5.0.1.tar.gz
tar -xzf ntop-5.0.1.tar.gz
cd ntop
./autogen.sh
ldconfig 
# cp /usr/local/lib/libntop* /usr/lib/
make
make install

mkdir rrd
useradd -M -s /sbin/nologin -r ntop
chown ntop:root /usr/local/var/ntop/
chown ntop:ntop /usr/local/share/ntop/
ntop -A
chown -R nobody:nogroup /usr/local/var/ntop 
/usr/local/bin/ntop -d -L -u ntop -P /usr/local/var/ntop --skip-version-check --use-syslog=daemon --set-admin-password=password

installiert werden.

oder einfacher ...

apt-get install ntop

Nach der Installation ist NTop unter der Url:
http://IP-Adresse/:3000
erreichbar.
Im Webinterface sollte der Port zwecks Überschneidungen mit SNORBY geändert werden! 

Nach dem aufrufen der Web-Oberfläche werden wir noch eine Änderungen vornehmen,
um den Datenverkehr eines WLan-APs mit OpenWRT als System zu überwachen.

Auf dem WLan-Accesspoint wechseln wir zu dem Punkt Firmware flashen und
geben als Dateiname den Pfad zu der Heruntergeladenen Firmware von openwrt.org
für den Router an. (In meinem Fall der TP-Link WR1043ND).

Nach dem Flashen und anschließeendem Reboot melden wir uns auf der Konfigurationsseite
LuCi des Openwrt an und klicken unter System-Software auf 'Update Lists', um die Paket-
listen zu aktualisieren.

im Reiter 'Available Packages" installieren wir nun das Paket 'fprobe'
für eine Abfrage per Snmp installieren wir das Paket snmpd bzw. minisnmpd gleich noch mit.

In der Oberfläche von NTop aktivieren wir nun nter Plugins-NetFlow die Netflow Schnittstelle
und unter Round Robin Database aktivieren wir dieses Plugin ebenfalls.
und fügen über Plugins-NetFlow-Configure eine Netflow-Schnittstelle hinzu.

im Terminal geben wir nun ein chmod 775 -R /var/lib/ntop
Local Collector UDP Port setzen wir auf 2055 und Set
und IP-Adresse auf 192.168.1.0/255.255.255.0 (bzw. unser lokales Netzwerk) + Set
service Restart ntop

unter Plugins-RRD-Configure tragen setzen wir nun den Dump-Interval auf 5 Sec,
bei Data to Dump wählen wir alle Schnittstellen aus und drücken auf Save References.
Jetzt wechseln wir im Admin-Menü auf die Schnittstelle Netflow1 und sehen uns
die Statistiken des Netflow-Interfaces an.


Links:

OpenWRT-Konfiguration
netzwerk-management-server-mit-raspberry-pi

FHEM (Heimautomatisierung)


FHEM Installieren

wget  http://fhem.de/fhem-5.4.deb
dpkg --install fhem-5.4.deb
apt-get -f -y install

FHEM ist nun erreichbar unter:
http://IP-DES-RASPBERRY:8083/fhem 

- CUL vom PC aus flashen
- Einrichtung des CUL
- Einrichtung einer FS20 Funksteckdose
- Einrichtung eines IR-Senders
- Aufbauen von Raumplänen mit  SweetHome3D
- Externe Steuerung von FHEM über Terminal bzw. http-get

Auf die Einrichtung von FHEM werde ich demnächst weiter 
eingehen, wenn die Zentrale Verwaltung der Heimautomatisierung
über EvaCmd funktioniert. Damit ist es auch jetzt schon möglich 
FHEM über einen anderen Webservice sowie ein PC-Frontend bzw.
Sprache zu steuern. 

Die Beschreibung zum Projekt befindet sich unter: evacmd

http://www.itbasic.de/raspberry-pi-erster-schritt-zur-hausautomation/