23
Antonino Orlando [email protected] Simone Pulcini [email protected] e il team GDG Roma L-Ab GDG LAb IoT DroidCon – 7 Febbraio 2014 1 Antonino Orlando, Simone Pulcini e GDG Roma L-AB

IOT su Android con l'aiuto del Google Cloud Messaging

Embed Size (px)

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 codelab

Citation preview

Page 1: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 2: IOT su Android con l'aiuto del Google Cloud Messaging

Antonino Orlando● [email protected]● http://it.linkedin.com/in/orlandoantonino● https://plus.google.com/+AntoninoOrlando

2Antonino Orlando, Simone Pulcini e GDG Roma L-AB

Page 3: IOT su Android con l'aiuto del Google Cloud Messaging

Simone Pulcini● [email protected]● http://www.linkedin.com/in/simonepulcini● https://plus.google.com/+SimonePulcini

3Antonino Orlando, Simone Pulcini e GDG Roma L-AB

Page 4: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 5: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 6: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 7: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 8: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 9: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 10: IOT su Android con l'aiuto del Google Cloud Messaging

10

Registrazione GCM

hello

Registration ID

Store my reg_id

10Antonino Orlando, Simone Pulcini e GDG Roma L-AB

Page 11: IOT su Android con l'aiuto del Google Cloud Messaging

11

Invio di una notifica

Send a notification to reg_id

forward a push notification

11Antonino Orlando, Simone Pulcini e GDG Roma L-AB

Page 12: IOT su Android con l'aiuto del Google Cloud Messaging

12

GDG Lab IoT

12Antonino Orlando, Simone Pulcini e GDG Roma L-AB

Page 13: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 14: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 15: IOT su Android con l'aiuto del Google Cloud Messaging

15

Let's start!

15Antonino Orlando, Simone Pulcini e GDG Roma L-AB

Page 16: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 17: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 18: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 19: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 20: IOT su Android con l'aiuto del Google Cloud Messaging

App Engine Admin Console● https://appengine.google.com/

Antonino Orlando, Simone Pulcini e GDG Roma L-AB 20

Page 21: IOT su Android con l'aiuto del Google Cloud Messaging

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

Page 22: IOT su Android con l'aiuto del Google Cloud Messaging

Datastore GAE: JPA 2.0● Schemaless● Transazioni (supportate) atomiche● Alta disponibilità

Antonino Orlando, Simone Pulcini e GDG Roma L-AB 22