Skip to content

UniBO-PRISMLab/AndroidWoTServient

Repository files navigation

Android WoT Servient

Un'applicazione Android che trasforma lo smartphone in un WoT Servient completo, conforme alle specifiche W3C Web of Things. L'app espone i sensori del dispositivo come Interaction Affordances standardizzate, rendendoli accessibili tramite protocolli web standard.

Caratteristiche principali

  • Esposizione sensori Android come proprietà WoT (accelerometro, giroscopio, magnetometro, sensori di luminosità e pressione)
  • Supporto multi-protocollo: HTTP, MQTT, WebSocket
  • Funzionalità multimediali: scatto foto e registrazione audio tramite azioni WoT
  • Configurazione dinamica dei sensori tramite interfaccia grafica
  • Statistiche e monitoraggio con grafici interattivi
  • Thing Description conforme alle specifiche W3C WoT

Architettura

Il progetto è strutturato nei seguenti componenti principali:

  • WoTService.kt: Servizio in foreground che mantiene attivo il server WoT
  • Server.kt: Creazione e gestione del Thing "smartphone" con tutte le affordances
  • SensorPublisher.kt: Pubblicazione automatica degli eventi sensoriali
  • MainActivity.kt: Activity principale con navigazione bottom-tab
  • Fragment specializzati:
    • HomeFragment: Avvio del servizio e panoramica
    • SensorDataFragment: Visualizzazione dati sensori in tempo reale
    • SensorActionsFragment: Testing delle azioni computazionali
    • StatsFragment: Statistiche e grafici di utilizzo
    • DynamicSensorSettingsFragment: Configurazione dinamica sensori

Come funziona

  1. Avvio: L'utente avvia il server WoT dalla schermata Home
  2. Configurazione: Tramite Settings seleziona quali sensori esporre
  3. Esposizione: Il server crea automaticamente una Thing Description con:
    • Proprietà per ogni sensore attivo (lettura valori real-time)
    • Azioni per funzionalità multimediali e calcoli computazionali
    • Eventi per notifiche automatiche delle variazioni
  4. Accesso: Il Thing è accessibile via:
    • HTTP: http://localhost:8080/smartphone
    • MQTT: configurabile tramite broker esterno
    • WebSocket: ws://localhost:8081/ws

Funzionalità disponibili

Sensori supportati

  • Accelerometro (3 assi)
  • Giroscopio (3 assi)
  • Magnetometro (3 assi)
  • Sensore di luminosità
  • Sensore di pressione
  • Sensore di gravità (3 assi)

Azioni WoT

  • takePhoto: Scatta una foto e aggiorna la proprietà "photo"
  • startRecording/stopRecording: Gestione registrazione audio
  • calculateMagnitude: Calcola magnitudine accelerazione
  • calculateDirection: Determina direzione Nord magnetico
  • calculateOrientation: Calcolo orientamento completo
  • calculateTilt: Stima inclinazione dispositivo
  • checkInPocket: Verifica se il dispositivo è in tasca

Monitoraggio

  • Grafici real-time dei valori sensoriali
  • Statistiche di utilizzo del server
  • Distribuzione accessi per tipo di affordance
  • Monitoraggio uptime e performance

Requisiti

  • Android API 26+ (Android 8.0)
  • Permessi richiesti:
    • Accesso sensori del dispositivo
    • Accesso fotocamera
    • Registrazione audio
    • Accesso rete
    • Notifiche
  • Dipendenze:
    • kotlin-wot framework
    • MPAndroidChart per grafici
    • Jackson per JSON processing

Tecnologie utilizzate

  • Kotlin: Linguaggio di sviluppo principale
  • kotlin-wot: Framework WoT di Eclipse Thingweb
  • MPAndroidChart: Libreria per grafici interattivi
  • Jackson: Processing JSON per comunicazioni WoT
  • Android Sensor Framework: Accesso ai sensori hardware
  • Coroutines: Gestione operazioni asincrone

Conformità agli standard

L'applicazione implementa completamente le specifiche W3C Web of Things (aggiornamento dicembre 2023):

  • Thing Description format
  • Interaction Affordances (Properties, Actions, Events)
  • Protocol Bindings (HTTP, MQTT, WebSocket)
  • WoT Scripting API compatibility

Repository

Il progetto è open source: AndroidWoTServient

Sviluppi futuri

  • Integrazione protocolli aggiuntivi (CoAP)
  • Implementazione sicurezza avanzata (HTTPS, autenticazione)
  • Meccanismi di discovery automatico
  • Ottimizzazioni energetiche
  • Espansione sensori supportati

About

AndroidWoTServient

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages