SlideShare a Scribd company logo
Linux Embedded per l'automazione
Linux Embedded per l’automazione
GNU/Linux, Google App Engine e Android
Daniele Costarella
Electronic Engineer, GDG Campania Co-Organizer, Open Makers Italy
Mobile Innovation Day Caserta | 16 maggio 2014, Caserta
Part 1: Linux Embedded
Vantaggi – Un esempio reale – Esempi di utilizzo
Cos’è?
Con Embedded Linux ci si riferisce a quell’insieme di distribuzioni
concepite per essere utilizzate su sistemi embedded.
[Wikipedia]
● Riutilizzo dei componenti
● Capacità di riutilizzo dei componenti
● Molti componenti per il nostro sistema sono già disponibili e open-source
● Supporto hardware ai protocolli di rete, periferiche multimediali, librerie grafiche ecc.
● Focus sul prodotto finale
● Costo basso
● Il software libero può essere copiato su più dispositivi e senza alcun costo
● Strumenti di sviluppo per la maggior parte liberi
● Costo delle licenze software estremamente ridotto
● Incremento del budget per l’hardware
Vantaggi
● Pieno controllo su tutto il software utilizzato
● Disponibilità di componenti di qualità elevatissima
● Semplicità nella fase di testing
● Supporto della community
● Entrare a far parte di una gigantesca community
Vantaggi
Scelta della board: BeagleBone Black
Un computer su singola scheda, progettato per mantenere bassi i costi di vendita, pur
offrendo prestazioni e connettività prossime a quelle di un laptop.
In grado di eseguire il boot di Linux in meno di 10 secondi. Uno strumento di sviluppo ideale
per hobbisti e sviluppatori.
● GNU/Linux
● Filesystem
● Multitasking
● Supporto di rete
● Connettività
● Timekeeping
● Accesso remoto
● Dimensioni
● Community
Tutto in una scheda
BeagleBone Black: caratteristiche tecniche
Processore: AM335x 1GHz ARM® Cortex-A8
512MB DD3 RAM
2GB 8-bit eMMC on-board flash storage
Acceleratore grafico 3D
Connettività
USB client for power and communications
USB host
Ethernet
HDMI
2x46 pin headers
Compatibilità software
Ångström Linux
Android
Cloud9 IDE on Node.js w/ BoneScript Library
E altro ancora…
Operativi in pochi secondi
● Connessione tramite cavo USB
● Test della connessione
● Da browser: http://192.168.7.2
● Pagine introduttive su BeagleBone
● Tutto pronto per iniziare
Connessione tramite SSH
● Su Linux e Mac basta semplicemente lanciare un terminale e digitare il
seguente comando:
$ ssh 192.168.7.2 –l root
La libreria Adafruit_BBIO
Una volta eseguito l’accesso tramite SSH (su Angstrom Linux):
$ opkg update && opkg install python-pip python-setuptools python-smbus
$ pip install Adafruit_BBIO
Per verificare che l’installazione sia avvenuta con successo:
import Adafruit_BBIO.GPIO as GPIO; print GPIO
#you should see this or similar:
<module 'Adafruit_BBIO.GPIO' from '/usr/local/lib/python2.7/dist-packages/Adafruit_BBIO/GPIO.so'>
Utilizzo della libreria Adafruit_BBIO
Aprire una console Python e importare la libreria (per esempio GPIO)
Python 2.7.5 (default, Sep 2 2013, 05:24:04)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import Adafruit_BBIO.GPIO as GPIO
Accesso ai pin tramite pin “key” o nome
import Adafruit_BBIO.GPIO as GPIO
GPIO.setup("P8_10", GPIO.OUT)
GPIO.output("P8_10", GPIO.HIGH
GPIO.setup("P8_14", GPIO.IN)
if GPIO.input("P8_14"):
print("HIGH")
else:
print("LOW")
Esempio 1: LED blinking
Anodo sul pin 6 e catodo su GND
LED Blinking: scriviamo il codice
Creiamo un file eseguibile con un semplice programma per il lampeggio del LED
$ nano blink.py
Python
import Adafruit_BBIO.GPIO as GPIO
import time
GPIO.setup("P8_10", GPIO.OUT)
while True:
GPIO.output("P8_10", GPIO.HIGH)
time.sleep(0.5)
GPIO.output("P8_10", GPIO.LOW)
time.sleep(0.5)
Esempio 2: misura di temperatura
MCP9700
Misura di temperatura: scriviamo il codice
Creiamo un file eseguibile con un semplice programma per la misura
$ nano temperature.py
Python
import Adafruit_BBIO.ADC as ADC
import time
sensor_pin = 'P9_40'
ADC.setup()
while True:
reading = ADC.read(sensor_pin)
millivolts = reading * 1800 # 1.8V reference = 1800 mV
temp_c = (millivolts - 500) / 10
temp_f = (temp_c * 9/5) + 32
print('mv=%d C=%d F=%d' % (millivolts, temp_c, temp_f))
time.sleep(1)
Part 2: Software
Scrittura dell’applicazione per il controllo remoto
Scritto in Python, è uno strumento molto flessibile per realizzare infrastrutture complesse e
performanti.
Caratteristiche
● Contiene server e debugger per lo sviluppo
● Richieste RESTful
● Supporta cookie di sicurezza (sessioni lato client)
● 100% WSGI 1.0 compatibile
● Documentazione estensiva
● Compatibilità con Google App Engine
● Estensioni disponibili per migliorare le caratteristiche desiderate
Flask
Python
Hello Flask
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
● Project Directory/ - Contiene tutti i file della tua app
● app.py – Codice Python/Flask
● requirements.txt – Lista di tutte le dipendenze
● static/
● js/ - file javascript, per contenuti web interattivi
● css/ - file CSS, per offrire alla tua app un proprio stile
● img/ - immagini
● templates/ - directory contenente I template Flask
Struttura
BASH
Lista dei dispositivi connessi
$ curl -i http://localhost:5000/remote/api/v1.0/devices
{
"devices": [
{
"active": true,
"description": ”Temperatura rilevata in camera di Daniele",
"status": false,
"title": “Room Temperature",
"type": "Termometer",
"uri": "http://localhost:5000/remote/api/v1.0/devices/1",
"value": "20.1"
},
….
….
Esempio 1: accendere (e spegnere) un LED
GET
$ curl -i http://localhost:5000/remote/api/v1.0/devices/2
PUT (value: 0 | 1)
$ curl -i -H "Content-Type: application/json" -X PUT -d '{"value":1}'
http://localhost:5000/remote/api/v1.0/devices/2
BASH
Esempio 2: pilotare un termostato
GET
$ curl -i http://localhost:5000/remote/api/v1.0/devices/1
PUT (temp_on e temp_off)
$ curl -i -H "Content-Type: application/json" -X PUT -d '{"temp_on":1, "temp_off":10}'
http://localhost:5000/remote/api/v1.0/devices/term
BASH
Metodi implementati
Metodo HTTP Azione Esempio
GET Ottenere informazioni sulle risorse http://localhost:5000/remote/api/v1.0/devices
GET Ottenre informazioni su una risorsa
http://localhost:5000/remote/api/v1.0/devices/123
POST Aggiungere un nuovo dispositivo
http://localhost:5000/remote/api/v1.0/devices
(creare un nuovo dispositivo a partire dai dati presenti nella richiesta)
PUT
Aggiornare lo stato di un
parametro/dispositivo
http://localhost:5000/remote/api/v1.0/devices/123
(modificare #123 con i dati presenti nella richiesta)
DELETE Eliminare un dispositivo
http://localhost:5000/remote/api/v1.0/devices/123
(eliminare l’item #123)
Android
Un’App per i nostri test
● Semplicità d’uso
● Codice semplice e pulito
● Struttura modulare
● Ricezione automatica dei nuovi dispositivi
● Compatibile con tutte le versioni più
recenti di Android
Open Makers Day
16 giugno 2014 | Università Parthenope, Centro Direzionale di Napoli
Partecipa al Call For Makers su www.openmakersitaly.org
Scadenza: 30 maggio 2014
Grazie per l’attenzione
email:
web:
G+
Twitter
Github:
daniele.costarella@gmail.com
danielecostarella.com | openmakersitaly.org
https://plus.google.com/u/0/+DanieleCostarella
@dcostarella
http://github.com/blackbliss
Linux Embedded per l'automazione

More Related Content

What's hot (20)

PPTX
Introduzione a Docker
Roberto Messora
 
PDF
Docker
Andrea Laspada
 
PPTX
Google cloud: Big Data + docker = kubernetes
Giuliano Latini
 
PPTX
Microservices webinar EMEA Aug. 2017
MongoDB
 
PPTX
Windows Phone 7.5 Refresh: Performance e localizzazione
Matteo Pagani
 
PDF
Docker & DevOps
Gerardo Di Iorio
 
PDF
TuxIsAlive
Claudio Mignanti
 
PDF
Tanti "piccoli rilasci" con Symfony2
Fabio Mora
 
PDF
Git best practices
Matteo Gavagnin
 
PPTX
Automation Night (Docker)
Giuliano Latini
 
PDF
Progetto Linux va a scuola - Descrizione tecnica
Bergamo Linux Users Group
 
ODP
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Natale Vinto
 
PDF
I linguaggi di programmazione e il mondo open-source
Bergamo Linux Users Group
 
PDF
GNU Linux Programming introduction
Vincenzo Paolo Fraddosio
 
PDF
Progetto Linux va a scuola
Bergamo Linux Users Group
 
PDF
Anatomia di un progetto open-source
Bergamo Linux Users Group
 
ODP
Launchpad vs GitHub
Mattia Rizzolo
 
PDF
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Gerardo Di Iorio
 
PDF
Introduzione a Git (ITA - 2017)
Valerio Radice
 
PDF
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
DrupalDay
 
Introduzione a Docker
Roberto Messora
 
Google cloud: Big Data + docker = kubernetes
Giuliano Latini
 
Microservices webinar EMEA Aug. 2017
MongoDB
 
Windows Phone 7.5 Refresh: Performance e localizzazione
Matteo Pagani
 
Docker & DevOps
Gerardo Di Iorio
 
TuxIsAlive
Claudio Mignanti
 
Tanti "piccoli rilasci" con Symfony2
Fabio Mora
 
Git best practices
Matteo Gavagnin
 
Automation Night (Docker)
Giuliano Latini
 
Progetto Linux va a scuola - Descrizione tecnica
Bergamo Linux Users Group
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Natale Vinto
 
I linguaggi di programmazione e il mondo open-source
Bergamo Linux Users Group
 
GNU Linux Programming introduction
Vincenzo Paolo Fraddosio
 
Progetto Linux va a scuola
Bergamo Linux Users Group
 
Anatomia di un progetto open-source
Bergamo Linux Users Group
 
Launchpad vs GitHub
Mattia Rizzolo
 
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Gerardo Di Iorio
 
Introduzione a Git (ITA - 2017)
Valerio Radice
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
DrupalDay
 

Viewers also liked (16)

PPSX
Distribuzione delle sessioni in PHP in caso di load balancing su più server
Gianluca Gimigliano
 
PDF
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
Mirko Mancin
 
PDF
TDD in C - Recently Used List Kata
Olve Maudal
 
PDF
Parte 2 - Linux ed i sistemi embedded per le reti (di Massimiliano Toce)
Andrea Tassi
 
PDF
Parte 1 - Linux ed i sistemi embedded per le reti (di Andrea Tassi)
Andrea Tassi
 
PPT
嵌入式Linux課程-GNU Toolchain
艾鍗科技
 
PDF
Insecure coding in C (and C++)
Olve Maudal
 
PDF
C++ idioms by example (Nov 2008)
Olve Maudal
 
PDF
C Programming - Refresher - Part I
Emertxe Information Technologies Pvt Ltd
 
PDF
Top C Language Interview Questions and Answer
Vineet Kumar Saini
 
PDF
Solid C++ by Example
Olve Maudal
 
PPTX
Embedded c c++ programming fundamentals master
Hossam Hassan
 
PDF
Embedded C programming based on 8051 microcontroller
Gaurav Verma
 
PPSX
INTRODUCTION TO C PROGRAMMING
Abhishek Dwivedi
 
PDF
Deep C
Olve Maudal
 
Distribuzione delle sessioni in PHP in caso di load balancing su più server
Gianluca Gimigliano
 
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
Mirko Mancin
 
TDD in C - Recently Used List Kata
Olve Maudal
 
Parte 2 - Linux ed i sistemi embedded per le reti (di Massimiliano Toce)
Andrea Tassi
 
Parte 1 - Linux ed i sistemi embedded per le reti (di Andrea Tassi)
Andrea Tassi
 
嵌入式Linux課程-GNU Toolchain
艾鍗科技
 
Insecure coding in C (and C++)
Olve Maudal
 
C++ idioms by example (Nov 2008)
Olve Maudal
 
C Programming - Refresher - Part I
Emertxe Information Technologies Pvt Ltd
 
Top C Language Interview Questions and Answer
Vineet Kumar Saini
 
Solid C++ by Example
Olve Maudal
 
Embedded c c++ programming fundamentals master
Hossam Hassan
 
Embedded C programming based on 8051 microcontroller
Gaurav Verma
 
INTRODUCTION TO C PROGRAMMING
Abhishek Dwivedi
 
Deep C
Olve Maudal
 
Ad

Similar to Linux Embedded per l'automazione (20)

PDF
Closure Visto Da Vicino
davide ficano
 
PDF
Arduino - Massimiliano D'Ambrosio
firenze-gtug
 
PDF
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Claudio Cardinali
 
PDF
App Engine + Python
Simone Marzola
 
PDF
High Performance Web Apps con PHP e Symfony 2
Giorgio Cefaro
 
PDF
Infrastructure as Data
Francesco Collova'
 
PDF
Slide Mulesoft Meetup Milano #10.pdf
Florence Consulting
 
PPT
Tesi-Todone
guestb31690c
 
PPTX
High specialized vm on open stack cloud
Gabriele Baldoni
 
PPTX
Azure IoTHub - Roboval 2018
Andrea Tosato
 
PDF
Introduzione ad Android
Emanuel Di Nardo
 
PDF
GIT commands version control system and collaboration
satmania
 
PDF
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Daniele Falamesca
 
PDF
Omnis italianmeeting 2016-10-20
Romualdo Gobbo
 
PDF
Desktop searching
Flavio Castelli
 
PDF
Raspberrypi
Federico Bassignana
 
PPT
XPages Tips & Tricks, #dd13
Dominopoint - Italian Lotus User Group
 
TXT
Link. javascript ajax
santi caltabiano
 
PPT
Il dual boot scolastico perfetto (2012)
Marcello Missiroli
 
Closure Visto Da Vicino
davide ficano
 
Arduino - Massimiliano D'Ambrosio
firenze-gtug
 
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Claudio Cardinali
 
App Engine + Python
Simone Marzola
 
High Performance Web Apps con PHP e Symfony 2
Giorgio Cefaro
 
Infrastructure as Data
Francesco Collova'
 
Slide Mulesoft Meetup Milano #10.pdf
Florence Consulting
 
Tesi-Todone
guestb31690c
 
High specialized vm on open stack cloud
Gabriele Baldoni
 
Azure IoTHub - Roboval 2018
Andrea Tosato
 
Introduzione ad Android
Emanuel Di Nardo
 
GIT commands version control system and collaboration
satmania
 
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Daniele Falamesca
 
Omnis italianmeeting 2016-10-20
Romualdo Gobbo
 
Desktop searching
Flavio Castelli
 
Raspberrypi
Federico Bassignana
 
XPages Tips & Tricks, #dd13
Dominopoint - Italian Lotus User Group
 
Link. javascript ajax
santi caltabiano
 
Il dual boot scolastico perfetto (2012)
Marcello Missiroli
 
Ad

More from Daniele Costarella (10)

PDF
Fondamenti di GNU/Linux: FileSystem e Partizioni
Daniele Costarella
 
PDF
Arduino e stampa 3D - Le nuove frontiere della robotica homemade
Daniele Costarella
 
PDF
energy-harvesting-pres-final-std
Daniele Costarella
 
PDF
Development of a Wireless Sensors Network powered by Energy Harvesting techni...
Daniele Costarella
 
PDF
Hands On Embedded Linux with BeagleBone Black
Daniele Costarella
 
PDF
Electronics LAB [with Arduino] | DAY 2
Daniele Costarella
 
PDF
Electronics LAB [with Arduino] | DAY 1
Daniele Costarella
 
PDF
Electronics LAB [with Arduino] | DAY 3
Daniele Costarella
 
PDF
Development of a wireless sensor network powered by energy harvesting techniques
Daniele Costarella
 
PDF
Software libero nei sistemi embedded
Daniele Costarella
 
Fondamenti di GNU/Linux: FileSystem e Partizioni
Daniele Costarella
 
Arduino e stampa 3D - Le nuove frontiere della robotica homemade
Daniele Costarella
 
energy-harvesting-pres-final-std
Daniele Costarella
 
Development of a Wireless Sensors Network powered by Energy Harvesting techni...
Daniele Costarella
 
Hands On Embedded Linux with BeagleBone Black
Daniele Costarella
 
Electronics LAB [with Arduino] | DAY 2
Daniele Costarella
 
Electronics LAB [with Arduino] | DAY 1
Daniele Costarella
 
Electronics LAB [with Arduino] | DAY 3
Daniele Costarella
 
Development of a wireless sensor network powered by energy harvesting techniques
Daniele Costarella
 
Software libero nei sistemi embedded
Daniele Costarella
 

Linux Embedded per l'automazione

  • 2. Linux Embedded per l’automazione GNU/Linux, Google App Engine e Android Daniele Costarella Electronic Engineer, GDG Campania Co-Organizer, Open Makers Italy Mobile Innovation Day Caserta | 16 maggio 2014, Caserta
  • 3. Part 1: Linux Embedded Vantaggi – Un esempio reale – Esempi di utilizzo
  • 4. Cos’è? Con Embedded Linux ci si riferisce a quell’insieme di distribuzioni concepite per essere utilizzate su sistemi embedded. [Wikipedia]
  • 5. ● Riutilizzo dei componenti ● Capacità di riutilizzo dei componenti ● Molti componenti per il nostro sistema sono già disponibili e open-source ● Supporto hardware ai protocolli di rete, periferiche multimediali, librerie grafiche ecc. ● Focus sul prodotto finale ● Costo basso ● Il software libero può essere copiato su più dispositivi e senza alcun costo ● Strumenti di sviluppo per la maggior parte liberi ● Costo delle licenze software estremamente ridotto ● Incremento del budget per l’hardware Vantaggi
  • 6. ● Pieno controllo su tutto il software utilizzato ● Disponibilità di componenti di qualità elevatissima ● Semplicità nella fase di testing ● Supporto della community ● Entrare a far parte di una gigantesca community Vantaggi
  • 7. Scelta della board: BeagleBone Black Un computer su singola scheda, progettato per mantenere bassi i costi di vendita, pur offrendo prestazioni e connettività prossime a quelle di un laptop. In grado di eseguire il boot di Linux in meno di 10 secondi. Uno strumento di sviluppo ideale per hobbisti e sviluppatori.
  • 8. ● GNU/Linux ● Filesystem ● Multitasking ● Supporto di rete ● Connettività ● Timekeeping ● Accesso remoto ● Dimensioni ● Community Tutto in una scheda
  • 9. BeagleBone Black: caratteristiche tecniche Processore: AM335x 1GHz ARM® Cortex-A8 512MB DD3 RAM 2GB 8-bit eMMC on-board flash storage Acceleratore grafico 3D Connettività USB client for power and communications USB host Ethernet HDMI 2x46 pin headers Compatibilità software Ångström Linux Android Cloud9 IDE on Node.js w/ BoneScript Library E altro ancora…
  • 10. Operativi in pochi secondi ● Connessione tramite cavo USB ● Test della connessione ● Da browser: http://192.168.7.2 ● Pagine introduttive su BeagleBone ● Tutto pronto per iniziare
  • 11. Connessione tramite SSH ● Su Linux e Mac basta semplicemente lanciare un terminale e digitare il seguente comando: $ ssh 192.168.7.2 –l root
  • 12. La libreria Adafruit_BBIO Una volta eseguito l’accesso tramite SSH (su Angstrom Linux): $ opkg update && opkg install python-pip python-setuptools python-smbus $ pip install Adafruit_BBIO Per verificare che l’installazione sia avvenuta con successo: import Adafruit_BBIO.GPIO as GPIO; print GPIO #you should see this or similar: <module 'Adafruit_BBIO.GPIO' from '/usr/local/lib/python2.7/dist-packages/Adafruit_BBIO/GPIO.so'>
  • 13. Utilizzo della libreria Adafruit_BBIO Aprire una console Python e importare la libreria (per esempio GPIO) Python 2.7.5 (default, Sep 2 2013, 05:24:04) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> >>> import Adafruit_BBIO.GPIO as GPIO Accesso ai pin tramite pin “key” o nome import Adafruit_BBIO.GPIO as GPIO GPIO.setup("P8_10", GPIO.OUT) GPIO.output("P8_10", GPIO.HIGH GPIO.setup("P8_14", GPIO.IN) if GPIO.input("P8_14"): print("HIGH") else: print("LOW")
  • 14. Esempio 1: LED blinking Anodo sul pin 6 e catodo su GND
  • 15. LED Blinking: scriviamo il codice Creiamo un file eseguibile con un semplice programma per il lampeggio del LED $ nano blink.py Python import Adafruit_BBIO.GPIO as GPIO import time GPIO.setup("P8_10", GPIO.OUT) while True: GPIO.output("P8_10", GPIO.HIGH) time.sleep(0.5) GPIO.output("P8_10", GPIO.LOW) time.sleep(0.5)
  • 16. Esempio 2: misura di temperatura MCP9700
  • 17. Misura di temperatura: scriviamo il codice Creiamo un file eseguibile con un semplice programma per la misura $ nano temperature.py Python import Adafruit_BBIO.ADC as ADC import time sensor_pin = 'P9_40' ADC.setup() while True: reading = ADC.read(sensor_pin) millivolts = reading * 1800 # 1.8V reference = 1800 mV temp_c = (millivolts - 500) / 10 temp_f = (temp_c * 9/5) + 32 print('mv=%d C=%d F=%d' % (millivolts, temp_c, temp_f)) time.sleep(1)
  • 18. Part 2: Software Scrittura dell’applicazione per il controllo remoto
  • 19. Scritto in Python, è uno strumento molto flessibile per realizzare infrastrutture complesse e performanti. Caratteristiche ● Contiene server e debugger per lo sviluppo ● Richieste RESTful ● Supporta cookie di sicurezza (sessioni lato client) ● 100% WSGI 1.0 compatibile ● Documentazione estensiva ● Compatibilità con Google App Engine ● Estensioni disponibili per migliorare le caratteristiche desiderate Flask
  • 20. Python Hello Flask from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()
  • 21. ● Project Directory/ - Contiene tutti i file della tua app ● app.py – Codice Python/Flask ● requirements.txt – Lista di tutte le dipendenze ● static/ ● js/ - file javascript, per contenuti web interattivi ● css/ - file CSS, per offrire alla tua app un proprio stile ● img/ - immagini ● templates/ - directory contenente I template Flask Struttura
  • 22. BASH Lista dei dispositivi connessi $ curl -i http://localhost:5000/remote/api/v1.0/devices { "devices": [ { "active": true, "description": ”Temperatura rilevata in camera di Daniele", "status": false, "title": “Room Temperature", "type": "Termometer", "uri": "http://localhost:5000/remote/api/v1.0/devices/1", "value": "20.1" }, …. ….
  • 23. Esempio 1: accendere (e spegnere) un LED GET $ curl -i http://localhost:5000/remote/api/v1.0/devices/2 PUT (value: 0 | 1) $ curl -i -H "Content-Type: application/json" -X PUT -d '{"value":1}' http://localhost:5000/remote/api/v1.0/devices/2 BASH
  • 24. Esempio 2: pilotare un termostato GET $ curl -i http://localhost:5000/remote/api/v1.0/devices/1 PUT (temp_on e temp_off) $ curl -i -H "Content-Type: application/json" -X PUT -d '{"temp_on":1, "temp_off":10}' http://localhost:5000/remote/api/v1.0/devices/term BASH
  • 25. Metodi implementati Metodo HTTP Azione Esempio GET Ottenere informazioni sulle risorse http://localhost:5000/remote/api/v1.0/devices GET Ottenre informazioni su una risorsa http://localhost:5000/remote/api/v1.0/devices/123 POST Aggiungere un nuovo dispositivo http://localhost:5000/remote/api/v1.0/devices (creare un nuovo dispositivo a partire dai dati presenti nella richiesta) PUT Aggiornare lo stato di un parametro/dispositivo http://localhost:5000/remote/api/v1.0/devices/123 (modificare #123 con i dati presenti nella richiesta) DELETE Eliminare un dispositivo http://localhost:5000/remote/api/v1.0/devices/123 (eliminare l’item #123)
  • 26. Android Un’App per i nostri test ● Semplicità d’uso ● Codice semplice e pulito ● Struttura modulare ● Ricezione automatica dei nuovi dispositivi ● Compatibile con tutte le versioni più recenti di Android
  • 27. Open Makers Day 16 giugno 2014 | Università Parthenope, Centro Direzionale di Napoli Partecipa al Call For Makers su www.openmakersitaly.org Scadenza: 30 maggio 2014
  • 28. Grazie per l’attenzione email: web: G+ Twitter Github: [email protected] danielecostarella.com | openmakersitaly.org https://plus.google.com/u/0/+DanieleCostarella @dcostarella http://github.com/blackbliss