Freitag, 21. Dezember 2012

Der Raspberry Pi ist da!

Nach ungefähr 2 Monaten Wartezeit ist heute ENDLICH der Rasp angekommen. Wie erwartet auch in der 512MB Version.

Freitag, 9. November 2012

Aktuelle Liste der anwesenden Bewohner - Implementierung Teil 1

Während Christian Venga sich unter Einsatz seines Lebens damit beschäftigt die Belegung des DVI/HDMI-Adapter herauszufinden, möchte ich mich kurz mit einem Teil der Softwareimplementierung befassen.

Wir haben als Erstes damit begonnen die Funktionalität fertigzustellen, die es ermöglicht, die gerade anwesenden Bewohner anzuzeigen. Ein erster Schritt dahin besteht darin, anhand einer Liste die momentan im Netzwerk verfügbaren Geräte zu ermitteln. Wir nehmen dabei eine simple XML-Datei zu hilfe, um nicht groß eine Datenbankinfrastruktur aufbauen zu müssen.

Diese sieht wie folgt aus und beinhaltet eine Liste der User mit Namen, Hostname des Smartphones und ein Statusinformation, die anzeigt, ob das Gerät im lokalen Netzwerk ist. Wir werden diese Information später durch unser Programm dynamisch ändern.

 
  *Name*
  *Hostname oder IP*
  false
 

Wir werden die XML-Datei jetzt mithilfe von Java einlesen und dann die aktualisierten Daten in die Datei schreiben. Da wir vielleicht später noch einmal XML-Dateien lesen müssen, erstellen wir uns erstmal eine Hilfsklasse, die den Zugriff und Speicherung übernimmt.
import java.io.File;
import java.io.PrintStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;

/**
 * @author Vengadivision
 *
 */
public class XmlIO {

 /**
  * @param FilePath
  * @return
  */
 public static Document getXmlByFilePath(String FilePath) {
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  DocumentBuilder builder = null;
  try {
   builder = factory.newDocumentBuilder();
   Document document = builder.parse(new File(FilePath));
   return document;
  } catch (Exception e) {
   return null;
  }

 }

 /**
  * @param FilePath
  * @param document
  */
 public static void writeXmlByFilePath(String FilePath, Document document) {
  DOMSource source = new DOMSource(document);

  PrintStream ps;
  try {
   ps = new PrintStream(FilePath);
   StreamResult result = new StreamResult(ps);

   TransformerFactory transformerFactory = TransformerFactory
     .newInstance();
   Transformer transformer;
   transformer = transformerFactory.newTransformer();
   transformer.transform(source, result);
  } catch (Exception e) {
   e.printStackTrace();
  }

 }

}
Die beiden statischen Methoden sind denke ich soweit selbst erklärend. Mehr dann im nächsten Teil ;-)

Freitag, 2. November 2012

MDR-Stecker - Belegung

Hier schonmal auf Anfrage die Belegung des MDR Steckers. Die Pins die ich nicht beschriftet habe, müssen wir nochmal nachmessen. Die Liste erhebt keinen Anspruch auf Richtigkeit. Sobald wir die Gelegenheit haben (also wenn das Kabel und der Stecker da ist), werden wir es nachprüfen und die Tabelle ggf. korrigieren.

MDR-PinBelegung
1DDC Masse
2TMDS Clock Abschirmung
3DDC 5V Versorgungsspannung
4TMDS Data 0-
5TMDS Data 0+
6frei
7frei
8frei
9SDA (Pin 16 am HDMI)
10TMDS 1 Abschirmung
11frei
12TMDS 2-
13TMDS 2+
14TMDS Clock-
15TMDS Clock+
16frei
17TMDS 0 Abschirmung
18SCL (Pin 15 am HDMI)
19frei
20frei
21frei
22TMDS 1-
23TMDS 1+
24Hot Plug
25TMDS 2 Abschirmung
26frei
Die beiden fehlenden Pins sind ergänzt. Danke an den annonymen Kommentator ;) Die Belegung der HDMI-Stecker ist übrigens bei Wikipedia zu finden!

Dienstag, 23. Oktober 2012

Display - eine genauere Betrachtung


Da wir ja immernoch auf die weitere Hardware warten, haben wir uns schonmal ein par Gedanken zum Touchscreen gemacht. Hier erstmal ein Bild der Anschlüsse an der Rückseite des Screens.


  1. Power - 12V DC in
  2. 26 pol. MDR - ein digitaler Eingang, den wir per Eigenbauadapter auf HDMI adaptieren werden
  3. USB 2.0 - Allerdings nicht in der herkömmlichen Variante, es kann aber einfach mit einer zweireihigen 2,54mm Buchsenleiste ein Adapter auf den Standard-USB 2.0 gebastelt werden. Der Display ksann auch über USB mit Strom versorgt werden allerdings sind auch hier 12V notwendig. Eine USB Stromversorgung ist also nicht ohne weitere Hardware möglich. Wir werden also auf herkömmlichem Wege mit einem externen Netzteil arbeiten. Der Belegungsplan der Buchse sieht folgendermaßen aus:
     
    Quelle: IBM 4820 SurePoint Solution - Planung installation und Service
  4. integrierter USB-Hub - Hier könnte bspw eine Maus und Tastatur angeschlossen werden



Diese Leiste scheint wohl für den Anschluss eines Nummernpads gedacht zu sein. Werden wir wohl nicht benutzen.

Montag, 22. Oktober 2012

Der Touchscreen ist angekommen! :)

Endlich konnten wir mal den bestellten Touchscreen unter die Lupe nehmen. Wir waren eigentlich davon ausgegangen, dass es sich um ein resistives Display handeln müsste. Beim ersten Hands On hatten wir dann doch den Eindruck, ein kapazitives Display in den Händen zu halten. Da werden wir dann wohl nochmal recherchieren. Leider muss die erste Inbetriebnahme noch etwas warten, da die bestellten Kabel und Adapter noch aus China auf dem Weg zu uns sind. Hier aber schon mal das erste Bild. Sowohl weitere Bilder, als auch eine detailliertere Besprechung der Modifikationen, die für den Betrieb mit dem Raspberry nötig sind, folgen noch! :)

Samstag, 20. Oktober 2012

DeLorean und das mysteriöse Paket

Eigentlich sollte sich dieser Post nur mit dem DeLorean beschäftigen, aber wie ich gerade von Christian gehört habe, ist bei uns in der WG heute ein mysteriöses Paket eingetroffen. Wir sind gespannt, welches Teil sich darin versteckt (Ich tippe ja auf den Touchscreen!). Insofern hat das Geschreibsel doch etwas mit dem Projekt zu tun.

Doch kommen wir zu einer anderen interessanten Sache. Heute habe ich zum ersten Mal live einen echten DeLorean (wer kennt ihn nicht aus "Zurück in die Zukunft" mit seinen markanten Flügeltüren?) gesehen und sogar als Beifahrer die Fahrt genießen können. Ich möchte Euch die Bilder nicht vorenthalten :)
Motor
Timedrive nur mit Plutonium ;)

Flügeltür

Freitag, 19. Oktober 2012

Auslesen der VVS-Daten

Gute Neuigkeiten! Wir bekommen den Raspberry in der neuen Ausführung, nämlich mit 512 MByte Speicher. Leider ist er aber noch nicht angekommen, deswegen beschäftigen wir uns schon mal mit der Realisierung der Funktionen. Heute soll es um die ersten Schritte für das Auslesen der Real-Time Daten einer Haltestelle gehen.
Über die Seite
http://www2.vvs.de/vvs/widget/
kann ein HTTP-Request abgesetzt werden, der eine XML mit den angeforderten Daten zurückgibt. Das Tolle ist, dass keine Session angelegt werden muss, um diese Infos zu bekommen.
Wir haben noch nicht alle Parameter ausgetestet, aber wir werden jetzt kurz auf die eingehen, die uns bekannt sind.


  • language -> Sprache der Rückgabe, hat allerdings keine direkte Auswirkung in diesem Fall. Die Ausgabe bleibt gleich.
  • limit -> Anzahl der Datensätze, die zurückgegeben werden, im Beispiel 20
  • name_dm -> 7-stellige ID der Haltestelle
  • itdDateYear,itdDateMonth,itdDateDay, itdTimehour, itdTimeMinute ->  Zeit der Anfrage

Hier eine Beispielanfrage:

http://www2.vvs.de/vvs/widget/XML_DM_REQUEST?
zocationServerActive=1
&lsShowTrainsExplicit=1
&stateless=1
&language=de
&SpEncId=0
&anySigWhenPerfectNoOtherMatches=1
&limit=20
&depArr=departure
&type_dm=any
&anyObjFilter_dm=2
&deleteAssignedStops=1
&name_dm=XXXXXXX
&mode=direct
&dmLineSelectionAll=1
&itdDateYear=2012
&itdDateMonth=10
&itdDateDay=12
&itdTimeHour=19
&itdTimeMinute=26
&useRealtime=1


Der nächste Schritt wird sein, den zurückgegebenen XML-Tree zu parsen und auszulesen.Dazu später mehr!
(Vielen Dank an Felix N. und Moritz T. aus S.-V. für die Infos ;-))

Dienstag, 16. Oktober 2012

Geplante Einsatzmöglichkeiten

Im Rahmen der Planung des Projekts haben wir bereits einige Einsatzmöglichkeiten identifiziert, die im Folgenden kurz besprochen werden:


Türöffner

Der Summer für die Eingangstür soll sowohl über den Touchscreen, als auch über eine Handyapp betätigt werden können. Bei der App ist es besonders wichtig, dass eine sichere Authentifizierung des Benutzers erfolgt. Der Knopf für den Summer wird ebenso wie bei der Lichtsteuerung über ein Relais gebrückt, dass vom GPI/O des Raspberry geschaltet wird.



Lichtsteuerung


Über den GPI/O  und ein gewöhnliches Relais ist es möglich, einen Lichtschalter zu Brücken und somit eine "Schnittstelle" zu dem digitalen System zu schaffen. Unter Umständen ist es nötig noch Schutzmaßnahmen zu treffen, um den Raspberry vor Überspannung zu schützen.


ÖPNV-Anzeige


Der Raspberry soll Informationen über die Bahnverbindung an der nahegelegenen Haltestelle von der VVS-Website auslesen und anzeigen. Als Vorbild dienen die Anzeigetafeln an Bahnhöfen.


Aktuelle Liste der anwesenden Bewohner


Die Software führt eine Liste, derer Mitbewohner, die aktuell zu Hause sind. Dies geschieht sowohl automatisch (es wird in regelmäßigen Abständen überprüft, welche Handys im heimischen WLAN angemeldet sind) als auch manuell, per Login oder -out am Terminal. Die Liste ist für alle anderen im Internet zugänglich.


Putzplan


Ein Putzplan für die Wohnung liegt im PDF-Format vor und soll auf Wunsch angezeigt werden können.


Vorlesungspläne


Vorlesungspläne liegen im PDF-Format vor und sollen angezeigt werden. Da verschiedene Bewohner verschiedene Vorlesungspläne einsehen wollen, muss hier eine Benutzeridentifizierung erfolgen.


Voice Recognition (Awesomeness Level over 9000)


Einfache Befehle (vornehmlich für die Lichtsteuerung) sollen per Voice Recognition eingegeben werden können. Hier ist noch zu klären, ob das mit dem Raspberry überhaupt möglich ist.


Einkaufsliste

Nach der groben Planung steht die Einkaufsliste auf dem Programm.

  • Raspberry Pi in der Ausführung B
  • IBM 12" Pos Monitor TFT Display 4820-48T Kassendisplay

Da das Display mit einem MDR26 Stecker und einem proprietären USB-Anschluss ausgerüstet ist, das Raspberry aber nur mit HDMI und USB 2.0, sind noch einige Adapter nötig. Aus Kostengründen werden wir diese so weit es geht selbst bauen.

Adapter:
  • HDMI auf DVI-Kabel (male)
  • 26 Pin MDR Wire Mount
  • HDMI (female ) zu DVI (male) Adapter zu Diagnosezwecken
Das Raspberry Pi kann über den integrierten GPI/O (General Purpose Input/Output) mit Relais verbunden werden.

Gesamtpreis bis jetzt: ca. 80€

Die benötigte Hardware ist bestellt und wir warten gespannt auf die Ankunft.


Das Projekt

Das ProjectShinyDonut ist ein Low-Budget  Smarter-Living Home-Automatisierungsprojekt. Es besteht im Wesentlichen aus einem Raspberry-Pi, der mit einem Touchscreen, mit einigen elektronischen Geräten im Haus und über das Heimnetzwerk mit dem Internet verbunden ist. Das System soll direkt über den Touchscreen oder über ein Online-Interface (bspw. auch per Smartphone) steuerbar sein.

Software
Auf dem Raspberry wird das Betriebssystem Raspbian laufen (eine angepasste Debian Distribution). Ob die Applikation dann in reinem Java oder als Weboberfläche mit vorgeschaltetem Tomcat-Apllicationserver realisiert wird, ist noch nicht entschieden.

Blogverzeichnis - Blog Verzeichnis bloggerei.de