Home
Visualizza/apri - POLITesi
Contents
1. 119 snippet app_funtion pipeline ursssr nta 120 snippet app_function main 100pP 120 snippet gst native finaliz6 Lpsacancsialilasionza alia 121 codice Andriani elia 122 pipeline utilizzata iii 123 snippet Manifest versione OS 124 snippet Manifest OpenGL ES i 124 snippet Manifest permessi 125 avvio del Servizio ipsa iaia i 126 BroadcastReceivefi reidai aa a A A a Aai 126 referenza al NotificationManager iii 127 impostazioni principali delle notifiche 128 creare il Pending Intente soiien i a e elia 128 notifica persiste E a ilaria 128 notifica chiamata in arrivo 129 centro notifiche aperto 130 Chiamata Nativo rain aiar 130 funzionalit aggiuntive ii 131 Figura 98 sezione video i 131 Figura 99 tasti chiamata i 131 Figura 100 popup di fine chiamata i 132 Figura 101 schermata principale dell applicazione i 132 Figura 102 schermata Video Sorveglianza ii 133 Figura 103 tasto di back i 133 Figura 104 popup di avviso di fine videosorveglianza n 133 Figura 105 installazione pila iaia 135 Figura 106 icona dell applicazione 135 Figura 107 schermata principale i
2. iii 104 differenze tra prototipo e versione definitiva 105 strumenti utilizzati ada liana tirata 106 interfaccia grafica programma di gestione TiF454 107 import libreria BICOMMLIb irniiiirieaaia 108 setting parametri di connessione i 108 inizializzazione tasto di CONNESSIONE 109 esecuzione della CONNESSIONE LL crei 109 ConnectionAsyNk iii 110 chiusura delcanalesccaieriiaa lena 110 snippet gettameWithiP ermacesdilietiaciaileiiaata 112 snippet import GStreamer 113 snippet metodi nativi ii 114 snippet librerie statiche a aa 114 snippet inizializzazione GStreamer ii 115 inizializzazione elementi della Ul i 115 inizializzazione Metodi Nativi 115 Figura 74 Figura 75 Figura 76 Figura 77 Figura 78 Figura 79 Figura 80 Figura 81 Figura 82 Figura 83 Figura 84 Figura 85 Figura 86 Figura 87 Figura 88 Figura 89 Figura 90 Figura 91 Figura 92 Figura 93 Figura 94 Figura 95 Figura 96 Figura 97 Elenco delle Figure inizializzazione GStreamer i 116 inizializzazione Widget iii 116 snippet INe Ono dda tao 117 array dei metodi nativi a n 118 shippetest native intere eiale etiea 118 snippet app_function creazione contesto
3. Figura 17 messaggio SIP INVITE 59 Scenario SIP La prima parte rappresenta l header e cio tutte quelle informazioni volte ad identificare gli attori della transazione in atto mittente ricevente id sequenza tipo di user agent messaggi permessi L indirizzo specificato in maniera particolare viene aggiunta infatti anche il numero della porta come suffisso all indirizzo di base La seconda parte invece il cuore del messaggio e rappresenta la descrizione della sessione tramite SDP che appunto tramite gli opportuni parametri va a definire quello che sar il contesto del dialogo In questo caso si pu notare il parametro obbligatorio BT kind il destinatario identificato da UNIT TO CALL e i parametri di media descritti da m audio e video 4 2 2 Android Nei sistemi finora realizzati da Bticino che si servono di una comunicazione su canale IP instaurata tramite SIP il device interno come gi detto pi volte un apparecchio che deve essere in grado di visualizzare lo stream audio video proveniente dall esterno oltre alle altre funzioni che pu compiere ed essere raggiungibile dal canale di trasmissione Uno smartphone device pu tranquillamente soddisfare tali requisiti Ha infatti un interfaccia wireless per collegarsi alla rete LAN uno schermo altoparlanti per gestire il flusso audio e o video in entrata e un microfono videocamera per registrare un flusso audio e o video in uscita La parte di c
4. java va vm if vm gt GetEnv vm void geny UNI VERSION 1 4 l UNI OK _ android log print ANDROID LOG ERROR ScenarioDue Could not retrieve JINIEnv return 0 jclass klass env gt FindClass env tesi bticino scenariodue MainActivity Ceny gt RegisterNativss env klass native moths G_N ELEMENTS native methods piarsa key Create Geuzzsae Jai cav cderach Current thrsacl p return JNI VERSION 1 4 Figura 76 snippet JNI_OnLoad 117 Scenario OpenWebNet Questo metodo fondamentale in quanto recupera l ambiente JNI necessario per effettuare le chiamate dei metodi che interagiscono con Java in seguito individua la classe contenente la parte della UI utilizzando il metodo FindClass Infine registra i metodi nativi attraverso la RegisterNatives L array native_methods descrive ogni metodo registrato Per ogni metodo fornisce il nome Java il proprio type signature e il puntatore alla funzione C che lo implementa static UNINativeMethod native methods Fmaicsivelaiie VW fed Gest native Init y Fnatciverimalizs W WU escl que native finalize imacitverilasg VU Gee get native play p naicsivePauge iv ec ger naciye pausel nativeSurfaceInit Ljava lang Object V void gst natives surface 11E nativeSurfaceFinalize V void get natives surtace finalize YnariysClassi
5. session pool pe pEercoiinr oered pJ Status status Erec realm pj Stri sip ezampola comu p Ered scheme pj Str digest Crec username pJ Str nomeutente e cred data type PUSIP CRED DATA PLAIN PASSWD Erec data pJ Str secratoasswonci status pjsip_auth client init amp auth_sess session_ pool 0 status pjsip_auth set credentials g amp auth sess 1 amp cred IU OxiclEs erere queste Pasinetti pJ Stat s t status S S amp S tatus pjsip_auth client init req auth sess tdata tatus pjsip_endpt send request endpt tdata 1 NULL Ongie ompil e ee p catie voici nie empleo sialao ema So event vevent KI int code pJ assert event gt type INUSID EVENT TSX STATA 7 codo EE Vent DO e oe eE ea e aE COE if code 401 code 407 pJ Status t starus pjsip tx data new request status pjsip_auth_client_reinit_req amp auth sess evento Cody eoe eaen redata tax gt last txr amp new request SFr SEAN UIS ISU CH status pjsip_endpt send request endpt new request 1 NULL amp on_ complete Else PJ LOG 3 app Authentication failed Figura 142 autenticazione PjSIP Come anticipato la libreria PJNATH fornisce quelle strutture e funzioni per gestire il problema del NAT traversal Vi sono API per inviare e ricevere pacchetti UDP risoluzioni NDS SRV per il server STUN e mantenimento dell
6. Google Developers AudioTrack 15 Novembre 2013 URL http developer android com reference android media AudioTrack html G Developers Google Cloud Messaging 15 Novembre 2013 URL http developer android com google gcm gcm html Teluu Inc PJNATH Open Source ICE STUN and TURN Library URL http www pjsip org pjnath docs html index htm V Silva Pro Android Games Apress 2009 Bticino OpenWebNet Java Android Library CookBook 2011 J L Ryan Electronic And Communication Engineering Journal Home Automation 2009 M Carli Android 4 Guida per lo sviluppatore APOGEO 2013 V Dimitar e F Ivailo Service Gateway Architecture For A Smart Home IEEE 2002 A Cole e B Tran Home Automation To Promote Independent Living In Elderly Populations 2002 Casa Tecnica Rivista di domotica e soluzioni per una casa migliore BSB Editori s r l Echelon Smart Energy Starts Here URL www echelon com Bluetooth Bluetooth Technology Website URL www bluetooth com EMS CANopen Protocol URL www canopen com 167 25 26 27 28 Bibliografia JINI URL www jini org X 10 URL www x 10 0rg KNX Association KNX Association Official WebSite URL http www knx org it A reference guide to all things VOIP 11 Novembre 2013 URL http www voip info org 168
7. ImageButton surveillance ImageButton this findViewById R id button start surv surveillance setOnClickListener new OnClickListenerd public void onClick View v try sendVideo catch Exception e return Figura 72 inizializzazione elementi della UI Attraverso il codice sopra assegniamo ad ogni elemento della UI un metodo che consenta di eseguire l azione desiderata dalla richiesta video all interruzione dei servizi nativeInit Figura 73 inizializzazione metodi nativi 115 Scenario OpenWebNet Questa chiamata al metodo nativelnit chiude il metodo OnCreate e l inizializzazione del codice Java bottoni della UI sono disabilitati quindi niente avviene affinch il codice nativo non sia pronto e chiamato il metodo onGStreamerlnitialized private void onGStreamerInitialized Log i GStreamer Gst initialized Restoring state playing is playing desired da ie playing cesirec i nativePlay else nativePause final Activity activity this runOnUiThread new Runnable public void run activity findViewById R id button play set bled true H activity findViewById R id button stop setE bled true Figura 74 inizializzazione GStreamer Questo metodo chiamato dal codice nativo quando il main loop in esecuzione Prima di tutto recupera lo stato di playing desiderato e in seguito setta lo stato Come ultima cosa riabilit
8. In questa sezione analizzeremo i due principali casi d uso dell applicazione in modo da mostrarne degli esempi di utilizzo Inoltre includeremo un piccolo manuale utente che permetta di comprendere al meglio tutte le funzionalit dell applicazione e conoscere nei dettagli le varie parti che la compongono con particolare attenzione all interfaccia grafica 5 4 1 Scenari d uso Analizzeremo ora i due casi d uso introdotti nel capitolo Progettazione osservando cosa avviene sullo smartphone valutando le azioni che l utente pu compiere e mostrandone l interfaccia grafica Scenario Chiamata in arrivo In questo scenario ipotizziamo di ricevere una chiamata dal posto esterno Presupponiamo che una persona all esterno della nostra abitazione abbia effettuato una chiamata al nostro appartamento attraverso il videocitofono A questo punto grazie al servizio in esecuzione in background sul dispositivo visualizzeremo una notifica nella barra di stato che ci avvisa della chiamata in arrivo vedi Figura 94 b Stanno Citofonando Figura 94 notifica chiamata in arrivo 129 Scenario OpenWebNet Figura 95 centro notifiche aperto Aprendo il centro notifiche del dispositivo Figura 95 possibile vedere tutte le informazioni fornite dalla notifica ricevuta e cliccando su di essa si apre la sezione dell applicazione dedicata alla chiamata osservabile nella figura subito sotto b a Chiamata in
9. active_remote_sdP status pimedia_sdp_neg_init_w_local_offer pool neg local int pimedia_sdp_print neg_local_sdp status pjmedia_sdp_neg_init_w_remote_offer neg loc rmt neg_remote_sdp status pimedia_sdp_neg_modify_local_offer neg local status pjmedia_sdp_neg_negotiate neg sdp pjmedia_sdp_neg_tx_local_offer neg sdp pjmedia_sdp_neg_rx_remote_offer neg remote Pimedia_sdp_media sdp pjmedia_sdp_neg_rx_remote_answer neg remote sdp pjmedia_sdp_neg_get_local neg Attributes sdp pjmedia_sdp_neg_get_remote neg net_type addr_type addr Operations pjmedia_sdp_conn Attributes net_type addr_type addr Operations Figura 29 Class Diagram del negoziatore SDP La gi nominata pjmedia_sdp_neg formata da tre strutture SDP e initial _sdp questo SDP passato dal negoziatore durante la creazione e il suo contenuto non pu essere cambiato durante la sessione generalmente e active local sdp contiene un SDP locale dopo essere stato negoziato con il remoto Il dialog deve usare questo per iniziare il local media e active remote sdp contiene l SDP corrente usato dal peer remoto In generale gli stati di una transizione SDP di offerta e risposta avviene come nello schema seguente create_w_local_offer tx_local_offer modify_local_offer reinit_local_offer LOCAL OFFER 1 rx_remote_answer WAIT NEGO NEGOTIATING rx_remote_offer create_w_remote_offe
10. reso necessario includere diversi permessi 10 che analizziamo di seguito e INTERNET questo permesso consente di poter utilizzare la connessione Internet e WAKE_LOCK consente di utilizzare il PowerManager WakeLocks in modo da tenere attive alcune funzionalit anche a schermo spento o quando il device in sleep nel nostro caso lo abbiamo utilizzato per mantenere attivo il Wi Fi anche con lo schermo spento e ACCESS_NETWORK_STATE consente di accedere alle informazioni della rete e ACCESS_WIFI_ STATE consente di accedere alle informazioni della rete wireless e RECEIVE_BOOT_COMPLETE consente a all applicazione di ricevere il messaggio di ACTION_BOOT_COMPLETED che viene trasmesso solo dopo che il sistema ha terminato l avvio 5 3 7 Android Service IncomingService Il servizio un componente dell applicazione che pu eseguire operazioni in background ma che non fornisce un interfaccia grafica 125 Scenario OpenWebNet Abbiamo implementato un servizio chiamato ncomingService in modo che l applicazione possa rimanere perennemente in ascolto cos da sollevare notifiche al verificarsi di determinati eventi come ad esempio l arrivo di una chiamata da posto esterno Prima di tutto abbiamo inizializzato e avviato il servizio all interno del metodo onCreate dell attivit principale dell applicazione intent_ service new Intent this IncomingService class startService intent service
11. sncpit 7 Called to load the mod pj status t start void Callec to start pj status t stop void Called top stop pj_status t unload void Called before unload pJ _bool _t on_ rx request pisip rx data rdata Called Gim ie request pj_bool t on rx response pjsip rx data rdata Called on rx response pj_status t on_ tx request pjsip tx data tdata Called on tx request pj_status t on_ tx response pjsip tx data tdata Called on tx request void on_tsx state pjisip transaction tsx Called on transaction pjsip event event state changed O Figura 21 Dichiarazione di un modulo 65 Scenario SIP PJSIP si basa su di un semplice concetto astratto di gerarchia in cui ad ogni modulo associato un valore che indica la sua priorit Questo valore specifica l ordine con la quale i moduli vengono chiamati pi sar basso il valore maggiore priorit avr il modulo Di seguito vengono riportate le dichiarazioni standard delle priorit dei vari moduli enum pjsip_module priority PISIP_MOD_PRIORITY TRANSPORT_LAYER 8 Transport PJSIP_MOD_ PRIORITY TSX LAYER 16 Transaction layer PJSIP_MOD_PRIORITY UA PROXY LAYER 32 UA or proxy layer PJSIP_MOD_PRIORITY DIALOG USAGE 48 Invite usage event subscr framework PJSIP_MOD_ PRIORITY APPLICATION 64 Application has lowest priority ne Figura
12. header e il corpo vero e proprio del messaggio che da considerare per opzionale body e Request i messaggi request hanno come start line una request line come quella nell esempio contenente il metodo di richiesta URI e la versione del protocollo utilizzata reguest line lt lt method gt gt lt lt request URI gt gt lt lt SIP version gt gt Analisi delle tecnologie utilizzate Secondo le specifiche SIP sono previsti i seguente metodi di richiesta O register inviato da uno UA per registrare presso un registrar server il proprio punto di accesso alla rete invite serve ad invitare un utente a partecipare ad una sessione ack un messaggio di riscontro inviato dallo UA chiamante verso lo UA chiamato per confermare la ricezione di una risposta ad un INVITE cancel serve a terminare un dialogo quando la sessione non ha avuto inizio bye utilizzato per terminare un dialogo SIP options utilizzato per interrogare uno UA riguardo alle sue funzionalit in questo modo il chiamante pu decidere il tipo di comunicazione da instaurare prack consente ad un client di riscontrare la ricezione delle risposte provvisorie refer lo user agent che lo riceve trova nell intestazione refer to una nuova SIP URI dopo aver chiesto conferma viene contattato il nuovo SIP URI ed il mittente del REFER viene notificato dell esito con un messaggio NOTIFY subscribe consente a chi lo invia di manif
13. utilizzo del posto interno ma fornir un supporto aggiuntivo per l utente in modo da migliorare ancor di pi l usabilit del sistema in questione All interno del nostro elaborato analizzeremo due differenti scenari entrambi realizzati per funzionare su rete LAN e Scenario SIP il videocitofono esterno comunica con un device Android attraverso il protocollo SIP e Scenario OpenWebNet il videocitofono esterno comunica con un device Android attraverso un web server F454 BTicino sfruttando il protocollo OPEN Ulteriore attenzione verr posta poi sulla possibilit di sfruttare le potenzialit degli applicativi anche in remoto rete WAN e non solo su rete LAN Nel capitolo sviluppi futuri analizzeremo il problema in modo che la comunicazione tra posto esterno e dispositivo mobile avvenga attraverso le moderne reti di comunicazione cellulare 22 Analisi delle tecnologie utilizzate 3 ANALISI DELLE TECNOLOGIE UTILIZZATE 3 1 VOIP Voice OVER IP Per VolP Voice Over Internet Protocol letteralmente voce attraverso IP il quale il protocollo usato per Internet si intende una tecnologia che renda possibile effettuare una conversazione telefonica tramite una connessione internet o rete dedicata a commutazione di pacchetto e che utilizzi il protocollo IP senza connessione per il trasporto dei dati VoIP consente una comunicazione sia audio che video unicast o multicast su rete a pacchetto possibile usufruire d
14. Figura 70 snippet librerie statiche Il codice sopra carica libgstreamer_andorid so che contiene tutti i metodi di GStreamer e libscenariodue so che contiene il codice C che analizzeremo in seguito Inoltre chiamiamo anche il metodo nativeClassilnit dichiarato in precedenza Dopo il caricamento vengono eseguiti tutti i metodi delle librerie JNI_OnLoad Fondamentalmente registrano i metodi nativi che queste librerie espongono La libreria GStreamer espone un solo metodo init che inizializza GStreamer e registra tutti i plugin Successivamente nel metodo OnCreate della nostra Activity inizializzeremo realmente GStreamer attraverso la chiamata GStreamer init Questo metodo richiede il contesto per questo motivo non pu essere chiamato dall inizializzatore statico visto in precedenza ma non c pericolo nel 114 Scenario OpenWebNet richiamarlo pi volte in quanto tutte le chiamate eccetto la prima vengono ignorate try GStreamer init this catch Exception e Toast makeText this e getMessage Toast LENGTH LONG show finish return Figura 71 snippet inizializzazione GStreamer In caso l inizializzazione fallisca il metodo init sollever un eccezione con i dati forniti dalla libreria GStreamer Sempre nel metodo OnCreate andremo a settare gli inflate e i listener per gestire le parti dell interfaccia grafica che andranno ad interagire con la libreria GStreamer
15. applicazione Android un sistema che vada ad interfacciarsi a tale protocollo e riesca a comunicare in maniera adeguata con il posto esterno il quale utilizza una serie di codici e sequenze particolari Come gi anticipato lo studio avverr su uno scenario semplificato punto punto e quindi tralasciando quelle problematiche che possono essere un autenticazione 56 Scenario SIP ad un proxy server SIP oppure la deviazione di chiamata che nella realt pu essere effettuato dal software centralino fornito direttamente da Bticino 4 2 1 SIP Qui di seguito vi lo schema base di una semplica chiamata SIP e di come avviene lo scambio di messaggi fra il posto interno IU Internal Unit e posto esterno External Unit stepnumber EU IU 1 INVITE m audio video gt Boccsccesvescossesescsesesceozsececcoseoseo P 2 TRYING 100 d f iii 3 DIAL ESTABLISHMENT 101 a ceseocssoacecoooosesosoecosossssosocsoss 4 RINGING 180 4 cocsosovesestrereeverer01v01v0000000000000 5 OK 200 lt mavideo gt OK video not audio to begin video stream 4 ssssssososossossosesesososossesossososo o ACK 200 O A N SNS EE A E FEA P RTP VIDEO c 7 INVITE m audio video gt i A E EEE Hang off also audio required 8 OK 200 eososoososososeososoovosososososssssosoo P TRYING 100 O E ESE TT E b ACK 200 10 lt sesesossosososooscososososossssososoesool n PTP VIDEO 11 BYE r iii rene rireinene TRYING 100 12 dccsciniccsiostscse ose
16. due JB e ICS ma detengono quasi il 70 della distribuzione totale oltre ad avere un livello di API pi alto che fornisce maggiori funzionalit per gli sviluppatori Per questo motivo abbiamo scelto di sviluppare il nostro progetto rendendolo compatibile solamente per dispositivi che sono equipaggiati con versioni di Android superiori alla 4 0 44 Analisi delle tecnologie utilizzate 3 3 3 SDK Primi passi con Android Come gi accennato in precedenza VIDE pi utilizzato per sviluppare applicazioni Android Eclipse Nel Maggio 2013 Google ha presentato il suo IDE chiamato Android Studio atto a uniformare e semplificare lo sviluppo delle apps Purtroppo questo strumento ancora in fase di beta test e quindi ancora non del tutto stabile e cosa pi importante non supporta tutte le funzionalit che il concorrente permette di utilizzare nel nostro caso NDK uno strumento fondamentale Per questo motivo nello sviluppare il nostro progetto abbiamo deciso di utilizzare Eclipse Tramite SDK o meglio tramite gli strumenti utilizzati mediante l SDK trasformiamo la nostra applicazione Android in un codice intermedio chiamato bytecode questo esattamente quello che accade abitualmente in Java Questo bytecode viene eseguito dalla Dalvik Virtual Machine DVM descritta nel capitolo 1 1 Ogni terminale Android ha la sua DVM come definito nell architettura del sistema il suo compito solo questo eseguire il
17. l aspetto economico Se per poter mettere tutte proprie applicazioni sul Google Play Store molte volte senza nemmeno bisogno dell approvazione di Google bastano 25 ne servono invece circa 100 per pubblicare le proprie applicazione sugli store di Apple o Microsoft 43 Analisi delle tecnologie utilizzate 3 3 2 Distribuzione Android Grazie ai dati ufficiali distribuiti sulla dashboard da Google e pubblicati ad inizio ottobre sulla pagina ufficiale degli sviluppatori Android 5 abbiamo analizzato la situazione della distribuzione delle versioni di Android e le dimensioni degli schermi maggiormente utilizzati Questi dati mostrano solamente i device sui quali installata l ultima versione del Google Play Store che compatibile solo con le versioni di Android superiori alla 2 2 22 Froyo 8 1 7 2 3 3 Gingerbread 10 26 3 237 32 Honeycomb 13 0 1 4 0 3 Ice Cream 15 19 8 4 0 4 Sandwich 41x JellyBean 16 373 ci 4 2 x 17 125 dda 4 3 18 2 3 Figura 10 distribuzione Android Novembre 2013 Possiamo vedere dalla Figura 10 che le quattro versioni principali di Android Honeycomb allo 0 1 trascurabile sono Froyo 1 7 nel mese precedente era al 2 2 Gingerbread 26 3 nel mese precedente era al 28 5 Ice Cream Sandwich 19 8 nel mese precedente era al 20 6 Jelly Bean sale dal precedente 48 6 all attuale 52 1 Nel complesso quindi le versioni di Android superiori alla 4 sono solamente
18. leggermente limitate soprattutto per quanto riguarda throughput e uso della memoria Questi server per sono indispensabili per operazioni quali forking cio inviare pi volte lo stesso messaggio accounting e supporto al NAT traversal 154 Studi Aggiuntivi Registrar Location Server Service 1 Register 5 INVITE 3 INVITE N bob acme com Proxy n Bob Alice ph1234 SIP acme com Figura 139 esempio generale server SIP Prima di effettuare le richieste di routing un server SIP proxy o redirect ha bisogno di validare il messaggio Innanzitutto deve passare il controllo di sintassi deve essere ben formattato e la URI deve avere uno schema ben preciso Il client pu indicare qualche estensione SIP nel campo proxy e il server deve avere il supporto corrispondente per processare il messaggio in maniera corretta Ultima cosa l autenticazione se il messaggio non contiene delle credenziali questo processo ovviamente fallisce L autenticazione SIP pu avvenire anche in un sistema multi livello coinvolgendo differenti server proxy Effettuata l autenticazione occorre determinare la destinazione alla quale il messaggio deve essere inoltrato questo processo pu avvenire in due maniere determinando il target set oppure tramite una risoluzione DNS NAT STUN TURN NAT Network Address Translation una tecnologia usata comunemente da firewall e router per permettere a pi dispositivi in una LAN e qu
19. sip temseetion ES 7 pJeip tz dara tdata struct apo chiallee apo cile tatus pjsip dlg create uas pjsip_ ua instance rdata Ji Eeee tatus pjsip _dlg_add usage dlg amp app module NULL jsip_dlg_inc session dlg tatus pjsip _dlg create response dlg rdata 180 NULL Ringing amp tdata tatus pjsip_dlg_send response dlg pjsip_rdata get tsx rdata tdata dig gt mod data app module id pjsip rdata get tsx rdata acute UR Mentre nel successivo viene mostrato come inviare un ACK cale vote send ack peilp chlalog clile 99 sup e data sdata Jeito tx dete icclata Create ACK request tatus pjsip _dlg create request dlg amp pjsip ack method clate tasg smo csece gt esecn Giclee p Send the request tatus pjsip _dlg_ send request dlg tdata NULL dii Rd ro A Figura 38 a b Dialog in ricezione Invio di un ACK Pi ad alto livello invece troviamo il cosiddetto dialog invite session il quale pu essere usato dall applicazione per gestire le sessioni INVITE incluso il 79 Scenario SIP controllo del SDP L invite session progettato per essere completamente astratto dal basic dialog e quindi non ha bisogno di usare codeste API implementato in una libreria statica separata pjsip ua e deve essere inclusa l header lt pjsip ua sip_inv h gt o alternativamente tutto lt pjsip ua h gt per us
20. user_agent dialog Transaction Layer sip_transaction c Transaction Hash Table ENDPOINT sip_endoint c TRANSPORT MANAGER sip_transport c Parser Parser Plugin Plugin TRANSPORT pjsip_transport TRANSPORT pjsip_transport PJLIB 1 0 Queue K Figura 19 Diagramma di collaborazione moduli UA Module sip_ua c DI Dialog sip_dialog c Dialog Hash Table Scenario SIP Message Flow Global 1 0 Queue APPLICATION Transaction sip_transaction c Transaction Hash Table ENDPOINT sip_endoint c PARSER sip_parser c n Header Parser TRANSPORT MANAGER sip_transport c TRANSPORT sip_transport c UDP TRANSPORT TCP TRANSPORT sip_transport_udp c sip_transport_tcp c Figura 20 Class Diagram PISIP 63 Scenario SIP Il Transport ha come compito principale l invio e la ricezione dei messaggi provenienti dalla rete In generale possibile dire che il livello di transport ha come fulcro il Transport Manager Il cui scopo gestire la creazione di tutti i transport necessari oltre a offrire servizi possibili come per esempio instradare i pacchetti provenienti dai vari transport per poi passarli all endpoint Si occupa di trovare il transport adeguato per l invio dei messaggi in base al tipo di messaggio da spedire e all indirizzo remoto gestisce le factories dei trasporti e
21. 136 Figura 108 avvisi all aVVio iii 137 Figura 109 ilmen n elia ioni aaa ai eun sauna 137 Figura 110 area notifiche di Android i 138 Figura 111 Figura 112 Figura 113 Figura 114 Figura 115 Figura 116 Figura 117 Figura 118 Figura 119 Figura 120 Figura 121 Figura 122 Figura 123 Figura 124 Figura 125 Figura 126 Figura 127 Figura 1283 Figura 129 Figura 130 Figura 131 Figura 132 Figura 133 Figura 134 Figura 135 Figura 136 Figura 137 Figura 138 Figura 139 Figura 140 Figura 141 Figura 142 Figura 143 Figura 144 Elenco delle Figure NOtTICAGISEVIZIO cnc 138 notifica di chiamata in arrivo iuuspa alal 139 chiamata iN arriVO ienie roi 139 eliminare l notice a a a 139 schermata di Video Sorveglianza iii 140 tasto Avvio SESSIONE nisaire enii daie 140 avviso diattesas aan taria aaan aaia aoaaa iaa EEA 140 popup di fine SESSIONE ii 141 schermata Chiamata in Arrivo 141 pPepup difine chiamat s onice liaiiai 142 servizio in bacKground iaue iti lai 143 opzione Chiudi nel MENU 143 popup di chiusura servizio iii 144 opzione Esci Nel MEN ii 144 schema semplificato per lo scambio audio 145 gestione audio con le API di Android i 146 creazione elemento AudioRecord eri 147 creazione elemento AudioRecord
22. Arrivo Figura 96 chiamata in arrivo l utente visualizzer una schermata all interno della quale visualizzer tre diverse sezioni 130 Scenario OpenWebNet e La prima posizionata in alto Figura 97 dedicata ai tasti che serviranno per gestire in futuro funzionalit aggiuntive come per esempio l apertura del cancello Figura 97 funzionalit aggiuntive e Al centro troviamo la sezione dedicata all esecuzione del video vedi Figura 98 Figura 98 sezione video e In fondo troviamo i due tasti dedicati alla videochiamata vedi Figura 99 Quello verde serve per accettare la chiamata e iniziare lo scambio audio quello rosso serve per rifiutare la chiamata e chiudere Figura 99 tasti chiamata l esecuzione Ipotizzando di aver accettato la chiamata inizier lo scambio audio tra videocitofono e smartphone fino a quando scaduti i 30 secondi a disposizione verr interrotta mostrando all utente l apposito popup in Figura 100 131 Scenario OpenWebNet La chiamata terminata Conferma Figura 100 popup di fine chiamata Cliccando sul tasto Conferma verr chiusa l applicazione e sar possibile ricevere una nuova chiamata Scenario Videosorveglianza In questo secondo scenario ipotizziamo di essere un utente che vuole effettuare una sessione di videosorveglianza AI lancio dell applicazione viene mostrata sullo schermo del nostro dispositivo la schermata principal
23. Comma section mae IE 12 VALUE icons CECO nni Sha MORI __ PORT_OPEN VALUE _ connPar setConnPar _MODE _MODE VALUE __ myOpenChan connect _connPar Figura 47 instaurare connessione al gateway Fondamentalmente la libreria fornisce due differenti modalit di connessione ReadOnly che permette solo di ricevere gli eventi di notifica dal gateway monitorato mentre ReadWrite permette di inviare comandi e ricevere gli eventi di notifica Invio di un frame al gateway Una volta che disponibile un istanza di un canale di connessione OpenWebNet l applicazione pu iniziare ad inviare comandi e ricevere gli eventi correlati in accordo con il formato dei messaggi OpenWebNet _avopeataaa Send Vel si Ii cuce oui Result Figura 48 invio di un frame Gestione notifiche ed eventi In accordo con il set up del canale di connessione OpenWenNet gli eventi di notifica giungono dal impianto gestito gateway e le notifiche di errore verranno gestite dai servizi dell applicazione notifyEvent e notifyError _ myOpenChan addListener new IBTCommNotify public void notifyEvent Object highLevelEventMsg Logger info OnEventReceived highLevelEventMsg getClass getName public void notifyError BTCommErr errorMsg Logger info OnErrorReceived errorMsg getErrEnum Figura 49 gestione notifiche ed eventi 93 Scenario OpenWebNet 5 2 P
24. Sommario bid PIOtLOLPO oninia iita I TR 129 Sbk Scenadri L USO lack 129 54 2 MANUGIEMENE ria 134 6 Studi AggiUntiVi seisine e a itea ieai 145 6 1 Gestionedellaudic nale 145 6 2 Passi per implementare audio ii 146 6 2 1 Invio e ricezione audio attraverso le API di Android 146 6 2 2 Invio dell audio attraverso GStreamer iii 151 6 3 Connettivit esterna 153 6 3 1 Tecnologie UHIZIAD Isaia gr 153 6 3 2 Possibile Progettazione 160 T CONFDUSIONI pre a a aaaea S A aA EARS 164 8 Bibliografia mnra ini E EE E EE 166 Elenco delle Figure ELENCO DELLE FIGURE Figura 1 Figura 2 Figura 4 Figura 5 Figura 6 Figura 7 Figura 8 Figura 9 Figura 10 Figura 11 Figura 12 Figura 13 Figura 14 Figura 15 Figura 16 Figura 17 Figura 18 Figura 19 Figura 20 Figura 21 Figura 22 Figura 23 Figura 24 Figura 25 Figura 26 Figura 27 Figura 28 Figura 29 Figura 30 Figura 31 Figura 32 Figura 33 Figura 34 Figura 35 Figura 36 emulatore Android ilaele 12 Galaxy Nexus Figura 3 Galaxy Tab iii 13 messag glS Pramis sie iaia dalai aaa ata 32 nome da decidere lla 37 Architettura ad oggetti 38 Implementation Structure iii 39 comunicazione jain Sip i 40 distribuzione mobile OS Q3 2013 42 distribuzione Android Novembre 2013 n 44 compilazione
25. Studi Aggiuntivi Come prima operazione dobbiamo inizializzare un elemento AudioTrack 12 che ci consente di gestire ed eseguire le singole risorse audio parametri che andremo a settare sono del tutto simili a quelli visti per l inizializzazione dell elemento di AudioRecord visto precedentemente ad eccezione di e AudioManager STREAM_MUSIC consente di eseguire il file audio come se fosse un file musicale e AudioTrack MODE_STREAM modalit di creazione in cui i dati audio sono trasmessi da Java a livello nativo come la riproduzione audio Avviamo poi l esecuzione dell elemento creato attraverso il metodo play Ora siamo pronti a ricevere ed eseguire l audio DatagramSocket sock new DatagramSocket AUDIO PORT byte buf new byte BUF SIZE while chiamata attiva DatagramPacket pack new DatagramPacket buf PURS za sock receive pack track write pack getData 0 pack getLength Figura 135 ricezione pacchetti Creaimo l elemento DatagramSocket che ci consentir di ricevere i DatagramPacket e Il buffer di supporto per la ricezione All interno del ciclo while che analogamente al ciclo visto per l invio rimane attivo durante tutta la chiamata eseguiremo le seguenti operazioni e Creiamo il DatagramPacket al quale grazie al metodo receive attribuiremo iterativamente l elemento ricevuto e Per mezzo del metodo write eseguiamo una push sull elemento AudioTrack permettendo co
26. applicazione invii e riceva tali messaggi fornisce inoltre un parser per i messaggi in arrivo per fare in modo che l applicazione acceda ai campi del messaggio tramite un interfaccia Java standardizzata JSip invoca inoltre gli appropriati handler quando arrivano i messaggi o i time out delle transazioni fornisce supporto e gestione alle Transazioni e ai Dialog Gli attori principali di tutta la libreria sono il SIpProvider il Slp Stack che crea il precedente il SIplistener il SipFactory e poi tutta una seria di funzioni L interfaccia SipStack associata ad un indirizzo IP e pu avere pi punti di ascolto un applicazione invece pu avere pi SipStack L interfaccia istanziata dal SipFactory e definisce opzioni di ritrasmissione e informazioni di instradamento Tutte le propriet sono riservate e contenuto nel pacchetto javax sip il quale stato inglobato nelle versioni pi recenti di Android e quindi occorre compilarlo e associarlo con un altro nome per non avere conflitti di librerie Esiste un unico SIpListener per ogni SipStack e ci implica 39 Analisi delle tecnologie utilizzate che ve ne uno per una singola architettura gestisce le notifiche del processo delle Transazioni 9g Application SIP Messages SIP Events SIP Messages I SIP Events Listening Point Listening Point Network Figura 8 comunicazione jain sip Dato che l architettura sviluppata per un ambiente J2SE basato s
27. base della concezione di GStreamer la pipeline questo termine in inglese significa tubatura usato per indicare un insieme di elementi collegati uno in serie all altro Gli elementi con i quali costituire una pipeline 122 Scenario OpenWebNet sono di tre tipi source sorgente filter filtro sink pozzo ad indicare un elemento finale senza uscite Ogni applicazione che utilizzi GStreamer contiene almeno una pipeline Analizzeremo ora la pipeline utilizzata all interno della nostra applicazione prototipo udpsrc port 20000 caps application x rtp media video clock rate 90000 encoding name H264 rtph264depay Fiicee N2604 autovicdeos iale Figura 84 pipeline utilizzata Gli elementi principali sono e udpsrc permette di ricevere i dati sulla rete attraverso UDP e port permette di impostare il numero della porta sulla quale riceviamo il flusso dei media nel nostro caso la porta 20000 e caps una stringa che permette di specificare il tipo di media accettabile ed eseguibile nel nostro caso un flusso RTP le principali componenti sono o media indica il tipo di media da eseguire in questo caso ci aspettiamo un media di tipo video o clock rate indica il clock rate del video nel nostro caso 90000 o encoding indica la codifica che deve avere il media in arrivo e rtph264depay estrae il video H 264 a partire dai pacchetti RTP e ffdec_h264 indica che tipo di codex utilizzare nel
28. bytecode Per iniziare opportuno scaricare e decomprimere l SDK e I NDK di Android dal sito http developer android com sdk index html In particolare questo pacchetto di software chiamato ADT Bundle contiene gi tutto il necessario per poter iniziare a sviluppare senza dover installare software aggiuntivo In particolare SDK fornisce tutte le API che vanno installate tramite l SDK Manager uno strumento che consente allo sviluppatore di scegliere quali API di sistema installare disponibile subito dopo aver decompresso il pacchetto scaricato si fa riferimento all applicazione android sdk SDK Manager exe D ora in poi ci riferiremo ad android sdk con SSDK 45 Analisi delle tecnologie utilizzate Un volta ultimata questa procedura si pu passare all installazione dell Emulatore Android vedi capitolo 1 2 Come prima cosa necessario creare un Android Virtual Device ADV Un ADV una configurazione di un device per l emulatore i Android che permette di modellare differenti device Questa operazione pu essere eseguita tramite l interfaccia grafica attraverso il Virtual Device Manager nella barra degli strumenti di Eclipse o attraverso linea di comando tramite il seguente binario SDK tools android avd n new machine name t api sdcard file Dove il parametro api specifica quale versione di Android emulare all interno della macchina Ovviamente possibile eseguire l installazione del softwar
29. come videosorveglianza va notato per che se si dovesse effettuare una chiamata da posto esterno contemporaneamente ad una osservazione da qualsiasi posto interno quest ultima risulterebbe avere priorit pi bassa e quindi cesserebbe in favore della comunicazione standard Questo ovviamente perch una funzione aggiuntiva ma quella principale rimane pur sempre quella di video citofonia la quale ha la precedenza e quindi un osservazione dall interno non pu tenere occupato il posto esterno La comunicazione tra web server F454 e i dispositivi ad esso collegati device Android e video citofono avviene per mezzo del protocollo Open Web Net vedi il relativo capitolo Open Web Net Il terminale in connessione LAN nel nostro caso via Wi Fi quindi wireless con il web server Nel progetto analizzeremo una configurazione unicast e solo in seguito si potr pensare ad una gestione multi cast e quindi ad una trasmissione del video a tutti i dispositivi collegati Lo scenario che ci troviamo ad analizzare il seguente Nel momento in cui riceviamo una chiamata dal videocitofono il nostro device Android dovr mostrare una notifica che ci avvisa della chiamata in arrivo All apertura dell applicazione l utente potr decidere di visualizzare o non visualizzare il video in caso positivo il web server invier al device il flusso video che verr visualizzato sullo schermo del dispositivo A questo punto po
30. con una serie di messaggi di risposta come trying ringing per far capire all utente che sta instaurando la connessione e il messaggio 200 di OK a quel punto P1 invia a P2 un messaggio di ack acknowledge di riconoscimento della connessione e a quel punto pu partire la comunicazione stream real time tramite RTP o altri dopodich uno user agent in questo caso P1 invia il messaggio di BYE per iniziare la chiusura della sessione e l altro user agent invia il messaggio 200 di ack e termina la comunicazione Vi la possibilit ovviamente che ci siano nel mezzo della rete altri agenti server proxy che re dirigono la comunicazione 31 Analisi delle tecnologie utilizzate INVITE 100 Trying 180 Ringing 200 0K ACK 2 way RTP Media Session 200 0K Figura 4 messaggi SIP 3 2 5 Esempio di messaggio SIP header body INVITE sip nome dominio it SIP 2 0 vias SIP 2 0 UDE Sipseryv clst polim it From sip user dominio com To sip sip nome dominio it Call Id user dominio com CSeg 1 INVITE Subject meeting Content Type application sdp Content Length Contact user dominio com lt corpo messaggio SDP gt messaggi SDP sono trasportati in modo trasparente all interno dei messaggi di SIP e possono includere e Nomeescopo della sessione e Durate della sessione e vari media utilizzati e L informazione per ricevere tali media porte indirizzi e Informazioni sulla banda e Inform
31. del codice nativo nel seguente modo include lt jni h gt JNIEXPORT void UNICALL Java ClassName metodoNativo JUNIE env jobject obj jstring javaString Const char nativeString env gt GetStringUTFChars env javaString 0 env gt ReleaseStringUTFChars env javaString nativeString In particolare il primo parametro fa riferimento ad un puntatore ad un array ove sono contenuti tutti i metodi che possibile chiamare da codice nativo mentre il secondo un istanza dell oggetto che ha invocato tale metodo II JNI viene principalmente utilizzato per consentire al programma l accesso a funzioni definite nelle librerie del sistema operativo ospite mediante primitive di sistema In realt l accesso avviene in modo indiretto nel senso che le funzioni del sistema operativo vengono invocate dalle funzioni che implementano i metodi nativi della classe che li definisce e che vengono a loro volta utilizzati dal codice Java L uso del JNI si rende inoltre necessario quando l implementazione di una certa funzionalit nel programma dipende dal sistema operativo in uso a run time e non presente nelle librerie standard di Java Il programma risultante non pu essere definito 100 Java in quanto esso fa direttamente uso di codice nativo 49 Analisi delle tecnologie utilizzate 3 4 GSTREAMER GStreamer un framework multimediale basato su pipeline scritto in il linguaggio C concesso
32. elimina dopo 30 secondi e quindi non sar pi possibile accedere ad essa scaduto questo lasso di tempo b Stanno Citofonando Figura 113 chiamata in arrivo Cliccando sulla notifica che viene cos eliminata si viene reindirizzati alla sezione dell applicazione adibita alla gestione della chiamata in arrivo Inoltre la notifica pu essere eliminata con un semplice slide vedi Figura 114 ma questo equivale ad ignorare rifiutare la chiamata t GIOVEDI L I 4 31 14 NOVEMBRE y O Ri Figura 114 eliminare la notifica Video Sorveglianza Ora analizziamo cosa succede in caso si voglia eseguire una sessione di video sorveglianza Per accedere a questa funzionalit abbiamo due differenti possibilit e Dalla schermata principale dell applicazione attraverso il tasto arancione Video Sorveglianza 139 Scenario OpenWebNet e Attraverso il men sempre selezionando l opzione Video Sorveglianza Osserviamo e analizziamo nel dettaglio la schermata dedicata alla video sorveglianza Figura 115 SA N Video Sorveglianza Figura 115 schermata di Video Sorveglianza Abbiamo due sezioni principali la prima in alto consente di visualizzare il video richiesto mentre la seconda contiene il tasto Figura 116 che consente di avviare la sessione di video sorveglianza della durata di 60 secondi Figura 116 tasto avvio sessione Durante la visione del video non sar possibile abbandonare la schermat
33. inviato dal client nella sessione comandi azioni per richiedere informazioni sullo stato di un singolo oggetto di un insieme di oggetti o di un intero sistema Il server risponde a questa richiesta inviando uno o pi messaggi Open di stato La risposta deve terminare con un messaggio di ACK o di NACK in caso di problemi o se l oggetto i di cui si richiede lo stato non presente sul sistema Open di richiesta valore grandezza Il messaggio OPEN di richiesta grandezze cos strutturato CHI DOVE GRANDEZZA Viene utilizzato dal client nelle sessioni di tipo comandi per richiedere informazioni sul valore di un grandezza di un singolo oggetto di un insieme di oggetti o di un intero sistema Il server risponde ad una richiesta inviando uno o pi messaggi OPEN di valore grandezza cos strutturati CHI DOVE GRANDEZZA VAL VALn II numero di campi VAL dipende dalla GRANDEZZA richiesta Il messaggio di risposta seguito dal messaggio di ACK Se non vi seguito alla richiesta con una risposta o si verifica un errore nella frame di richiesta grandezza segue un messaggio di NACK 87 Scenario OpenWebNet Messaggi Open particolari Oltre ai messaggi di comando esistono dei messaggi particolari che vengono trasmessi all interno del flusso comunicativo come il messaggio di ACK e di NACK Messaggio di ACK messaggio Open di Acknowledge ha la seguente sintassi 1 Indica che il messaggio Open inviato dal C
34. le possibili funzioni low e midlle level per gestirle dalla parte di negoziazione fino al rilascio Avendo un interfaccia anche a basso livello per gestire i messaggi delle sessioni SIP vengono usati i metodi Message e MessageBody in aggiunta alla gestione degli Header e dei codici degli stati 101 200 ecc Scambiandosi i messaggi per negoziare una sessione SIP necessario analizzare il contenuto dove si trovano i vari parametri della sessione per fare ci vi sono disponibili i Parser Parser sono di tipo top down e utilizzano lo scanner di PjLib il quale scalabile e molto veloce usa un sistema di eccezioni try catch che non lo semplifica ma salva l esecuzione da fastidiosi errori Oltre al parser per il body del messaggio vi sono anche i parser per l header e per PURI di cui ci sono anche i manager e costruttori Gli indirizzi URI Uniform Resource Indicator sono modellati secondo uno schema ad oggetti e vi sono vari tipi di URI come per esempio il base URI PURI SIP il tel URI ecc Una volta creato il messaggio possibile inviarlo tramite le funzioni di invio che utilizzano il livello di trasporto il quale fa uso di due buffer utilizati rispettivamente per i messaggi di request e i messaggi di response Passando dai buffero vengono invocati gli eventi on_rx_response e on_rx_request che danno inizio a tutta la gestione di richieste risposta Esiste poi un intero Framework per l autenticazione dell utente ed ev
35. mezzo di android minSdkVersion impostato al valore 14 indica che l applicazione compatibile solo con versioni di Android che possiedono almeno API di livello 14 quindi dalla versione Ice Cream Sandwich 4 0 L opzione android targetSdkVersion invece indica il target con il quale viene compilata l applicazione in pratica quale versione usiamo per i test lt uses feature android glEsVersion 0x00020000 gt Figura 86 snippet Manifest OpenGL ES Questa opzione permette di includere all interno della nostra applicazione il supporto ad OpenGL ES Nello specifico il suo utilizzo si reso necessario per poter visualizzare il video sul dispositivo 124 Scenario OpenWebNet Android glEsVersion indica la versione supportata dall applicazione nel nostro caso il valore 0x00020000 indica la versione 2 0 di OpenGL ES lt uses permission android name android permission INTERNET gt lt uses permission android name android permission WAKE LOCK J gt o lt uses permission android name android permission ACCESS_NETWORK_ STATE gt lt uses permission android name android permission ACCESS_WIFI_ STATE gt lt uses permission android name android permission RECEIVE BOOT COMPLETED gt Figura 87 snippet Manifest permessi La funzionalit del file AndroidManifest pi importante sicuramente la gestione dei permessi Nel nostro caso date le funzionalit richieste dall applicazione si
36. nostro caso come ampiamente detto utilizziamo H 264 e autovideosink consente di individuare automaticamente il video sink 5 3 6 Il File AndroidManifest xmI L AndroidManifest xml 9 il file che definisce i contenuti e il comportamento della nostra applicazione all interno di questo file sono elencate le Activity e i Service dell applicazione con i permessi che necessita per funzionare correttamente 123 Scenario OpenWebNet Ogni progetto Android include un AndroidManifest xmI memorizzato nella directory principale del progetto in questo file XML si possono inserire nodi per ogni elemento Activity Service Content Provider e cos via che compone la nostra applicazione impostando i permessi per determinare come questi interagiscono l un l altro e con le altre applicazioni Quando l applicazione viene installata il gestore dei pacchetti concede o non concede i privilegi a seconda di come li abbiamo configurati nell AndroidManifest xml Analizziamo ora il nostro AndroidManifest ponendo particolare attenzione sulle parti pi importanti lt uses sdk android minSdkVersion 14 android targetSdkVersion 18 gt Figura 85 snippet Manifest versione OS Come abbiamo gi visto nel capitolo Distribuzione Android abbiamo deciso che la nostra applicazione dovr essere compatibile con le versioni di Android superiori alla 4 0 Questo reso possibile grazie al codice osservabile sopra che per
37. o gestore telefonico al sistema operativo Android Samsung Galaxy Nexus uno smartphone progettato da Google e prodotto dalla Samsung stato recentemente aggiornato con la versione 4 3 Jelly Bean Il Galaxy Nexus uno dei pochi smartphone raccomandati dall Android Open Source Project per lo sviluppo di software per Android 2 Samsung Galaxy Tab 8 9 un tablet progettato e realizzato da Samsung introdotto nel marzo 2011 Fa parte della serie Samsung Galaxy Tab e presenta uno schermo da 8 9 pollici di diagonale AI rilascio la versione di Android preinstallata era la 3 1 Honeycomb personalizzata da Samsung 3 ed stato aggiornato ad Android 4 0 4 con una versione personalizzata chiamata TouchWiz UX 4 Figura 2 Galaxy Nexus Figura 3 Galaxy Tab 13 Stato dell arte e analisi del problema 2 STATO DELL ARTE E ANALISI DEL PROBLEMA 2 1 LADOMOTICA Il termine domotica deriva dal francese domotique contrazione del latino domus per indicare la dimora il centro abitativo dell individuo o della famiglia e non semplicemente l edificio Esso indica l integrazione nella vita domestica di diverse tecnologie quali l elettrotecnica l elettronica l informatica la comunicazione e pi in generale l automazione Lo scopo della domotica in generale quello di migliorare le condizioni di esistenza dell abitante della casa offrendo comfort sicurezza e benessere Il comfort si ottiene grazie a disp
38. per la videochiamata questo valore va omesso due tag seguenti invece vengono utilizzati per comunicare al server dove indirizzare il flusso video richiesto e questo avviene per mezzo dell indirizzo IP e del numero della PORTA Il tag PORTA Indica il numero della porta sulla quale il server invia il flusso video abbiamo deciso di utilizzare la porta 20000 quella predefinita del web server f454 tag IP Indica l indirizzo IP al quale il server invia il flusso video cambia in base al device che utilizzato Attraverso il metodo getFrameWithIP vedi Figura 67 da noi creato catturiamo l indirizzo IP del device che stiamo utilizzando e creiamo il frame in modo da automatizzare l operazione e non dover ogni volta modificare manualmente l indirizzo IP 111 Scenario OpenWebNet private String getFrameWithIp int command WifiManager wifiMan WifiManager theContext getSystemServic Contex CANTEIRO EA RVeen i WifiInfo wifiInf wifiMan getConnectionInfo int ipAddress wifiInf getIpAddress String ip String format Sd lt d 43d d ipAddress amp Oxff ipAddress gt gt 8 amp 0xff ipAddress gt gt 16 amp Oxff ipAddress gt gt 24 amp Ox ff switch command case l _iramenidauo Vsesszi r dea Z000084 000 a break case 2 _ amen uao Veg ape 20000 a break return frameWithIp Figura 67 snippet getFameWithIP Come si pu notare l indirizzo IP viene fornito
39. per mezzo del quale il dispositivo in grado di riconoscere l informazione a lui destinata ed elaborarla per realizzare la funzione desiderata Affinch ciascun dispositivo in un sistema a BUS svolga correttamente la funzione preposta esso deve essere opportunamente programmato assegnando il rispettivo identificativo e modalit di funzionamento Questa procedura denominata configurazione pu essere effettuata scegliendo tra le due modalit e Configurazione fisica inserendo in apposite sedi dei dispositivi ad innesto denominati configuratori e Configurazione virtuale grazie al software denominato VIRTUAL CONFIGURATOR installato in un PC palmare che permette inoltre la diagnostica dei dispositivi 20 Stato dell arte e analisi del problema Audio e Video La moderna tecnologia di My Home mette a disposizione svariati strumenti di visualizzazione locale o a distanza per tenere tutto sotto controllo quando si in casa o lontano da essa Dispositivi videocitofonici digitali permettono di comunicare chiaramente con chi si presenta all ingresso anche attraverso messaggi di segreteria videocitofonica in caso di assenza del proprietario che a distanza potr fruire del trasferimento di chiamata piuttosto che del messaggio registrato dal visitatore Controllo a Distanza Ciascuno pu scegliere il tipo di attivazioni informazioni e notifiche da dare e ricevere dalla casa in funzione delle proprie specifiche necess
40. prove e le valutazioni di quest ultimo in una prova sul campo Un attenzione particolare inoltre verr posta su specifici sviluppi futuri non solo accennando a cosa potr essere sviluppato ma illustrando tutta una progettazione volta a predisporre le basi per l effettiva creazione delle funzionalit aggiuntive 10 Introduzione 1 1 TERMINOLOGIA ADOTTATA ALL INTERNO DELLA TESI necessario definire a priori una terminologia onde chiarire alcune terminologie ambigue Definiamo Applicazioni Java Questo genere di applicazioni sono quelle pi diffuse all interno del mondo Android tutto il codice scritto in linguaggio Java Applicazioni Native Con questo termine facciamo riferimento unicamente alle applicazioni compilate in codice binario ed eseguibile direttamente dal processore In genere si effettua la compilazione dei binari tramite Android NDK Applicazioni Native con JNI In genere si fa riferimento a questo tipo di applicazioni come ad Applicazioni Native assieme alle successive anche se in questo caso si accede alla Java Native Interface 1 allo scopo di interagire con il codice Java La compilazione di queste applicazioni avviene tramite lo script ndk build In ogni caso viene sempre prodotto un file apk e vengono stabiliti i permessi di accesso nel Manifest Per la compilazione necessario disporre dell Android NDK API Con Application Programming Interface si indica ogni insieme di procedu
41. tra il device Android ed il web server 145 Studi Aggiuntivi 6 2 PASSI PER IMPLEMENTARE AUDIO Analizzeremo ora con alcuni esempi di codice i passi principali necessari per implementare uno scambio audio in tempo reale Affronteremo questa breve analisi considerando due differenti approcci 1 Invio e ricezione del flusso audio utilizzando solamente le API messe a disposizione da Android 2 Invio e ricezione del flusso audio utilizzando come supporto alle API di Android la libreria di gestione dei media GStreamer 6 2 1 Invio e ricezione audio attraverso le API di Android 4 Ricezione Push Riproduzione Pacchetti UDP Nel Track Audio Audio Li SI Inizio D 04 CE F j Conversione 2 Inizio Registrazione Audio Invio Chiamata Audio RTP In Pacchetti UDP Pacchetti UDP Figura 126 gestione audio con le API di Android Fine E CATTURA DELL AUDIO E INVIO AL WEB SERVER TRAMITE UDP Per prima cosa dobbiamo catturare l audio da inviare al web server in pratica la voce della persona che parla dal cellulare Questo possibile grazie alla classe AudioRecord 11 disponibile in Android Questa classe consente di gestire le risorse audio e soprattutto consente di registrare laudio proveniente dalle periferiche hardware di input presenti sul device nel nostro caso il microfono Vediamo ora le parti principali da implementare in modo da poter nel momento opportuno registrare la voce del
42. valida ma non pu essere soddisfatta per un problema interno del server Abbiamo Server Internal error 500 not implemented 501 bad gateway 502 service unavaible 503 server timeout 504 version not supported 505 message too large 513 6xx global failure la richiesta non pu essere accettata da parte di nessun server principali sono busy everywhere 600 decline 603 does not exist anywhere 604 e not acceptable 606 Per quanto riguarda le intestazioni sono rappresentate nel seguente formato lt lt header name gt gt lt lt header value gt gt lt lt header value gt gt Dove hader name il nome dell intestazione ed header value il valore il terzo parametro significa che l intestazione pu avere pi di un valore inoltre per ogni valore possono essere specificati dei parametri aggiuntivi ognuno col proprio valore e separati da punto e virgola lt lt header name gt gt lt lt value lt lt parameter name gt gt lt lt parameter value gt gt gt gt Dove lt lt value gt gt il valore dell intestazione parameter name il nome del parametro e parameter value il valore corrispondente Le intestazioni pi importanti sono to indica la URI del destinatario della richiesta from rappresenta la URI di chi invia la richiesta call id un identificatore semi casuale che resta uguale per tutti i messaggi di uno stesso dialogo ovvero univocamente assoc
43. 012 URL http source android com source building devices html L Whitney Samsung Galaxy Tab 8 9 to ship with Honeycomb 3 1 26 Settembre 2012 URL http reviews cnet com 8301 197367 20111881 251 html GalaxyTabs com Explanation and Examination of TouchWiz UX aka TouchWiz 4 0 23 Marzo 2011 URL http www galaxytabs com 2011 03 explanation and examination of touchwiz ux aka touchwiz 4 0 Google Dashboard distribuzioni Android terzo trimestre 2013 Ottobre 2013 URL http developer android com about dashboards index html Google Inc Android NDK Google Developer URL http developer android com tools sdk ndk index html G Developer GStreamer Good Plugins 1 0 Plugins Reference Manual Luglio 2013 URL http gstreamer freedesktop org data doc gstreamer head gst plugins good plugins html index html My Open Staff Indirizzi IP Autorizzati 2011 Google Developers Android Manifest Introduction Ottobre 2013 URL http developer android com guide topics manifest manifest intro html Google Developers Android Manifest Permission Ottobre 2013 URL 166 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Bibliografia http developer android com reference android Manifest permissi on html Google Developers AudioRecord 15 Novembre 2013 URL http developer android com reference android media AudioReco rd html
44. 1 6BIT minBufferSize Figura 128 creazione elemento AudioRecord con parametri Come detto pocanzi la creazione del bufferSize avviene per mezzo del codice osservabile in Figura 129 all interno della quale i parametri utilizzati sono del tutto simili a quelli descritti sopra 147 Studi Aggiuntivi int minBufferSize AudioRecord getMinBufferSize 11025 AudioFormat CHANNEL CONFIGURATION MONO AudioFormat ENCODING PCM 16BIT Figura 129 creazione MinBufferSize Adesso possiamo iniziare a registrare l audio attraverso il microfono Baster utilizzare il Metodo audioRecord startRecording Figura 130 inizio registrazione A questo punto il nostro metodo sta catturando l audio attraverso il microfono Vediamo adesso come inviarlo al nostro webserver Creiamo delle variabili che ci serviranno per gestire la conversione in pacchetti UDP ed aiutarci nell invio ae bytes reac 0g ant bytes couniti 0 byte buffer new byte BUF_ SIZE Figura 131 inizializzazione elementi di supporto E inizializziamo due elementi che ci serviranno per la creazione del socket InetAddress addr InetAddress getByName 192 168 1 35 DatagramSocket sock new DatagramSocket Figura 132 creazione DatagramSocket e addr un elemento InetAddres al quale assegneremo l indirizzo IP del web server F454 e sock creiamo un elemento DatagramSocket che crea un Socket che ci consen
45. 22 Priorit dei moduli Le quattro funzioni oad start stop e unload sono chiamati dall endpoint per controllare lo stato dei moduli Attraverso queste funzioni possibile determinare il ciclo di vita di un modulo load start NULL STATE LOADED STARTED unload stop Figura 23 Diagramma degli stati dei moduli Quando un nuovo messaggio arriva esso rappresentato e ricevuto dal buffer dei messaggi attraverso pjsip_rx_data il Transport manager fa il parsing e mette la struttura dati del messaggio nel receive buffer e passa il messaggio all endpoint Quest ultimo distribuisce il messaggio ricevuto nel buffer ad ogni modulo chiamando la funzione callback on_rx_request o on_rx_response partendo dal modulo con priorit maggiore fino all ultimo A quel punto l endpoint finisce di ridistribuire il messaggio Il seguente diagramma mostra 66 Scenario SIP una possibile sequenza di chiamate a cascata dei vari moduli i quali si passano i dati del messaggio MODULE MODULE MODULE MODULE ENDPOINT N Event Subscriptn rdata TRANSACTION rdata rdata ping rdata APPLICATION Figura 24 Callback a cascata dei moduli Avendo fatto una rapida panoramica della gestione generale dei moduli all interno della libreria passiamo ora ad analizzare le varie componenti utilizzabili da un applicazione nel nostro caso Android volta ad integrare lo stack SIP URI STRUCTURE Il primo
46. Figura 88 avvio del servizio Una volta avviato il servizio eseguir la connessione con il web server F454 attraverso la chiamata del metodo connectionToF454 all interno della onStart del servizio in modo che la connessione rimanga sempre attiva fino alla richiesta di disconnessione che avviene solo quando l utente decide di arrestare l applicazione Una particolarit del nostro servizio che viene inizializzato ed avviato al termine del boot del dispositivo Questa caratteristica permette di poter cos ricevere notifiche dall applicazione senza doverla necessariamente avviare ma sar il servizio ad eseguire una autostart ogni qualvolta che viene riacceso il dispositivo Questo possibile per mezzo della classe ServiceReceiver da noi creata che estendendo la classe BroadcastReceiver permette di ricevere messaggi inviati in broadcast dal Sistema Operativo if android intent action BOOT COMPLETED equals intent getAc cia al Intent pushInt new Intent context IncomingService class context startService pushInt Figura 89 BroadcastReceiver Il codice sopra mostra un estratto della suddetta classe in particolare vediamo il codice che stabilisce l azione da compiere avviare il Servizio alla ricezione 126 Scenario OpenWebNet del messaggio desiderato In particolare attendiamo il messaggio di BOOT_COMPLETED Oltre a questo necessario richiedere attraverso il manifesto di An
47. Force 3 2 SIP SESSION INITIATION PROTOCOL Il protocollo SIP acronimo di Session Initiation Protocol un protocollo di livello applicativo basato su IP definito da RFC 3261 che fornisce meccanismi per instaurare modificare e terminare una sessione di comunicazione tra due o pi utenti Il protocollo SIP non fornisce servizi ma meccanismi per l implementazione e a differenza di altri protocolli che svolgono funzioni analoghe SIP progettato e generalizzato per la scalabilit e l inter connettivit globale utilizzando servizi Internet gi disponibili come ad esempio il DNS Tale protocollo non si occupa di negoziare il tipo di formato multimediale da usare nella comunicazione n di trasportare il segnale digitalizzato questi due compiti sono invece svolti rispettivamente dai protocolli SDP e RTP Il protocollo SIP si occupa di mettere in contatto le parti da coinvolgere nella comunicazione definendo cos una sessione attraverso le seguenti operazioni nell ordine e Individuare l utente e Invitarlo a partecipare se disponibile e Instaurare una connessione e Cancellare la sessione Le entit essenziali di una rete SIP sono gli User Agent UA ovvero endpoint che possono fungere sia da client sia da server Quando assume il ruolo di client User Agent Client UAC d inizio alla transazione originando richieste mentre quando funge da server User Agent Server UAS riceve le richieste e se possibile le sodd
48. Home di Android o in alternativa scelta da noi consigliata uscire attraverso l opzione Esci presente in alto nel men dell applicazione Viden Sarvenlianza Figura 124 opzione Esci nel men 144 Studi Aggiuntivi 6 STUDI AGGIUNTIVI 6 1 GESTIONE DELL AUDIO Come abbiamo visto nel capitolo relativo all implementazione il prototipo sviluppato non consente lo scambio di messaggi audio tra il videocitofono e il device Android che esegue l applicazione realizzata Infatti il processo di chiamata termina con la visualizzazione del video e non d la possibilit di instaurare la comunicazione tra i due utenti Questa mancanza dovuta principalmente alle limitazioni del web server in nostro possesso che come anticipato essendo un prototipo non consente di eseguire alcune funzionalit come appunto la ricezione e l invio di flussi audio Lo scambio di un flusso audio in tempo reale RTP tra dispositivi cos diversi smartphone e videocitofono una procedura complessa che coinvolge diversi fattori e che proveremo ora ad analizzare ie adi E P Androd Audio 1 0 pa Server F454 Videocitofono Figura 125 schema semplificato per lo scambio audio In questa sezione non tratteremo di ci che avviene a livello di interazione tra il web server F454 e il videocitofono ma ci limiteremo ad analizzare i processi e le azioni necessarie affinch possa avvenire uno scambio audio RTP
49. NI Java Native Language iii 47 3 4 GStream riantntarien lalla ai dna 50 Sommario 3 4 1 La pipelihE ne aie aTe R E EATE E EE nia 50 3 4 2 Gli elementi nel dettaglio iii 51 3 4 3 Plug in e media supportati iii 52 4 Scenario SIP orli ili ire alpi cacare 53 4 1 Componenti e specifiche tecniche ii 54 4 1 1 Bticino SwitchBoard centralino 54 4 1 2 VideoCitofono Esterno iii 56 42 Analisien a a a a aai 56 421 Peel 57 422 sANOLOIO aaaeeeaa ea a n a e a a a 60 423 PJSP a e R a A E TE A 61 5 Scenario Ope nWebNet esasen nia 82 bi Andale 82 5 1 1 Componenti e specifiche tecniche ii 83 5 2 Propettazione ccalanio AG i TAEAE AREE 94 5 2 1 Casi d USO a a a AS AR AI 94 5 2 2 ActMY Daor aaa iaia 98 5 2 3 Dependence e Class Diagram ii 100 5 2 4 Sequence DIGGram cita aaa 102 5 3 Implementazione s ranno rita 105 5 3 1 Impostazione del web server F454 ii 105 5 3 2 Connessione tra Android ed il web server F454 108 5 3 3 Scambio messaggi con il web server iiiii 110 5 3 4 Integrazione di GStreamer in ANdroid iiiii 113 5 3 5 La pipeline di GStreamer iii 122 5 3 6 Il File AndroidManifest xXMl iiiii 123 5 3 7 Android Service IncomingService iii 125 5 3 8 La gestione delle notifiche iiiiii 127
50. PEN composto da caratteri appartenenti al seguente insieme di caratteri 0 1 2 3 4 5 6 7 8 9 Il messaggio inizia con il carattere e termina con la coppia di caratteri Il carattere viene anche usato come separatore tra i vari tag Un messaggio OPEN quindi cos strutturato Tag1 Tag2 Tag3 TagN Un Tag composto solo dai caratteri che appartengono all insieme 0 1 2 3 4 5 6 7 8 9 e non pu contenere la coppia di caratteri Un tag pu anche essere omesso Open di comando Il messaggio Open che ha tale funzione cos strutturato CHI COSA DOVE e Tag CHI individua la funzione dell impianto domotico interessata al messaggio OPEN in questione e Tag COSA individua l azione da compiere e g ON luci OFF luci dimmer al 20 tapparelle SU tapparelle GIU Per ogni CHI viene stabilita una tabelle dei COSA Questo tag pu anche contenere dei parametri facoltativi specificati in questo modo 86 Scenario OpenWebNet COSA PAR PAR2 Parn e Tag DOVE individua l insieme degli oggetti interessati al messaggio zona gruppo di oggetti ambiente specifico singolo oggetto intero sistema Per ogni CHI viene specificata una tabella dei DOVE Anche questo tag pu contenere dei parametri facoltativi specificati in maniera analoga al tag COSA Open di richiesta stato Il messaggio Open di richiesta stato cos strutturato CHI DOVE Viene
51. POLITECNICO DI MILANO Polo Territoriale di Como Facolt di Ingegneria dell Informazione Corso di Laurea Magistrale in Ingegneria Informatica 0 e O09 MILANO Oo le 900000000990 Analisi e realizzazione di un applicazione di videocitofonia per Android Relatore Prof Luciano BARESI Tesi di Laurea Magistrale di Angelo LUPO Matricola 769939 Michele MORANDINI Matricola 766268 Anno Accademico 2012 2013 Sommario SOMMARIO Sommario hair alii ae ea 3 Elenco delle RIEUrE scri a 6 Introduzione ala 10 1 1 Terminologia adottata all interno della tesi 11 1 2 Dispositivi adottati in fase di testing e sviluppo 12 2 Statodell artee analisi del problema iii 14 Zi Ladomoticani ali 14 22 LadoMoatica Bueno 18 2 2 1 MYHOME sisine naa a E ea A lesa 19 2 2 2 Il problema 21 3 Analisi delle tecnologie utilizzate iii 23 3 1 VOIP Voice over IP tele aaa ile 23 3 2 SIP Session Initiation Protocol 24 3 2 1 COMME ana ia RA 25 3 2 2 Architetture e Protocolli 26 3 2 3 I Messaggi linda aida lai lieto 27 3 2 4 Esempio di session flow SIP 31 3 2 5 Esempio di messaggio SIP header bodV 32 3 2 6 Librerie Stack SIP i 33 397 ANG ite 42 3 3 1 Perch Androidu annan a a E R ER 42 3 3 2 Distribuzione ANAIOId rire 44 3 3 3 SDK Primi passi con Android 45 394 NDKi corect iioa E AR E EA E ARA 47 3 3 5 J
52. Phone sviluppato da Microsoft al 2 0 Decidiamo che a causa della scarsa distribuzione possiamo escludere Windows Phone e BlackBerry e concentrarci su un confronto tra Android e iOS Analizziamo ora un aspetto secondario della scelta di Google il Java un linguaggio ormai comunissimo che troviamo ovunque da Android alla centralina della macchina piuttosto che al proiettore digitale del cinema o al televisore di ultima generazione capiamo quindi come non sia possibile avere una sola interfaccia che possa andar bene per tutti ed proprio per questo motivo che Google ha deciso di rilasciare delle linee guida che tutti gli sviluppatori devono seguire quando creano le proprie applicazioni Java non l unico modo di sviluppare su Android Anzi negli ultimi tempi ne sono nati parecchi che in realt altro non sono se non delle interfacce di programmazione che rendono pi semplice lo sviluppo Quella pi famosa in assoluto Basic4Android che permette di scrivere applicativi utilizzando una sintassi basic like piuttosto che PhoneGap che ci apre le porte dell HTMLS5 Fortunatamente questi framework sono ormai compatibili con tutte le piattaforme e stanno prendendo sempre pi piede proprio per la possibilit di non dover riscrivere il codice e poterlo invece solo ricompilare per la piattaforma desiderata Abbiamo analizzato quindi quali sono le differenze nello sviluppo dal punto di vista tecnico Consideriamo ora brevemente
53. ROGETTAZIONE 5 2 1 Casi d uso Per capire al meglio come sviluppare e comprendere i requisiti del progetto sono stati presi come riferimento alcuni casi d uso Il caso d uso in informatica una tecnica usata nei processi di ingegneria del software per effettuare in maniera esaustiva e non ambigua la raccolta dei requisiti al fine di produrre software di qualit Vengono utilizzati per l individuazione e la registrazione dei requisiti funzionali scrivendo come un sistema possa essere utilizzato per consentire agli utenti i raggiungere i loro obiettivi Attori principali Nome Utente Interno Descrizione solitamente il proprietario del device o comunque uno degli abitanti dell abitazione colui che utilizza l applicazione Aspettative Obiettivi e Ricevere chiamate dall esterno dell abitazione e Effettuare sessioni di videosorveglianza Nome Utente Esterno Descrizione colui che effettua la chiamata dall esterno dell abitazione attraverso il videocitofono Aspettative Obiettivi e Effettuare chiamate dall esterno dell abitazione Caso d uso UC1 Chiamata in arrivo Livello Obiettivo utente Attore primario Utente Interno Attore secondario Utente Esterno Parti interessate e interessi 94 Scenario OpenWebNet e Utente Interno riceve una chiamata e comunica con l interlocutore e Utente Esterno vuole effettuare una chiamata verso il posto interno per comunicare Pre condizioni e Il web server
54. Source siano nello stesso posto Un nuovo contesto viene creato con g_main_context_new e in seguito viene posto come predefinito per il thread grazie al g_main_context_push_thread_defaut 119 Scenario OpenWebNet data gt pipeline gst parse launch ucdpsre port 20000 caps application x rtp media video clock rate 90000 encoding name H264 rtph264depay ffdec h264 autovideosink amp error if error ghar message g strdup printi VImpoossioile Costruire la pipeline s error gt message g clesm error terror set Wi iessase message aara g free message return NULL Figura 80 snippet app_funtion pipeline Dopo crea la pipeline che analizzeremo in seguito attraverso il gst parse launch GST DEBUG Entering main loop CustomData sp da data gt main loop g main loop new data gt context FA check initialization complete data g main loop run data gt main loop GST_DzzUe Vassiced aaa log p g main loop unref data gt main loop data gt main loop NULL Figura 81 snippet app_function main loop Infine viene creato il main loop e approntato per essere eseguito Prima di entrare nel main loop viene chiamato il check_inizialization_complete Questo metodo controlla se tutte le condizioni necessarie per rendere il codice nativo ready vengono rispettate 120 Scenario OpenWebNet II metodo gst_native_fin
55. a il gateway e la subnetmask Fatto questo passaggio saremmo in grado di raggiungere il web server attraverso la rete di cui fa parte Se gi presente una configurazione possibile scaricarla per modificarla in seguito e ricaricarla altrimenti si aggiungono i vari dispositivi tra quelli a scelta nel menu ad albero sul lato sinistro impostando i vari valori in base ai dispositivi corrispondenti Per il prototipo nello scenario2 abbiamo a disposizione una telecamera per cui ne abbiamo aggiunta una come si vede anche in figura dandole come indirizzo 0 sul montante privato e valori predefiniti per quanto riguarda luminosit ecc Finita l impostazione dei dispositivi in questo scenario semplificato c solo la telecamera ma in un sistema reale possono essercene diversi si prosegue con il caricamento delle impostazioni sul dispositivo Quando le impostazioni sono caricate il web server sa riconoscere quei dispositivi che manualmente sono stati aggiunti e quindi accedendo alla pagina web del F454 possibile monitorare tutti questi dispositivi Inoltre il web server raggiungibile dalle varie applicazioni e dispositivi all indirizzo a 107 Scenario OpenWebNet cui stato assegnato nel primo passaggio della configurazione Quando una nuova funzionalit viene aggiunta da Bticino il software di gestione viene utilizzato anche per installare il nuovo firmware e permettere quindi l utilizzo di tali funzionalit ed in
56. a sessione STUN Per il protocollo TURN sono fornite le funzioni per scoprire il server corrispondente per l autenticazione usando il metodo long term di STUN la gestione delle allocazione compreso l aggiornamento la creazione dei permessi e la ricezione dei dati Vi sono due moduli differenti riguardanti TURN il client session il quale un oggetto indipendente dal trasporto contiene il core logic per la gestione della sessione TURN credenziali 159 Studi Aggiuntivi allocazione server permessi e il client transport che fornisce un wrapper per il client session per gestire tutte quelle operazioni utili al protocollo TURN 6 3 2 Possibile Progettazione Per realizzare il sistema completo di chiamata verso un dispositivo mobile anche quando questo non connesso alla rete LAN occorre pensare progettare e realizzare un sistema pi articolato e ricco di componenti Vengono infatti introdotte problematiche diverse che riguardano la connessione e il raggiungimento del dispositivo che possibile aggirare solo grazie ad alcune tecniche e infrastrutture particolari Il problema iniziale la gestione dell inoltro della chiamata Il web server aggiornato e con la funzione di chiamata diretta attivata deve sapere se il dispositivo collegato alla rete domestica e quindi poterlo contattare direttamente tramite indirizzo IP e numero di porta con un comando OpenWebNet oppure se questo scollegato poterlo raggiunge
57. a cavo o satellitare intrattenimento Automazione dell ufficio Rispetto all automazione domestica quella dell ufficio comprende funzioni caratterizzate da un pi elevato contenuto informativo legato alla creazione e alla trasmissione di testi alla gestione di moduli e di archivi alla copiatura e stampa di documenti alla elaborazione e presentazione grafica di dati e documenti in genere ecc ottenuta per mezzo di elaboratori e relativi programmi mezzi di comunicazione generalmente interconnessi attraverso una rete locale che con un adeguato software realizza di fatto l integrazione e l ottimizzazione delle diverse attivit 2 2 LA DOMOTICA BTICINO BTicino S p A un azienda metalmeccanica italiana che opera nel settore delle apparecchiature elettriche in bassa tensione destinate agli spazi abitativi di lavoro e di produzione distinte in soluzioni per la distribuzione dell energia per la comunicazione citofonia videocitofonia dati e per il controllo di luce 18 Stato dell arte e analisi del problema audio clima e sicurezza Dal 1989 stata acquisita dal gruppo industriale Legrand L azienda fa parte del gruppo internazionale Legrand e opera sia sul mercato italiano che su quello mondiale con oltre 60 sedi all estero I prodotti principali nel campo del materiale elettrico sono Interruttori tradizionali e domotici Placche Salvavita Citofoni e Videocitofoni La sede principale a Varese dove lav
58. a dall utente tramite opportune interfacce utente come per esempio pulsanti telecomandi device touchscreen tastiere riconoscimento vocale che realizzano il contatto invio di comandi e ricezione informazioni con il sistema intelligente di controllo basato su un unit computerizzata centrale oppure su un sistema a intelligenza 15 Stato dell arte e analisi del problema distribuita diversi componenti del sistema sono connessi tra di loro e con il sistema di controllo tramite vari tipi di interconnessione ad esempio rete locale onde convogliate onde radio bus dedicato ecc Il sistema di controllo centralizzato oppure l insieme delle periferiche in un sistema ad intelligenza distribuita provvede a svolgere i comandi impartiti dall utente ad esempio accensione luce cucina oppure apertura tapparella sala a monitorare continuamente i parametri ambientali come allagamento oppure presenza di gas a gestire in maniera autonoma alcune regolazioni ad esempio temperatura e a generare eventuali segnalazioni all utente o ai servizi di teleassistenza sistemi di automazione sono di solito predisposti affinch ogniqualvolta venga azionato un comando all utente ne giunga comunicazione attraverso un segnale visivo di avviso conferma dell operazione effettuata ad esempio LED colorati negli interruttori cambiamenti nella grafica del touch screen oppure nei casi di sistemi per disabili con altri tipi di segnalazione ad esempio so
59. a di video sorveglianza se infatti si prova a tornare indietro attraverso gli appositi tasti verr mostrato un avviso che vi invita ad attendere Figura 117 avviso di attesa 140 Scenario OpenWebNet Al termine dei 60 secondi un popup vi avviser che la sessione terminata e vi consentir di tornare alla schermata principale semplicemente cliccando sul tasto Chiudi Figura 118 popup di fine sessione Chiamata in arrivo La sezione pi importante da analizzare quella che andiamo a osservare adesso la schermata di Chiamata in arrivo bu Chiamata in Arrivo Figura 119 schermata Chiamata in Arrivo 141 Scenario OpenWebNet Essa raggiungibile solo cliccando sulla notifica di chiamata in arrivo e non direttamente dall applicazione Come possibile vedere dalla Figura 119 essa composta di 3 parti principali e Funzioni supplementari in questa sezione sono presenti dei tasti che consento di eseguire azioni aggiuntive come per esempio aprire cancelli e portoni o accendere le luci del videocitofono e Fruizione video la parte della schermata adibita alla riproduzione del video e Tasti di chiamata contiene i tasti dedicati alle funzioni di chiamate Come nei pi classici telefoni abbiamo un pulsante verde che consente di accettare la chiamata e di iniziare lo scambio audio e un pulsante rosso che permette di rifiutare la chiamata e tornare alle operazioni che si stavano s
60. a i bottoni della UI Visto che Android non fornisce un sistema di windowing un tipo di interfaccia grafica che implementa il paradigma WIMP il video sink di GStreamer non pu creare una finestra pop up come avverrebbe in una piattaforma Desktop tradizionale Per ovviare a questo inconveniente aggiungeremo al layout principale un widget SurfaceView SurfaceView sv SurfaceView this findViewById R id surface video SurfaceHolder sh sv getHolder sh addCallback this Figura 75 inizializzazione widget 116 Scenario OpenWebNet GStreamerSurfaceView la SurfaceView personalizzata Di default SurfaceView non ha particolari dimensioni perci si espande su tutta la superficie disponibile Anche se questo a volte pu essere conveniente non permette un adeguato livello di controllo In particolare quando la superficie non ha la stessa aspect ratio del media il sink aggiunger dei bordi neri che un lavoro superfluo oltre che uno spreco di risorse La sottoclasse della SurfaceView che abbiamo creato sovrascrive esegue una override il metodo onMeasure in modo da riportare le reali dimensioni del media cosicch che la surface possa adattarsi ad ogni superficie rispettando l aspect ratio del media Il codice C IL MeToDo JNI_ONLOAD Il metodo JNI_OnLoad eseguito ogni volta che la JVM Java Virtual Machine carica una libreria jint JNI OnLoad JavaVM vm void reserved JINIEnv env NULL
61. a tutto connesso alla rete domestica Come ultimo passaggio non resta che connettere il video citofono e il web server alla linea elettrica per mezzo dell alimentatore e dei cavi di alimentazione Software di gestione di Bticino e impostazioni di base Per impostare correttamente il web server F454 occorre utilizzare il software di gestione dato in dotazione da Bticino TiF454 versione 1 0 106 Scenario OpenWebNet Per caricare scaricare un impostazione sul dal web server occorre che il dispositivo sia gi collegato alla rete LAN deve avere per gi un impostazione caricata per dotarlo di indirizzo IP di solito c la configurazione standard altrimenti si pu collegare direttamente al computer sempre con un cavo RJ45 a cui collegato anche il computer configuratore oppure collegarsi direttamente con un connettore USB il web server ha una porta mini USB F Setema supervisone pescrzione Indirzzo Lumnost Contrasto Cobre Quak 1Lucescaa Seratura top and Ge cucine Telecamera 1 0On Montante privato so so so so No No Acqua calda domestica Rscaltamento Raffreddamento Notfica va emal Portale MyHome Invostazoni T Notfica eventi austar Info ed emori DOE a Anii Figura 60 interfaccia grafica programma di gestione TiF454 Per prima cosa occorre fornire al web server un indirizzo IP se si vuole cambiare quello dato di default cambiando eventualmente la rete di appartenenz
62. alize nativeFinalize in Java static void gst native finalize JNIEnv env jobject thiz CusitomDa ta idoli AGE IA CUSTOMEDATAR Cv custom data field id if data return GST_DIEZUG Quiticimieo mesa loop o g g main loop quit data gt main loop GST DEBUG Neiting tor thread to finish as Pesci Jein gst ago threacy NULL p CSmMEDERUCH Peerna oea RE oO cea ei aa gt app env gt DeleteGlobalRef env data gt app GST DEBUG Freeing CustomData at p data g free data U SEA CU SOMA TAR vci SO NU GST DI BUG Done finalizing Figura 82 snippet gst_native_finalize Questo metodo chiamato in Java nella OnDestroy quando l attivit deve essere distrutta La native Finalize permette di istruire il main loop GLib di arrestarsi con g_main_loop_quit Questo metodo restituisce immediatamente e il loop main terminer appena possibile Il file android mk Il file Android mk viene scritto per descrivere le sorgenti al build system pi specificatamente e Il file in realt una piccola parte di un Makefile GNU che pu essere parsato una o pi volte dal build system e La sintassi del file progettata per permettere di raggruppare le sorgenti in moduli o Librerie condivise possono essere installate copiate nei pacchetti dell applicazione o Librerie statiche usate per generare librerie condivise 121 Scen
63. amata e si disattiva dopo un tempo prefissato Per ovvi motivi di privacy l immagine visibile solamente nell unit interna dell interno chiamato Web Server F454 un web server audio video utilizzato per il controllo sia locale che remoto delle applicazioni MY HOME tramite pagine web dedicate 83 Scenario OpenWebNet Il Web Server pu essere utilizzato anche come gateway per la gestione dell impianto tramite dispositivi quali PC e smartphone e per la configurazione virtuale utilizzando il software dedicato vedi Impostazione del web server F454 TUTTTTTERTEBERTTBERBEBEB TE BI VITTI EIA CH I eee n Sigupresrazssszasararisarenassstigago Figura 40 web server F454 Questo dispositivo consente di operare su un impianto MY HOME installato in casa o nell ufficio La connessione pu essere effettuata tramite modem e o rete dati cablata o wireless L utente utilizzando un Personal computer uno smartphone o un tablet con browser pu collegarsi localmente o remotamente con il Web Server tramite pagine Web personalizzabili ed effettuare le seguenti operazioni e Supervisione e comando degli impianti Automazione Gestione energia e Termoregolazione e Supervisione dell impianto Antifurto mediante ricezione di messaggi di stato impianto in allarme o nessuna segnalazione di allarme possibile inoltre ricevere un messaggio e mail con immagini allegate alla propria casella di posta quando v
64. are le varie funzionalit L invite session state fornisce particolari callback per notificare all applicazione il progress della sessione e si avvale di particolari descriptors per indicare i vari stati PJSIP_INV_STATE_CALLING PJSIP_INV_STATE_INCOMING per esempio Nella figura seguente si pu vedere lo state diagram dell Invite Session CALLING Di 300 699 errors Rx ACK BYE CONNECTING conFIRMED DISCONNECTED Tx 300 699 errors TERMINATED Figura 39 State diagram dell Invite Session Per le chiamate in uscite occorre creare un dialog UAC tramite la funzione pjisip_dlg_create_uac e successivamente l invite sessione per il suddetto dialog pjsip_inv_create_uac Analogamente sono presenti le funzioni per le richieste in arrivo e in quel caso occorre prima verificare se la richiesta pu essere o meno accettata tramite pjsip_inv_verify_request la quale verifica i parametri supported require e il body PJSIP pu gestire tramite invite session dialog i messaggi di INVITE BYE ACK CANCEL UPDATE PRACK anche se pu comunque avvalersi delle API del base dialog per creare ed inviare request e response per messaggi diversi dai sopracitati Estendendo il supporto ad altri tipi di messaggi importante ricordarsi di assegnare una giusta priorti tramite PJSIP_MOD_PRIORITY_APPLICATION La struttura pjsip_inv_callback viene chiamata quando qualcosa nella sessione cambiato per esempio lo stato a
65. ario OpenWebNet LOCAL PATH sa call my dir include CLEAR VARS OCAL_MODULE JOCAL SHARED ScenarioDue JOCYD SIRC ETES Sesnarm oDua e IBRARIES gstreamer android OCAL_LDLIBS ce ilo og lancdirotel include BUILD SHARED LIBRARY include CLEAR VARS OCAL_MODULE JOCAL SHARED include 1 Incoming OCAL SRC PITS se INCOMING e E TBRARIHS gstreamer android OCAL LDLIBS llog landroid BUILD SHARED LIBRARY ifndef GSTREAMER SDK ROOT ifndef GSTREAMER_SDK_ROOT_ ANDROID endif GSTREAMER SDK ROOT endif GSTREAMER_NDK BUILD PATH android ndk build GSTREAMER_SDK_ROOT_ ANDROID GSTREAMER_SDK_ROOT share gst include GSTREAMER_NDK_BUILD_PATH plugins mk GSTREAMER PLUGINS GSTREAMER PLUGINS CODECS RESTRICTED GSTREAMER_PLUGINS_CORE GSTREAMER PLUGINS 1 GSTREAMER PLUGINS SYS EFFECTS GSTREAMER_ PLUGINS NET GSTREAMER PLUGINS CODECS GSTREAMER EXTRA_DEPS gstreamer video 0 10 include GSTREAMER ND 1 gstreamer interfaces 0 10 _ BUILD PATH gstreamer mk Figura 83 codice android mk II makefile osservabile sopra consente di aggiungere ad Android il supporto a GStreamer 5 3 5 La pipeline di GStreamer L idea alla
66. arir la schermata principale vedi Figura 107 136 Scenario OpenWebNet A questo punto l applicazione mostrer i primi due avvisi che ci comunicano che l installazione avvenuta con successo e tutte le funzionalit sono attive IncomingService Avviato Connessione Avvenuta Figura 108 avvisi all avvio Il primo avviso a sinistra nella Figura 108 mostra la scritta IncomingService Avviato che ci indica che il servizio in background attivo mentre il secondo a destra ci dice che la connessione con il web server avvenuta con successo Il Men Grazie al men dell applicazione Figura 109 possibile accedere a tutte le funzionalit messe a disposizione da essa Analizziamole nel dettaglio Video Sorveglianza bhi90 Videocitofono Informazioni Video Sorveglianza 7 Chiudi ZN N Informazioni Chiudi MY HOME bticmo Figura 109 il men e Esci consente di uscire dall applicazione in maniera sicura e senza causare possibili malfunzionamenti e Video Sorveglianza permette all utente di accedere alla sezione dell app adibita al servizio di video sorveglianza 137 Scenario OpenWebNet Informazioni permette all utente di raggiungere la parte dell applicazione che consente di reperire tutte le informazioni riguardanti l applicazione Chiudi consente di uscire dall applicazione ma allo stesso tempo interrompe il servizio in backgro
67. ato con i tecnici di Bticino l utilizzo di un nuovi frame Open dei comandi che potessero riassumere al loro interno tutte le informazioni necessarie per richiedere il video al server e in seguito di permettere al server stesso di inviarlo al device corretto Il frame pi importante che prendiamo in esame il seguente chi cosa IP1 IP2 IP3 IP4 PORTA dove 110 Scenario OpenWebNet Analizzandolo nel dettaglio tag per tag ci accorgiamo che grazie a questo frame forniamo al server tutte le informazioni necessarie questo permette quindi di fare tutto quello che ci serve in un unico comando Al suo interno infatti abbiamo Il tag CHI Indica la funzione dell impianto domotico alla quale indirizzato il comando OPEN nel nostro caso il video citofono quindi questo tag avr valore o 6 perla videochiamata o 7 per la videosorveglianza Il tag COSA Individua l azione da compiere nel nostro caso l invio del video mandato dal video citofono abbiamo due possibili alternative o Richiesta video MJpeg in questo caso il tag COSA sar al valore 4 per la videochiamata e 31 per la videosorveglianza o Richiesta video H 264 invece nel caso si voglia questo tipo di video il tag COSA sar settato al valore 13 per la videochiamata e 32 per la videosorveglianza Il tag DOVE Individua l insieme degli oggetti interessati al messaggio in questo caso la telecamera del citofono quindi sar 4000 per la videosorveglianza mentre
68. azione dei vari dispositivi e utenti coinvolti nel sistema Per esempio l applicazione sul dispositivo potrebbe essere configurata come un normale client VoIP inserendo delle credenziali che appartengono al singolo utente e cos facendo si comunica al Proxy Server la propria posizione nella rete Internet Analogamente il web server quando volesse comunicare con un account utente registrato nella propria rubrica che potrebbe risiedere sia al suo interno oppure sul portale MyHome non dovrebbe fare altro che collegarsi a tale SIP server utilizzando come indirizzo quello dell utente Compito del Server in seguito alla ricezione della richiesta di comunicazione associare tale indirizzo utente all indirizzo IP pubblico ottenuto dal dispositivo connettendosi alla rete Internet LOCATION 63 SERVICE SIP PROXY REGISTRAR SRV SIP STREAM RTP F454 FIREWALL Figura 143 Design Schema del Sistema Grazie al Proxy Server quindi possibile instradare correttamente i messaggi SIP Pu per vedersi necessaria l introduzione di un altro sistema lo STUN server In diverse reti infatti pu essere presente un NAT visto precedentemente indi per cui non pu essere passato direttamente il proprio indirizzo IP privato Tramite i servizi messi a disposizione dal server STUN possibile ricavare il proprio indirizzo IP pubblico e la morfologia dell eventuale 161 Studi Aggiuntivi maschera NAT che nasconde il disposi
69. azioni di contatto Di seguito alcuni parametri usati nel protocollo SDP 32 Analisi delle tecnologie utilizzate v protocol version o lt username gt lt session id gt lt version gt lt network type gt lt address type gt lt address gt s lt session name gt i lt session description gt u lt URI gt pointer to additional information about the conference e lt email address gt contact information for the person responsible for the conference c lt network type gt lt address type gt lt connection address gt t lt start time gt lt stop time gt a lt attribute gt lt value gt primary means for extending SDP m lt media gt lt port gt lt transport gt lt fmt list gt Un esempio completo INVITE sip watson boston bell tel com SIP 2 0 Via SIP 2 0 UDP kton bell tel com From A Bell lt sip a g bell bell tel com gt To T Watson lt sip watson bell tel com gt Call rD S2964202960ktonbelil ta1 con CSeq 1 INVITE il numero numera le transizioni Subject Mr Watson come here m Type application sdp Contents Content Length lt lunghezza messaggio gt v 0 versione o bell 53655765 2353687637 IN IP4 128 3 4 5 origine s Mr Watson come here sessione c IN IP4 kton bell tel com con address m audio 3456 RTP AVP 0 3 4 5 PCM GSM G 723 DVI4 media 3 2 6 Librerie Stack SIP Allo stato attuale del lavoro esistono e vengono utilizzate per vari p
70. cazione determina se gestirla tramite un ServerTransaction quando una richiesta arriva in un dialog gi esistente lo stack associa automaticamente la richiesta al ServerTransaction Quando arriva una risposta lo stack la associa possibilmente ad un ClientTransaction create precedentemente i messaggi sono passati al SipProvider per generare una nuova Transaction Un Dialog un associazione peer to peer tra endpoint Slp in cui si interpretano messaggi SIP e non sono mai creati dall applicazione ma stabiliti creando Transaction e gestiti dallo stack Dialog sono usati per mantenere dati necessari per messaggi futuri di ritrasmissione Route sets numeri di sequenza URI ecc e hanno una macchina a stati early confirmed completed e terminated 41 Analisi delle tecnologie utilizzate 3 3 ANDROID Android un sistema operativo basato su Linux progettato principalmente per device touchscreen come smartphone e tablet Il primo smartphone Android powered viene venduto nell Ottobre 2008 Android open source e Google rilascia il codice tramite la Licenza Apache Le applicazioni sono sviluppate in linguaggio Java utilizzando l Android Software Development Kit SDK Questo include un considerevole numero di strumenti di sviluppo incluso un debugger librerie software un emulatore portatile basato su QEMU documentazione esempi e tutorials L Integrated Development Environment IDE ufficialmente supportato Eclipse che u
71. ccanismo di callback che hanno origine nel tran sport manager che effettua il parsing del messaggio transitano dell endpoint e poi vengono propagate da esso verso le altri parti del sistema Tale librerie si appoggia sull utilizzo di un modello framework dei modui ed una gestione degli header 64 Scenario SIP Il framework dei moduli il principale mezzo per distribuire i messaggi SIP tra le componenti software in una applicazione PJSIP e nelle librerie stesse Esso basato su un semplice meccanismo per i messaggi in ingresso l endpoint distribuisce il messaggio a tutti i moduli a partire dal modulo con la priorit pi alta finch ogni modulo non finisce di processare il messaggio Per i messaggi in uscita endpoint distribuisce i messaggi ai moduli sempre seguendo l ordine per priorit prima che questi vengano trasmessi sull interfaccia di rete In questo modo i moduli possono ognuno aggiungere delle modifiche al messaggio possibile inoltre la creazione di nuovi moduli per l implementazione di nuove funzionalit i quali occuperanno una posizione all interno della struttura a livelli in base al valore di priorit assegnatoli Di seguito viene proposta la struttura base di un nuovo modulo struct pjsip_module PJ DECL LIST MEMBER struct pj ip module For internal list mgmt pj_str t name Module name ime ato Mocule ID set by endor int priority Priority pi status load sip endpoint
72. ce se il processo ha avuto successo un descrittore SDP Vi sono poi altre funzioni utili per il parsing SDP come per esempio la validazione di tale parte del messaggio sdp_validate e il confronto tra due SDP sdp_session_cmp pj status _t pjmedia_sdp_parse pj pool t pool char buf pj size t len pjmedia_sdp_session p_sdp Parse SDP message Parameters pool The pool to allocate SDP session description buf The message buffer len The length of the message p_sdp Pointer to receive the SDP session descriptor Returns PJ_SUCCESS if message was successfully parsed into SDP session descriptor Figura 32 Parser SDP INVIO E RICEZIONE Una struttura base di tutto lo stack SIP il pjsip_rx_data e poi rispettivamente il pisip_tx_data per l invio la quale viene passata tra i vari componenti di PJsip al posto di un semplice messaggio rappresentato da una stringa Il pisip_tx_data viene utilizzato appunto quando si vuole inviare un messaggio e una volta creato viene passato al relativo data buffer Per inviare e ricevere i messaggi sulla rete viene utilizzato il livello di trasporto il diagramma delle classi mostrato in figura di cui attore principale il Transport Manager pjsip_tpmgr Esso si occupa del tempo di vita del trasporto tramite un contatore e un idle timer gestisce le factories del tran 73 Scenario SIP sport riceve i pacchetti parsa i pacchetti e li distribuisce all endpoint ins
73. ce del metodo connectionToF454 pi precisamente esegue l impostazione dei parametri di connessione indirizzo IP numero della porta e modalit di connessione e l esecuzione della connessione al gateway attraverso un task asincrono messo a disposizione da Android del quale possibile vederne una porzione di codice sotto Figura 65 109 Scenario OpenWebNet Questa classe consente di eseguire operazioni in background e di pubblicare i risultati sul thread dell interfaccia utente senza dover manipolare i thread e o gli handlers public class ConnectionAsynk extends AsyncTask lt Activity Integer BTCommErr gt protected BTCommErr doInBackground Activity actpar Variables logger info SONO NEL ASYNKTASK return Variables myOpenChan2 connect Variables connPar Figura 65 ConnectionAsynk Lo snippet sotto invece mostra parte del codice contenuto nel metodo disconnect_click in particolare la chiamata al metodo disconnect che esegue immediatamente la disconnessione chiudendo il canale di comunicazione aperto durante la connessione __ myOpenChan disconnect Figura 66 chiusura del canale 5 3 3 Scambio messaggi con il web server Una delle particolarit di questo scenario sta proprio nello scambio dei messaggi tra il device e il web server F454 Questa infatti avviene attraverso il protocollo Open Web Net vedi il capitolo Open Web Net Per questo motivo abbiamo concord
74. che stateful Seguendo le linee guida dello standard RFC 3261 il core di MjSip strutturato su tre livelli base trasporto transaction e dialog mentre pi in alto stato aggiunto il livello per il controllo delle chiamate Applications Sessions Figura 5 nome da decidere Il livello pi basso transport fornisce il trasporto dei messaggi SIP attraverso l oggetto SipProvider responsabile di inviare e ricevere i messaggi ed ogni elemento SIP lo usano se vogliono accedere ai servizi di trasporto Il livello Transaction invia e ricevere i messaggi attraverso il livello di trasporto e serve per gestire le ritrasmissioni i match tra risposte e richieste e i timeouts Ci sono due tipi di transaction two way e three way Il livello Dialog unisce diverse 37 Analisi delle tecnologie utilizzate transazione in una stessa sessione Facilita la sequenza di messaggi tra gli User Agents Il livello pi alto il controllo chiamata Call Control implementa una completa chiamata SIP offre una semplice interfaccia per gestire le chiamate in entrata e in uscita Una chiamata consiste in pi di un dialog Le API MjSip per i quattro layer sono implementate rispettivamente da e Classe Call and class ExtendedCall e Classe InviteDialog e Classi ClientTransaction ServerTransaction InviteClientTransaction e InviteServerTransaction e Classe SipProvider Inoltre MjSip fornisce altri strumenti per gestire i messaggi SIP la sin
75. con parametri 147 creazione MINBUTersize a coca 148 inizio registrazione mei iii a ari 148 inizializzazione elementi di supporto 148 creazione DatagramSocket 148 invio pacchetti teisia lait aaa 149 creazione elemento AudioTrack i 149 ricezione pacchetti i r E r R 150 gestione audio tramite GStreamer iii 151 porzione di ricezione della pipeline 151 porzione di invio della pipeline ii 152 esempio generale server SIP 155 funzionamento STUN SErver iii 156 Comunicazione Google Cloud Messaging 158 autenticazione PjSIP ii 159 Design Schema del Sistema iii 161 Diagramma Attivit Controllo IP Chiamata 162 Introduzione 1 INTRODUZIONE In questo elaborato andremo ad analizzare e progettare un sistema che permetta di interfacciarsi con un impianto domotico Bticino di videocitofonia attraverso un dispositivo mobile come pu essere uno smartphone o un tablet Immaginiamo di possedere un classico citofono domestico o un videocitofono che ci permette anche di osservare il nostro interlocutore In quest ultimo caso il funzionamento semplice una persona effettua una chiamata dall esterno della nostra abitazione verso l interno e da dentro l appartamento l u
76. deo bidirezionale In questo caso specifico l utente interno ad un certo punto decide di interrompere la chiamata ma avendo come gi spiegato nel capitolo SIP entrambi gli user agent la possibilit di essere sia client che server l azione di chiusura poteva essere iniziata dall altro anche se di solito nel posto interno che vi una vera e propria cornetta per la terminazione della chiamata inviando il messaggio di BYE che inizia il procedimento di chiusura della comunicazione Il posto esterno invia cos il messaggio di TRYING 100 e infine un ACK 200 per confermare la conclusione del dialogo Come si pu notare dallo schema delle transazioni necessario inviare un messaggio TRYING 100 ad ogni messaggio BYE o INVITE questo non una specifica SIP ma una decisione personale di BTicino Tutte le sessioni SIP sono point to point anche in una situazione realistica di un impianto BTicino l l unica differenza potrebbe essere la negoziazione della comunicazione e tutto sviluppato per oscurare l indirizzo IP e tenere compatibili gli indirizzamenti sia su bus che via ethernet nel nostro caso invece non avendo un sistema di DataBase da cui ottenere eventualmente il matching tra indirizzi IP e posizione nella rete si andranno ad utilizzare questi ultimi direttamente 58 Scenario SIP A livello di messaggio il contenuto definito da SDP pu essere vuoto o U 2 Ml 55 contenere diversi parametri Principalmente ve
77. deve essere in funzione connesso correttamente alla rete domestica e videocitofono deve essere funzionante e connesso alla rete domestica e device deve essere acceso e connesso correttamente alla rete domestica e applicazione deve essere installata e Il servizio di ricezione degli eventi dell applicazione deve essere in esecuzione e non essere stato interrotto dall utente Garanzie di successo i due utenti comunicano tra loro e lo scambio dei flussi video e o audio avviene correttamente senza grossi problemi Scenario principale di successo e l utente che si trova all esterno dell abitazione effettua una chiamata al posto interno attraverso il videocitofono e Sullo smartphone viene visualizzata una notifica che avvisa l utente principale che stata effettuata una chiamata verso la sua abitazione e L utente clicca sulla notifica e Sullo smartphone viene lanciata l applicazione che visualizza la schermata di chiamata in arrivo e L utente guarda il video proveniente dal videocitofono e attraverso l apposito tasto accetta la chiamata e Avviene lo scambio audio video e Lachiamata termina Possibili scenari negativi e L utente che utilizza l applicazione non clicca sulla notifica e L utente che utilizza l applicazione decide di non accettare Scenario OpenWebNet Caso d uso UC2 Videosorveglianza Livello Obiettivo utente Attore primario Utilizzatore dell applicazione Parti interes
78. di validare le richieste autenticare a loro volta gli utenti risolvere gli indirizzi controllare e gestire eventuali loop ed altre azioni relative all instradamento Un proxy server progettato per essere il pi trasparente possibile agli user agents Le specifiche SIP inoltre definiscono due tipi di Proxy SIP stateful e stateless Un proxy stateless un semplice forwarder di messaggi quando riceve una richiesta la processa senza salvare il contesto della transazione facendo in modo che una volta che il messaggio stato inviato il proxy non tiene tracchia della gestione di quel messaggio Questo tipo di procedimento serve per migliorare le performance e la scabilit ma ovviamente a qualche conseguenza un proxy stateless non pu associare risposte con richieste inoltrate perch appunto non ha alcuna informazione a riguardo e l applicazione proxy non pu sapere se la transazione ha avuto successo o no Non pu inoltre associare ritrasmissioni di richieste e risposte Un proxy stateful invece processa le transazioni piuttosto che singoli messaggi le quali possono essere di tipo server e client Questo tipo di server consapevole dello stato delle transizioni e della cronologia dei messaggi pu quindi per esempio identificare una ritrasmissione e inoltrare il messaggio Oltre ad identificare tali ritrasmissioni pu generarle in caso di perdita dei messaggi Dovendo gestire la cronologia dei messaggi le performance sono
79. ding the response Send response with the specified transaction pjsip_tsx send msg tsx tdata return PJYJ TRUE Figura 35 Invio Stateful di una response complesso e In maniera pi semplice vedi Figura 36 Statice pj bcol on rz request pieds i cata rdata pJ Status t starus Respond to the request statefully status pjsip_endpt_respond endpt NULL rdata 200 NULG OR NUDE NOs NEG return PJYJ TRUE Figura 36 Invio Stateful di una response semplice Per quanto riguarda inviare una richiesta invece possibile farlo manualmente oppure con la funzione pjsip_endpt_send_request 77 Scenario SIP extern pjsip module app module void my send recwest l pJ Stat s status pJi tz data data DE pirr on deion ES Create the request status pjsip_endpt create request endpt amp tdata You may modify the message before sending it Create transaction status pjsip_endpt create uac tsx endpt amp app module tdata amp tsx Send the request status pjsip_tsx send msg tsx tdata or NULL Statie vole on tex statel pisip trongaction rs PJeip event event pJ essert event gt type IDUSID EVENT TSX STATH 7 PJ LOG 9 Cepo Transaction e53 state Changed To 8 tsx gt obj name pjsip tsx state str tsx gt state Figura 37 invio Statefull di una reque
80. direttamente in formato IP1 IP2 IP3 IP4 e non nel formato P1 1P2 1P3 IP4 in modo da poter essere immediatamente inserito nel frame Invece i tag CHI COSA DOVE e PORTA come detto in precedenza sono statici e quindi assegniamo loro i valori prestabiliti osservabili anche nel codice Differenze tra i due frame utilizzati A questo punto possiamo analizzare nel complesso i due frame visti precedentemente per mostrarne le differenze nel loro utilizzo Il primo frame quello utilizzato per la videosorveglianza 6 32 IP1 IP2 IP3 IP4 20000 4000 Come visto nell analisi nel dettaglio delle parti grazie a questo comando sar possibile richiedere al web server l invio all indirizzo IP specificato del flusso 112 Scenario OpenWebNet video proveniente dalla videocamera posizionata sul videocitofono Particolarit di questo comando quella di poter accendere la videocamera Il secondo quello utilizzato invece per la gestione della chiamata nel nostro caso abbiamo solo la trasmissione del video 7 13 IP1 IP2 IP3 IP4 20000 Questo frame invece per quanto simile al precedente non consente di poter accendere la videocamera quindi per poter ricevere il video necessario che la videocamera del videocitofono sia gi attivata attivazione che solitamente avviene con l avvio della chiamata dall esterno 5 3 4 Integrazione di GStreamer in Android In questo capitolo tratteremo dell utilizzo di GStreamer all interno d
81. droid Registrando un account Google infatti possibile inviare da un server dei messaggi ad un dispositivo associato ovviamente qualora questo fosse collegato alla rete Internet Il server in questione potrebbe essere lo stesso del portale MyHome il quale conosce gi l indirizzo a cui accedere per contattare il sistema domotico nell abitazione Utilizzando una comunicazione XMPP inoltre possibile ricevere risposte dall applicazione in direzione del server Con questa architettura quindi si pu inoltrare una notifica di chiamata direttamente utilizzando il servizio Google Cloud Messaging e fare in modo che quando l utente accetta la chiamata l applicazione invii il proprio indirizzo IP al server Una volta raccolti i dati dei due endpoint sar possibile effettuare una chiamata e uno scambio di dati RTP Anche in questa situazione ovviamente sar necessario avvalersi del protocollo STUN TURN e ICE per i messaggi in entrata al sistema domestico e per mantenere aperta la connessione iniziata dall interno con la chiamata del web server F454 al server esterno 163 Conclusioni 7 CONCLUSIONI Lo scopo principale del nostro lavoro era quello di analizzare e progettare un sistema in grado di interfacciarsi con un impianto domotico Bticino di videocitofonia attraverso un dispositivo mobile In pratica abbiamo sviluppato un sistema capace di poter rispondere al citofono in qualsiasi posto dell abitazione e non pi solo
82. droid come vedremo in seguito il permesso di sistema RECEIVE_BOOT_COMPLETED 5 3 8 La gestione delle notifiche Un altra funzionalit del Servizio la gestione delle notifiche Come detto in precedenza ci troveremo di fronte a due principali tipi di notifiche la prima strettamente legata al verificarsi di un evento la chiamata da posto esterno mentre l altra tipologia di notifica legata all esecuzione del servizio Vediamo prima di tutto come creare una notifica e come gestire le impostazioni principali Per creare una notifica si devono utilizzare due classi NotificationBuilder e NotificationManager Si usa un Istanza di Notification Builder per definire le propriet della status bar icona messaggio esteso e altre impostazioni particolari Il Notification Manager un servizio di sistema di Android che serve per eseguire e gestire le Notifiche per questo necessario istanziare il Notification Manager Il collegamento tra Notification e NotificationManager viene implementato attraverso il metodo getSystemService e in seguito quando occorre notificare qualcosa all utente si passa l oggetto Notification tramite il metodo notify Prima di tutto otteniamo un reference al NotificationManager mNotificationManager NotificationManager getSystemService Context NOTIFICATION SE VICE Figura 90 referenza al NotificationManager Ora possiamo creare la notifica attraverso la manipolazione del Notificatio
83. e e Audioconvert consente di convertire l audio in diversi formati e rtppcmapay codifica l audio PCMA in pacchetti RTP e Sync abilita o disabilita la sincronizzazione con il clock e Async abilita o disabilita la modifica asincrona dello stato 152 Studi Aggiuntivi 6 3 CONNETTIVIT ESTERNA In questo capitolo verr effettuata un analisi e una prima progettazione riguardanti lo sviluppo di una funzione molto importante per il sistema e per l applicazione in particolare Ci focalizzeremo sulla possibilit dell applicazione di ricevere le chiamate effettuate dal posto esterno anche in ambito extra abitativo e quindi non collegata alla rete domestica bens alla rete di telefonia e internet 2g 3g ecc Uscendo quindi dall ambito di una rete LAN subentrano tanti problemi di connessione e persistenza della comunicazione della banda utilizzabile dal segnale audio o audio video di cui il pi importante senza dubbio la localizzazione del dispositivo dato che non esiste un IP fisso con cui possibile raggiungerlo come invece accade negli scenari analizzati precedentemente 6 3 1 Tecnologie Utilizzabili Proxy Server SIP server SIP sono elementi essenziali in una rete che autorizza i terminali SIP a scambiarsi messaggi registrare la posizione dell utente e muoversi attraverso la rete SIP server infatti si occupano di instradare i vari messaggi e assumono anche il ruolo di autenticazione utente
84. e mostra la struttura dell applicazione e la relazione fra i vari componenti L attivit principale la MainActivity che si occupa di inizializzare l interfaccia grafica della homepage dell applicazione il menu e richiamare a sua volta le altre attivit in base alle User Experience Le attivit da essa richiamate sono rappresentate dalle classi e Information utilizzata per mostrare alcune informazioni dell applicazione e VideoSorveglianza si occupa di gestire la richiesta del video da parte dell utente senza che vi sia una vera e propria azione di chiamata esterna 100 Scenario OpenWebNet e Incomingcall utilizzata per la gestione della chiamata dopo la ricezione della notifica di Chiamata in Arrivo invia infatti il frame di richiesta del video da mostrare all utente e inizializza il contenitore view e IncomingService classe che grazie al Service Receiver riesce a rimanere perennemente attiva e gestisce in background l arrivo delle chiamate inoltre si connette al web server F454 tramite un apposita funzione Vi sono infine due classi le quali forniscono servizi e funzioni alle altre e FunctionF454 funzioni di servizio per il web server e GStreamerSurfaceView funzioni utili per la gestione di GStreamer 101 Scenario OpenWebNet 5 2 4 Sequence Diagram Per comprendere al meglio i due use case descritti precedentemente analizzeremo ora i loro sequence diagram riproducendo le sequenze compl
85. e vedi Figura 101 he Videocitofono LET MY HOME Video Sorveglianza Figura 101 schermata principale dell applicazione Da qui attraverso il tasto Video Sorveglianza possibile accedere alla funzionalit desiderata e si aprir una diversa schermata vedi Figura 102 132 Scenario OpenWebNet Jie A Figura 102 schermata Video Sorveglianza All apertura della schermata di Video Sorveglianza l utente visualizzer un interfaccia semplice e di facile comprensione e Una sezione dedicata alla visualizzazione del video inizialmente nero e Un tasto che permette di accendere la videocamera del videocitofono e Tornare alla schermata principale per mezzo dell apposito tasto di back posizionato in alto a sinistra vedi Figura 103 ce W Video Sorveglianza Figura 103 tasto di back Ipotizziamo ora che l utente abbia deciso di avviare videocamera Il video a causa delle impostazioni della videocamera viene eseguito per 60 secondi al termine di questo lasso di tempo l utente viene avvisato attraverso un apposito popup dell interruzione del video vedi Figura 104 Il tempo disponibile terminato Figura 104 popup di avviso di fine videosorveglianza Cliccando infine sul tasto Conferma l utente viene reindirizzato alla schermata principale 133 Scenario OpenWebNet 5 4 2 Manuale Utente Scopo di questo manuale non solo quello di permettere all utente
86. e degli eventi di invio e ricezione stateless possibile gestirlo tramite callback e ve ne sono una per ogni tipologia di messaggio SIP e cio on_rx_request e on_rx_response rispettivamente per le richieste e per le 74 Scenario SIP risposte Per le risposte vi la funzione pjsip_endpt_create_response mentre per le richieste invece vi sono pjsip_endpt_create_request pjsip_endpt_create_request_from_hdr pjsip_endpt_create_ack oppure pjsip_endpt_create_cancel Se invece si vuole creare una richiesta o una risposta manualmente si deve fare affidamento alla funzione pjsip_endpt_create_tdata per creare un buffer di trasmissione poi creare un messaggio con la pjsip_msg_create aggiungere i campi header tramite la pjsip_msg_add_hdr e usare tutte le altre funzioni di creazione del messaggio e body message viste nei paragrafi precedenti Esiste poi un altro sistema pi ad alto livello per creare i messaggi e lo tratteremo in seguito tramite il livello dialog Una volta avuto il messaggio pronto per essere inviato ma non prima di avere acquisito il mezzo di trasporto con la pjsip_endpt_acquire_transport e quindi successivamente inviarlo con la pjsip_transport_send Anche se queste funzioni sono molto a basso livello per essere usato direttamente vengono per usate per inviare le richieste stateless assieme a pjsip_endpt_send_request_stateless che ovviamente ha il suo duale per le risposte nella funz
87. e di messaggi in SIP quindi Jain Sip definisce due tipi di interfacce e messaggi Request sono inviati dal client al server contengono metidi specifici e sono identificati come tipo di richiesta una Request URI indica l utente o il servizio per il quale la request indirizzata e messaggi Response sono inviati dal server al client in risposta ad una Request contengono uno specifico status code che identifica il tipo di risposta un Request URI anche in questo caso identifica l indirizzo e una reason phrase viene aggiunta per essere compresa dagli essere umani e non dal codice dell applicazione Un messaggio pu contenere header multipli e header dello stesso tipo e l ordine degli header dentro un messaggio significativo Il corpo del messaggio contiene un descrittore di sessione SDP di cui Jain Sip definisce il formato tramite un object che permette al body di essere una stringa o un oggetto definito dal SDP o alternativamente un array di byte Una transazione SIP consiste in una singola richiesta e in una qualsiasi risposta a tale richiesta Jain Sip standardizza l interfaccia per un generico modello di transazione definito dal protocollo SIP sia transazioni client che server Una transazione creata all arrivo di una richiesta o pu essere creata all invio di tale richiesta Quando una richiesta viene inviata statefully l applicazione deve richiedere una ClientTransaction quando una nuova richiesta arriva l appli
88. e di policy di sicurezza Vi sono tre tipi standard di SIP server Proxy Redirect e Registrar Il registrar server accetta richieste di registrazione e memorizza le informazioni in un location service per il dominio di cui fa parte e gestisce Le richieste sono generalmente generate da clients per stabilire o rimuovere un mapping tra il loro indirizzo SIP e l indirizzo a cui vogliono essere contatti Il location service usato come detto per il processo di registrazione e recupero delle informazioni un database delle location pu risiedere su una macchina remota oppure sulla stessa macchina e pu essere contattato usando qualsiasi protocollo appropriato per esempio LDAP II redirect server riceve le richieste SIP e risponde con dei messaggi 3xx redirection direttamente al client per contattare un alternativo set di indirizzi 153 Studi Aggiuntivi IP questo nuovo gruppo di indirizzi sono contenuti nell header del messaggio di risposta messaggi di re direzione possono indicare uno spostamento temporaneo o permanente la necessit di usare un Proxy o un servizio alternativo Il proxy server SIP instrada le richieste allo User Agent Server e le risposte allo User Agent Client Entrambe devono essere processate per stabilire l instradamento ed eventualmente modificare la richiesta prima del forwarding le risposte seguono lo stesso procedimento ma nell ordine inverso Lo standard SIP permette ai proxy servers
89. e di tre tipologie registrar server proxy server o redirect server Il primo viene utilizzato per la registrazione di un utente il secondo come server intermedio per analizzare i vari parametri di instradamento il terzo per re instradare le richieste SIP Il proxy server pu essere di tipo stateless oppure stateful e UDP un protocollo di livello trasporto che si affida al livello sottostante IP per la trasmissione e la ricezione di pacchetti datagram un protocollo connectionless ovvero orientato alla trasmissione cio non garantisce una trasmissione affidabile e nemmeno il loro ordinamento UDP compatibile e usato anche per applicazioni che effettuano trasmissioni broadcast e multicast La perdita di pacchetti tollerabile entro certi limiti al fine di garantire QoS e SDP un protocollo utilizzato per descrivere i parametri di inizializzazione di streaming media Gestisce l annuncio l invito e altri metodi per inizializzare una sessione multimediale Non si occupa del trasporto dei dati ma permette di negoziare i parametri di sessione come il tipo formati e codec e RTP un protocollo di livello applicativo utilizzato per trasmissioni real time di dati come audio e video Non fornisce meccanismi per garantire la qualit del servizio ma fa affidamento ai protocolli di livello inferiore per gestire tali problemi Non vengono garantite n la consegna affidabile dei datagram n il loro ordine di arrivo sequenziale
90. e sviluppato anche su dispositivi reali nel nostro caso un Samsung Galaxy Nexus e un Samsung Galaxy Tab 8 9 vedi paragrafo Galaxy Tab in Dispositivi adottati in fase di testing e sviluppo L interazione con i dispositivi Android mediata dall ADB vedi il paragrafo ADB in Terminologia adottata all interno della tesi Questo programma che abbiamo gi visto occuparsi in precedenza della lista dei dispositivi attivi pu anche consentire il trasferimento dei files dal dispositivo dove in esecuzione SDK all emulatore o viceversa dell interazione con la shell del dispositivo tramite il comando shell possibile far eventualmente eseguire le istruzioni da effettuare o la visualizzazione del file di logging logcat Per prima cosa quindi necessario connettere il device Android tramite cavo USB alla macchina sulla quale in esecuzione l SDK Nel nostro caso in ambiente Windows i nostri devices non erano correttamente riconosciuti e si reso necessario installare driver aggiuntivi OEM USB Drivers forniti da Google sul sito http developer android com tools extras oem usb html Terminata l installazione necessario attivare le opzioni sviluppatore dal men impostazioni del proprio device e abilitare la funzionalit di USB debugging funzione gi attiva di default sui Nexus device vedi Dispositivi adottati in fase di testing e sviluppo 46 Analisi delle tecnologie utilizzate Al termine di queste opera
91. eco gestione efficiente della banda e pu essere estesa con altri plugin per esempio per aggiungere supporto ad altri codec o altre funzionalit PjSIP PjSip una libreria scritta in linguaggio C Free e Open Source che implementa i potocolli standard quali SIP SDP RTP STUN TURN e ICE PjSip raccorda tutte le tre componenti principali delle applicazioni multimediali real time che sono i segnali i media e il NAT trasversal Essendo scritta in linguaggio C molto versatile e utilizzabile da tantissime piattaforme e sistemi operativi Windows Mac OS X sia PPC che Intel Linux su qualsiasi processore sistemi Unix Nokia Symbian iOS di Apple BlackBerry 10 e naturalmente Androido pianificato dalla versione 2 2 Con PjSip viene fornita sia una libreria a basso livello che un interfaccia ad alto livello tramite PjSUA e relative API PjSUA in pratica uno User Agent SIP a linea di comando scritto tramite lo stack PjSip PjSip costruito su PjLib e supporta i principali protocolli utilizzati in una sessione SIP oltre ai gi citati protocolli di trasporto quali UDP TCP e TLS supporta il routing NAT una gestione avanzata delle chiamate deviazione trattenuta sipfrag session timers ecc gestione di istant messagging e altre estensioni come autenticazione AKA INFO e ICE option tag 35 Analisi delle tecnologie utilizzate Per quanto riguarda la gestione delle sessioni SIP la libreria mette a disposizione tutte
92. ed esecuzione codice Java attraverso INI 1 48 pipeline GStreamer di esempi0 i 50 gli elementi della pipeline i 51 software centralino di Bticino cassia aaa 54 software di confifurazione icu sr 55 Dialogo per una comunicazione SIP BticiN0 in 57 messaggio SIP INVITE 0a ea 59 dipendenze stack PJSIP e librerie ii 62 Diagramma di collaborazione moduli i 63 Class Diagrami PISIP i 63 Dichiarazione di un modulo rassegpesiara ai 65 Priorit dei Modulare lait 66 Diagramma degli stati dei moduli i 66 Callback a cascata dei Moduli ciale 67 Dichiarazione di una struttura SIP URI ui 67 SIP Headetigs claire 68 dichiarazione di un messaggio SIP 69 dichiarazione dei parametri non standard 70 Class Diagram del negoziatore SDP 71 State Diagram di una sessione offerta risposta SDP 71 Attributi e Strutture pjmedia 72 Parser SDP irine i Ea lua Ea la r EES 73 Class Diagram del livello di Traport0 i 74 Invio Stateless di una Request 75 Invio Stateful di una response complesso 77 Invio Stateful di una response semplice 77 Figura 37 Elenco delle Figure invio Statefull di una request
93. el progetto Android Attraverso alcuni snippet di codice mostreremo i passaggi significativi che abbiamo svolto per poter includere e utilizzare questa libreria all interno della nostra applicazione Il codice Java MainActivity java l attivit principale Come primo passo necessario includere all interno del progetto il pacchetto contenente le classi necessarie al funzionamento della libreria GStreamer questo possibile per mezzo della seguente import import com gstreamer GStreamer Figura 68 snippet import GStreamer Un altro passo fondamentale permettere a Java di chiamare codice C e questo avviene attraverso i metodi nativi come quelli osservabili nello snippet sotto 113 Scenario OpenWebNet void nativelnit void nativeFinalize void nativePlay void nativePause native boolean nativeClassInit void nativeSurfaceInit Object surface void nativeSurfaceFinalize Figura 69 snippet metodi nativi Questi comunicano a Java che esistono dei metodi con questo nome che possono essere compilati senza problemi Sta al programmatore assicurarsi che a runtime questi metodi siano accessibili Questo ottenibile con il codice mostrato in seguito I primi bit di codice che vengono effettivamente eseguiti sono gli inizializzatori statici delle classi static System loadLibrary gstreamer android System loadLibrary ScenarioDue nativeClassInit
94. engono segnalati eventi verificatisi nell impianto antifurto e Supervisione dell impianto elettrico mediante ricezione di messaggi di intervento del dispositivo Stop amp Go Inoltre possibile effettuare una connessione audio e video real time con le telecamere presenti nell impianto videocitofonico In particolare possibile e Vedere l immagine tramessa dalla telecamera selezionata con la possibilit da PC di intervenire sulla qualit dell immagine l inquadratura e lo zoom 84 Scenario OpenWebNet e Ascoltare l audio registrato dal microfono della telecamera selezionata sorveglianza acustica da remoto e Inviare la propria voce all altoparlante associato alla telecamera selezionata comunicazione audio bidirezionale real time da Personal computer e Ascolto e visione dei messaggi registrati con la funzione Segreteria videocitofonica messaggi audio e le immagini possono anche essere inviate mediante e mail ad un indirizzo di posta elettronica Open Web Net Nell ultimo decennio BTicino ha investito nella ricerca e nello sviluppo di impianti domotici applicabili sia a realt residenziali che industriali Per permettere a chiunque abbia conoscenze informatiche di linguaggi ad alto livello di poter interagire con i sistemi e di poter costruire funzioni innovative stato studiato e implementato un linguaggio di comunicazione con il nome di Open Web Net dove OPEN sta per Open Protocol for Electronic Ne
95. entualmente del server per esempio quando si necessita di un iscrizione presso un server SIP Pi ad alto livello troviamo invece dei metodi per gestire la Dialog Invite Session la quale usata dall applicazione per gestire sessioni INVITE incluso la gestione dei messaggi SDP ed costruita in maniera astratta dalle API basi del dialog Inoltre dispone di un sistema di autenticazione automatico di un session timout e come gi anticipato di un handler per il protocollo SDP MJSIP MjSip una libreria SIP che fornisce allo stesso tempo delle API e un implementazione di uno stack in uno stesso pacchetto Include tutte le classi 36 Analisi delle tecnologie utilizzate e metodi per creare delle applicazioni basate su SIP implementando uno stack con un architettura su pi livelli inoltre fornisce un interfaccia ad alto livello per il controllo delle chiamate formata da vari pacchetti che includono Oggetti SIP standard come messaggi SIP transazioni dialogs Alcune estensioni SIP gi definite con lo standard IETF API per il controllo delle chiamate Un implementazione dei sistemi SIP sia server che User Agent una libreria basata su java molto leggera e pu essere usata allo stesso tempo per implementare la parte server o la parte dei terminali aggiunge all interfaccia lower leve simile a jain sip un interfaccia ad alto livello e per la parte di implementazione server supporta sia gli stateless
96. er build mentre con SipAudioCall viene gestita la vera e propria chiamata call mSipManager makeAudioCall mSipProfile getUriString sipAddress listener 30 Essendo funzioni ad alto livello non possibile intervenire sulla decisione del SIP flow e quindi inviare autonomamente un messaggio di INVITE oppure un messaggio di ACK OK o quant altro si deve fare affidamento sulle funzioni predefinite che si arrangiano a gestire tali messaggi fornendo al pi una stringa per descrivere la sessione LibLinphone Linphone un software VoIP molto famoso ed disponibile per vari sistemi operativi Questo software utilizza il protocollo SIP per creare la sessione di 34 Analisi delle tecnologie utilizzate comunicazione e gli sviluppatori hanno creato una propria libreria opensource e disponibile a tutti LibLinphone Anche questa libreria fornisce diverse funzioni ad alto livello per gestire una sessione SIP con facilit e in maniera automatica come se fosse una semplice chiamata Inoltre supporta vari altri sistemi quali l autenticazione tramite digest il DTMF dual tone multi frequency Permette chiamate multiple simultanee trattenuta di chiamata trasferimento di chiamata ecc Mette a disposizione inoltre una propria libreria per la gestione dello stream video Mediastreamer 2 la quale supporta la maggior parte dei codec Audio e Video conosciuti Supporta SRTP e zRTP criptazione di audio e video cancellazione di
97. ervare l indirizzo IP il numero della porta e la modalit di connessione MONITOR vengono settati a priori in quanto stabiliti dalle impostazioni del web server come vedremo in seguito Per quanto riguarda la variabile OPEN_CMD che rappresenta il comando open da inviare al server vedremo nel capitolo successivo come questa sia dinamica e dipenda dall indirizzo IP del device utilizzato Il passaggio successivo quello di instaurare la connessione attraverso il metodo connectionToF454 per i dettagli vedere il codice nell Allegato Questo avviene all interno del metodo OnStar del servizio che verr eseguito in background vedi il capitolo Android Service public void onStart Intent intent int startid Toast makeText this My Service Started Toast LENGTH LONG show Log d Variables TAG onStart Seravale SIMO ON MLA Cone connectionToF454 Figura 63 inizializzazione tasto di connessione II metodo Servicelcon serve per creare un icona persistente che verr visualizzata nella barra di sistema verr trattato nel dettaglio all interno del capitolo relativo al Service _ Cemmirzue gSetConnPar Getstring IR string IP _ipicdcressvalue p _ Comma BetConn par ee SitLag IR sicilia PORI _portevValue p _ connPar setConnPar getString R string MODE _modeValue new ConnectionAsynk execute Figura 64 esecuzione della connessione Lo snippet sopra mostra un estratto di codi
98. estare l interesse a ricevere delle notifiche appunto tramite messaggi NOTIFY riguardanti l evoluzione di alcuni variabili di stato indicate mediante l intestazione event utilizzato per e presence notify tiene uno UA al corrente dell evoluzione di alcune variabili di stato pu essere inviato anche senza aver prima ricevuto un messaggio SUBSCRIBE message permette l invio di messaggi instantanei ospitati nel body e descritti da un intestazione content type update consente ad un client di aggiornare i parametri di una sessione senza modificare lo stato della sessione stessa il metodo usato dopo un messaggio di INVITE ma prima che la sessione sia stata instaurata 28 Analisi delle tecnologie utilizzate o info utilizzato per inviare ad uno UA con cui si gi instaurata una sessione delle informazioni relative ad eventi che avvengono dall altro lato come ad esempio la pressione dei tasti del telefono Response i messaggi di response hanno come start line una status line costruita come nell esempio seguente status line lt lt SIP version gt gt lt lt status code gt gt lt lt reason phrase gt gt Essa costituita dalla versione del protocollo usata un numero intero di tre cifre status code ed una frase opzionale a commento della risposta Lo status code indica il tipo di risposta le tipologie di risposta si possono distinguere in sei classi e sono le seguenti 1xx provisional risp
99. ete di un processo di chiamata e di video sorveglianza Videocitofono F454 IncomingService Android OS Applicazione Chiamata FRAME OPEN Chiamata in arrivo Notifica SVEGLIA Applicazione FRAME OPEN Richiesta Video Richiedi Video Invio Video Distribuzione Video FRAME OPEN Richiesta Audio Richiedi Audio Invio Audio Distribuzione Audio Stream RTP FRAME OPEN Chiusura Chiamata Spegni Figura 54 sequence diagram chiamata completa Il primo diagramma inizia con la chiamata dal posto esterno e termina con la chiusura tramite applicazione posto interno Il web server F454 invia il frame Open riferito alla chiamata in corso il quale viene interpretato dal servizio IncomingService il quale invia una notifica sul telefono dove si provvede a risvegliare aprire l applicazione corrispondente A questo punto l applicazione richiede il segnale video da mostrare all utente la segnalazione viene inviata al web server che acquisisce tale stream e lo spedisce sul canale di ritorno 102 Scenario OpenWebNet L utente a questo punto visualizza il video e decide di accettare la chiamata in questo modo si avvia la comunicazione bidirezionale audio Ad un certo punto l utente termina la chiamata e al web server viene inviato un comando Open per la chiusura e il videocitofono viene spent
100. finale di conoscere tutte le funzionalit dell applicazione ma anche quello di descrivere l applicazione in ogni sua parte in modo che l utente possa sfruttare a pieno l applicazione in ogni momento e anche se poco esperto e poco avvezzo alla tecnologia Illustreremo l applicazione nei suoi dettagli a partire dall installazione cercando di simulare il pi possibile l esperienza d uso dell utente Requisiti Minimi L unico requisito che richiede l applicazione riguarda la versione di Android minima richiesta Infatti l applicazione non compatibile con le versioni di Android inferiori alla 4 0 Installazione Scaricare l applicazione Essendo ancora in fase di beta l applicazione non ancora disponibile sul Google Play Store Per scaricarla quindi necessario andare al seguente link e scaricare l apk il file che contiene l applicazione installabile con un semplice click https github com repocode tesi2013 Schermate installazione e permessi Dopo aver scaricato l apk possiamo proseguire con l installazione sul device desiderato Solitamente salvo diverse disposizioni dell utente i file vengono scaricati nella cartella Download del dispositivo spostatevi nella vostra cartella Download e cercate il file scenarioOpenWebNet apk cliccate su di esso e inizier l installazione 134 Scenario OpenWebNet Nella prima schermata che apparir osservabile in Figura 105 a vengono
101. finisce nuove richieste nuovi attributi e nuove funzionalit e a differenza di quest ultimo un protocollo stateful Questo significa che definisce le sessioni e ognuna ha il suo ciclo di vita e il proprio contesto Google Cloud Message Service Per inviare semplici dati informazioni dal proprio server ad un applicazione Android Google mette a disposizione un servizio gratuito che permette di inviare un messaggio fino a pochi KB per i payload all applicazione per notificarle che ci sono nuovi dati da poter recuperare dal server oppure direttamente per un servizio di messaggistica istantanea Questo servizio prende il nome di Google Cloud Message 13 e va a sostituire il precendente Android Cloud to Device Messaging C2DM Utilizzando il GCM Cloud Connection Server CCS si possono ricevere messaggi dal device dell utente e una cosa molto importante l applicazione non ha bisogno di essere in funzione per ricevere il messaggio il sistema sveglia l applicativo attraverso il broadcast Internet Per i devices precedenti alla versione 3 0 di Android necessario impostare gli account Google mentre non richiesto per le versioni dalla Jelly Bean in poi Ora vediamo brevemente come funziona il meccanismo IL GCM connection server prende i messaggi dal server sviluppato esternamente e invia i messaggi all applicazione Android client app del dispositivo precedentemente abilitata dal GCM Al giorno d oggi sono fornite con
102. gestisce direttamente la vita dei transport basandosi su un sistema di conteggio delle reference ed un timer di inattivit La libreria pjsip alloca un solo tran sport manager per endpoint Il transport manager normalmente non risulta visibile alle applicazioni che devono utilizzare le funzioni esposte dall endpoint II compito del modulo Transaction quello di attuare le giuste fasi di transazione in base ai messaggi SIP in entrata e o uscita possibile ritrasmissione messaggi di INVITE o REGISTER in mancanza di una risposta dei primi oltre ad avere delle API necessarie a comunicare all endpoint i messaggi in uscita e delle funzioni di callback necessarie al monitoraggio delle trasmissioni II concetto dato dallo User Agent quello della creazione distruzione ed identificazione delle sessioni INVITE REGISTER SUBSCRIBE NOTIFY necessarie ad implementare correttamente le fasi di una comunicazione SIP DataBuffer ogni messaggio ricevuto viene passato attraverso i vari componenti software incapsulato in una struttura anzich in come messaggio semplice questa struttura contiene informazioni aggiuntive che riguardano il messaggio come ad esempio l istante temporale di ricezione o l indirizzo IP del mittente del messaggio stesso La dichiarazione dei buffer presente nel file pisip sip_transport h in tale file viene descritto anche il transmit data buffer che il buffer che viene usato per l invio dei messaggi PJSIP prevede un me
103. gura 56 dettaglio sequence diagram chiamata persa Per l attivit di video sorveglianza invece l applicazione che inizia la sequenza con una richiesta video inviata al web server A ricezione di tale richiesta il posto esterno trasmette il flusso video al web server che lo inoltra all applicazione Scaduto il timeout impostato dal sistema il videocitofono viene spento e il web server segnala all applicazione la chiusura della comunicazione Applicazione E454 FRAME OPEN Video Sorveglianza Distribuisci il Video Richiedi Video Videocitofono T 1 1 I 1 1 1 1 I L Invio Video i Termine Trasmissione e Timeout Spegnimento Figura 57 sequence diagram video sorveglianza 104 Scenario OpenWebNet 5 3 IMPLEMENTAZIONE Come anticipato nell analisi dello scenario nel realizzare il prototipo dell applicazione abbiamo dovuto considerare alcune limitazioni dovute al fatto che il web server in nostro possesso ancora un prototipo che non presenta ancora tutte le funzionalit e le caratteristiche che avr in futuro vedi tabella riassuntiva sotto F454 Prototipo Versione definitiva Segnali in ingesso Audio Segnali in uscita Video Audio Video Formati supportati MJpeg 320x240 25fps MJpeg 320x240 25fps H264 320x240 25fps H264 320x240 25fps Figura 58 differenze tra prototipo e versione definitiva A causa di ques
104. i tali servizi mediante Un applicazione eseguita su di un computer Softphone Un telefono tradizionale con adattatore oppure attraverso un dispositivo del tutto simile ad un telefono fisso telefono VolP ma connesso ad Internet anzich alla PSTN e Una applicazione eseguita su di un telefono mobile capace di connessione dati Wi Fi GPRS o UMTS In questo tipo di comunicazioni basate su Internet e quindi sulla combinazione TCP IP i problemi principali che possono manifestarsi riguardano la qualit della trasmissione dei dati e la gestione dei pacchetti trasmessi dati vengono suddivisi in pacchetti e spediti attraverso Internet per essere poi ricostruiti in ricezione Per la comunicazione vocale le difficolt sono legate alla latenza al jitter e all integrit dei dati La tecnologia VolP utilizza due protocolli di comunicazione che funzionano in parallelo uno utilizzato per il trasporto dei dati i pacchetti voci attraverso IP e come secondo nella maggioranza dei casi il protocollo RTP RealTime Transport Protocol e sue estensioni SRTP ZRTP La prima tipologia di protocollo necessaria per l instaurazione della comunicazione e quindi per la segnalazione che assiste la conversazione protocolli pi utilizzati sono H 323 elaborato in 23 Analisi delle tecnologie utilizzate ambito ITU International Telecommunications Union e SIP Session Initiation Protocol presentata dal IETF Internet Engineering Task
105. iamate in corso e decide se accettare e rifiutare la chiamata che poi inizier lo stream audio video con l unit esterna Sistema Invia Chiamata Controllo Background uses lt Gestione Chiamata lt l extends Utente Esterno Stream Audio Video Notifica Chiamata Accetta Chiamata extends Rifiuta Chiamata Video Sorveglianza Utente Interno Figura 50 Use Case Diagram 97 Scenario OpenWebNet 5 2 2 Activity Diagram Applicazione F454 Videocitofono Controllo ee Acquisizione Chiamata Invio Notifica Apertura Applicazione Check Timeout 4 DE Timeout Richiesta Video Acquisizione Video Termina Chiamata Spegnimento Videocitofono Visualizza Video Accetta no Chiamata Richiedi Audio Stream Audio Gestione Media Terminazione chiamata si oi Termina Chiamata Spegnimento Termina Applicazione Figura 51 activity diagram chiamata Scenario OpenWebNet Il diagramma in Figura 51 mostra il processo completo di chiamata includendo al suo interno tutte le possibili variazioni come ad esempio rifiutare o accettare la chiamata in arrivo Applicazione F454 Videocitofono Richiesta Video Invio Video Inoltra Video K Video Sorveglianza Riproduci Video Check Fine Video Termina Video Figu
106. iamo il flusso audio e caps una stringa che permette di specificare il tipo di media accettabile ed eseguibile nel nostro caso un flusso RTP o media indica il tipo di media da eseguire in questo caso ci aspettiamo un media di tipo audio o clock rate indica il clock rate del video nel nostro caso 80000 151 Studi Aggiuntivi o encoding indica la codifica che deve avere il media in arrivo in questo caso PCMA e rtpbin consente di utilizzare sessioni RTP creando e utilizzando pacchetti RTCP Nel nostro caso utilizziamo o recv_rtp_sink_0 indichiamo che utilizziamo la sessione rtpbin di invio numero 0 o buffer mode controlliamo l algoritmo di buffering Noi useremo RTP_JITTER_BUFFER_MODE_ BUFFER algoritmo standard e rtppcmadepay consente di estrarre audio PCMA dai pacchetti RTP e alawdec converte il flusso da 8 a 16bit Parte di invio rtpbin audiotestsrc queue audioconvert alawenc Ca Pes V roaolm scene reo Sime 0 fogorin Sene reo Sre 0 maleiucipsimnik edliemesS tI ADDRESS PORMA 2 gyne ralge aspaccralse Figura 138 porzione di invio della pipeline Analizziamo anche io questo caso gli elementi principali nel dettaglio e audiotestsrc crea il segnale audio ad una determinata frequenza e multiudpsink permette di inviare il flusso audio attraverso la rete tramite il protocollo UDP che grazie all attributo clients consente di impostare l indirizzo IP e la porta dell host di destinazion
107. ianti La domotica svolge un ruolo davvero molto importante nel rendere intelligenti apparecchiature impianti e sistemi Ad esempio unimpianto elettrico intelligente pu autoregolare l accensione degli elettrodomestici per non superare la soglia che farebbe scattare il contatore Con il termine Smart Home o casa intelligente si indica un ambiente domestico opportunamente progettato e tecnologicamente attrezzato il quale mette a disposizione dell utente impianti che vanno oltre il tradizionale dove apparecchiature e sistemi sono in grado di svolgere funzioni parzialmente autonome secondo reazioni a parametri ambientali di natura fissa e prestabilita o programmate dall utente o recentemente completamente autonome secondo reazioni a parametri ambientali dirette da programmi dinamici che cio si creano o si migliorano in autoapprendimento Ad un livello superiore si parla di building automation o automazione degli edifici L edificio intelligente con il supporto delle nuove tecnologie permette la gestione coordinata integrata e computerizzata degli impianti tecnologici climatizzazione distribuzione acqua gas ed energia impianti di sicurezza delle reti informatiche e delle reti di comunicazione allo scopo di migliorare la flessibilit di gestione il comfort la sicurezza e per migliorare la qualit dell abitare e del lavorare all interno degli edifici La casa Intelligente La casa intelligente pu essere controllat
108. iato ad un INVITE iniziale 30 Analisi delle tecnologie utilizzate e cseq costituita da un numero seguito dal nome del metodo che ha dato inizio alla transazione e via inserita da ogni elemento che invia una richiesta SIP in cui indica il proprio indirizzo porta trasporto Ogni elemento di trannsito che deve inoltrare la risposta rimuove l intestazione da lui inserita ed usa quella in cima per determinare a chi inviarla In questo modo non occorre consultare il DNS ed sufficiente un proxy stateless e max forwards utile per limitare il numero di volte che un messaggio inoltrato e contact contiene uno o pi URI presso le quali il mittente di una richiesta desidera essere ricontattato allow annuncia i metodi supportati da un entit supported elenca le estensioni supportate tra quelle elencate presso IANA e record route specifica la volont di un proxy di essere mantenuto nel path dei futuri messaggi del dialogo 3 2 4 Esempio di session flow SIP Nella Figura 4 si pu osservare un classico flow SIP tra due user agent che comunicano tra di loro direttamente cio senza un intermediario attraverso un network IP il canale di comunicazione come specificato in precedenza non obbligatorio che sia necessariamente una rete IP Il primo passo lo fa lo user agent P1 chiamando tramite il suo apposito URI lo user agent P2 mandando il messaggio di INVITE per invitarlo ad unirsi alla sessione P2 risposte
109. icazione stato instaurato la trasmissione real time dei pacchetti media avviene direttamente tra i due partecipanti ossia posto interno e posto esterno Come si pu notare nella schermata in Figura 14 l interfaccia molto semplice e intuitiva Figura 14 software centralino di Bticino 54 Scenario SIP Nella parte sinistra si trovano tutte le chiamate in entrata disposte in un elenco e posizionata in alto uno schermo per visualizzarne il video in ingresso dall esterno Sulla destra invece si trova analogamente alle chiamate in entrata quelle in uscita e cio i terminali posti nei vari appartamenti anche qui c una zona dove poter visionare il video in ingresso dal posto interno Al centro vi il posto per visionare le telecamere di sorveglianza Oltre ai classici pulsanti di apertura e chiusura della chiamata cornette rosse e verdi vi sono i comandi per collegare un posto esterno ad uno interno e farli cos comunicare direttamente tra di loro la rubrica di cui abbiamo accennato prima e i comandi per aprire i vari cancelli CONFIGURAZIONE Per poter usufruire del software centralino occorre prima configurarlo ed avviarne i servizi Per fare queste operazioni ci si serve del cosiddetto switchBoard Configurator con il quale innanzitutto si seleziona il mezzo di comunicazione e trasmissione cio l interfaccia di rete che verr usata dal centralino possibile scegliere tra le varie opzioni che il siste
110. igh Layer User Agent Library integrating SIP Media and NAT Traversal PJSIP UA SIP user agent library THIRD PARTY SOFTWARE PJSIP SIMPLE SIP Presence and Instant Messaging PJIMEDIA CODEC Codec integration library PJMEDIA PJSIP SDP SDP negotiation and Media Stack J Core SIP library PJNATH NAT traversal library PJLIB UTIL Utilities library PJLIB OS Abstraction and Base Framework Operating System Platfiorm Dependent Figura 18 dipendenze stack PISIP e librerie Tutti i componenti software in PJSIP compreso il livello per le transazioni e quello per il dialogo sono implementati come moduli Senza questi il core stack non saprebbe come gestire i messaggi SIP Il centro cardine di questa architettura rappresentato dal Sip Endpoint che si occupa dei seguenti compiti Gestisce una Pool Factory allocando le pool per tutti moduli SIP Si occupa della temporizzazione Timer Heap e schedula gli eventi da notificare a tutti i moduli SIP Gestisce le varie istanze dei moduli di trasporto e controlla il parsing dei messaggi Gestisce i moduli PJSIP che sono la struttura primaria per poter estendere la libreria e fornire nuove funzionalit di parsing e trasporto Riceve messaggi SIP dal livello trasporto e li ridistribuisce ai moduli interessati 62 I MODULE APPLICATION Dialog Hash Table UA Layer
111. iii 78 Figura 38 a b Dialog in ricezione Invio di un ACK i 79 Figura 39 Figura 40 Figura 41 Figura 42 Figura 43 Figura 44 Figura 45 Figura 46 Figura 47 Figura 48 Figura 49 Figura 50 Figura 51 Figura 52 Figura 53 Figura 54 Figura 55 Figura 56 Figura 57 Figura 58 Figura 59 Figura 60 Figura 61 Figura 62 Figura 63 Figura 64 Figura 65 Figura 66 Figura 67 Figura 68 Figura 69 Figura 70 Figura 71 Figura 72 Figura 73 State diagram dell Invite Session iii 80 Web setvernF4A54 allure 84 OpenWeb Netus sacello 85 sessione di comunicazione sulla 89 sessione comandi e sessione eventi iii 89 struttura della IIbrerial laa iia ita rali 90 setting parametri di connessione iii 92 setting gestore di eventi e notifica i 92 instaurare connessione al gateWaY ii 93 invio di n fraie ilari 93 gestione notifiche ed eventi ii 93 Use Case Dlagramizz ia da iaia aa aa 97 activity diagram chiamata 98 activity diagram Video Sorveglianza ii 99 class diagram dell applicaziOne 100 sequence diagram chiamata completa 102 dettaglio sequence diagram chiamata rifiutata 103 dettaglio sequence diagram chiamata persa 104 sequence diagram video sorveglianza
112. in prossimit dello stesso Abbiamo analizzato due differenti scenari e l primo strettamente legato al protocollo SIP sul quale ci siamo limitati essendo SIP uno standard comune a compiere un analisi sulle tecnologie e sulle librerie esistenti Tra tutte abbiamo scelto quella che ci sembrata pi adatta ai nostri scopi PJSIP e analizzata nel dettaglio Infatti il flusso della connessione SIP da realizzare per connettersi al centralino Bticino non segue al 100 lo standard ma presenta delle particolarit che hanno reso la scelta relativamente complessa e La particolarit del secondo scenario invece riguarda l utilizzo del protocollo OpenWebNet Questo realizzato da Bticino consente di comunicare con gli elementi facenti parte del sistema MyHome attraverso dei comandi alfanumerici che abbiamo dovuto analizzare prima di poterli utilizzare Abbiamo in seguito sviluppato un prototipo dell applicazione seguendo le linee guida dello scenario che utilizza il protocollo OpenWebNet Questo perch ci sembrata la scelta pi innovativa e pi interessante rispetto a quella di sviluppare un applicazione SIP Infatti gi possibile trovare moltissime applicazioni di domotica che utilizzano il protocollo SIP mentre sono davvero poche quelle che utilizzano il protocollo di Bticino Nel prototipo un applicazione Android compatibile con versioni superiori alla 4 0 abbiamo incluso quelle che secondo noi erano alcune de
113. indi con IP privati di condividere un singolo indirizzo IP pubblico In questo modo possono essere indirizzati e raggiunti attraverso internet dato che un indirizzo IP privato pu essere acceduto solo all interno della LAN di riferimento Per fare ci occorre quindi una traduzione tra indirizzo pubblico e privato nel punto in cui la rete LAN si connette ad Internet Il passaggio del traffico attraverso il NAT chiamato NAT Traversal 155 Studi Aggiuntivi Esiste un problema generale utilizzando NAT e VolP Per esempio utilizzando una connessione SIP durante la registrazione viene passato l indirizzo IP del dispositivo ma questo un indirizzo privato della LAN a cui connesso quindi il Service Provider non sar in grado di inviare messaggi SIP al telefono Inoltre la connessione per lo stream audio generalmente su una porta differente da quella utilizzata per iniziare e terminare una chiamata il router NAT permette le connessioni in uscita ma blocca quelle in entrata questo significa che potrebbe essere inviato il messaggio per aprire un media stream ma il device in remoto non sar in grado di aprire la connessione a causa del blocco NAT STUN Simple Traversal of UDP through NATS ridefinito come Session Traversal Utilities for NAT un protocollo di supporto ai dispositivi nascosti da un firewall o router NAT Permette ad un dispositivo di essere raggiunto tramite il suo indirizzo IP pubblico ed eventualme
114. ion Questa espressione si riferisce soprattutto alla definizione dell automazione di edifici di dimensioni medio grandi e di struttura complessa per uso privato o sociale complessi residenziali alberghi ospedali centri commerciali complessi di uffici con obbiettivi sostanzialmente simili a quelli indicati per la domotica ma con un maggiore accento sui problemi delle infrastrutture comuni necessarie a supportare i vari livelli di automazione requisiti funzionali dell edificio per 17 Stato dell arte e analisi del problema produttori progettisti e integratori di automazione dell edificio possono essere raggruppati in alcune aree e Impianti tecnologici climatizzazione continuit e risparmio dell energia elettrica impianti di trasporto delle persone e delle cose distribuzione dei fluidi e Sistemi di sicurezza rilevamento fumo e incendio antintrusione controllo degli accessi protezioni perimetrali ecc e Sistemi informatici distribuiti automazione dell ufficio trattamento dei documenti rilevamento presenze ecc e Sistemi telematici telefono telefax posta elettronica videotel banche dati banca elettronica autostrade informatiche ecc e Sistemi di comunicazione a banda larga parzialmente sovrapposti ai precedenti che includono la distribuzione e l utilizzo di flussi di informazione rilevanti per l impiego di internet a banda larga e per applicazioni con flussi multimediali televisione vi
115. ione pjsip_endpt_send_response Entrambi i tipi di messaggi si avvalgono di funzioni di supporto come la creazione di tdata la comunicazione con l endpoint e il getter dell indirizzo solo per citarne alcune Qui di seguito un breve esempio della creazione di una request void my send request pJ Status t status sip es dara Sedata status pjsip endpt create request endpt endpoint method method sip bob example com target URI sip alice thishost com From sip bob example com To Ssipralicetthishost con Contacts NULL ANG elia 0 CSeg NULL body amp tdata output ssa status pjsip_endpt send request stateless endpt Figura 34 Invio Stateless di una Request 75 Scenario SIP Per effettuare trasmissioni si utilizza anche soprattutto per tipi stateful ma non solo la struttura pjsip_transaction che situata nel file lt pjsip sip_transaction h gt Normalmente un ciclo di vita di una transazione segue questi step e Creata tramite pjsip_tsx_endpt_create_uac pjsip_tsx_create_uas e L applicazione chiama la fuzione pjsip_tsx_recv_msg per passare l iniziale il messaggio iniziale della request e Quando l applicazione vuole inviare una request o una response usando una transaction viene chiamata la funzione pjsip_tsx_send_msg e La transaction automaticamente cambia lo stato appena il messaggio viene passato o il timer scaduto e
116. ise da tutti i campi header campi standard di PJSIP sono dichiarati dalla classe lt pjsip sip_msg h gt e ogni campo specifica di solito una API per poterlo manipolare per esempio l API per creare un campo convenzionalmente chiamato come il nome del capo stesso e il suffisso _create per esempio pjsip_via_hdr_create viene utilizzato per l istanza psip_via_hdr Alcuni SIP headers come per esempio Require Contact etc possono essere raggruppati in un singolo campo header e separati dalla virgola Contact lt sip alice sip example com gt q 1 0 lt tel 442081234567 gt q 0 5 Via SIP 2 0 UDP proxyl example com branch z9h6G4bK87asdks7 Sie 22407 AUDE proxy2 example com branch z9hG4bK77asjd Figura 26 SIP Header E quando il parser incontrer la stringa Pjsip non supporta gli array per header complessi splitter gli header mantenendo l ordine di apparizione in un array dedicato MESSAGE Per i messaggi vi la struttura pjsip_msg che rappresenta entrambi i tipi request e response La funzione pjsip_msg pjsip_msg_create pj_pool_t pool pjsip_msg_type_e type serve a creare una request o una response in base al tipo type Di seguito riportiamo la dichiarazione tipo di un messaggio 68 Scenario SIP enum pjsip_msg_type_ e PISIP_REQUEST_MSG Indicates request messag PJSIP_RESPONSE MSG Indicates response messag struct pjsip _request line pjsip method method Method for
117. isfa Questi due ruoli sono dinamici e interscambiabili nel senso che durante il corso di una sessione un client pu fungere da server e viceversa lo scambio dei ruoli avviene in modo automatico a seconda delle esigenze in quanto entrambi gli agenti hanno sia la possibilit di chiamata e 24 Analisi delle tecnologie utilizzate quindi di iniziare la sessione o processare richieste sia la possibilit di essere chiamati ed effettuare risposte 3 2 1 Caratteristiche Il protocollo SIP supporta cinque caratteristiche di creazione e terminazione delle chiamate e User location determina se lend user disponibile per la comunicazione e User availability determina la disponibilit degli utenti ad instaurare la comunicazione e User capabilities determina i parametri media da usare e Session setup stabilisce i parametri di sessione che entrambi i chiamanti devono usare e Session management include il trasferimento e la terminazione della sessione modifica i parametri e invoca i vari servizi Tipicamente SIP viene utilizzato in un architettura con altri protocolli quali RTP real time transport protocol per trasportare i dati e fornire un QoS RTSP real time streaming protocol per controllare la consegna dello streaming MEGACO media gateway control protocol per controllare i gateways SDP session description protocol per descrivere le sessioni multimediali e UDP user datagram protocol Le revisioni degli standa
118. it e sulla base del tipo connessione presente nella stessa ADSL Linea Telefonica e dei dispositivi di controllo My Home collegati Controllo Locale Consente di gestire le soluzioni My Home della propria casa dallo schermo di un PC o dallo schermo tattile del video touchscreen da 15 pollici utilizzando un software fornito a corredo con alcuni dispositivi e costruendo un sinottico che riproduce la piantina o le foto dei locali della casa con le icone dei relativi punti luce automatismi allarmi eccetera Anche attraverso le varie schermate del touchscreen comunque sempre possibile effettuare il comando locale delle soluzioni My Home della casa 2 2 2 Il problema L impianto domotico in questione ancora in una fase di sviluppo in quanto si cerca sempre di aggiungere nuove tecnologie nuove funzioni e quindi non ci sar mai una versione definitiva ma solo un ultima versione in previsione della successiva 21 Stato dell arte e analisi del problema Come detto tutte le chiamate vengono inoltrate verso il posto interno presente nell abitazione mentre non stato ancora sviluppato un sistema di inoltro della chiamata da videocitofono ad un dispositivo mobile Scopo principale del nostro studio proprio quello di permettere al sistema MY HOME di Bticino di comunicare con un device Android non attraverso il browser ma tramite un applicazione nativa L utilizzo dell applicativo ovviamente non andr a sostituire l
119. l utente che sta utilizzando il device e di inviarla al web server Creiamo il nostro elemento AudioRecord fondamentale per la registrazione 146 Studi Aggiuntivi AudioRecord new AudioRecord int audioSource int sampleRate int channelConfig int audioFormat int bufferSize Figura 127 creazione elemento AudioRecord Analizziamo i parametri nel dettaglio audioSource la sorgente dalla quale registreremo Per mezzo del valore MediaRecorder AudioSource MIC andremo a settare come fonte audio il microfono sampleRate il rate di campionamento espresso in Hertz Stando al sito degli sviluppatori 11 l unico rate che garantisce compatibilit con tutti i dispositivi 44100Hz channelConfig descrive la configurazione dei canali audio Anche in questo caso utilizzeremo il valore che garantisce compatibilit con tutti i dispositivi quindi sar AudioFormat CHANNEL_IN_MONO audioFormat il formato in cui codificheremo il nostro file audio Possiamo scegliere tra 16 e 8 bit noi useremo sempre per una questione di compatibilit la versione a 16 bit quindi AudioFormat ENCODING_PCM_16BIT bufferSize la dimensione totale in byte del buffer in cui i dati audio vengono scritti durante la registrazione Utilizzeremo getMinBufferSize per determinare questo parametro AudioRecord audioRecord new AudioRecord MediaRecorder AudioSource MIC 44100 AudioFormat CHANNEL _IN_ MONO n AudioFormat ENCODING PCM_
120. l interno delle abitazioni La casa diventa intelligente non perch vi sono installati sistemi intelligenti ma perch il sistema intelligente di cui dotata capace di controllare e gestire in modo facile il funzionamento degli impianti presenti Attualmente le apparecchiature tecnologiche sono poco integrate tra loro e il controllo ancora ampiamente manuale Nella casa domotica gli apparati sono comandati da un unico sistema automatizzato che ne realizza un controllo intelligente Per quanto riguarda il sistema di automazione fondamentalmente ne esistono di due tipi uno basato su un unit di elaborazione centrale che permette di gestire tutte le attuazioni a partire dai risultati di rilevazione e uno a struttura distribuita dove le interazioni avvengono localmente in maniera distribuita ed eventualmente comunicate ad un unit centrale per un controllo di coerenza generale in genere sistemi di questo tipo sono pi affidabili dei primi L interfaccia utente interfaccia uomo macchina deve in base a tutte le precedenti considerazioni essere consistente non deve creare conflitti fra i comandi essere di facile impiego si pensi ai bambini o agli anziani ed essere gradevole la difficolt di interazione con il sistema non deve essere una barriera al suo utilizzo Automazione dell edificio Come detto in precedenza un settore di grande rilievo anche per le implicazioni tecnologiche e di mercato quello della building automat
121. lementi 3 4 2 Gli elementi nel dettaglio Per formare una pipeline gli elementi vanno collegati gli uni agli altri utilizzando quello che l equivalente in GStreamer dei comuni connettori i pad Per immaginare un pad si pensi a delle apparecchiature elettroniche che si collegano tra di loro per esempio televisione e videoregistratore la connessione avviene tramite i connettori SCART In GStreamer i pad sono caratterizzati da un particolare tipo di dati e dal tipo di connessione permessa per continuare con l esempio del televisore e del videoregistratore si pu dire che non possibile collegare un connettore SCART ad un connettore per le cuffie Gli elementi classificati in base al tipo e al numero di pad possono essere di tre tipi e Source prelevano dati da fonti esterne al programma come file altri programmi connessioni di rete etc Hanno una uscita source pad e Sink mandano dati provenienti dal programma a componenti esterne come file altri programmi connessioni di rete etc Hanno un ingresso sink pad e Filter possono essere collegati solo ad altri elementi quindi non sono usati per comunicare con l esterno Il loro scopo quello di modificare convertire o elaborare i dati Hanno sempre almeno un source pad e un sink pad source _element sink_element Figura 13 gli elementi della pipeline 51 Analisi delle tecnologie utilizzate 3 4 3 Plug in e media supportati GStreamer utilizza una architettura pl
122. lient e ricevuto dal Server sintatticamente e semanticamente corretto Inoltre viene utilizzato come messaggio terminatore quando la risposta ad un messaggio Open preveda l invio di uno o pi messaggi in sequenza richiesta stato o richiesta grandezze Messaggio di NACK Il messaggio OPEN di Not Acknowledge NACK 0 Indica che il messaggio Open inviato dal Client e ricevuto dal Server semanticamente o sintatticamente errato Inoltre viene utilizzato come messaggio terminatore quando la risposta ad un messaggio Open preveda l invio di uno o pi messaggi in sequenza richiesta stato o richiesta grandezze In questo caso il client deve considerare non validi i messaggi ricevuti prima del NACK Sessioni di Comunicazione gateway TCP IP offrono il server Open Web Net su porta 20000 Le fasi che possiamo individuare per instaurare una connessione sono tre connessione identificazione comunicazione Il client OPEN pu instaurare due tipologie di sessioni Sessione comandi azioni utilizzata per inviare comandi richiedere lo stato richiedere e impostare la dimensione Sessione eventi usata dal Client Open per leggere tutto quello che succede sul bus dell impianto domotico in modo asincrono 88 Scenario OpenWebNet Sessione comandi azioni Client Open Figura 42 sessione di comunicazione La fase di identificazione varia se nel Server OPEN configurato un range di indirizzi IP dal quale p
123. lle funzionalit maggiormente innovative oltre ad alcune espressamente richieste da Bticino Per esempio 164 Conclusioni e Connessione con il web server F454 e Invio e ricezione di comandi OpenWebNet per mezzo di una Monitor e Scambio di flussi video grazie a GStreamer e Esecuzione di un processo persistente in background in ascolto di eventi provenienti dal web server e Gestione delle notifiche Essendo un prototipo ovviamente non sono presenti tutte le funzionalit che la renderebbero altrimenti un applicazione pronta ad essere commercializzata Infatti in futuro oltre a ottimizzazioni legate al codice e al consumo delle risorse si potrebbero implementare funzionalit aggiuntive come la gestione dell audio l implementazione di un maggior numero di notifiche per esempio per le chiamate perse l esecuzione concorrenziale su pi device il controllo dello stato della rete e della connessione Volevamo infine evidenziare il fatto che lavorare con una grande azienda come Bticino ci sia servito da stimolo e ci abbia insegnato molte cose e permesso di poter approcciare al lavoro in maniera molto professionale e puntuale 165 Bibliografia 8 BIBLIOGRAFIA 1 2 3 4 5 6 7 8 9 10 S Liang The Java Native Interface Programmer s Guide and Specification Addison Wesley 1999 Google Android Open Source Project Building for devices 2 Agosto 2
124. ma in uso consente e quindi LAN wireless etc Dopodich una volta assegnato un codice univoco generale si pu passare alla vera e propria configurazione dello switchBoard il centralino Oltre al nome e all indirizzo univoco che serve per essere raggiunto dai vari posti interni esterni e o da altri centralini si deve scegliere tutta quella serie di impostazioni hardware quali microfono webcam e altoparlanti che verranno usati durante la comunicazione Il software propone gi i dispositivi riconosciuti dal sistema Infine vanno configurate le opzioni per il SIP e cio la versione e il codec utilizzato per lo stream video disponibili per la scelta allo stato attuale MJPEG e H264 Rie Strumenti Lingua Nuovo X Apri E Salva i TiContacts J SwitchboardSuite Generale le Communication framework n a v ESEE Nome Softswitchboard 5 9 Codice univoco 2 5 9 Alarm Logger associato Codice univoco 2 Configurazione Hardware Ingresso video Z Integrated Webcam Microfono h Microfono Realtek High Definition A Regolazione microfono Auto Altoparlanti Altoparlanti Realtek High Definition SIP Sip version Sip version 2 Video Codec H264 Figura 15 software di configurazione 55 Scenario SIP Terminata la configurazione si pu passare all attivazione del centralino e all esecuzione di quest ultimo Per raggiungere un altro dispo
125. mostrati i permessi richiesti dall applicazione e richiede la conferma da parte dell utente Data conferma si avvier l installazione solitamente richiede pochi secondi AI termine della stessa potrete decidere di avviare l applicazione o continuare con altre operazioni Figura 105 b VO Videocit a REI Videocitofono v Ap Figura 105 installazione A questo punto l applicazione installata sul vostro dispositivo e apparir la sua icona in mezzo a quelle delle altre applicazioni Figura 106 icona dell applicazione 135 Scenario OpenWebNet Descrizione delle aree dell applicazione Proseguiamo ora con l analisi delle sezioni principali dell applicazione e illustrandone le varie funzionalit h BEI Videocitofono Figura 107 schermata principale Area 1 notifiche in questa sezione verranno mostrate le notifiche dell applicazione le analizzeremo nel dettaglio pi avanti nell apposita sezione Area 2 men qui potrai accedere a tutte le funzionalit dell applicazione semplicemente cliccando sulla funzione desiderata vedi sezione dedicata al men per i dettagli Area 3 funzionalit di base e avvisi in questa sezione dell applicazione potrai accedere alle funzioni principali e ricevere alcuni avvisi dall applicazione Primo avvio e servizio in background Vediamo ora cosa succede all avvio dell applicazione Cliccando sull icona si aprir l applicazione e app
126. n Builder 127 Scenario OpenWebNet tificationBuilder tContentTitle Nuova Chiamata tificationBuilder setContentText Rispondi alla chiamata Eric alato nBuialdernfis eater cenno Cirorconencio z tificationBuilder setSmallIcon R drawable ic stat ingoing Figura 91 impostazioni principali delle notifiche Con setContentTitle e setContentText impostiamo il titolo e il testo della notifica Con setTicker invece impostiamo il testo che compare nella barra di stato quando appare la notifica mentre con setSmalllcon settiamo l icona che viene mostrata insieme alla notifica Attraverso il codice mostrato nella Figura 92 creiamo in pending intent che viene lanciato quando viene premuta la notifica In pratica indichiamo l azione da compiere che nel nostro caso consiste nell avviare l activity Intent notInt new Intent Contesto MainActivity class PendingIntent contentIntent Pemnchiagiimicsnie erAetiviior _Conesto 0 aotae 0 Figura 92 creare il Pending Intent Per quanto riguarda invece la creazione di una notifica persistente una notifica che rimane nella barra di stato per tutta la durata dell esecuzione del servizio e che non pu essere rimossa dobbiamo sempre attraverso in Notification Builder modificare il flag nel seguente modo notificationBuilder setOngoing true Figura 93 notifica persistente 128 Scenario OpenWebNet 5 4 PROTOTIPO
127. nessioni server per http e XMPP Il server esterno mette in coda e memorizza i messaggi inviandoli quando il dispositivo online L applicazione client riceve i messaggi e per farlo deve essere registrata con il GCM e ricevere un registration ID utilizzando XMPP come connection server inoltre ha la possibilit di inviare messaggi di ritorno al server in upstream 157 Studi Aggiuntivi Client App GCM Connection Servers Figura 141 Comunicazione Google Cloud Messaging PJSIP Stack Per quanto riguarda un eventuale implementazione in un applicazione client abbiamo gi trattato e analizzato la struttura e le funzioni dello stack SIP PJSIP Per il protocollo STUN e relativi TURN e ICE esso offre il supporto per la gestione della comunicazione e del problema del NAT traversal attraverso la libreria PINATH 14 Esiste inoltre all interno dello stack un frame work per l autenticazione sia da parte del client che lato server Questa autenticazione supporta il digest authentication HTTP ma pu essere esteso aggiungendo altri schemi Le API per l autenticazione sono dichiarate in lt pjsip sip_auth h gt La struttura base pjsip_cred_info dove sono descritte tutte le credenziali anche multiple dell utente client Un esempio di autenticazione tramite le funzioni messe a disposizione dal frame work potrebbe essere il seguente 158 Studi Aggiuntivi sip auth cli sat session auth sess void imit aci pj pool
128. ngono usati i parametri v 0 td Cid Cid t LUPT A u I s C a m Il parametro a viene usato per definire un attributo specifico per BTicino il BTkind Questo attributo va a definire il tipo di chiamata che verr eseguita Per esempio pu descrivere una video chiamata oppure una telefonata un call switch una chiamata interna o di piano a seconda della morfologia della rete e tra le varie tipologie differenziare il tipo di suoneria Il codice in Figura 17 mostra un intero messaggio SIP utilizzato per la prima INVITE della sequenza di negoziazione della comunicazione TY Sios SGOCI1LOZ 1685012735060 STPR 2 0 Vao EAA OUDE 192 168 50 221 rport branch z9hG4bK0Ha1SZUX6Xrlm Max Forwards 70 From lt sip 24 192 168 50 221 5060 gt tag 0eBpcDecgaltj Tae lt s39s 3090192 16650127 3590605 Call ID RhcJdC7UxYbSvepenAbi389 CSeg 41686205 INVITE Contacts ssi 240192 116850 22150605 User Agent sofia sip 1 12 11 Allow INVITE CANCEL BYE ACK OPTIONS M NOTIFY Supported timer 100rel Content Type application sdp Content Disposition session Content Length 288 v 0 0 24 7597650163974703198 4425513679697971981 IN IP4 192 108 50 2321 s A conversation BT kind 1 C TPA 192 16350 ZI t 0 0 a BT kind 1 a PAN TILT 0 a UNIT TO CALL 12 m audio 7078 RTP AVP 0 a rtpmap 0 PCMU 8000 1 m video 5050 RTP AVP 26 a rtpmap 26 JPEG 90000 a sendonly
129. nit U z Cerei gst native class init te Figura 77 array dei metodi nativi Il Metodo gst_native_init nativelnit in Java Come detto in precedenza il metodo nativelnit viene chiamato alla fine della OnCreate static void gst native init INIEnv env jobject thiz CustomData data g new0 CustomData 1 SENECU MONEDA Civ ct 7 e LIS IETOMM A EM a Figura 78 snippet gst_native_init La prima cosa che fa allocare memoria per i CustomData e passare i puntatori alla classe Java attraverso il SET_CUSTOM_DATA in modo da essere memorizzati 118 Scenario OpenWebNet data gt app env gt NewGlobalRef env thiz Un puntatore alla classe principale dell applicazione MainActivity viene memorizzato in modo da poter essere chiamato successivamente pieltasa amere attesi casino PERC MNUT ASAP PENN a Infine un thread viene creato e viene avviata l esecuzione del metodo app_function Il metodo app_function static void app_ function void userdata JavaVMAttachArgs args GstBus bus CustomData data CustomData userdata CSource bus Source GError error NULL GST DEBUG YCreacing pipeline im CustomData at Spr Ceta data gt context g_main context new DE g main context push thread default data gt context Figura 79 snippet app_function creazione contesto Per prima cosa crea il contesto GLib in modo che tutte le G
130. nora o tattile Un sistema domotico si completa di solito attraverso uno o pi sistemi di comunicazione con il mondo esterno ad esempio messaggi telefonici preregistrati SMS generazione automatica di pagine webo e mail per permetterne il controllo e la visualizzazione dello stato anche da remoto Sistemi comunicativi di questo tipo chiamati gateway o residential gateway svolgono la funzione di router avanzati permettono la connessione di tutta la rete domestica al mondo esterno e quindi alle reti di pubblico dominio Caratteristiche Le soluzioni tecnologiche che possono essere adottate per la realizzazione di un sistema domotico sono caratterizzate da peculiarit d uso proprie degli oggetti casalinghi Semplicit Continuit di funzionamento affidabilit basso costo Le tecnologie per la domotica permettono inoltre di ottenere alcuni vantaggi quali ad esempio e Risparmio energetico un sistema completamente automatizzato dovr evitare i costi generati da sprechi energetici dovuti a dimenticanze o ad altre situazioni 16 Stato dell arte e analisi del problema e Automatizzazione di azioni quotidiane un sistema di home automation deve semplificare alcune azioni quotidiane soprattutto quelle ripetitive quindi non deve in alcun modo complicarle Tutte queste caratteristiche se non sviluppate singolarmente ma nel loro insieme portano alla creazione di un sistema domotico integrato che pu semplificare la vita al
131. ntazioni di messaggi di alto livello e di basso livello il formato ad alto livello una sorta di messaggio equivalente OpenWebNet che pi vicino al dominio di livello applicazione e potrebbe anche essere totalmente indipendente dalla rappresentazione dei frame OpenWebNet di basso livello e Mappers grazie alla componente mapper un messaggio di alto livello e di basso livello possono essere considerati equivalenti in quanto ogni mapper sar in grado di trasformare un messaggio di alto livello in un basso livello e viceversa e Exeptions contiene le classi di gestione delle eccezioni che la libreria utilizza per sollevare specifiche eccezioni a livello applicazione e Handlers a componente handler fornisce un insieme di gestori specifici progettati per prendersi cura dei messaggi e degli eventi provenienti dal livello applicazione o dal gateway OpenWebNet L obiettivo principale di tali handler tradurre i frame puri OpenWebNet nei corrispondenti messaggi di alto livello o in eventi e viceversa e Trace attualmente la libreria si basa su API Java di logging per il tracciamento dei servizi package java util logging Principali funzionalit In questa sezione attraverso degli esempi di codice mostreremo le principali funzionalit che questa libreria mette a disposizione in modo da capire meglio come BTCommLib lavora e come essa fornisce servizi che possono essere utilizzati per sviluppare applicazioni compatibili con MyHome B
132. nte mascherato da un servizio NAT opera sulle porte TCP e UDP e si serve di record DNS per trovare i server STUN associati ad un dominio Un client STUN un entit che genera le richieste pu operare su un end system oppure su un elemento di rete come pu essere un server Un Server STUN l entit che riceve le richieste e invia le risposte Permette ai vari client di recuperare il loro indirizzo pubblico il tipo di NAT e la porta Internet ad esso associato collegata alla porta locale queste informazioni poi possono essere utilizzare per una comunicazione UDP tra il client e il povider VoIP Il protocollo stato riscritto con il RFC 5389 e chiamato STUN bis Dopo quest ultima revisione non pi una soluzione stand alone ma definisce una serie di strumenti e meccanismi per effettuare il NAT traversal Alcuni attributi come per esempio RESPONSE ADDRESS SOURCE ADDRESS CHANGED ADDRESS sono stati deprecati public IP port pr IP 50 76 44 114 Port 23123 STUN server 192 168 0 1 1337 Figura 140 funzionamento STUN server 156 Studi Aggiuntivi Un estensione del protocollo STUN bis il protocollo TURN il quale si serve di un relay server e dato che molto costoso in termini di banda deve essere fornito dal provider Il protocollo ICE fornisce un meccanismo per entrambi gli endpoints per scoprire il percorso ottimale da usare per il traffico media TURN utilizza il protocollo binario STUN bis ma de
133. o Videocitofono F454 IncomingService Android OS Applicazione Chiamata T I 1 l 1 1 I FRAME OPEN Chiamata in arrivo 1 Notifica i l 1 1 h SVEGLIA Applicazione FRAME OPEN Richiesta Video Richiedi Video Invio Video Distribuzione Video FRAME OPEN Rifiuta Chiamata Spegnimento Figura 55 dettaglio sequence diagram chiamata rifiutata Il sequence diagram di una chiamata rifiutata differisce dal precedente solo nella parte successiva alla richiesta video effettuata dall applicazione In questo caso infatti utente rifiuta la chiamata e viene immediatamente inviato il frame command di chiusura del videocitofono al web server il quale a sua volta provvede allo spegnimento Pu accadere inoltre che l utente non si accorga della notifica di chiamata in corso Quando questo accade viene impostato un timeout utilizzato per terminare in modo automatico la richiesta Nel prossimo diagramma viene mostrato proprio questo scaduto il tempo il web server invia in automatico il frame necessario per lo spegnimento del videocitofono 103 Videocitofono F454 Scenario OpenWebNet Chiamata IncomingService FRAME OPEN Chiamata in arrivo Spegni TimeOut FRAME OPEN Citofono spento gt gt Fi
134. o ad un componente principale chiamato communication library z lt lt Use gt gt lt lt use gt x x E Domain 8 lt lt use gt gt Communication g lt lt use gt gt Attributes g x g x x x x Figura 44 struttura della libreria Ogni componente responsabile di uno specifico sottoinsieme di funzionalit che la libreria deve sostenere e che saranno descritte nei seguenti paragrafi e Communication questo il componente principale che la libreria fornisce in quanto responsabile per le principali interfacce dei servizi pubblici che ogni applicazione deve utilizzare per poter lavorare con il gateway compatibile con OpenWebNet Tra le principali interfacce principali fornite da questo componente c il BTCommMEgr un componente che si occupa del canale di comunicazione specifico e la BTCommChan una classe astratta che fornisce i servizi di comunicazione supportati all applicazione finale 90 Scenario OpenWebNet e Attributes una sorta di componente interno ausiliario responsabile di fornire classi di annotazione che verranno usate per decorare il codice dell applicazione finale in modo che la libreria sar in grado di identificare le informazioni correlate all OpenWebNet impacchettarle e spacchettarle in accordo con il protocollo e inviarle dal layer applicazioni al gateway e viceversa e Domain ha il compito di definire le classi che si occupano delle rapprese
135. o specifico di un determinato sistema operativo o pi in generale scritto in altri linguaggi di programmazione in particolare C e C Analisi delle tecnologie utilizzate nativelib c MyClass java include MyClass class running with java Figura 11 compilazione ed esecuzione codice Java attraverso JNI 1 La principale applicazione della JNI quella di richiamare all interno di programmi Java porzioni di codice che svolgono funzionalit intrinsecamente non portabili per esempio primitive di sistema operativo e che pertanto non posso essere implementate in Java puro L interfacciamento basato sulla definizione di un insieme di classi di raccordo fra i due contesti che presentano una interfaccia Java ma che delegano al codice nativo l implementazione dei loro metodi In questa trattazione faremo riferimento alla strutturazione del codice per permettere una comunicazione tramite l interfaccia JNI tale procedura comunque riassunta in Figura 11 All interno di una classe si pu definire un numero arbitrario di metodi implementati in codice nativo Per far questo nel sorgente della classe il metodo deve avere la parola chiave native e deve avere un punto e virgola al posto del corpo del metodo public class MyClass public void metodo public native void metodoNativo 48 Analisi delle tecnologie utilizzate Tale metodo nativo pu essere definito all interno
136. onnessione alla rete demandata al sistema operativo utente non deve fare altro che connettersi come avviene normalmente sar poi l applicazione a riconoscere quale IP vi stato assegnato in un contesto abitativo come avviene con i device videocitofonici fissi potr essergli dedicato un indirizzo IP fisso invece che assegnato tramite DHCP oppure si potr definire un apparecchio di smistamento della chiamata in arrivo come nodo zero dell unit abitativa il quale conoscer i vari indirizzi all interno e il posto esterno raggiunger e invier i messaggi a quello specifico indirizzo La scelta su quale libreria utilizzare per l implementazione caduta su PJSIP in quanto una libreria usata per creare un applicazione piuttosto complessa di comunicazione VolP CSipSimple e sembra abbastanza ben supportata una libreria scritta in linguaggio C e quindi compatibile e usabile su altre 60 Scenario SIP piattaforme su Android possibile utilizzarla per mezzo di NDK e JNI La libreria MJsip sebbene possa essere interessante carente nella documentazione e ferma da un paio d anni nello sviluppo Jain SIP potrebbe essere una valida alternativa a PJSIP anche se si basa sulle librerie javax le stesse dello stack SIP di Android il quale per oltre ad essere ad uno stato iniziale di sviluppo troppo ad alto livello e non permette certe personalizzazioni a noi necessarie nel flusso dei messaggi SIP infat
137. orano 1500 dipendenti suddivisi tra progettazione produzione qualit test marketing uffici amministrativi e commerciali Altre sedi importanti sono quella di Erba Italia dove vengono sviluppati e realizzati prodotti tutti i prodotti domotici e di videocitofonia Ospedaletto Lodigiano dove situato il magazzino centrale Azzano San Paolo e Torre del Greco dove vengono sviluppati e realizzati i dispositivi industriali e salvavita BTicino presente su molti mercati esteri Europa Belgio Spagna Svizzera Sud America Messico Costa Rica Venezuela Cile Asia Tailandia Cina Africa Egitto 2 21 MyHome My Home la domotica di BTicino e rappresenta il nuovo modo di progettare l impianto elettrico My Home amplia le possibilit della progettualit e rende la vita pi semplice e funzionale grazie all utilizzo di un unica tecnologia impiantistica il Bus digitale L impianto realizzato su Bus si applica in qualsiasi contesto abitativo e terziario con soluzioni evolute in termini di comfort sicurezza risparmio energetico multimedialit e controllo locale o a distanza La modularit installativa e l integrazione funzionale dei diversi dispositivi offrono la libert di scegliere quali applicazioni adottare fin da subito e quali integrare nel futuro senza importanti interventi strutturali e con un ottima gestione dei costi Il Sistema Il sistema My Home un impianto a Bus caratterizzato da dispositivi intelligen
138. ositivi quali attuatori telecomandi sistemi di comunicazione automatismi pre programmati che rendono pi semplice la fruizione dei servizi illuminazione condizionamento degli elettrodomestici e degli apparecchi tecnologici La sicurezza pu essere assicurata da dispositivi o servizi attivi quali la chiusura automatica degli accessi il loro controllo i dispositivi antintrusione segnalazione e comunicazione che permettono di conoscere lo stato della casa e dei suoi abitanti e di intervenire quando necessario Un altro concetto il benessere degli abitanti al quale si pu ricondurre ad esempio l alleviamento delle condizioni di debilitazione di un malato di un anziano o di un disabile realizzato sia con strumenti che ne riducano la fatica fisica e aumentino la mobilit sia facilitandone l accesso a mezzi di comunicazione In questa categoria si possono anche far rientrare i dispositivi che predispongono la casa ed i suoi abitanti ad un uso pi consapevole ed efficiente dell ambiente quali il risparmio energetico La domotica nata nel corso della terza rivoluzione industriale allo scopo di studiare trovare strumenti e strategie per 14 Stato dell arte e analisi del problema e Migliorare la qualit della vita e Migliorare la sicurezza e Semplificare la progettazione l installazione la manutenzione e l utilizzo della tecnologia e Ridurre i costi di gestione e Convertire i vecchi ambienti e i vecchi imp
139. ossibile instaurare una connessione senza l utilizzo della password OPEN 8 Tale situazione tipica nella realizzazione di software per la gestione dell impianto personalizzati Sessione comando azione Subito dopo aver instaurato una connessione TCP IP tra la macchina che richiede il servizio il client e la macchina che offre il servizio il server il flusso che si instaura osservabile nella Figura 43 Sessione eventi Subito dopo aver instaurato una connessione TCP IP tra la macchina che richiede il servizio il client e la macchina che offre il servizio il server il flusso che si instaura osservabile nella Figura 43 la x x l Server Open Client Open Server Open Client Open d dieci e TCP IP Connection erre ire ee RARA IAA si ia ACK 99 1 99 088 99 08 l le ACK ACK gt 1 1 778 le 1 1 128 ACK sl 1 0 1388 g4 21 1488 le 2 0 3288 4 21 14 0215 3 le 1 1 4488 ACK gt Closing TCP IP connection elia LI Ina gt Figura 43 sessione comandi e sessione eventi 89 Scenario OpenWebNet BTCommLib BTCommLib una nuova libreria Java Android che ognuno pu utilizzare per connettersi monitorare e gestire l impianto MyHome Bticino attraverso il gateway compatibile con OpenWebNet Struttura della Libreria La libreria BTCommLib come mostrato nella Figura 44 un insieme di componenti Java costruite attorn
140. ossibilit di effettuare la chiamata a tutti i posti interni presenti ma rimane sempre un unico seppure a volte molto complesso dispositivo Il cosiddetto posto interno invece un video terminale il quale pu essere a seconda delle versioni dei modelli pi o meno sofisticato di solito consente una ripresa audio video e nelle versioni pi avanzate anche l utilizzo di comandi o la gestione tramite touch di altri dispositivi della casa tutto tramite l unico access point device Il posto interno viene identificato da un indirizzo il quale identifica piano e appartamento nel caso ci fossero pi appartamenti e pi piani Il posto esterno infatti pu gestire chiamate a centinaia di posti interni ovviamente uno alla volta in quanto la telecamera microfono singolo tutti identificati tramite il relativo indirizzo In strutture complesse ci si pu avvalere anche di un dispositivo terzo che sta nel mezzo il centralino e serve principalmente a fare da tramite tra posto interno e posto esterno Sia che la chiamata da posto esterno avvenga direttamente al posto interno o tramite centralino in entrambi i casi questa si determina tramite SIP Dopodich una volta instaurata la sessione i dati viaggiano attraverso la rete con il protocollo IP Per concentrarsi sulla progettazione di un nuovo sistema di comunicazione o pi correttamente sullo studio di una nuova funzionalit da aggiungere a quelle gi esistenti al sistema
141. oste provvisorie necessarie ad interrompere i timer di ritrasmissione Le principali sono trying 100 ringing 180 call is being forwarded 181 queued 182 e session progress 183 2xx succesfull indica che l operazione avvenuta con successo ne fa parte il messaggio di OK 200 3xx redirection richieste di redirezione della richiesta In questo caso il client lo UA o il proxy che ha inoltrato la chiamata che si deve occupare di richiamare l indirizzo specificato Alcuni esempi sono multiple choises 300 moved permanently 301 moved temporarily 302 use proxy 305 alternative service 380 4xx request failure la richiesta non pu essere soddisfatta perch contiene qualche errore sintattico principali sono bad request 400 unauthorized 401 payment required 402 forbidden 403 method not allowed 405 not acceptable 406 proxy authentication required 407 request timeout 408 gone 410 request entity too 413 request URI too long 414 unsupported media type 415 unsupported URI scheme 416 bad extension 421 extension required 420 interval too 423 temporary unavailable 480 call does not exist 481 loop detected 482 29 Analisi delle tecnologie utilizzate address incompete 484 ambiguous 485 busy here 486 request terminated 487 not acceptable here 488 request pending 491 undecipherable 493 5xx server failure la richiesta appare
142. passo per una comunicazione SIP senza dubbio l indirizzamento e per averlo occorre creare innanzitutto un URI ci viene in aiuto la struttura pjsip sip_uri che ci permette di avere una serie di parametri obbligatori e facoltativi per la creazione di un indirizzo Nel nostro caso occorre anche impostare il numero di porta che normalmente facoltativo struct pjsip_sip_uri Pelo uri ptr you Pointer to virtual function table pj str t user Optional user part pj_str t passwd Optional password part pj str t host Host parit always exists int port Optional port number or zero pj_str t user param Optional user parameter pj_str t method param Optional method parameter pj_str t transport param Optional transport parameter int ttl param Optional TTL param or 1 int lr param Optional loose routing param or 0 pj_str t maddr param Optional maddr param pjsip param other param Other parameters as list pjsip param header param Optional header parameters as lists Ardenne pop Gr Figura 25 Dichiarazione di una struttura SIP URI 67 Scenario SIP HEADER MESSAGE In PJSIP tutti campi dell header condividono delle propriet come un tipo un nome un nome abbreviato e un tabella delle funzioni virtuali cos facendo possono essere trattati uniformemente dallo stack PJSIP definisce la structure pjsip_hdr che contiene appunto le propriet comuni condiv
143. r negotiate NULL Figura 30 State Diagram di una sessione offerta risposta SDP Sebbene esistano questi meccanismi semiautomatici di negoziazione tramite SDP pu essere necessario creare manualmente un body message per inserire e gestire eventuali parametri personalizzati In questo caso si utilizza direttamente la struttura pjmedia_sdp_session 71 Scenario SIP Al suo interno troviamo tutti quei campi che possono andare appunto a descrivere la sessione e quindi possono essere lo User il session ID la versione il tipo l indirizzo i vari parametri come si vede in figura o s t c ecc unsigned pjmedia_sdp_media port_count pi str_t pjmedia_sdp_session addr Port count used only when gt 2 The address pj_str_t pimedia_sdp_media transport struct pjmedia_sdp_session origin Session origin o line ME a pj str t pimedia_sdp_session name unsigned pjmedia_sdp_media fmt_count Subject line s Number of formats pjmedia_sdp_conn pjmedia_sdp_session conn pj_str_t pjmedia_sdp_media fmt 32 Connection line c Media formats struct pimedia_sdp_media desc Media descriptor line m line Figura 31 Attributi e Strutture pimedia Inoltre sono presenti due campi array per gestire gli attributi e i parametri media molto importanti per uno sviluppo Bticino in quanto e in questi due campi che si concentrano le personalizzazioni si pensi alla va
144. ra 52 activity diagram Video Sorveglianza Il diagramma delle attivit in Figura 52 mostra invece il processo che viene eseguito durante una sessione di video sorveglianza 99 Scenario OpenWebNet 5 2 3 Dependence e Class Diagram Service Receiver onReceive Se Video Sorveglianza IncomingService Porta Porta IpAddress IPaddress Modo Modo Frame Context Toast onCreate Messaggio onDestroy isPlaying onStart onCreate ConnessioneF454 onOptionSelected ConnessioneAsincrona onGstreamerilnit InviaNotifica InviaRichiestaVideo CancellaNotifica IsValidFrame IconaServizio SetMessage uses ChiudiAvviso USES call useb FunctionF454 GStreamerSurfaceView media_width LogFrame media_height RunUiThread constructor getFrameWithIP onMeasure A USES MainActivity Inizializzazione IncomingCall StartSorveglianza Porta StartIncomingCall IpAddress uses Startinfo Modo TerminaServizio Frame Toast Messaggio onCreate lt onStart call onGstreamerlnit InviaRichiestaVideo InviaStop Information IsValidFrame setMessage onCreate onOptionsItemSelected Figura 53 class diagram dell applicazione Il Class Diagram precedent
145. rd permettono per l utilizzo anche di TCP e TLS oltre ad UDP e la decisione spetta allo user agent client il terminale mittente Oltre alle funzioni base del protocollo come la localizzazione degli utente e l invito alla partecipazione seguito da negoziazione della sessione grazie ad alcune estensioni il protocollo SIP pu pubblicare ed aggiornare le informazioni di presenza notificare l evento di presenza richiedere il trasporto di informazioni di presenza e trasportare messaggi istantanei SIP pu essere impiegato sia in architetture client server che in contesti peer to peer e pu avere server sia stateless che stateful 25 Analisi delle tecnologie utilizzate 3 2 2 Architetture e Protocolli Di seguito verranno elencati i principali attori del protocollo SIP e i protocolli usati contemporaneamente in una sessione SIP sia durante la negoziazione come pu essere per SDP che durante un dialog per un media stream come pu essere RTP e SIP user agent il punto di accesso ad un sistema SIP Pu fungere sia da client che da server i due ruoli sono dinamici durante la sessione nel senso che in un certo momento pu funzionare come se fosse il server e in un altro momento assumere le funzioni del client Quando funge da client da origine alla transazione originando richieste quando funge da server invece raccoglie le richieste e se possibile le soddisfa e SIP server un server dedicato o condiviso Pu esser
146. re disponibili al programmatore Spesso con tale termine si intendono le librerie software disponibili in un certo linguaggio di programmazione Pi precisamente le API di Android sono fornite da Google e cambiano di versione in versione del Sistema Operativo ADB Android Debug Bridge un applicazione in grado di connettersi ad un device Android virtuale o no permettendo di installare le applicazioni di inviare e ricevere file e di eseguire comandi di shell scripting sul device Dalvik Virtual Machine Si tratta di una VM Virtual Machine ottimizzata per l esecuzione di applicazioni in dispositivi a risorse limitate che esegue codice contenuto all interno di file con estensione dex ottenuti a loro volta in fase di building a partire da file class di bytecode Java Alla fine il file che verr installato sul dispositivo fisico si presenter con estensione apk Android Package 11 Introduzione e Home Area Network una rete informatica la cui estensione tipicamente limitata ai dispositivi presenti in una abitazione Una funzione importante la condivisione dell accesso a Internet Si utilizzeranno invece i termini generici di applicazione o apps qualora si faccia riferimento a tutte le tipologie di applicazione di cui sopra 1 2 DISPOSITIVI ADOTTATI IN FASE DI TESTING E SVILUPPO Elenchiamo di seguito quali sono stati gli strumenti e i device principali utilizzati all interno della tesi e Em
147. re solo mediante la rete Internet qualora ovviamente il dispositivo fosse acceso e collegato in rete Dato che il web server ha gi un programma di configurazione una soluzione potrebbe essere aggiungere una classe di dispositivi collegabili alla rete MyHome cos come accade per telecamere posti esterni posti interni e qualsiasi altro dispositivo dotato di un interfaccia di rete e non solo ma in questo ambito ci stiamo occupando di indirizzamenti IP In questo modo al momento della scelta di utilizzare un determinato smartphone per la ricezione di chiamate videocitofoniche viene configurato il dispositivo all interno della rete assegnandogli quindi un IP statico che lo identifichi all interno del sistema domestico Cos facendo alla ricezione di una chiamata il web server non dovr far altro che effettuare un controllo su tale indirizzo IP e nel caso fosse individuato attivo all interno della rete inviargli direttamente i messaggi e lo stream multimediale Nel caso in cui invece non vi sia risposta da parte dell IP registrato il web server si dovrebbe occupare di contattare un dispositivo esterno che faccia da tramite da intermediario per raggiungere il dispositivo attraverso Internet 160 Studi Aggiuntivi Avendo analizzato il protocollo SIP ed essendo gi sviluppato il centralino con tale protocollo una valida idea potrebbe essere l utilizzo di un Proxy Server SIP per la registrazione e successiva autentic
148. riabile a BTkind e le richieste diverse di risoluzione e formato video Entrambi le sotto strutture hanno diverse funzioni per la gestione degli attributi come i classici create insert clone find e remove inoltre la struttura per i media gestisce tutti quei parametri che possono essere per esempio il tipo audio video il tipo di trasporto rtp avp il formato il media descriptor ecc Abbiamo parlato dei messaggi e da cosa sono composti ora trattiamo di come andare ad analizzarli e cio dei parser messi a disposizione dallo Stack Quello principale senza dubbio il find_msg il quale controlla i pacchetti in arrivo nel buffer e vede se ci sono dei messaggi SIP validi quando ci accade viene indicata la grandezza del messaggio nella variabile msg_size Controllata la validit del messaggio SIP questo viene passato alla funzione pjsip_msg pjsip_parse_msg pj_pool_t pool char buf pi_size_t size pjsip_parser_err_report err_list la quale ritorna un messaggio e la funzione 72 Scenario SIP pisip_msg pjsip_parse_rdata char buf pj_size_t size pjsip_rx_data rdata Secondariamente al controllo e all estrazione del messaggio vi sono i parser di URI e header che sono rispettivamente pjsip_parse_uri e pjsip_parse_hdr la quale fa il parsing del contenuto dell header inline secondo l header type hname Per quanto riguardo il parsing del body message SDP ci viene in aiuto la funzione pjmedia_sdp_parse la quale restituis
149. rogetti varie librerie che permettono di creare uno stack SIP e di gestire cos la creazione di una sessione tramite tale protocollo standard Alcune forniscono funzioni standard e a basso livello mentre altre si concentrano sulla creazione della comunicazione lasciando all oscuro l utente programmatore il contenuto dei vari messaggi SIP veri e propri fornendo le funzioni essenziali Di 33 Analisi delle tecnologie utilizzate seguito verranno elencate quali librerie sono state analizzate e le loro caratteristiche SIP Stack di Android Dalla versione di Android 2 3 e quindi a partire dalla versione 9 delle API Android sono fornite nativamente le API per il supporto del protocollo SIP Da quel momento Android include un vero e proprio stack SIP il quale permette di integrare servizi di gestione chiamate in entrata e in uscita senza preoccuparsi del livello di trasporto della gestione della sessione e dei vari messaggi per instaurarla Viene fornita un interfaccia programmazione molto ad alto livello dove le classi principali sono il SipManager il SipProfile e il SipAudioCall Il primo SipManager fornisce tutte quelle funzioni necessarie ad instaurare una sessione SIP Il SipProfile serve invece ad identificare i vari agenti crearli e gestirli inclusa la registrazione ed autenticazione SipProfile Builder builder new SipProfile Builder username domain builder setPassword password mSipProfile build
150. s la riproduzione del flusso audio ricevuto 150 Studi Aggiuntivi 6 2 2 Invio dell audio attraverso GStreamer Vediamo ora come inviare il flusso audio attraverso una pipeline GStreamer Audio pine Pipeline GStreamer Pipeline GStreamer Pipeline GStreamer sul Dispositivo sul Dispositivo sul Web Server Cattura il flusso Invia il flusso Cattura il flusso EE Audio Audio al Web Server Audio Inizio Registrazione converione savio a i Audio Pacchetti UDP enamat Audio RTh In Pacchetti UDP 127 0 0 1 Figura 136 gestione audio tramite GStreamer Riproduzione Inizio Ipotizzando di aver gi registrato e convertito l audio RTP in pacchetti UDP come visto in precedenza dobbiamo ora costruire una pipeline che sia capace di ricevere localmente questi pacchetti e successivamente inviarli al nostro web server Analizziamo separatamente le due diverse parti della pipeline Parte di ricezione udpsre port PORTA I caps application x rip riechlacamchio payload 8 clock rate 8000 encoding name PCMA queue cepolm recy rto simk 0 rtpbin buffer mode RTP_JITTER_BUFFER_MODE_BUFFER rtppcmadepay alawdec alsasink Figura 137 porzione di ricezione della pipeline Analizziamo gli elementi principali nel dettaglio e udpsrc permette di ricevere i dati sulla rete attraverso il protocollo UDP e port permette di impostare il numero della porta sulla quale ricev
151. sate e interessi e Utente Interno vuole effettuare una sessione di videosorveglianza utilizzando la telecamera del videocitofono Pre condizioni e web server deve essere in funzione connesso correttamente alla rete domestica e Il videocitofono deve essere funzionante e connesso alla rete domestica e device deve essere acceso e connesso correttamente alla rete domestica e applicazione deve essere installata Garanzie di successo utente effettua la sessione di videosorveglianza ricevendo il video sul proprio device per una durata di 60 secondi Scenario principale di successo e L utente decide di voler effettuare una sessione di videosorveglianza e utente apre l applicazione installata sul proprio dispositivo e utente avvia la funzionalit di videosorveglianza attraverso l apposito tasto e Cliccando sul tasto di avvio inizia lo streaming del video proveniente dalla telecamera del videocitofono e Trascorsi i 60 secondi viene mostrato un popup che avvisa l utente della fine del tempo a disposizione e applicazione torna alla schermata principale Lo schema seguente riassume l analisi degli attori e delle loro interazioni in uno Use Case Diagram L unit esterna infatti interagisce solo durante la chiamata 96 Scenario OpenWebNet iniziale e lo stream Audio video l unit interna invece si rende responsabile di visualizzare la notifica gestita dal sistema con un controllo in background delle ch
152. sitivo che sia uno smartphone un posto interno esterno o un altro centralino necessario aggiungere i relativi indirizzi alla rubrica memorizzata nel database del centralino in questo modo durante l esecuzione del software possibile chiamare i vari indirizzi richiamando la funzione rubrica del centralino selezionando i destinatari senza impostare il loro indirizzo IP ma visionandoli nominalmente tramite un numero identificativo 4 1 2 VideoCitofono Esterno Il posto esterno composto dal medesimo videocitofono utilizzato nello scenario OpenWebNet composto da una telecamera a colori dei led luminosi che indicano l accensione due pulsanti per inoltrare la chiamata un microfono e degli speaker audio utilizzati come segnali acustici e per l audio in uscita Per il sistema videocitofonico di questo scenario collegato via IP e gestito nella sua connessione con il protocollo SIP vi un segnale audio e video in uscita dal posto esterno e in entrata allo smartphone mentre solo laudio viene trasmesso sul canale opposto in quanto sul videocitofono esterno non vi una videocamera per visualizzare l eventuale video registratore dal mobile device codec video supportato un H264 formato 800x480 a 24 frame per secondo 4 2 ANALISI La prima fase dell analisi sar osservare e descrivere il processo di negoziazione e instaurazione della comunicazione tramite protocollo SIP in modo da integrare successivamente in un
153. sotto la GNU Lesser General Public License Permette di creare una grande variet di componenti per la gestione dei media come ad esempio strumenti per la riproduzione audio riproduzione audio video registrazione streaming e editing La progettazione della pipeline serve come base per creare molti tipi di applicazioni GStreamer progettato per essere cross platform infatti compatibile con Linux x86 PowerPC and ARM Solaris Intel and SPARC e OpenSolaris FreeBSD OpenBSD NetBSD Mac OS X Microsoft Windows Android iOs e Windows Phone costruito inoltre per essere compatibile oltre al C con i linguaggi di programmazione pi usati come Python Vala C Perl GNU Guile e Ruby 3 4 1 La pipeline GStreamer processa i media attraverso la connessione di un numero di elementi di elaborazione in una pipeline Ciascun elemento fornito da un plug in Gli elementi possono essere raggruppati in bins che possono essere ulteriormente aggregati formando cos un grafo gerarchico Figura 12 vorbis decoder Audio sink ogg demurer Moni t N Figura 12 pipeline GStreamer di esempio Il vero scopo di GStreamer quello di rendere possibile la realizzazione di applicazioni multimediali utilizzando elementi gi esistenti plugins 7 in 50 Analisi delle tecnologie utilizzate grado di interagire in sostanza definisce un protocollo modello di comunicazione e di scambio di dati ed eventi tra e
154. ssiamo rifiutare o accettare 82 Scenario OpenWebNet la chiamata e in questo caso avviare lo scambio audio tra i device in comunicazione 5 1 1 Componentie specifiche tecniche In questa sezione descriveremo i componenti le specifiche e i protocolli che bisogna conoscere per poter capire al meglio il capitolo relativo all implementazione del prototipo Video citofono Il videocitofono un impianto citofonico in cui integrato un sistema di monitoraggio video L unit esterna oltre alla pulsantiera e alla sezione audio comprendente il microfono e l altoparlante include anche una telecamera in bianco e nero o a colori Vicino alla telecamera sono presenti alcuni LED a raggi infrarossi a cui la telecamera B N sensibile per illuminare la scena e consentire la visione della scena con qualunque condizione di luce ci sia all esterno Ogni unit interna dotata di un monitor B N o colore su cui visibile l immagine ripresa dalla telecamera Il monitor costituito da uno speciale tubo catodico in cui la superficie fluorescente ha profilo semiparabolico ed il pennello elettronico giunge lateralmente colpendo la superficie dallo stesso lato da cui l immagine visualizzata Questo allo scopo di ottenere un apparecchio quanto pi sottile possibile Nei modelli recenti a questo tipo di monitor viene solitamente preferito un display LCD Il sistema video si attiva solo nel momento in cui un utente preme un pulsante di chi
155. st USER AGENT Pjsip fornisce un User Agent base per facilitare la gestione dei dialoghi SIP dialogs come per esempio il contatore di sessione il call ID il contact header con from to ecc la sequenca Cseq nelle transazioni ecc Il dialog non conosce l effettivo stato della sessione e neanche quando stata stabilita o disconnessa ma bens il dialog inizia con un attivit ben precisa e quando il contatore di sessione raggiunge lo zero e l ultima transazione terminata esso viene distrutto Parlando dapprima di un uso a basso livello si possono individuare alcune funzioni utili per gestire il dialog e cio la creazione uac e uas tramite pjsip_dlg_create_uac e pjsip_dlg_create_uac poi pjsip_dlg_inc_session e la duale dec per il decremento per incrementare il numero di sessioni nel dialogo e forse le pi significative per uno stack SIP le funzioni di creazione e 78 Scenario SIP invio dei messaggi sempre rispettivamente separate per request e response pisip_dlg_create_request pjsip_dlg_send_request Nel seguente esempio viene usato un dialog API a basso livello e mostra come creare inizializzare il dialog in ricezione e rispondere con un RINGING 180 ovviamente solo un esempio occorrerebbe gestire anche eventuali errori pj_bool t on rx request pjsip rx data rdata ii clara gt nse gt limo request net id USI INVIA amp amp pjsip_rdata get dlg rdata NULL pJsip cialog elle
156. stato proposto uno scenario leggermente semplificato in modo da isolare il tutto in un sottoinsieme pi piccolo Viene tralasciata la gestione dell indirizzamento e quindi raggiungimento delle specifiche unit abitative che possono essere una palazzina un appartamento 53 Scenario SIP o altro in quanto non vi alcuna differenza tra una versione desktop e una versione mobile gli indirizzi vengono infatti gestiti allo stesso modo La comunicazione quindi viene ridotta ad una semplice si fa per dire connessione punto punto tra il posto esterno videocitofono e il posto interno che in questo nuovo scenario un dispositivo mobile e non pi un semplice videocitofono interno due dispositivi condividono la medesima rete LAN dove il posto interno collegato via cavo mentre il dispositivo mobile di solito ma non obbligatorio collegato via wireless attraverso il Wi Fi 4 1 COMPONENTI E SPECIFICHE TECNICHE 4 1 1 Bticino SwitchBoard centralino Il centralino ricopre il ruolo solito che gli compete e cio riceve la chiamata dall esterno controlla l interlocutore e ridirige la chiamata all appartamento corrispondente tramite un software Bticino switchboard Tramite questo software si possono gestire tutte le chiamate in entrata e tutte le chiamate in uscita Il centralino si occupa appunto di instaurare la connessione tra i due dispositivi raccogliendo le chiamate e reindirizzandole una volta che il canale di comun
157. str t name Param header name pj sce t value Param header value DE Figura 28 dichiarazione dei parametri non standard Per quanto riguarda il body message rappresentato dalla structure pisip_msg_body la quale dichiarata nel file lt pjsip sip_msg h gt il medesimo dell header e vi sono varie API per manipolarli come per esempio pisip_iscomposing_create_body oppure pjsip_iscomposing_parse Per esempio la funzione pjsip_print_text_body pu servire per gestire quei messaggi con il corpo solamente testuale Per gestire messaggi pi complessi e non testuali per quanto riguarda il body occorre servirsi di una sottolibreria di Pjmedia che si occupa unicamente di SDP PJsip mette a disposizione una serie di API un vero e proprio frame work basato sulle specifiche RFC 3264 sul modello offerta risposta di SDP per gestire la negoziazione dei parametri media e in particolare di tutta le session description Il framework si basa su una generica negoziazione SDP pimedia_sdp_neg e il dialog invite fornisce l integrazione tra l offerta e risposta di SDP e il protocollo SIP interpretando il corpo dei messaggi come per esempio INVITE ACK ecc e traducendoli in negoziazioni SDP 70 Scenario SIP Pjmedia_sdp_session Pjmedia_sdp_neg Attributes Attributes origin name time conn attr media Pa state capability Operations active_local_sdP operations Pi_status_t pimedia_sdp_parse
158. tassi SDP per la descrizione delle sessione e la codifica e Classi Message MessageFactory e Classi Header MultipleHeader FromHeader ToHeader ViaHeader ecc e Classi SessionDescription Timer ecc JAIN SIP JSIP Jain Sip abbreviato talvolta con JSip un insieme di librerie e API realizzate in Java per lo sviluppo di applicativi desktop e server basati sul protocollo SIP Le JAIN Java APIs for Integrated Networks chiamate precedentemente Java APIs for Intelligent Network sono API sviluppate in Java per la creazione di servizi telefonici DD getInstance DE createStack Event Registration Proprietary SIP Stack Figura 6 Architettura ad oggetti createProvider Proprietary SIP Stack Network 38 Analisi delle tecnologie utilizzate Jain Sip stata creata per avere una vera interoperabilit tra diversi stack e diverse applicazioni ed l interfaccia standard Java per uno stack SIP Standardizza oltre all interfaccia dello stack anche l interfaccia messaggi la semantica degli eventi e la portabilit delle applicazioni e pu essere usata in diversiti ambiti come user agents proxy server sia stateful che stateless registrar server o embedded in un contenitore di servizi PE Messages Application SipListener Messages Figura 7 Implementation Structure Jain Sip fornisce metodi per formattare bene i messaggi SIP e le funzioni per fare in modo che l
159. te di inviare e ricevere DatagramPacket secondo i paradigmi del protocolo UDP 148 Studi Aggiuntivi A questo punto siamo in grado di convertire e inviare il flusso audio Un esempio lo while ch possiamo vedere in Figura 133 iamata attiva bytes read auclio recorder reed lont 0 BUF SIZI DatagramPacket pack new DatagramPacket buffer bytes reell acele AUDIO BORI p sock send pack by All interno avverranno ces COunme T bytes zeal Figura 133 invio pacchetti del ciclo while che sar eseguito finch la chiamata sar attiva le seguenti operazioni e Viene aggiornato il numero di bytes letti attraverso il metodo read della classe AudioRecord e Viene creato l elemento DatagramPacket che verr effettivamente inviato al web server Come possiamo vedere viene inizializzato passando come parametri il buffer creato in precedenza il numero di bytes letti l indirizzo IP e il numero della porta e Viene inviato il DatagramPacket e Viene aggiornato il conteggio dei byte inviati RICEZIONE Vediamo b DELL AUDIO TRAMITE UDP revemente come implementare il metodo di ricezione del flusso di pacchetti UDP AudioTrack track new AudioTrack AudioManager STREAM MUSIC SAMPLE RATE AudioFormat CHANNEL CONFIGURATIO MONO AudioFormat ENCODING_PCM_16BIT BUF SIZE AudioTrack MODE STREAM track play Figura 134 creazione elemento AudioTrack 149
160. te limitazioni il nostro prototipo non presenter lo scambio del flusso audio ma si limiter quindi alla sola ricezione del flusso video risultando leggermente diverso rispetto allo scenario analizzato in precedenza Nel momento in cui riceviamo una chiamata dal videocitofono l applicazione sul device dovr mostrare una notifica che ci avvisa della chiamata in arrivo All apertura dell applicazione l utente visualizzer il video e decider di accettare o meno la chiamata Un altra funzione fruibile dall utente potr essere quella di effettuare sessioni di videosorveglianza richiedendo dal device il video proveniente dall esterno 5 3 1 Impostazione del web server F454 Collegamento alla rete domestica Come prima cosa per poter testare l applicazione e impostare il server si reso necessario collegare alla rete domestica la strumentazione fornitaci da Bticino Gli strumenti che dobbiamo andare a connettere sono 105 Scenario OpenWebNet Web server F454 di propriet di Bticino Prototipo Video citofono di propriet di Bticino Bus SCS di propriet di Bticino Alimentatore di propriet di Bticino Cavo di Alimentazione Cavo Ethernet Figura 59 strumenti utilizzati La prima cosa da fare collegare tra di loro il videocitofono e il web server F454 tramite il bus SCS Come passo successivo dobbiamo connettere il web server al modem router attraverso il cavo ethernet in modo che si
161. tente pu controllare la situazione prima di decidere se iniziare la comunicazione oppure se non rispondere Non sempre per possibile rispondere alle chiamate magari perch quando avvengono non abbiamo la possibilit di accedere al dispositivo interno oppure semplicemente perch si vuole un accesso pi comodo e immediato l idea quindi quella di dotare l impianto domotico di una funzione mobile alternativa da poter portare sempre con s Un passo analogo stato compiuto anni fa con i telefoni fissi introducendo i telefoni senza fili i quali si possono trasportare all interno dell unit abitativa Con questo sistema sar possibile fare altrettanto con il proprio citofono rispondere ad una chiamata in qualsiasi posto dell abitazione Oramai uno smartphone disponibile in quasi tutte le case ed diventato uno strumento molto utilizzato nella vita quotidiana viene quindi naturale pensare di dotarlo di tutte quelle funzionalit che il suo potenziale permette Nei prossimi capitoli verranno illustrate le problematiche indotte dal sistema e le soluzioni proposte Saranno elencate ed esposte tutte le tecnologie utilizzate sia dall impianto sia dall applicazione mobile e dove necessario approfondito l argomento per far comprendere al meglio l utilizzo e il senso della relativa funzionalit Durante il lavoro stato realizzato inoltre un prototipo del prodotto finale funzionante e saranno quindi descritte le
162. terpretare correttamente cos i vari nuovi comandi open web net 5 3 2 Connessione tra Android ed il web server F454 La prima cosa abbiamo implementato nella nostra applicazione la connessione tra il device Android e il web server Bticino F454 Per realizzarla abbiamo utilizzato la libreria BTCommLib personalizzata in modo che si adattasse ai nostri scopi e che fornisse tutte le funzionalit a noi necessarie Come prima cosa abbiamo scaricato la libreria e l abbiamo importata all interno della nostra applicazione per mezzo delle seguenti import import import import import import communication BTChanTypes communication BTCommChan communication BTCommChanPar communication BTCommErr communication BTCommMgr communication IBTCommNotify domain highlevel domain util BTOpenMsgType exceptions LibException trace BTLibLogger import import import import import ORO TORO o o o coce Ta gogg Figura 61 import libreria BTCommLib Il secondo passaggio prevede la dichiarazione e il setting dei parametri di connessione utilizzate in seguito per connettersi al gateway e o per modificare la modalit di connessione static final String IP ADDRESS 192 168 1 35 static final String PORT_NUM 20000 static final String MONITOR RW static String OPEN CMD Figura 62 setting parametri di connessione 108 Scenario OpenWebNet Come facile oss
163. this request line pisip ori fori URI Toe this mequest line struct pjsip_status line int code Status code pj_str t reason Reason string struct pjsip_msg Message type ie request or response pjsip_msg_type e type The first line of the message can b ither request line for request messages or status line for response messages It is represented her as a union a union fps Recueste tina gt struct pjsip_request line req ss Starus LNS struct pjsip_status line status line List of message headers pjsip_hdr hdr Pointer to message body or NULL if no message body is attached to this mesage SY pjsip_msg_body body Figura 27 dichiarazione di un messaggio SIP Per ricercare o aggiungere un header all interno del messaggio si utilizzano le funzioni pjsip_hdr pjsip_msg_find_hdr_by_name pjsip_msg msg const pi_str_t name pjsip_hdr start e pjsip_msg_add_hdr pjsip_msg msg pjsip_hdr hdr 69 Scenario SIP Per gestire al meglio i vari tipi di messaggi Pjsip mette a disposizione una serie di status code relativi ai codici SIP come 100 per il trying 200 per OK 404 per not found ecc Inoltre si possono creare dei parametri per esempio nell header non standard tramite la struttura sicmucie 99 Sijo Pecci PJ DECL LIST MEMBER struct pisip param Generic list member pj_
164. ti collegati fra loro mediante una linea di segnale dedicata sia allo scambio delle 19 Stato dell arte e analisi del problema informazioni che al trasporto della tensione di alimentazione Il supporto fisico costituito da un cavo a coppie ritorte e non schermato da 27 V che posato insieme ai cavi di energia collega in parallelo tutti i dispositivi del sistema a BUS Il sistema si compone di alimentatore attuatori e comandi L alimentatore fornisce energia elettrica alla linea Bus in bassa tensione 27 V d c gli attuatori sono preposti al controllo dei carichi e sono collegati alla linea Bus e alla linea di potenza 230 V a c i comandi sono collegati unicamente al Bus e forniscono agli attuatori secondo configurazione l istruzione su quale operazione svolgere In funzione dei sistemi My Home che si desidera installare possibile scegliere tra due diverse tipologie di cablaggio con struttura libera con struttura a stella Il cablaggio con struttura libera si applica quando si devono installare gli impianti Automazione Antifurto Risparmio Energia e Termoregolazione Il cablaggio con struttura a stella indicato per l integrazione in un unica conduttura degli impianti di videocitofonia di diffusione sonora di telefonia TV SAT e di trasmissione dati La Tecnologia Ogni dispositivo connesso al sistema dotato di circuito di interfaccia e di una propria intelligenza costituita da un microprocessore programmato
165. ti pensato per creare semplici client VoIP o chiamate vocali gestibili senza tante righe di codice 4 2 3 PJSIP Come Accennato nella presentazione della libreria PJSip uno stack SIP scritto in C Anche se in realt utilizzare la terminologia Libreria PJSIP non del tutto corretto in quanto PJSIP rappresenta solo una delle librerie presenti vedi figura In particolare l insieme composto da e PJSIP rappresenta uno stack SIP che supporta un insieme di features ed estensioni del protocollo SIP e PJLIB rappresentante la libreria a cui le restanti si appoggiano Si occupa di garantire funzionalit di base es L astrazione rispetto al sistema operativo sottostante Pu essere considerata una replica della libreria libc con l aggiunta di alcune features come la gestione dei socket funzionalit di logging gestione thread mutua esclusione semafori critical section funzioni di timing gestione eccezioni ecc e PJLIB UTIL anch essa come PILIB una libreria di appoggio ma a differenza della prima implementa funzioni pi complesse utili per la crittografia come gli algoritmi SHA1 MD5 HMAC CRC32 e PJMEDIA libreria il cui scopo la gestione ed il trasferimento dei dati multimediali e PJSUA rappresenta il livello pi alto fungendo da wrapper verso le altre librerie fornendo un interfaccia ad alto livello fruibile anche tramite linea di comando 61 Scenario SIP APPLICATION pjsua PJISUA LIB H
166. ticino per la piattaforma Android In particolare mostreremo come connettersi ad un Gateway OpenWebNet mandare comandi al dispositivo dell impianto e ricevere eventi da esso 91 Scenario OpenWebNet Impostazione dei parametri di connessione Impostare i parametri di connessione necessario per essere in grado di connettersi al gateway e per fare questo bisogna definire la modalit di connessione RO ReadOnly RW ReadWrite l indirizzo IP e il numero della porta di un dato gateway OpenWebNet private static 3 PD NIDI private static _RORI DORIA private static MODE MODE private static IP VA LUNA RS AOT private static _RORI OPEN Val 2000075 private static MODE VALUE IRW Figura 45 setting parametri di connessione Setting gestiore di eventi e notifica La creazione di un gestore permette alla libreria di mappare gli eventi OpenWebNet in un dato oggetto della classe evento dell applicazione Se l applicazione non fornisce una classe evento pu essere usata la versione presente di default try __ myOpenChan cmdMgr getCommChan BTChanTypes Open __ myOpenChan handleEvent BTOpenMsgType EventStatus name DefaultMsgEventStatus class Figura 46 setting gestore di eventi e notifica Connessione con il gateway La connessione a gateway avviene grazie al codice mostrato in figura xxx connessione al gateway 92 Scenario OpenWebNet _
167. ticosionesesasea P ACK 200 di Baessesisnesinasasaszanearongaadadezzzrai p Figura 16 Dialogo per una comunicazione SIP Bticino Come si pu vedere una classica comunicazione SIP che inizia con una INVITE dal posto esterno la chiamata dal video citofono la quale incorpora le variabili 57 Scenario SIP per avvertire che ci sar una comunicazione media audio video Lo user agent interno risponde con una sequenza composta da TRYING 100 DIAL ESTABLISHMENT 101 RINGING 180 e infine un OK 200 per dare lok alla comunicazione richiedendo tramite parametro SDP il video al posto esterno il quale una volta ricevuto il messaggio OK invia un messaggio di ack ACK 200 per dare conferma dell avvenuta ricezione A questo punto il dialogo iniziato e si inizia tramite protocollo RTP nel nostro caso gestito dalla libreria GStreamer la sessione di media stream video perch siamo nel momento in cui nel posto interno viene visualizzato l interlocutore esterno e si deve decidere se alzare la cornetta e iniziare la comunicazione In caso positivo viene inviato un secondo INVITE questa volta da parte del posto interno per stabilire una comunicazione audio video la quale viene instaurata dopo che il posto esterno invia a sua volta la seria di messaggi OK 200 E TRYING 100 e con la conferma del posto interno tramite il solito ACK 200 Come avvenuto per il primo stream solo video unidirezionale da esterno a interno adesso lo stream audio e vi
168. tilizza il plugin Android Development Tools ADT plugin Sono disponibili inoltre altri strumenti di sviluppo come il Native Development Kit per applicazioni o estensioni in C o C 3 3 1 Perch Android Analizziamo brevemente la distribuzione mondiale dei sistemi operativi mobile in modo da giustificare la nostra scelta sviluppare il progetto per Android 3Q12 3Q12 3Q11 3Q11 Shipment Market Shipment Market Year Over Operating System Volumes Share Volumes Share Year Change Android 136 0 75 0 71 0 57 5 91 5 iOS 26 9 14 9 171 13 8 57 3 BlackBerry 7 7 4 3 11 8 9 5 34 7 Symbian 4 1 2 3 18 1 14 6 77 3 Windows Phone 7 Windows Mobile 3 6 2 0 1 5 1 2 140 0 Linux 2 8 1 5 4 1 3 3 _ 31 7 Others 0 0 0 0 0 1 0 1 100 0 Totals 181 1 100 0 123 7 100 0 46 4 Figura 9 distribuzione mobile OS Q3 2013 La tabella sopra Figura 9 mostra la distribuzione nel Q3 2013 Luglio Agosto Settembre tralasciando Linux in quanto non ancora ufficialmente distribuito per smartphone e tablet e Symbian non pi supportato da nessun hardware 42 Analisi delle tecnologie utilizzate recente Ci troviamo di fronte a quattro principali Sistemi Operativi da analizzare e Android sviluppato da Google al 75 e iOS sviluppato da Apple al 14 9 e BlackBerry sviluppato da RIM al 4 3 e Windows
169. tivo in questo caso il web server all ambiente esterno Questo server potrebbe non essere necessario se si volesse utilizzare il portale MyHome il quale potrebbe includere la funzionalit di individuazione dell abitazione Un ultimo problema da affrontare la comunicazione in entrata la quale pu per risultare bloccata e quindi impedire una corretta fruizione dei contenuti multimediali Per gestire questo inconveniente si utilizza il protocollo STUN con TURN e ICE grazie al quale possibile mantenere aperta una connessione proveniente dall interno nel nostro caso ancora una volta proveniente dal web server Ricezione Chiamata Controllo IP rete LAN IP connesso Invio Chiamata Locale IP non connesso Gisouzion Indirizzo IP esteo Gestione Chiamata LAN Comunicazione NAT Traversal Gestore Chiamata nemet Figura 144 Diagramma Attivit Controllo IP Chiamata Una soluzione alternativa per la risoluzione dell indirizzo del device mobile potrebbe essere rappresentata dall utilizzo del servizio GCM di Google Pensando allo scenario prototipato non vi alcuna gestione della comunicazione tramite SIP Bench si possa utilizzare SIP sul web server e 162 Studi Aggiuntivi utilizzare comunque un proxy server con autenticazione per recuperare l IP del dispositivo mobile il servizio di Google permette anche un integrazione maggiore all interno di un applicazione An
170. trada i messaggi sip basandosi sul tipo di trasporto e sull indirizzo remoto e crea dinamicamente dei tran sport qualora non fossero disponibili per inviare un messaggio ad una nuova destinazione Il tran sport manager invisibile dall applicazione ed unico per un endpoint il quale fornisce per l appunto le funzioni tramite la sua interfaccia Le funzioni principali relative al livello di trasporto sono l acquisizione tramite pisip_endpt_acquire_transport e l invio con pjsip_transport_send possibile estendere il layer per creare differenti tipi di trasporto e tutte le references fanno parte del file lt pjsip sip_transport h gt Pisip_endpoint Operations Pi_status_t pjsip_endpt_acquire_transport Operations pj_status_t pjsip_tpmgr_create pj_status_t pjsip_tpmgr_destroy pj_status_t pjsip_tpmgr_register_tpfactory pj_status_t pjsip_tpmgr_unregister_tpfactory pj_status_t pjsip_transport_register Pj_status_t pjsip_transport_unregister pj_status_t pjsip_tpmgr_receive_packet pj_status_t pjsip_tpmgr_acquire_transport Ppjisip_transport Pisip_tpfactory Attributes pool ref_cnt lock type local_addr remote_addr Operations public_addr Pj_status_t create_transport Operations pj_status_t pjsip_transport_send pj_status_t pjsip_transport_add_ref pj_status_t pjsip_transport_dec_ref Figura 33 Class Diagram del livello di Traporto La gestion
171. ttraverso on_state_changed oppure una nuova sessione stata inizializzata on_new_session oppure ancora quando 80 Scenario SIP viene ricevuta una nuova offerta on_rx_offert e l applicazione richiama la funzione pjsip_inv_set_sdp_anser per rispondere alla negoziazione del SDP Per creare l iniziale INVITE request per la sessione viene utilizzata la funzione pjsip_inv_invite pjsip_inv_session inv pjsip_tx_data tdata dove la richiesta viene messa nell argomento tdata se stato creato con successo inoltre se sono specificati i parametri media quando stata creata l invite session questa funzione inserisce un offerta SDP nella richiesta INVITE in uscita altrimenti il body non conterr nessun messaggio SDP L altra funzione molto importante la pjsip_inv_answer pjsip_inv_session inv int st_code const pj_str_t st_text const pjmedia_sdp_session local_sdp pjsip_tx_data tdata che come dice il nome crea un messaggio di risposta all INVITE request inviato in precedenza 81 Scenario OpenWebNet 5 SCENARIO OPENWEBNET 5 1 ANALISI Lo scopo principale di questo scenario la realizzazione di un applicazione per i dispositivi Android in grado di comunicare con un video citofono attraverso un web server proprietario Bticino per ricevere un flusso video in tempo reale possibile inoltre effettuare una chiamata da posto interno al posto esterno eventualmente per utilizzare la telecamera
172. tuttavia il numero di sequenza presente nell header permette al ricevente di 26 Analisi delle tecnologie utilizzate ricostruirne l ordine corretto Insieme a RTP viene utilizzato il protocollo RTCP per monitore QoS e trasmettere informazioni ai partecipanti della sessione e SRTP un profilo per RTP che garantisce la propriet di confidenzialit autenticazione dei messaggi e protezione da replay attack Il protocollo mette a disposizione un framework per la cifratura e autenticazione dei messaggi SRTP pu garantire un livello elevato di throughput e una ridotta espansione dei pacchetti 3 2 3 I Messaggi Per instaurare una sessione avviene una three way handshake tipo quella che avviene nel protocollo TCP Gli utenti SIP sono risorse identificabili mediante URI o URL che contengono informazioni sul dominio sull utente sull host o sul numero col quale l utente partecipa alla sessione Gli indirizzi hanno uno stile tipo le email e possono apparire in diversi formati sip nome 123 100 100 100 sip nome dominio it sip 123456 dominio it Un messaggio SIP pu essere una richiesta request o una risposta response Una sequenza composta da una richiesta e da una o pi response detta transazione la quale identificabile tramite un transaction ID che ne specifica la sorgente destinazione e numero di sequenza Entrambe le tipologie di messaggio sono costituite da una start line uno o pi campi di intestazioni
173. tworks MHVisual 10 Touch Screen Touch Screen _Web Pages 3 5 Touch Screen open y xa J a R a ka ene Hi NE fa me Mad Multimedia Interface a T g n Op e n USB Open a Arro infine t Fi ur 772 wire IP Interface Central Porter Switchboard Tra j 3 Ranco MyHome OPC Gateway Mobile 3 Burglar Alarm Applications Entrance System central Starter KIT Panel unit Figura 41 Open Web Net L Open Web Net un linguaggio grazie al quale possibile scambiare dati ed inviare comandi tra un unit remota e il sistema My Home BTicino Il protocollo pensato per essere indipendente dal mezzo di comunicazione utilizzato considerando come requisito minimo la possibilit di poter utilizzare toni DTMF 85 Scenario OpenWebNet sulla normale linea telefonica PSTN Attualmente i dispositivi che utilizzano tale protocollo sono i web server il comunicatore telefonico e l attuatore telefonico Questo linguaggio stato pensato anche per permettere l integrazione con funzioni di altri marchi oppure per permettere a dispositivi come PC smartphone e tablet di comunicare con l impianto My Home in remoto L Open Web Net stato introdotto per fornire un livello astratto che permette la supervisione e il controllo dei sistemi My Home concentrandosi sulle funzioni senza curarsi dei dettagli di dell installazione e senza dover per forza conoscere la tecnologia SCS Sintassi Un messaggio del protocollo O
174. u un modello ad eventi listener provider c uno scambio diretto tra il fornitore di eventi e il suo fruitore il quale deve essere registrato col primo Gli eventi incapsulano le richieste e le risposte e il modello degli eventi asincrono e usa un identificatore transazionale per correlare i messaggi Il SipListener rappresenta il fruitore degli eventi e resta in ascolto per gli eventi in arrivo che incapsulano i messaggi che possono dare il via ad un dialogo il SipProvider invece il fornitore di tali eventi il quale riceve i messaggi dal network e li passa all applicazione tramite appunto gli eventi Ci sono differenti tipi di Packages quello generale che definisce l architettura dell interfaccia le transazioni i dialog e gli eventi il package degli indirizzi che contiene il wrapper URI e definisce il SIP URI e l interfaccia per i Tel URIs il package per i messaggi che definisce l interfaccia necessaria per i messaggi Request e Response e infine il package per gli header Jain Sip definisce inoltre quattro tipi di factory differenti e SipFactory definisce i metodi per creare un nuovo stack object e gli altri factory object e AddressFactory definisce i metodi per creare SipURi e TelURI e MessageFactory definisce i metodi per creare nuovi Request e Response object 40 Analisi delle tecnologie utilizzate e HeaderFactory definisce i metodi per creare nuovi Header object Ci sono due tipologi
175. ug in 7 che rende la maggior parte delle funzionalit di GStreamer implementate come librerie condivise Le funzionalit di base di GStreamer contengono le funzioni per la registrazione e il caricamento dei plug in e permettono di fornire i fondamenti di tutte le classi in forma di classi di base Queste librerie vengono caricate dinamicamente in modo da supportare una vasta gamma di codec formati contenitore i driver di input output ed effetti plug in possono essere installati in maniera semi automatica quando sono necessari Dalla versione 0 10 i plug in vengono raggruppati in tre set dal nome del film Il buono il brutto il cattivo oltre a questi esiste un altro plug in di GStreamer chiamato FFmpeg che supporta vari formati multimediali addizionali Grazie a questi quattro plug in GStreamer supporta una gran variet di formati protocolli e codec multimediali tra i quali MPEG 1 MPEG 2 MPEG 4 H 261 H 263 H 264 RealVideo MP3 WMV FLV 52 Scenario SIP 4 SCENARIO SIP Nel primo scenario ci troviamo ad analizzare un sistema basato principalmente su due canali di comunicazione il bus SCS utilizzato da Bticino e il protocollo SIP In questo sistema vi un classico video citofono esterno che da ora in poi chiameremo posto esterno che comunica con un video terminale che da ora in poi chiameremo posto interno posto all interno dell abitazione In situazioni reali di solito sul posto esterno vi la p
176. ulatore Android SDK L SDK di Android include un emulatore di dispositivi mobile un device virtuale utilizzabile su differenti sistemi operativi Permette di prototipare un device reale in modo da sviluppare e testare applicazioni Android senza utilizzare un vero dispositivo About phone SIGUR Phone number signal etc Legal information Model number di Android version Baseband version Build number Jk ena 4 3 JW dk eng 4 R66V 737497 test key Figura 1 emulatore Android L emulatore Android simula le tipiche funzioni e i comportamenti di un dispositivo mobile tranne per il fatto che non pu effettuare o ricevere normali chiamate L emulatore fornito di vari pulsanti e sistemi di 12 Introduzione interazione che possono essere premuti utilizzando il mouse o la tastiera per generare eventi all interno delle applicazioni testate Per aiutare il design e il testing delle applicazioni l emulatore permette alla stessa di usare i servizi della piattaforma Android per invocare altre applicazioni accedere alla rete eseguire audio e video immagazzinare e recuperare dati avvisare l utente e interpretare transizioni grafiche e temi Nexus Device Nexus sono una linea di dispositivi mobili che usano il sistema operativo Android prodotti da Google in collaborazione con degli OEM Original Equipment Manufacturer dispositivi della serie Nexus non hanno personalizzazioni da parte di produttore
177. und disabilitando cos la possibilit di ricevere notifiche Notifiche Analizziamo ora le notifiche che l applicazione pu inviare Come detto in precedenza le notifiche in Android vengono visualizzate nella parte alta dello schermo Figura 110 e nel nostro specifico caso abbiamo due tipi di notifiche che andremo ora a considerare Figura 110 area notifiche di Android Notifica di servizio questo tipo di notifica vedi Figura 111 legata all esecuzione del servizio in background dell applicazione Essa infatti appare fin da subito e sta ad indicare che il servizio correttamente in esecuzione e l applicazione pronta a ricevere le chiamate provenienti dal videocitofono Osserviamo l icona e la versione estesa della notifica di servizio in Figura 111 Figura 111 notifica di servizio Notifica di chiamata in arrivo questa notifica invece molto pi importante in quanto consente di accedere alla funzionalit principale dell applicazione la ricezione delle videochiamate dal videocitofono esterno L icona e la versione estesa della notifica le possiamo vedere in Figura 112 mentre nella Figura 113 possiamo osservare il messaggio dato dalla notifica nel momento stesso dell arrivo della chiamata 138 Scenario OpenWebNet 14 08 b Figura 112 notifica di chiamata in arrivo importante osservare che a causa dei tempi di attivazione del videocitofono questa notifica si auto
178. viene notificato tramite la callback on_tsx_state e Infine la transaction viene automaticamente distrutto una volta raggiunto lo stato PJSIP_TSX_STATE_TERMINATED tramite la funzione pisip_tsx_terminate Le transazione hanno solo due tipi di timer quello per le ritrasmissioni e il timout ed entrambi sono impostati automaticamente dalla transazione secondo il tipo di transazione UAS o UAC di trasporto affidabile o non affidabile e il metodo INVITE o non INVITE Le funzioni principale per le transazioni sono pjsip_tsx_create_uas per inizializzare lo UAS e pjsip_tsx_send_ msg con pjsip_tsx_recv_msg rispettivamente per inviare e ricevere i messaggi i parametri di entrambe sono i medesimi e cio il puntatore alla transazione tsx e il puntatore ai dati della transazione tdata Alcuni funzionamenti di una transazione possono essere i seguenti per inviare in modo state full una risposta e In modo complesso vedi Figura 35 76 Scenario SIP static pj bool t on rx request pjsip rx data rdata pJ Status t status sip cemseetion ES pJsip tz data taetae Create and initialize transaction status pjsip_tsx create uas endpt NULL rdata amp tsx Pass in the initial reguest messag pjsip_tsx recv msg tsx rdata Create respons status pjsip_endpt create response endpt rdata 200 NULL OK amp tdata The response message is good to send but you may modify it before sen
179. volgendo in precedenza La durata della chiamata sar di 30 secondi limitazione dovuta al web server terminato questo lasso di tempo verr mostrato un popup Figura 120 che vi avviser che la chiamata terminata e vi consentir di tornare all operazione che stavate eseguendo semplicemente cliccando sul tasto Chiudi Figura 120 popup di fine chiamata 142 Scenario OpenWebNet Servizio in background Abbiamo parlato spesso di un servizio in background Questo avviato dall applicazione e consente di ricevere notifiche quando una chiamata in arrivo possibile vedere le propriet di questo servizio attraverso le impostazioni dello smartphone Android andando nella sezione applicazioni in esecuzione e cliccando sull icona della nostra applicazione Figura 121 Figura 121 servizio in background possibile disattivare questo servizio scegliendo dal men l opzione Chiudi deocitofono Video Sorveglianza Informazioni Figura 122 opzione Chiudi nel men 143 Scenario OpenWebNet Sconsigliamo di compiere questa azione in quanto chiudendo il servizio non sar possibile ricevere notifiche vedi Figura 123 possibile comunque riattivarlo semplicemente riavviando l applicazione Figura 123 popup di chiusura servizio Uscire dall applicazione x Uscire dall applicazione un operazione molto semplice da eseguire possibile infatti uscire attraverso il tasto
180. zioni possibile eseguire l applicazione sul device o attraverso l interfaccia grafica cliccando su Run nella barra degli strumenti di Eclipse o attraverso linea di comando per mezzo dei seguenti binari SDK platform too0ls acio install bin myApp debug apk A questo punto sul device collegato verr installata l applicazione ed eseguita automaticamente 3 3 4 NDK Tratteremo in questa sezione di cross compilazione in particolare del NDK per Android fornito dalla stessa Google il vantaggio principale di questa collezione di tool quello di fornire sia le librerie sia i file di include necessari alla cross compilazione senza avere la necessit di cross compilarle o di ottenerle da un altro dispositivo Questa tesi utilizza la versione di r9 dell NDK che comunque ottenibile al seguente indirizzo internet 6 Lo NDK fornisce uno script detto ndk build il quale pu automatizzare le procedure di compilazione del codice nativo e del codice Java Questo presente all interno del percorso SNDK e deve essere eseguito all interno della cartella dove sono presenti i sorgenti Bisogna inoltre sottolineare come questo script venga in genere utilizzato per compilare applicazioni Native con JNI e librerie di sistema 3 3 5 JNI Java Native Language La Java Native Interface o JNI un framework del linguaggio Java che consente al codice Java di richiamare o essere richiamato da codice cosiddetto nativo ovver
Download Pdf Manuals
Related Search
Related Contents
Manual de instrucciones Gateway para IP del sistema de Studio Color M/S Benutzerhandbuch - Albinger Licht + Ton Technik ダウンロード Lasko 1820 Use and Care Manual FM/AM Compact Disc Player Sennheiser 502011 Headphones User Manual Manual Copyright © All rights reserved.
Failed to retrieve file