Raspberry Pi fit für Dauerbetrieb machen

Der Dauerbetrieb ist im Serverbereich ein sehr gut beherrschbares Thema – nicht so aber bei den günstigen Raspberry Pis:
Hier sind USV, RAID und ECC-Speicher leider nicht bzw. nur in abgespeckter Form verfügbar. Auch leiden die SD-Karten durch die vielen Schreibzugriffe sehr und sterben schlimmstenfalls schon nach kurzer Zeit.

Was kann man tun?

  1. Schreibzugriffe minimieren bzw. ganz abschalten
  2. Hardware-Watchdog des Pi nutzen

1. Schreibzugriffe

Hier habe ich folgende sehr praktische Posts gefunden, um das Dateisystem (am Beispiel von raspbian / Debian / Ubuntu) auf nur-lesend (read-only) umzustellen – Zeitbedarf ca. 30min:

2. Watchdog

Wenn der RPi wirklich mal hängen sollte (z.B. mit einem Kernelpanic), kann der eingebaute Hardware-Watchdog so eingestellt werden, dass er den RPi automatisch neu startet (Reset). Damit kann sichergestellt werden, dass bei Hängenbleiben einer wichtigen Anwendung oder gar der ganzen Maschine immer ein automatischer Neustart erfolgt. Zeitbedarf ca. 10 min.

Mit den hier genannten Tricks & Optimierungen erhaltet ihr ein teils deutlich flotteres System, das auch bei plötzlichem Stromausfall wieder ohne Schäden am Dateisystem hochfährt. Der Watchdog kümmert sich dabei darum, dass auch bei schweren Fehlern das System nicht einfach nur einfriert.

Neues Projekt: PiShower

Für unser Dojo „Ronin“ baue ich derzeit eine Raspberry Pi basierte Duschsteuerung – ähnlich wie in den Fitness-Studios mit Freischaltung der Duschen via RFID/NFC Karte oder Chip.

Der Bauplan sowie alle Quelltexte werden dabei natürlich OpenSource – d.h. von Beginn an stelle ich alle Infos und Daten öffentlich sichtbar und mit MIT Copyleft-Lizenz auf GitHub.com.

Womit wird das Projekt umgesetzt?

  • Programmierung in Python 3
    • Flask
    • SQLite3 + SQLAlchemy
    • RPi.GPIO
    • Multithreading
    • I2C + SMBus
  • Magnetventile 24V DC für Warm- & Kaltwasser
  • Raspberry Pi 3 B
  • USB Mifare RFID Reader
  • HD44780 LCD 16×2 Displays mit I2C-Interface
  • Sainsmart 5V DC Relais
  • Hutschienengehäuse + Verteilerschrank

Wie setzt sich das Projekt zusammen?

In der folgenden Mindmap sind die Anforderungen und Arbeitspakete für die Duschsteuerung abgebildet:

Aus den oben genannten einzelnen Tools und Bibliotheken (z.B. I2C Display, GPIO für Relais…) sind dann folgende Komponenten entstanden, wie im folgenden UML Komponentendiagramm abgebildet:

 

Bachelor- oder Master-Thesis mit LyX

Wer kennt das nicht: Eine umfassende Abschlussarbeit oder Thesis muss geschrieben werden und man grault sich schon vor dem ganzen Ärger mit Word & Co.?

Die Lösung ist seitens der Profs häufig: LaTeX – denn dieses Textsatzsystem glänzt mit automatisch sauber generierten Layouts, Tabellen und Verzeichnissen. Doch: Auf die Schnelle eben mal eine neue Sprache lernen und riesige Dokumente in einem TeX-Editor, statt einer schönen grafischen Bunti-Klicki-Oberfläche schreiben?

Ideale Lösung:
BEIDES – d.h. grafische Obefläche für Drag & Drop mit schneller Vorschau und die Sicherheit eines echten und bis ins letzte Detail anpassbaren Textsatzsystems: LyX!

LyX ist eine aufgeräumte Oberfläche, die Dokumente in einem LaTeX-basierten Dateiformat speichert. LyX ist dabei keine WYSIWYG- sondern eine WYSIWYM-Anwendung: What you see is what you MEAN! D.h. man kann ganz ohne Rücksicht auf Seitenumbrüche etc. seinen Text schreiben und LyX generiert auf Tastendruck (Strg+P für Vorschau) dann ein für Unis+FHs optimiertes Dokument.

Fehlt nur noch Eines:
Die richtige Dokumentvorlage! Hier haben meine ehemaligen (Werk-)Studenten mit mir eine seit mittlerweilen über 10 Jahren gepflegte LyX-Vorlage erstellt, welche auf GitHub.com für alle frei verfügbar ist. Die Vorlage berücksichtigt dabei die in Deutschland vorherrschenden (aber leider bei fast allen Hochschulen/Unis variierenden) Standards für Bibliografie, Zitate, Verzeichnisse etc.

Mehr Infos zur Installation von LyX und der Verwendung der ausgefeilten Vorlagen findet ihr auf meinem GitHub-Repository.

Python & OpenCV unter Windows 7-8.1

Ich wollte „auf die Schnelle“ mal eben mit Python einige OpenCV-Funktionen testen – was in zwei Tagen Frust und Fehlersuche endete 😉

Hier meine Lösung für die vielen Probleme, die besonders durch die parallele Installation von GitStack (welches ein eigenes uraltes Python auf dem System prominent einrichtet):

  • WinPython-2.7.9 (64 Bit) installieren
    => ich verwende in allen Beispielen Laufwerk D: als Installationsziel
  • Startscript mit Aufruf von WinPython Command Prompt.exe und Setzen der Umgebungsvariablen:
    set PYTHONPATH=
    set PYTHONHOME=
    set PATH=D:WinPython-2.7.9.2;D:WinPython-2.7.9.2python-2.7.9.amd64;%PATH%
  • Python Console starten
  • Paket „numpy“ installieren mit:
    python Libsite-packageseasy_install.py numpy
  • OpenCV 2.4.10 (ist ebenfalls 64 Bit) installieren
  • OpenCV Python Modul „cv2.pyd aus „D:opencvbuildpython2.7×64“ nach „D:WinPython-2.7.9.2python-2.7.9.amd64Libsite-packages“ kopieren
  • python starten
  • import cv2 eingeben und sich freuen, wenn keine Fehler auftreten 😉
  • print cv2.__version__ eingeben, um die OpenCV Version anzuzeigen
  • WinPython bietet zudem mehrere grafische IDEs:
    • die schlanke IDLE (Python GUI).exe mit Vervollständigung+Funktionssuche
    • die schnelle und mit großartigem Funktionsumfang versehene Spyder.exe
      => mein absoluter Favorit! mit Live-Debugging usw.
    • die leichtgewichtige abgespeckte Version Spyder (light).exe

Bei Fehlern resultieren diese i.d.R. aufgrund Pfad-Problemen, d.h. der PYTHONHOME/PYTHONPATH Variable ist gesetzt und/oder PATH zeigt nicht als Erstes auf das WinPython-Verzeichnis.

WordPress Tipp: User kopieren

Wenn schnell Benutzer hinzugefügt oder zwischen WordPress-Blogs kopiert werden sollen, bietet sich bei Zugriff auf den dafür genutzten MySQL-Server das Kopieren der Datenbankeinträge an.

WordPress speichert seine Benutzerdaten dabei in zwei Tabellen: wp_users und wp_usermeta. Will man nun einen User von einem Blog in ein anderes übernehmen, reichen bereits zwei INSERT Statements:

INSERT INTO [wordpress_TARGET].wp_users SELECT u.* FROM [wordpress_SOURCE].wp_users u WHERE ID = [USERID];

INSERT INTO [wordpress_TARGET].wp_usermeta SELECT u.* FROM [wordpress_SOURCE].wp_usermeta u WHERE user_id = [USERID];

Diagramme in yED mit CISCO-Icons

Seit vielen Jahren suche ich schon nach einem möglichst einfach bedienbaren Tool für UML-Diagramme, Ablauf- und Netzwerkpläne.

Bis dato nutzte ich u.a. StarUML (nur Windows, stark veraltet), ArgoUML (etwas umständliche Bedienung), Umbrello (nicht relevant weiterentwickelt, einfach zu bedienen, sehr buggy), Dia (sehr kryptische Bedienung, unter Windows etwas buggy).

Hier noch eine Kurzübersicht zu OpenSource Diagramm-Editoren:

7 Free Diagramming Tools To Create Diagrams Easily – Alternative to Microsoft Visio

Seit nunmehr zwei Jahren nutze ich mehr und mehr das freie Java-Programm „yEd“ der deutschen Softwareschmiede yWorks, welches durch extrem einfache Bedienung und Zuverlässigkeit glänzt.

Einziges Manko bisher: Sehr begrenzte Anzahl mitgelieferter Symbole/Figuren.

Doch das liess sich einfacher lösen, als gedacht:

  • yEd starten
  • Rechts in der „Palette“ mit rechter Maustaste das Kontextmenü öffnen und „Symbole importieren“ auswählen
  • Jetzt beliebige Bilddateien als Icons/Vorlagen zur Palette hinzufügen, z.B. SVG Vektorgrafiken oder PNG-Dateien

Für Netzwerkpläne mit CISCO konformen Icons habe ich die frei verfügbaren CISCO-Icons in SVG konvertiert und die wichtigsten/häufigsten Icosn als neue Palette eingefügt.

Um die Palette in yED nutzen zu können, muss der Inhalt der „yEd_palette_CiscoNetworkIcons.zip“ unter Linux im Home-Verzeichnis ~/.yED/ und unter Windows ins Verzeichnis „…/Anwendungsdaten/.yEd/“ entpackt werden.

Die SVG-Versionen der CISCO-Icons und die Paletten-Datei für yED findet ihr hier als Download:

yEd_palette_CiscoNetworkIcons

cisco_svg_icons

Update: Sortierte (nur täglich verwendete) Icons mit Titeltext

Alle Rechte an den Icons liegen bei CISCO – die Originaldateien sind hier verfügbar: http://www.cisco.com/web/about/ac50/ac47/2.html

Java 7 auf Debian 6 „Squeeze“

Heute musste ich eine meiner Debian 6.0 (Squeeze) openVZ Container auf eine neue Java Version updaten. Nur leider lässt sich Java 7 aufgrund Lizenzrechtlicher Umstellungen vom neuen Eigner Oracle nicht mehr in OpenSource Distributionen aufnehmen.

Hier die Installation mittels Repositories, damit alles schön mit „apt-get“ läuft:

Installation:

echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
apt-get update
apt-get install ca-certificates
apt-get upgrade
apt-get install oracle-java7-installer

Resultat:

-bash-4.1# java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

Wichtig:
Viele Anleitungen im Netz enthalten nicht den Befehl „install certificates“, was dann eine Fehlermeldung mit ungültigen Zertifikaten zur Folge hat. Mit obigen Befehlen läuft die Installation nun durch.

Alarmstufe Rot – Internet Games

Da die Vollinstallation (siehe voriger Post) ohne weitere Bastelei noch keine Internet-Runden ermöglicht, hab ich eine Alternative rausgesucht:

RedAlert1.com

Auf dieser Seite wird eine 26 MB große RA 3.03E Version zum Download bereitgestellt, welche man nur entpacken und mit Click auf „cncnet.exe“ sofort im Internet spielen kann.

Einziger Wermutstropfen:
Im Gegensatz zur zuvor beschriebenen Vollinstallation gibt es hier keinen HiRes Modus, d.h. das Spiel läuft mit einer Auflösung von 640×480. Obwohl: Genau das macht doch das Retro-Feeling aus 😉

AlarmStufe Rot – kostenloser Klassiker

1996 hab ich mir „Command & Conquer: Alarmstufe Rot“ gekauft und ausgiebig gespielt… seitdem lag es (auch mangels Unterstützung für Windows XP und höhere Auflösungen) verstaubt im Schrank.

Aber: EA (neuer Besitzer der Markenrechte, kaufte das Westwood Studio) gab vor mehr als einem Jahr dieses Spiel und den Vorgänger „Command & Conquer: Tiberium Konflikt“ frei zum kostenlosen Download (wohl als Werbeaktion für den neuen Teil „Alarmstufe Rot 3“).

Nur leider nützt der im Spiel enthaltene Installer nichts, da dieser 16 Bittig ist und somit unter Windows 7 32/64 Bit nicht funktioniert.

Wie bekommt man das Spiel unter Windows 7 32/64 Bit zum Laufen?

    1. Lade dir das Spiel hier herunter oder such deine eingestaubte CD 😉
    2. Erstelle ein Verzeichnis für das Spiel (egal wo, z.B.: „C:WestwoodRA“)
    3. Kopiere den Inhalt des CD-Verzeichnisses „INSTALL“ in dein neues RA-Verzeichnis
    4. Lade dir den Installer für den RA 3.03 Patch herunter und führe in aus
    5. Lade dir den HighRes Patch für die Version 3.03 herunter und kopiere dessen Dateien ins RA-Verzeichnis
    6. Da der HighRes Patch gleich nen No-CD Patch enthält, einfach von einer der CDs die „main.mix“ der Lieblings-Kampagne ins RA-Verzeichnis kopieren -> dann sucht das Spiel nicht mehr nach einer CD 🙂

Das wars – jetzt kannst du das Spiel mit der RA95.exe starten – der HighRes Patch hat nur ein, zwei kleine Macken (z.B. Maus flitzt manchmal zu schnell über den Bildschirm), funzt aber weitestgehend und löst die Grafikfehler-Probleme des RA 3.03 zuverlässig.

Eigener Groupwareserver mit Zarafa

Heute hab ich es einfach mal ausprobiert: Meinen eigenen eMai- und Groupware-Server basierend auf Zarafa, PostFix, SpamAssassin und ClamAV
unter Debian installieren.

Dank dem deutschsprachigen und sehr gut geschriebenen Tutorial von Tschech-Online.de ging das in ca. ner halben Stunde – nur ein paar Feintuning-Arbeiten sind noch zu erledigen (richtige eMail-Server Einstellungen und SSL-Zertifikate sauber einrichten).

Warum eigentlich Zarafa? Weil es als Community Version völlig kostenfrei ist, auf vielen verschiedenen Systemen läuft und einen hohen Komfort bietet: Z-Push für eMail-Push-Funktion (fürs iPhone & Co) und eine komfortable Weboberfläche und Outlook-Integration.