Droidcon Italia Torino 7 febbraio 2013: codelab tenuto da Antonino Orlando e Simone Pulcini.
Argomento: IOT per Android con l'ausiolio di Google Cloud Messaging e backend su Google App Engine. Contiene i riferimenti ai repository GitHub sul quale è possibile fare checkout del codice relativo al codelab
IOT su Android con l'aiuto del Google Cloud Messaging
1. GDG LAb IoT
Antonino Orlando
orlando.antonino@gmail.com
Simone Pulcini
simone.pulcini@gmail.com
e il team GDG Roma L-Ab
DroidCon – 7 Febbraio 2014
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
1
4. GDG LAb IoT
obiettivo:
trasmettere concetti e tecniche per utilizzare Android nel
magico mondo di IOT
Le cose possono imparare a parlare e identificarsi.
Indossando dei piccoli circuiti a radiofrequenza, e
avvicinandoli a un dispositivo dotato di NFC ricevono
l'energia per parlare ed ascoltare.
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
4
5. GDG LAb IoT
Android è capace di recepire questi
messaggi per poi comunicare con
dei Server attraverso
i servizi Google Cloud Messaging, messi a disposizione
gratuitamente da Google.
E' quello che succede ai concerti oppure per i pagamenti
elettronici.
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
5
6. GDG LAb IoT
Nel Workshop esploreremo le principali
tecniche per creare un sistema semplice,
ma completo, per l'identificazione/controllo
di oggetti e quindi la gestione con ogni tipo di applicativi.
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
6
7. GDG LAb IoT
Il codice che ci verrà messo a disposizione
conterrà anche la logica per utilizzare servizi
REST con Google App Engine.
E' importante sottolineare che con questo CodeLab cerchiamo
di far comprendere come integrare e far interoperare
tecniche e sistemi diversi
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
7
8. Google Cloud Messaging
- invio di messaggi push
Richiede:
- Android 2.2 o superiore;
- Google Play Store installato;
- L'utente deve avere almeno un profilo
Google configurato (per versioni < 4.0.4);
- Payload dal server alle app limitato (~4K).
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
8
9. Near Field Communication
- RFID (Radio Frequency Identification)
- permette una comunicazione bidirezionale: entro un raggio
di 4 cm
- opera alla frequenza di 13,56 MHz e può raggiungere una
velocità di trasmissione massima di 424 kbit/s.
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
9
16. Backend su Google App Engine
●
Sogno un backend……
●
●
●
●
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
PaaS (Platform as a Service)
Piattaforma Enterprise
scalabile
Ospita applicazioni in
Java, Php, GO
Una server farm a portata
di clic
16
17. GAE: dietro le quinte
●
GAE: è un servlet container basato su Jetty
●
Supporta le servlet 2.5
●
●
Supporta diversi framework noti (talvolta con alcuni
workaround): JPA, JDO, JSF, Struts 1, Struts 2, Spring…..
Ma il vero punto di forza è lo «scaling automatico» in base
al traffico generato
●
Gratuito fino a determinati livelli di traffico
●
SLA per i servizi billed in high replication del 99,5%
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
17
18. JPA: Overview
●
●
●
●
●
Java Persistence API 2.0 (specifica JSR 317)
Mapping di POJO verso un database (Object Relational
Mapping)
Entity: pojo che mappano tabelle di db. Il mapping è
definito tramite annotazioni
Pojo persistenti: pojo il cui stato (valori assegnati alle
proprietà) è memorizzato in un database e tenuto in
sincrono con questo
EntityManager: classe deputata alle operazioni di
persistenza tra pojo e db
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
18
19. Google Cloud Endpoint
●
●
Sono Web-Services REST che non seguono le
implementazioni ufficiali di Java EE (Java API for RESTful
Web Services JAX-RS)
Sono facili da implementare. Le interfacce esposte si
specificano con annotazioni
4 step:
a)
Crea le API
b)
Annota le API
c)
Genera il codice per il client chiamante
d)
Incorpora il codice generato nel chiamante (e.g. Android
app)
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
19
20. App Engine Admin Console
●
https://appengine.google.com/
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
20
21. Best practicies
●
●
●
●
Loggate sempre in modo intelligente usando log levels
adeguati (in esercizio il vostro backend «parla» attraverso il
log!)
Usate enterprise patterns adeguati per evitare di mandare
in sofferenza la vostra infrastruttura
Fate un decoupling elevato della vostra business logic (es:
gli endpoint mostrati sono solo wrappers!!!)
Col tempo e l’esperienza pensate sempre ai vari trade-off
da pagare utilizzando alcuni servizi
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
21
22. Datastore GAE: JPA 2.0
●
Schemaless
●
Transazioni (supportate) atomiche
●
Alta disponibilità
Antonino Orlando, Simone Pulcini e GDG
Roma L-AB
22