iot su android con l'aiuto del google cloud messaging
DESCRIPTION
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 codelabTRANSCRIPT
Antonino Orlando [email protected] [email protected] il team GDG Roma L-Ab
GDG LAb IoT
DroidCon – 7 Febbraio 2014
1Antonino Orlando, Simone Pulcini e GDG Roma L-AB
Antonino Orlando● [email protected]● http://it.linkedin.com/in/orlandoantonino● https://plus.google.com/+AntoninoOrlando
2Antonino Orlando, Simone Pulcini e GDG Roma L-AB
Simone Pulcini● [email protected]● http://www.linkedin.com/in/simonepulcini● https://plus.google.com/+SimonePulcini
3Antonino Orlando, Simone Pulcini e GDG Roma L-AB
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.
4Antonino Orlando, Simone Pulcini e GDG Roma L-AB
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.
5Antonino Orlando, Simone Pulcini e GDG Roma L-AB
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.
6Antonino Orlando, Simone Pulcini e GDG Roma L-AB
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
7Antonino Orlando, Simone Pulcini e GDG Roma L-AB
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).
8Antonino Orlando, Simone Pulcini e GDG Roma L-AB
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.
9Antonino Orlando, Simone Pulcini e GDG Roma L-AB
10
Registrazione GCM
hello
Registration ID
Store my reg_id
10Antonino Orlando, Simone Pulcini e GDG Roma L-AB
11
Invio di una notifica
Send a notification to reg_id
forward a push notification
11Antonino Orlando, Simone Pulcini e GDG Roma L-AB
12
GDG Lab IoT
12Antonino Orlando, Simone Pulcini e GDG Roma L-AB
13
Prima di cominciare
- installare ADT Bundle
- Google Play Services (da Android SDK Extras)
- Android Support Library (da Android SDK Extras)
- webserver (apache) + php
- registrare account Google Developers Console
https://code.google.com/apis/console
13Antonino Orlando, Simone Pulcini e GDG Roma L-AB
14
Progetti di base
- SendByNFC
https://github.com/orlando-antonino/SendByNFC.git
- GDGLAb_IoT
https://github.com/orlando-antonino/GdgLAb_IoT.git
- Backend AppEngine
https://github.com/spulci/gdg_rome/tree/master/GdgRomeIOTDemoModel
14Antonino Orlando, Simone Pulcini e GDG Roma L-AB
15
Let's start!
15Antonino Orlando, Simone Pulcini e GDG Roma L-AB
Backend su Google App Engine● Sogno un backend…… ● PaaS (Platform as a Service)
● Piattaforma Enterprise scalabile
● Ospita applicazioni in Java, Php, GO
● Una server farm a portata di clic
Antonino Orlando, Simone Pulcini e GDG Roma L-AB 16
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
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
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
App Engine Admin Console● https://appengine.google.com/
Antonino Orlando, Simone Pulcini e GDG Roma L-AB 20
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
Datastore GAE: JPA 2.0● Schemaless● Transazioni (supportate) atomiche● Alta disponibilità
Antonino Orlando, Simone Pulcini e GDG Roma L-AB 22
Riferimenti● https://developers.google.com/appengine
● http://www.radio-electronics.com/info/wireless/nfc/near-field-communications-tags-types.php
● http://developer.android.com/google/gcm/index.html
Antonino Orlando, Simone Pulcini e GDG Roma L-AB 23