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.
- 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
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 panoramicaSensorDataFragment
: Visualizzazione dati sensori in tempo realeSensorActionsFragment
: Testing delle azioni computazionaliStatsFragment
: Statistiche e grafici di utilizzoDynamicSensorSettingsFragment
: Configurazione dinamica sensori
- Avvio: L'utente avvia il server WoT dalla schermata Home
- Configurazione: Tramite Settings seleziona quali sensori esporre
- 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
- Accesso: Il Thing è accessibile via:
- HTTP:
http://localhost:8080/smartphone
- MQTT: configurabile tramite broker esterno
- WebSocket:
ws://localhost:8081/ws
- HTTP:
- Accelerometro (3 assi)
- Giroscopio (3 assi)
- Magnetometro (3 assi)
- Sensore di luminosità
- Sensore di pressione
- Sensore di gravità (3 assi)
takePhoto
: Scatta una foto e aggiorna la proprietà "photo"startRecording
/stopRecording
: Gestione registrazione audiocalculateMagnitude
: Calcola magnitudine accelerazionecalculateDirection
: Determina direzione Nord magneticocalculateOrientation
: Calcolo orientamento completocalculateTilt
: Stima inclinazione dispositivocheckInPocket
: Verifica se il dispositivo è in tasca
- Grafici real-time dei valori sensoriali
- Statistiche di utilizzo del server
- Distribuzione accessi per tipo di affordance
- Monitoraggio uptime e performance
- 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
- 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
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
Il progetto è open source: AndroidWoTServient
- Integrazione protocolli aggiuntivi (CoAP)
- Implementazione sicurezza avanzata (HTTPS, autenticazione)
- Meccanismi di discovery automatico
- Ottimizzazioni energetiche
- Espansione sensori supportati