Upload
masanori-fujita
View
370
Download
0
Embed Size (px)
Citation preview
© Zühlke 2012
Masanori Fujita
Auf Tuchfühlung mit smarten Geräten
Die Zukunft ist vernetzt.
Masanori Fujita Zühlke Engineering GmbH
März 2012 Slide 1
© Zühlke 2012
Wo bleibt Android@Home?
• Android@Home im Mai 2011 auf der Google I/O angekündigt
• Vision: “think of your entire home as an accessory” – Lichtsteuerung – Sensoren – Mediensteuerung
• Funkprotokoll eigens für diesen Zweck
• Bis dato kein Android@Home
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 2
• Beleuchtung
• Heizung
• Waschmaschine
• Geschirrspüler
• Wettersensoren
• Türklingel
• Audio & Video
© Zühlke 2012
GSM/3G
WiFi
Bluetooth NFC
USB
Eingebaute Schnittstellen
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 4
© Zühlke 2012
Traditionelle Rollen
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 6
Master Device
Accessory
Accessory
• PCs
• Eingabegeräte
• Massenspeicher
• Drucker
• Kamera
• MP3-Player
• Smartphones
© Zühlke 2012
Rollenverschiebung
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita
Master Device
Accessory
Accessory
• PCs
• Smartphones
• Eingabegeräte
• Massenspeicher
• Drucker
• Kamera
• MP3-Player
• Smartphones
Slide 7
© Zühlke 2012
USB Host Mode
• USB Host muss 500mA liefern
• USB On-the-Go ermöglicht limitierte USB-Host-Funktionalität
• USB Host-Mode ist optional
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 8
Accessory
Accessory
USB Slave USB Host
Open Accessory Development Kit
Dev. Machine
Android Phone
© Zühlke 2012
ADK Initialisierung
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 11
Acc
esso
ryA
nd
roid
Dev
ice
Wait for Android device to connect
Request USBdevice descriptor
Wait for accessory to connect
Device in accessory mode?Send
Google’s vendor and product ID
SendOEM’s vendorand product ID
Requestaccessory support
yes
noConfirm
accessory support
Send accessory identifiers and
accessory mode startup command
Establish endpoint connection
Switch toaccessory mode
Let app communicate with
accessoryvia serial I/O
Communicate with Android device
via serial I/O
Raise Intent to launch suitable app
Ask user for permission
Android deviceconnected
Power On
Power On
© Zühlke 2012
Viel Zubehör für iPhones
14. März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 14
MFi
© Zühlke 2012
Android: Viele Formfaktoren
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 15
Motorola Pro+
Samsung Galaxy S II
HTC Velocity 4G
© Zühlke 2012
USB-Support in Android
ADK (seit 3.1 + 2.3.4)
USB Host Mode (seit 3.1)
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 16
Sep 2008 Mar 2012
Sep-08
1.0
Feb-09
1.1
Apr 09
1.5
Sep-09
1.6
Oct 09
2.0
Jan 10
2.1
May 10
2.2
Dec-10
2.3
Feb-11
3.0
Oct-11
4.0
May-11
3.1
Jul-11
3.2
• Arbeitet zuverlässig und schnell
• Einfache Handhabung für Benutzer und Entwickler
• Für Kommunikation mit Großgeräten hervorragend
• Für kleines Zubehör: Stromzufuhr und Formfaktoren mögliche Killerkriterien
© Zühlke 2012
Bluetooth-Profile noch und nöcher
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 19
SPP
FAX
DUN
HDP
HFP
OPP
OPP
HSP
HID
SIM
© Zühlke 2012
Der Bluetooth Stack in Android
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 20
Bluetooth Controller
L2CAP
RFCOMM
Link Manager Layer
Baseband Radio Layer
Service Discovery Protocol
Serial Port Profile (SPP)
Android API (android.bluetooth.*)
Virtueller serieller Port
Socket
© Zühlke 2012
Was die API bietet…
• Nach Geräten suchen
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 21
© Zühlke 2012
Was die API bietet…
• Nach Geräten suchen
• Auf eintreffende RFCOMM-Verbindungen lauschen
• RFCOMM-Verbindungen aufbauen
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita
Slide 24
© Zühlke 2012
Was die API bietet…
• Nach Geräten suchen
• Auf eintreffende RFCOMM-Verbindungen lauschen
• RFCOMM-Verbindungen aufbauen
• Unter Verwendung von HFP, HSP, HDP, A2DP auf Geräte zugreifen
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita
Slide 26
© Zühlke 2012
Was die API bietet…
• Nach Geräten suchen
• Auf eintreffende RFCOMM-Verbindungen lauschen
• RFCOMM-Verbindungen aufbauen
• Unter Verwendung von HFP, HSP, HDP, A2DP auf Geräte zugreifen
• Neue Bluetooth-Profile implementieren
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita
Slide 27
© Zühlke 2012
Nicht alle Profile nutzen RFCOMM Beispiel: HDP
14. März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita
Bluetooth Controller
L2CAP
MCAP
Link Manager Layer
Baseband Radio Layer
Service Discovery Protocol
Health Device Profile
Slide 28
© Zühlke 2012
Nicht alle Profile nutzen RFCOMM Beispiel: HID
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita
Bluetooth Controller
L2CAP
Link Manager Layer
Baseband Radio Layer
Service Discovery Protocol
Human Interface Device Profile
Slide 29
© Zühlke 2012
Auf Nummer sicher gehen mit RFCOMM, außer wenn…
• ein Bluetooth-Profil nur auf RFCOMM und SDP aufbaut und vollständig in Java implementiert werden kann
• die Menge der Zielgeräte bekannt ist – auf native BT-Treiber zugreifen – native Erweiterungen entwickeln und als BT-Profile nutzbar
machen – Custom ROMs bauen
• Google weitere BT-Profile zur Pflicht macht
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 30
• Wird von den meisten Android-Geräten unterstützt
• Manchmal unhandlich für den Benutzer
• Nur serielle Kommunikation garantiert vorhanden
Borrowed from nfc-forum.org
© Zühlke 2012
Lesen and Schreiben von Tags
• Unterstützung für verschiedene Tagtypen – NFC Forum Type 1-4 – Mifare
• API-Features – Tag-Annäherung
erkennen – Lesen und Schreiben
von NDEF-Nachrichten – Low-Level-Zugriff auf
Sektoren
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 34
passive
Passiver Tag mit Serien-Nummer, Lieferant, Datum der letzten Inspektion etc.
Card emulation für den Austausch von Status-Infos, Geräteeinstellungen
active
© Zühlke 2012
Daten beamen
• Android Beam™ is eigentlich ein NDEF-Push im Peer-to-peer-Modus – Simple NDEF Exchange Protocol (SNEP) vom NFC Forum – Proprietärer NDEF Push Protocol (NPP) von Google
• Kein bidirektionaler Datenaustausch auf niedrigeren Schichten möglich
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 36
Austausch von Status-Informationen, Geräteeinstellung
active
© Zühlke 2012
Android als Kartenersatz
• Card emulation in der API nicht freigegeben
• Würde viele interessante Use-Cases ermöglichen
• Fortlaufende Diskussion um Secure Elements – auf der SIM-Karte – eingebettet in einen Chip
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 38
• Gute Chancen für breiten NFC-Support auf zukünftigen Android-Geräten
• Einfache Handhabung für Benutzer und Entwickler
• Workaround für fehlenden Card-Emulation-Modus nötig
© Zühlke 2012
Was ist der beste Weg, mit Geräten zu kommunizieren?
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita
? Welche UX wird benötigt?
Sind die Zielgeräte bekannt?
Wie hoch ist das Datenvolumen?
Und was ist mit Security?
In welchem Umfeld wird die Lösung eingesetzt?
Slide 41
Sollen noch andere Plattformen unterstützt werden?
TCP / UDP Über WiFi und mobiles Internet
© Zühlke 2012
DIY Heimautomatisierung
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 43
© Zühlke 2012
DIY Heimautomatisierung
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita
UART
Slide 44
© Zühlke 2012
Arduino zur Hilfe
• Open Source prototyping board
• ATmega328 @ 16 MHz
• 14 digital and 6 analog I/O pins
• USB
• UART
• I2C
• SPI
• Viele Shields verfügbar
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita Slide 45
© Zühlke 2012
DIY Heimautomatisierung
März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita
UART
Ethernet
DSL
WiFi
3G
Slide 46
Internet
// start Ethernet and UDP Ethernet.begin(mac,ip); Udp.begin(localPort); server.begin(); Serial.begin(9600); while(timeStatus() == timeNotSet) { unsigned long t = getNtpTime(); if (t > 0) { setTime(t); } } setSyncProvider(getNtpTime); setSyncInterval(60); } bool event_1_triggered = false; bool event_2_triggered = false; void loop() { time_t t = now(); for(int i = 0; i < EVENT_COUNT; i = i + 1) { // check whether On-Event was not fired and On-Time has been reached if (!triggered_events[i*2] && hour(t) == time_table[i*FIELDS] && minute(t) == time_table[i*FIELDS+1]) { fs20.send_cmd(time_table[i*FIELDS+4], CMD_ON, 0xFF); triggered_events[i*2] = true; triggered_events[i*2+1] = false; } // check whether Off-Event was not fired and Off-Time has been reached if (!triggered_events[i*2+1] && hour(t) == time_table[i*FIELDS+2] && minute(t) == time_table[i*FIELDS+3]) { fs20.send_cmd(time_table[i*FIELDS+4], CMD_OFF, 0xFF); triggered_events[i*2] = false; triggered_events[i*2+1] = true; } } // wait for a new client: Client client = server.available(); if (client) { if (client.connected() && client.available()) { // read the bytes incoming from the client: char c1 = client.read(); char c2 = client.read(); char c3 = client.read(); fs20.send_cmd(c1, c2, c3); } } delay(50); }
SMA Wechselrichter
Bluetooth
Stiebel-Eltron Wärmepumpe
RS232
Internet der Dinge
© Zühlke 2012
Home Automation Standards
14. März 2012 Auf Tuchfühlung mit smarten Geräten | Masanori Fujita
Android@Home Yet another home automation standard?
Slide 51
Kleine offene Komponenten “zusammenstöpseln”
Thermometer Accelerometer External Sensors WiFi
Twitter Email Text Messaging
• Beleuchtung
• Heizung
• Waschmaschine
• Geschirrspüler
• Wettersensoren
• Türklingel
• Audio & Video
Die vernetzte Zukunft beginnt jetzt.
Masanori Fujita [email protected] @matterlobby