Arduino-Software Version 1.0 WProgram.h Problematik

Ab der Version 1.0 der Arduino-Software wurde die Library WProgram.h umbenannt in Arduino.h.

Was unscheinbar wirkt führt zu großen Fehlern, die aber leicht begehbar sind.

Dazu muss innerhalb in der problematischen Library die Zeile

#include "WProgram.h"

gegen

#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif

ausgetauscht werden. So wird die richtige Library gelinkt und die Fehler verschwinden.

DIY — AppleTV 2 als Webserver

Auf der Suche nach einem PC der für einen für einen privaten Webserver geeignet ist (niedrige Energiekosten und geringer Kaufpreis) bin ich bei heise.de den Artikel Provider nutzt Apple TV 2 als Webserver gefunden. Da der AppleTV (2. Generation) nur 119Euro kostet, habe ich mir gleich mal einen gekauft.
Im heise.de-Artikle fidet sich folgende Anleitung „Wer das Ganze nachbauen will, findet hier weitere Infos.„.
Es müssen folgende Schritte vollzogen werden:

  1. AppleTV jailbreaken
  2. Konfiguration der LAN oder WLAN Verbindung
  3. Installation des Webservers und der zusätzlich benötigten Software (PHP, Datenbank)

AppleTV jailbreaken

Da ich noch nie ein IOS-Gerät gejailbreakt habe müsste ich mich zuerst über die Jailbreak Thematik informieren was leider gar nicht so einfach ist, da man sehr viele unterschiedliche Informationen dazu im Netz findet.
Eine Web-Recherche hat folgende Möglichkeiten ergeben:

Nach längerem Probieren hat bei mir hat die Methode mit Seas0nPass funktioniert. Das Tool Pwnage 4.3 wäre mir persönlich lieber gewesen, da ich gleich die benötigten Pakete anhand einer Auswahl installieren konnte, leider hat aber der Jailbreak nicht funktioniert. Ich verzichte hier auf eine Beschreibung, da zum einem in den beiden Links das Vorgehen genau erklärt wird und zum anderen, da sich das Vorgehen beim Jailbreaken mit jeder neuen IOS-Version ändern kann. Es bleibt einem nichts anderes übrig als ich selbst in das Web zu stürzen und eine Möglichkeit die bei einem funktioniert zu suchen.

Konfiguration des AppleTVs als Webserver

Von der Seite How To Turn an Apple® TV 2G into a 24/7 Web Server kann man sich ein Shellscript herunterladen, das den gesamten Webserver installiert. Ich möchte im Folgenden trotzdem die einzelnen Schritte beschreiben, da man ja eigentlich nicht viel lernt, wenn man ein fertiges Script ausführt. Folgt hier eine Anleitung es per Hand zu machen.

  1. Installation der benötigten Software: dazu muss man sich mittels der Terminal.app und des Befehls ssh auf die Shell des AppleTV schalten:
     ssh root@ipappletv 
    mit Passwort alpine und anschließend folgende Befehle eingeben:
  2. <br />
    apt-get -y install top<br />
    apt-get -y install vim<br />
    apt-get -y install php<br />
    apt-get -y install lighttpd<br />
    apt-get update<br />
    apt-get update<br />
    apt-get -f -y upgrade<br />
    

    Es werden folgende Softwarepakete installiert:

    • top ist ein Befehl. der in den meisten Unix-ähnlichen Betriebssystemen eine ständig aktualisierte Liste der aktuell laufenden Prozesse des Systems ausgibt. Dabei zeigt top auch die Auslastung der CPU, Speicherverbrauch, sowie etliche andere Informationen an.
    • vim ist eine Weiterentwicklung des Texteditors vi. Das freie Open-Source-Programm wurde 1991 von Bram Moolenaar veröffentlicht. Seitdem wird der Editor aktiv weiterentwickelt. Wie vi zeichnet sich Vim durch seine verschiedenen Betriebs-Modi aus, während viele andere gebräuchliche Editoren nur einen kombinierten Modus für Eingabe und Befehle kennen, in dem Befehle über Tastenkombinationen und grafische Oberflächen ausgeführt werden. Alternativ kann auch nano installiert werden.
    • php ist eine Skriptsprache, die hauptsächlich zur Erstellung dynamischer Webseiten oder Webanwendungen verwendet wird.
    • lighttpd (zumeist gesprochen als Lighty) ist ein von Jan Kneschke entwickelter freier Webserver. Er implementiert alle wichtigen Funktionen eines Webservers und kann, ähnlich wie Apache, durch Module erweitert werden.
  3. Jetzt müssen noch ein paar Verzeichnisse erstellt und die Zugriffsrechte gesetzt werden. Im Verzeichnis /private/var/www werden die Daten gespeichert, die der Webserver zur Verfügung stellen wird. Das Verzeichnis /var/log/lighttpd dient zum loggen von Fehlern und Zugangsdaten des Webservers.
  4. <br />
    mkdir /private/var/www<br />
    chown root:wheel /private/var/www<br />
    mkdir /var/log/lighttpd<br />
    chown root:wheel /var/log/lighttpd<br />
    

    • mkdir Unix-Befehl der ein Verzeichnis erstellt.
    • chown root:wheel Unix-Befehl der die Eigentumsrechte für den Benutzer root aus der Gruppe wheel setzt.
  5. Die Konfiguration von lighttpd ist in einer Datei lighttpd.conf zusammengefasst, die im Verzeichnis /private/etc/ gespeichert werden muss.
  6. [js_markieren]

    server.document-root = "/private/var/www/"
    
    server.port = 80
    # server.username = "lighttpd"
    # server.groupname = "lighttpd"
    # richtige IP des Webservers eintragen
    server.bind                = "192.168.0.150" 
    server.tag ="lighttpd"
    
    server.errorlog            = "/var/log/lighttpd/error.log"
    accesslog.filename         = "/var/log/lighttpd/access.log"
    
    server.modules              = (
                "mod_access",
                "mod_accesslog",
    	    "mod_fastcgi",
                "mod_rewrite",
    	    "mod_auth"
    )
    
    # mimetype mapping
    mimetype.assign             = (
      ".pdf"          =>      "application/pdf",
      ".sig"          =>      "application/pgp-signature",
      ".spl"          =>      "application/futuresplash",
      ".class"        =>      "application/octet-stream",
      ".ps"           =>      "application/postscript",
      ".torrent"      =>      "application/x-bittorrent",
      ".dvi"          =>      "application/x-dvi",
      ".gz"           =>      "application/x-gzip",
      ".pac"          =>      "application/x-ns-proxy-autoconfig",
      ".swf"          =>      "application/x-shockwave-flash",
      ".tar.gz"       =>      "application/x-tgz",
      ".tgz"          =>      "application/x-tgz",
      ".tar"          =>      "application/x-tar",
      ".zip"          =>      "application/zip",
      ".mp3"          =>      "audio/mpeg",
      ".m3u"          =>      "audio/x-mpegurl",
      ".wma"          =>      "audio/x-ms-wma",
      ".wax"          =>      "audio/x-ms-wax",
      ".ogg"          =>      "audio/x-wav",
      ".wav"          =>      "audio/x-wav",
      ".gif"          =>      "image/gif",
      ".jpg"          =>      "image/jpeg",
      ".jpeg"         =>      "image/jpeg",
      ".png"          =>      "image/png",
      ".xbm"          =>      "image/x-xbitmap",
      ".xpm"          =>      "image/x-xpixmap",
      ".xwd"          =>      "image/x-xwindowdump",
      ".css"          =>      "text/css",
      ".html"         =>      "text/html",
      ".htm"          =>      "text/html",
      ".js"           =>      "text/javascript",
      ".asc"          =>      "text/plain",
      ".c"            =>      "text/plain",
      ".conf"         =>      "text/plain",
      ".text"         =>      "text/plain",
      ".txt"          =>      "text/plain",
      ".dtd"          =>      "text/xml",
      ".xml"          =>      "text/xml",
      ".mpeg"         =>      "video/mpeg",
      ".mpg"          =>      "video/mpeg",
      ".mov"          =>      "video/quicktime",
      ".qt"           =>      "video/quicktime",
      ".avi"          =>      "video/x-msvideo",
      ".asf"          =>      "video/x-ms-asf",
      ".asx"          =>      "video/x-ms-asf",
      ".wmv"          =>      "video/x-ms-wmv",
      ".bz2"          =>      "application/x-bzip",
      ".tbz"          =>      "application/x-bzip-compressed-tar",
      ".tar.bz2"      =>      "application/x-bzip-compressed-tar" 
     )
    index-file.names = ( "index.html", "index.php" )
    
  7. Mit dem Befehl lighttpd-angel -f /etc/lighttpd.conf wird der Webserver gestartet.

Hintergrund Informationen

Auf den folgenden Seiten findet man zusätzliche Informationen:

Installing and configuring lighttpd webserver – HOWTO

LDAP + Lighttpd :: Easy setup

Apple TV Webserver | Mac Mini Vault

NwT — unsere neue CNC Fräse an der Schule

Am 29.März 2012 war es endlich so weit, unsere neue CNC-Fräse eine Kosy A3!

Hier ein paar Bilder!