Posts by thbeckmann

    Hi Obelixus,

    mir fallen eine Menge Gründe ein, warum das schief gehen kann: SIRF statt NMEA kann ein Problem sein, aber "krytisch" hört sich für mich eher nach einem Kodierungs-Problem an, also UTF8 versus ISO o.ä. Wenn Du mehr Informationen (z.B. den entstehenden Output) beisteuerst, kommen sicher mehr Ideen!

    Ich benutze nginx mit php als CGI-Modul und als Datenbankserver Firebird, das geht ganz prima, zugegebenermaßen etwas langsamer als bei meinem Quadcore Notebook - für eine Web-Applikation allerdings vollkommen akzeptabel, obwohl die DB ziemlich anspruchsvolle datamining tasks macht.

    Hi Markus,

    ich hab' mich damit befasst, für mein Motorrad ein Tachometer mittels des PI zu bauen - das ist zwar noch nicht fertig, aber einen "Proof of Concept" habe ich: Drehzahlmesser (Zündimpulse) und (Radumdrehungen mittels Hall-Sensor) werden gezählt und ausgewertet.

    Das Ergebnis wird an ein 2-zeiliges LCD-Display übermittelt (C-Progrämmchen).

    Sicher: "mit Kanonen auf Spatzen", aber Du hast ja ein paar mehr Sensoren und ich hab' vor, das ganze noch mit GPS und anderem zu kombinieren...

    Fröhliche Grüße, Thomas

    Nun, obelixus' Namenspate suggeriert einigen "Wupps" - warum sollte es nicht klappen... Die GPS-Sensoren senden einen recht geschwätzigen Datenstrom, den Du i.d.R. über eine COM-Port-Emulation auslesen kannst - meist handelt es sich um das NMEA-Protokoll, aber das hast Du bestimmt schon herausgefunden. Per Software (die Du m.W. aber selbst schreiben musst) kannst Du das live abfragen und nur bei Veränderungen der Position nach "Scharfschalten" Dir eine Nachricht (z.B. eine SMS) schicken lassen, die die neue Position enthält. Umwandeln in eine Straßenkarte wirst Du die sicher immer müssen, aber Open Street Maps kann m.W. auch Geo-Koordinaten verarbeiten.

    header ist nur nach nix anderem davor möglich, Dein echo 1 führt hier zum Problem

    Ich will's mal dahingehend präzisieren, dass keine Ausgabe erfolgen darf (z.B. auch kein Leerzeichen vor dem ersten <?php), bevor Du den header sendest.

    Als Alternative zu der recht häufig verwendeten Kombination Apache/PHP/MySQL verwende ich lieber nginx/PHP/Firebird: Das ist leichtgewichtiger und die Firebird-Datenbankengine ist komplett open source und sehr leistungsfähig.
    Dieses Tutorial bezieht sich auf Rapbian.

    Vorbereitung
    Ich habe mich mit

    Code
    sudo startx


    angemeldet, damit ich einerseits die grafischen Tools nutzen kann und andererseits gleich eine administrative Konsole zur Verfügung habe.
    Alternativ mache ich sowas mit

    Code
    sudo mc


    dann habe ich den Midnight Commander, bei dem man mit Strg-O in eine Konsole wechseln kann, oder mit

    Code
    sudo -s


    um auf der Kommandozeile als root zu werkeln.

    nginx
    Mit

    Code
    apt-get install nginx


    habe ich in einer Konsole nginx installiert.
    In /etc/nginx/sites-available/default stehen die Standard-Server-Einstellungen von nginx. Sie besteht aus Abschnitten, die jeweils mit einem Schlüsselwort beginnen dem nach einem Leerschritt ein Wert und ein Semikolon oder ein in geschweifte Klammern eingeschlossener Block folgt.
    Insbesondere steht hier, dass das Standard-Web-Verzeichnis unter /usr/share/nginx/www liegt.
    Wenn Ihr im Browser localhost als Adresse eingebt, wird der Inhalt der Datei /usr/share/nginx/www/index.html angezeigt - nginx ist korrekt installiert.

    PHP
    Von nginx wird PHP als CGI-Modul angesprochen und muss folglich auch so installiert werden. Man kann dafür den PHP-FPM (FastCGI Process Manager) verwenden:

    Code
    apt-get install php5-fpm


    der sich als Daemon /etc/init.d/php5-fpm als FastCGI Server auf Port 9000 installiert.

    PHP in nginx anbinden
    In /etc/nginx/sites-available/default steht bereits ein Abschnitt zu PHP, den man einfach einkommentieren kann ("#" entfernen). Dabei bleibt der Abschnitt zu "php-cgi alone" auskommentert.
    Es wird darauf hingewiesen, dass in /etc/php5/fpm/php.ini die Option cgi.fix_pathinfo=0 gestellt werden soll - weil ich PATH_INFO nicht verwende, hat das für mich keine Bedeutung.
    Mit einem

    Code
    nginx -s reload


    wird die Konfiguration neu eingelesen.
    Sollte gemault werden, dass /var/run/nginx.pid nicht korrekt ist, läuft nginx noch nicht und Du startest ihn mit

    Code
    /etc/init.d/nginx restart


    Testen kann man das Ganze dann mit einem

    PHP
    echo "<?php phpinfo(); ?">/usr/share/nginx/www/index.php


    und der Angabe von localhost/index.php in der Adresszeile des Browsers.
    Soll index.php standardmäßig als Index-Seite gelten, muss das in /etc/nginx/sites-available/default in der Zeile "index index.html index.htm;" ergänzt werden: "index index.php index.html index.htm;".

    Session-Data unter nginx mit PHP als FastCGI

    Auf das Standard-Verzeichnis für die Speicherung der Session-Daten in "/var/lib/php5" hat der FastCGI-Benutzer i.d.R. keinen Schreibzugriff, daher kann kein Session-Data abgelegt werden. Erstellt ein entsprechendes Verzeichnis und gebt ihm die entsprechende Berechtigung:

    Code
    mkdir /var/lib/php5/seesiondata
    chmod 1733 /var/lib/php5/sessiondata


    Das Verzeichnis muss dann in der "/etc/php5/fpm/php.ini" eingetragen werden:

    Code
    session.save_path = "/var/lib/php5/sessiondata"


    Firebird
    Der Datenbank-Server Firebird wird mit

    Code
    sudo apt-get install firebird2.5-super


    installiert. Die anderen Firebird-Architekturen sind für den Pi nicht so geeignet.
    Man kann den Server auch selbst kompilieren, wie hier beschrieben, das dauert aber ein Weilchen.
    Nach der Installation läuft der Firebird-Server auf Port 3050 unter dem Benutzer firebird (letzteres bedeutet, dass der Server selbst nur dann z.B. Datenbanken anlegen kann, wenn das Datenbankverzeichnis mit den entsprechenden Rechten versehen ist, z.B. firebird gehört).
    Die Installation erfolgt im wesentlichen nach /user/local/firebird. Hier unter bin stehen eine Reihe von Standard-Werkzeugen zur Verfügung, für die der Benutzer pi keine Rechte hat - es empfiehlt sich, die nach /home/pi/bin zu verlinken und den Pfad entsprechend zu modifizieren.
    Mit

    Code
    /usr/local/firebird/bin/isql -z


    kann man prüfen, ob der Server korrekt läuft.
    Da dies kein Firebird-Tutorial werden soll, nur kurz der Hinweis: Als grafisches Datenbank-Administrationswerkzeug läuft auf dem PI auch FlameRobin, und wer eine Windows-Maschine mit dem PI verbinden kann/will, kann auch IBExpert benutzen.

    Firebird in PHP
    In der Ausgabe der Testseite (phpinfo, s.o.) lässt sich erkennen, dass standardmäßig interbase bereits als dynamische Bibliothek zur Verfügung steht und dass die zugehörige Client Library Firebird ist - Firebird ist im wesentlichen kompatibel mit Interbase und die Aufrufe im PHP-Code erfolgen über die entsprechenden ibase_ Funktionen - Hinweise, wie die Verwendung erfolgt, finden sich in der PHP-Dokumentation zu Firebird/Interbase.

    Der ANSI-kompatible SQL-Server Firebird ist schnell, mächtig (Trigger, Prozeduren, Recursive Common Table Expressions und vieles mehr) und Open Source. Es gibt verschiedene gute, freie Werkzeuge zur Arbeit mit dem Server wie FlameRobin (läuft auch auf dem PI) und IBExpert (Windows, in der "Personal"-Version frei).
    Grundsätzlich stehen mit

    Code
    sudo apt-get install firebird2.5-super


    fertige Binaries für den Betrieb des Servers zur Verfügung - aber leider sind die nicht immer ganz aktuell.
    Da ich eine aktuelle Version brauche, habe ich den Server selbst kompiliert - das ist einiger Fummelkarm, dieses Tutorial richtet sich also eher an erfahrenere Benutzer (fragt, wenn Ihr irgendwo stecken bleibt):
    Build des SQL-Servers
    Mein Kollege Frank hat mir seine Entwicklungsumgebung firebird.tar.gz zur Verfügung gestellt, die ich hier angehängt habe.
    Um mir während der Arbeit dauernde "sudos" zu ersparen, wechsle ich mit

    Code
    sudo -s


    komplett in den sudo-Modus oder starte mit

    Code
    sudo startx


    eine X-Session als root.
    Auf einem frischen PI steht vermutlich SVN (Subversion) und verschiedene Bibliotheken nicht zur Verfügung, also erstmal installieren mit

    Code
    apt-get install subversion autoconf libtool libncurses5-dev libatomic-ops-dev libicu-dev


    Das Archiv von Frank habe ich nach /home/firebird/src entpackt. Dort führe ich nun

    Code
    ./coFB25_release.sh


    aus, damit holt sich der PI die aktuellen Release-Sources des Firebird vom SVN-Server.
    In der Datei config25 prüfe ich, ob enable-superserver=yes steht, weil das für den PI die geschickteste Architektur des Firebird ist.
    Mit

    Code
    ./config25


    wird die Konfiguration angepasst - mit dem Konfigurieren ist der PI rund 20 Minuten beschäftigt, am Ende kommt die Meldung

    Code
    Now type 'make' to compile Firebird2

    Wenn man das dann tut

    Code
    ./make_it


    dauerts 'n bißchen (also sicher deutlich mehr als 'ne Stunde), währenddessen der PI 100%-CPU in die Kompilierung des Servers steckt.
    Wenn's kürzer dauert, ist in der Regel was schiefgegangen, in ./fb25_release/make.log findet sich dann ein Hinweis, was das ist.
    Nun ist der Server fertig kompiliert und muss nur noch installiert werden:

    Code
    cd fb25_release
    make install


    Er läuft als Benutzer firebird und ist nach /user/local/firebird installiert.

    Hi Passi,

    ich bin auch erstmal ziemlich am Suchen gewesen.

    Ich hab's am Ende so gelöst. (Wenn der Dropbox-Link nicht geht packe ich's woanders hin).
    Insbesondere ging bei mir eines der USB-Kabel nicht - aber das hast Du ja schon mit der externen Stromversorgung ausgeschlossen.

    Auch einer der HDMI-Adapter ging nicht: Hast Du ein anderes Gerät, dass das HDMI-Signal ohne einen Deiner Adapter/Kabel abnehmen kann? Es gibt bei den HDMI-Kabeln m.W. welche, bei denen ein PIN nicht belegt ist, der vom Lapdock für die Erkennung des Geräts verwendet wird. Ich habe schließlich diesen Adapter verwendet - ob der nun immer noch funktioniert, weiß ich nicht, ich habe gelesen, dass manchmal unterschiedliche Chargen "des selben" Kabels/Adapter unterschiedlich sind.

    Nicht wirklich viel Nützliches, aber ich war froh, irgendwann eine funktionierende Kombination gefunden zu haben...

    Viel Erfolg, Thomas