Speicherkarte durch log-Dateien „zugemüllt“

Nun war zum zweiten Mal meine Speicherkarte beim RaspberryPi rappelvoll.
Was auch leider bedeutete das OpenHAB nicht richtig läuft.
speicher_voll_01

Wenn man in der Konsole mit der TAB-Taste ein Namen ergänzen wollte, kam folgende Fehlermeldung: „cannot create temp file for here-document: Auf dem Gerät ist kein Speicherplatz mehr verfügbar“.

Mit sudo find / -type f -size +50M habe ich erstmal alle Dateien gesucht die größer sind als 50mb.
Wers ganz genau wissen möchte kann auch folgendes verwenden:
sudo find / -type f -size +50M| xargs ls -lahS

Das brachte mich dann auf die Spur riesiger Logdateien.

Ein Blick mit ls -l --block-size=M im Verzeichnis „/var/log“ brachte folgendes zum Vorschein:
speicher_voll_02

Log-Dateien die jeweils Gigabyte groß sind, sind natürlich nicht so toll.
Eine Suche bei Googel ergab das ich an meiner „logrotate“ was einstellen müsste.
Bevor ich dies tun kann, muss ich aber erst mit „rm“ mal ein bischen Platz schaffen.

Ein Blick in die logrotate Konfigurationsdatei mit sudo nano /etc/logrotate.conf brachte nun folgende Einstellungen zu Tage:
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
.... plus noch ein paar mehr Einstellungen.

Dies habe ich nun erstmal geändert in:
# rotate log files daily
daily
# keep 3 days worth of backlogs
rotate 3
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
compress

Das Beseitigt zwar erstmal nicht mein Grundproblem, sondern begrenzt die Auswirkungen.
Siehe auch: logrotae manpages

Ein manuelles ausführen von sudo logrotate -f /etc/logrotate.conf führte auch zu keinem Fehler, also sollte mein OpenHAB erstmal wieder stabil laufen.

Timer mit Verlängerung

var Timer FlurBewegungsmelder_timer = null

rule "Flur-Licht Bewegungsmelder"
when
Item Flur_Bewegungsmelder changed
then
if(Flur_Bewegungsmelder.state == OPEN && FlurBewegungsmelder_timer == null) {
sendCommand(Schalter_Flur, ON)
FlurBewegungsmelder_timer = createTimer(now.plusMinutes(2)) [|
sendCommand(Schalter_Flur,OFF)
FlurBewegungsmelder_timer = null
]
}
else if (Flur_Bewegungsmelder.state == OPEN) {
FlurBewegungsmelder_timer.reschedule(now.plusMinutes(2))
}
end

Statische IP-Adresse v4 unter Raspbian Jessie

Prüfen ob der DHCPD-Service überhaupt läuft mit:
sudo service dhcpcd status

Ist der Dienst installiert aber abgeschaltet, diesen erst aktivieren, erst dann empfiehlt dich das bearbeiten der Konfigurations-Datei:
sudo service dhcpcd start
sudo systemctl enable dhcpcd

Sollte der dienst laufen kann man mit sudo nano /etc/dhcpcd.conf die Konfigurations-Datei bearbeiten und folgendes anhängen:
interface eth0
static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Wobei /24 die Kurzschreibweise für die Netmask 255.255.255.0 ist.

Danach sudo reboot oder sudo service networking restart

ping: icmp open socket: Operation not permitted

Wenn ich in der Konsole bei meinem raspberry ping 192.168.0.1 eingeben möchte um zu schauen ob der Netzwerkteilnehmer erreichbar ist kam folgende Fehlermeldung: ping: icmp open socket: Operation not permitted

Googel ergab folgende Vorangehensweise:
Ersteinmal in die Konsole eingeben:
ls -l `which ping`
Dort sollte als Rückgabe so etwas kommen:
-rwsr-xr-x 1 root root 30856 2007-07-06 02:40 /bin/ping
Wenn an der vierten Position kein „s“ steht kann man dies korrigieren mit:
sudo chmod u+s `which ping`

Quelle: http://ubuntuforums.org/showthread.php?t=927709

Raspian auf Raspberry installieren

Aktuelles Raspian-Image runter laden von: https://www.raspberrypi.org/downloads/raspbian/
Raspian-Image auf der Festplatte entpacken und mit http://sourceforge.net/projects/win32diskimager/ auf die SD-Karte „schreiben“.
Danach die Karte in den raspberry einlegen und diesen starten.

Nun müsste man die IP des raspberry herausfinden.
Man könnte z.B. Tastatur/Maus und Bildschirm an den raspberry anschliessen und sich nun mit seinem W-Lan verbinden. Mit einer Eingabe in der Konsole könnte man dann die IP herausfinden:
ifconfig

Mein raspberry habe ich per Netzwerkkabel verbunden, und dieser hat dann eine IP per DHCP vom Router zugewiesen bekommen die ich aus dem Router auslesen konnte. So konnte ich mich direkt per SSH mit dem raspberry verbinden.

Wenn nun die IP bekannt ist, per SSH mit dem raspberry verbinden. Für diese Verbindung benutze ich putty.

Ersteinmal den raspberry konfigurieren durch folgenden Aufruf in der Konsole):
sudo raspi-config
Dort mache ich folgendes:

  • Expand Filesystem
  • Change User Password

OpenHAB auf Raspberry installieren

Raspian auf Raspberry installieren

Nun muss man den PG-Key von OpenHAB unserem hinzufügen, das geht mit folgendem Konsolenbefehl:
wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add -
Nun mit nano folgende Datei bearbeiten/anlegen:
sudo nano /etc/apt/sources.list.d/openhab.list
Und folgende Zeile in die Datei schreiben:
deb http://dl.bintray.com/openhab/apt-repo stable main
In der Konsole nun folgende zwei Befehle ausführen um den Index zu aktualisieren, und das System auf den neuesten Stand zu bringen:
sudo apt-get update
sudo apt-get upgrade

Wenn das erledigt ist kann man OpenHAB installieren:
sudo apt-get install openhab-runtime
Die Installation erfolgt in /usr/share/openhab

Verfügbare addons kann man nun ebenfalls per apt-get installieren, welche verfügbar sind sieht man per:
sudo apt-cache search openhab

Damit man per FTP Dateien auf den raspberry überspielen kann, müssen noch Verzeichnisrechte geändert werden:
cd /usr/share
sudo chmod -R 777 openhab/

Mehr zu Dateirechten ist z.B. nachzulesen unter: http://www.schmager.de/chmod.shtml

Nun das „Demo Setup“ herunterladen von http://www.openhab.org/getting-started/downloads.html und auf dem Windows-Rechner entpacken.
Nun das Demo-Projekt auf den Rechner übertragen per FTP-Client, ich benutze in diesem Fall filezilla. IP des raspberry und als Port 22.
Das Verzeichnis sollte sein:
/usr/share/openhab

OpenHAB kann nun gestartet oder gestopt werden mit:
sudo systemctl start openhab
sudo systemctl stop openhab
sudo systemctl status openhab

Damit OpenHAB auch nach einem reboot wieder automatisch startet gibt man folgendes ein:
sudo systemctl daemon-reload
sudo systemctl enable openhab

Mehr dazu unter: openhab Wiki

Ob der Demo-Server nun läuft sieht man unter:
http://:8080/openhab.app?sitemap=demo

Kleines Robocode-Turnier (für Anfänger)

Ich würde gerne ein kleines Robocode-Turnier (für Anfänger) veranstalten, dazu suche ich noch Teilnehmer.
(Das lohnt sich wie ich finde erst ab ner Handvoll Teilnehmer)

Doch was ist Robocode? Robocode ist im Grunde nichts anderes als ein kleines (Java-lern-) Kriegsspiel wo zwei Panzer gegeneinander kämpfen.
Das Verhalten der Panzer müsst ihr allerdings selbst programmieren.

Ich stelle mir das so vor das die Turnier-Laufzeit ein bis zwei Monate beträgt. (Da ich selbst programmier-Anfänger bin und auch Anderen die Chance geben möchte sich in das Thema ein zu arbeiten)
Einmal pro Woche gebt ihr euren Panzer-Code (Bot) ab und es werden Kämpfe ausgetragen. (Abgabe Samstags, Ergebnisse gibts dann spätestens Sonntag)
Die höchste Anzahl der Rundensiege beschert einem einen Wochensieg; Am Ende der Laufzeit haben wir dann evtl. zwei Sieger, einen Wochensieger und den Sieger der am Ende den besten Bot programmiert hat.
(Mode: 1vs1, Spielfeldgröße: 800×600, GCR: 0.1, IT: 450, Rounds: 200, Einschränkung: Nur Bots der Class „Robot“)

Bleibt bitte fair und programmiert euren eigenen Bot und kopiert nicht nur einfach Code aus dem Internet!

Hier ein paar Links zu dem Thema:
http://robocode.sourceforge.net –  Die Seite zum Spiel
http://sourceforge.net/projects/robocode/ – Bitte hier runter laden, die Version von der deutschen Seite ist nicht aktuell
http://www.robocode.de – Eine deutsche Seite zum Spiel
http://robowiki.net – Das Wiki zum Spiel
http://www5.informatik.uni-erlangen.de/… – Eine tolle Übersicht sowie eine Einführung zum Thema Robocode
http://www.christian-neu.de/… – Tutorials zum Thema Robocode