Drahtwanderung: Wir machen den NeXTen Schritt

33
CLICK TO EDIT MASTER TITLE STYLE DRAHTWANDERUNG: WIIR MACHEN DEN NÄXTEN SCHRITT berlin.jar 2008 Falk Hartmann und Tobias Nebel 14. September 2008

description

 

Transcript of Drahtwanderung: Wir machen den NeXTen Schritt

Page 1: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLEDRAHTWANDERUNG:

WIIR MACHEN DEN NÄXTEN SCHRITT

berlin.jar 2008

Falk Hartmann und Tobias Nebel

14. September 2008

Page 2: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

• Wer sind wir?

• Geräteintegration mit Java

• Die ubigrate Integrationsplattform

• Demo

• Gewinnspiel

ÜBERSICHT

14.09.2008 2Drahtwanderung

Page 3: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Wer sind wir?

14.09.2008 3Drahtwanderung

Page 4: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

• ubigrate GmbH, Dresden

• „smart device integration“

• Anbieter von Integrationslösungen

– Produkt-basiert, aber individuell

– Universelle Plattform für Geräteintegrationssoftware

– Zusammenstellung aus standardisierten, wiederverwendbaren

Modulen

• Mitglied der Future Factory Initiative, Silicon Saxony und

Mitgründer der JUG Saxony

WER SIND WIR?

14.09.2008 4Drahtwanderung

Page 5: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLEUNSER THEMA: GERÄTEVIELFALT

14.09.2008 5Drahtwanderung

Page 6: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Geräteintegration mit Java

14.09.2008 6Drahtwanderung

Page 7: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Industriewaage

METTLER TOLEDO BBA 425

14.09.2008 7Drahtwanderung

MT-SICS• Herstellerspezifisches ASCII-Protokoll„MT Standard Interface Command Set“

• Weitgehende produktübergreifend („Protokollfamilie“)

RS 232• Standard der seriellen Kommunikation• Java Communications API javax.comm

v3.0 für Linux, Solaris; v2.0 Windowshttp://java.sun.com/products/javacomm/

• RX/TXAPI wie javax.comm, aber anderes Package (!)LGPL 2.1http://www.rxtx.org/

Page 8: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Energiezähler (Zwischenstecker)

NZR SEM 16 USB

14.09.2008 8Drahtwanderung

EN 62056-21:2002• Standard für das Auslesen von Energiezählern• ASCII-basiert• Hersteller- und produktübergreifend• Befehle zur Umstellung der Geschwindigkeit desunterliegenden seriellen Kommunikation

RS 232• Virtuelle serielle Schnittstelle

USB• Java: lieber auf die virtuelle serielle Schnittstelle zugreifen

Page 9: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

GPS-Navigationsgerät

MTK-BASIERTE GPS-MAUS

14.09.2008 9Drahtwanderung

NMEA-183• Standard für die Übermittlung von GPS-Daten• ASCII-basiert• Hersteller- und produktübergreifend

RS 232• Virtuelle serielle Schnittstelle• Möglicher Zugriffpunkt mittels Java

Bluetooth • SPP (Serial Port Profile)• Zugriff über JSR-82 Implementierung

• Avetana (kommerziell für Windows und Mac OS X, unter GPL für Linux, http://www.avetana-gmbh.de/)

• Bluecove (Linux, Windows; LGPL; http://www.bluecove.org)• siehe JavaSpektrum 1/2009

Page 10: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

RFID-Leser mit Antennenmultiplexer und LBT (UHF)

SIRIT INFINITY 510

14.09.2008 10Drahtwanderung

INfinity 510 Protocol • ASCII-basiert, konsolenähnlich

TCP/IP• Java: Heimspiel• Zwei Verbindungen parallel für Befehle und Ereignisse→ Synchronisation

Page 11: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Entwicklerspielzeug

LEGO MINDSTORMS NXT

14.09.2008 11Drahtwanderung

Lego Mindstorms Communication Protocol• Binär, little endian

RS 232• Virtuelle serielle Schnittstelle

USB• Eigener Treiber• Java: Nicht empfehlenswert Bluetooth

• SPP (Serial Port Profile)

Page 12: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Consolen-Controller

WII REMOTE

14.09.2008 12Drahtwanderung

WII HID Reports• Binär, spezifisch, undokumentiert• Reverse Engineered (siehe http://www.wiili.org)

USB HID• JSR-80: Java-USB (final 2005)• RI: http://javax-usb.org/• Alternativen:

jUSB (http://jusb.sf.net)Eigenentwicklung per JNI

Bluetooth• L2CAP• Erfordert L2CAP-tauglichen OS-Bluetooth-Stack (d.h.,nicht den MS-Stack)

Bluetooth

Page 13: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Monitoring von Umgebungsdaten

PARTICLE SENSORNETZWERK

14.09.2008 13Drahtwanderung

XML Reports• Temperatur, Druck, Beschleunigung, Helligkeit• Herstellerspezifisch

UDP• Broadcast• Java: java.net

ComCon• Herstellerspezifisch• Sendeinterval der Knoten per Firmware einstellbar

ZigBee• Java: java.net (Achtung: nicht probiert )

Page 14: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Monitoring von Umgebungsdaten

PARTICLE SENSORNETZWERK

14.09.2008 14Drahtwanderung

XML Reports• Temperatur, Druck, Beschleunigung, Helligkeit• Herstellerspezifisch

UDP• Broadcast• Java: java.net

ComCon• Herstellerspezifisch• Sendeintervall der Knoten per Firmware einstellbar

ZigBee• Java: java.net (Achtung: nicht probiert )

Page 15: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Voltmeter

VOLTCRAFT VC XXX SERIES

14.09.2008 15Drahtwanderung

(Namenlos)VC 840: Binäres ProtokollVC 940: ASCII-Protokoll

RS 232• VC 840: 2400 8/O/1• VC 940: 2400 7/O/1• Java: siehe vorn

- f ba ge d c

( VC 840)

( VC 940)

Page 16: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

• SNMP

– SNMP4J: http://www.snmp4j.org

• IETF RFC 2217 (Telnet COM Port Control Protocol)– Eigenbau basierend z.B. auf telnetd möglich http://telnetd.sf.net

• IEEE 1384 – Keine Java-Lösung in Sicht, „micromanager Ansatz“ möglich

– http://www.micro-manager.org

• OPC– OLE for Process Control

– Abhängig von Version

– OPC: nur über eine Bridge auf MS-OS (z.B. SAP xMII UDC)

– OPC DA: XML-basiert

– OPC UA: Java Stack vorgesehen

• IEEE 1284 (Druckerport)

– Recht selten, prinzipiell per RXTX

SONSTIGES

14.09.2008 16Drahtwanderung

Page 17: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Die ubigrate Integrationsplattform

14.09.2008 17Drahtwanderung

Page 18: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLEPRODUKT

14.09.2008 18Drahtwanderung

Page 19: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

• OSGi-basiert (Equinox 3.3)

• Declarative Services

• Modellierung mittels XML Schema

• Einsatz von JAXB (RI) mit zusätzlichen XJC Plugins

• Diverse APIs für die Ankopplung von Geräten (siehe

vorn) und Applikationen (Hibernate, JCo)

• Grundlegender Komponenten-Aufbau

TECHNISCHE GRUNDLAGEN

14.09.2008 19Drahtwanderung

Komponente

«consumer»

Events

DataData

«producer»

Events

Page 20: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLEAUFBAU EINES GERÄTEADAPTERS

Link Layer

Message Layer

Control Layer

byte[]LinkEvent

Map<String,Object>Custom typeMessageEvent

RFIDEventObject

Custom type

Proprietäres XML(„.msg.xml“)

SCXML (?)

DataEvents

14.09.2008 20Drahtwanderung

Page 21: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLEABSTRAKTIONSSCHICHTEN

14.09.2008 21Drahtwanderung

Link Layer

Message Layer

Control Layer

RS 232 TCP Bluetooth USB HID FileUDP

RFIDReaderAdapter

Quasar MR1

SIRIT Infinity 510

Particle Sensornetz

MeasurementAdapter

Voltcraft 840

...

...

...

Page 22: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

<message id="reader-register_event-request"

responses="reader-register_event-response">

<types:string fixed="reader.register_event("/>

<types:integer

target="eventConnectionID“

encoding="enc:ascii“

pattern="###0"/>

<types:string fixed=", "/>

<types:string target="eventTypes"/>

<types:string fixed=")"/>

<include-message ref="crlf"/>

</message>

VON DEN DATEN ZUR BOTSCHAFT UND ZURÜCK

14.09.2008 22Drahtwanderung

INfinity_510_Control.msg.xml

Page 23: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

<types:integer

target="eventConnectionID"

pattern="###0“

encoding="enc:ascii“

/>

VON DEN DATEN ZUR BOTSCHAFT UND ZURÜCK

14.09.2008 23Drahtwanderung

24: Integer

"24": String

{0x32, 0x34} : byte[]

Encoder

Formatter

Mes

sage

Lay

erLi

nk

Laye

r

Page 24: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

<message id="binary-prefix" scope="private">

<types:byte fixed="STX"/>

<byte-boundary id="checksum-start"/>

<types:byte target="stationID"/>

<types:byte

calculate="position(${payload-end})-

position(${payload-start})"/>

<byte-boundary id="payload-start"/>

</message>

<message id="binary-postfix" scope="private">

<byte-boundary id="payload-end"/>

<byte-boundary id="checksum-end"/>

<types:byte

calculate="xor(${checksum-start:checksum-end})"/>

<types:byte fixed="ETX"/>

</message>

OUT-OF-ORDER MESSAGE CREATION

14.09.2008 24Drahtwanderung

RDHC_0202N0_02.msg.xml

Page 25: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Beispiel: TAGnology ACG HF Multi ISO RFID Reader

• Length unbekannt bevor Data vollständig zur Verfügung

• Berechnung der BCC schließt Length ein

– Hier: BCC per XOR, keine Pufferung notwendig

– Andere Reader: CRC-16 o.ä., Out-of-Order computation

komplex, teilweise Patente

OUT-OF-ORDER MESSAGE CREATION

14.09.2008 25Drahtwanderung

STX Station ID Length Flags Data BCC ETX

1 byte 1 byte 1 byte 1 byte Variable Length 1 byte 1 byte

Page 26: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

<message id="ascii-programming-mode-request"

responses="ascii-programming-mode-response">

<types:byte fixed="ACK"/>

<types:string fixed="0"/>

<types:char target="baud-rate" pattern="#“ id=“baudrate”/>

<types:string fixed="1"/>

<include-message ref="crlf"/>

<event receiver="link"

class="com.ubigrate…events.Reconfigure">

<rs232events:reconfigure baud-rate=“${baudrate}"/>

</message>

LINK EVENTS

14.09.2008 26Drahtwanderung

SEM16USB.msg.xml

Page 27: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

• Steuerung des Link-Layers durch das Message-Layer

• Link-spezifische Information im Message Model

– Semantik: Nicht angesprochene Links müssen Event ignorieren!

• Beispiele:

– Protokoll-bedingte Umstellung der Link-Geschwindigkeit

• Beispiele: EN 62056-21:2002 über RS 232, ODB-2

– Vollständigkeit einer Übertragungseinheit

• Bei Links mit festen Sendelängen

• Beispiel: USB HID

LINK EVENTS

14.09.2008 27Drahtwanderung

Page 28: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Demo

14.09.2008 28Drahtwanderung

Page 29: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLEARCHITEKTUR

14.09.2008 29Drahtwanderung

WII Remote

IO Warrior

Mindstorms

Hotwire Demo Application

-Acceleration-Buttons-Rumble

-Ultrasonic & Touch Sensor-Motors

- Wire Contact

Flex UI

Page 30: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Gewinnspiel

14.09.2008 30Drahtwanderung

Page 31: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

• Ziel: Kürzeste Fahrzeit

• Es muß von Anfang bis Ende gefahren werden.

• 1x Kontakt → 10 Sekunden Penalty

• Hinweise: – Fahren = „B“ (Unterseite)

– Geschwindigkeit/Richtung: Kippen der WII Remote

– Links/Rechts: Drehen der WII Remote

– Achtung: Bei Kontakt stoppt Qubi, erst Kontakt lösen!

REGELN

14.09.2008 31Drahtwanderung

Page 32: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLEPREISE

14.09.2008 32Drahtwanderung

3x

Page 33: Drahtwanderung: Wir machen den NeXTen Schritt

CLICK TO EDIT MASTER TITLE STYLE

Vielen Dank für Ihre Aufmerksamkeit!

Anfragen können Sie jederzeit an uns richten.

KONTAKT

Drahtwanderung

http://www.ubigrate.comhttp://www.jugsaxony.org

14.09.2008 33