Par Valentin Brosseau / @c4software
Un ESP32 qui simule une lampe connectée.
Comment une application parle-t-elle à un objet posé sur la table ?
Bluetooth Low Energy : sans fil, et basse consommation.
Montres, capteurs, serrures, thermostats…
Périphérique
└── Service
├── Caractéristique (lire)
├── Caractéristique (écrire)
└── Caractéristique (notifier)Chaque service et chaque caractéristique a son UUID.
nRF Connect : explorer les services et les caractéristiques du périphérique.
Avant d'écrire la moindre ligne de code.
Vous demandez la connexion.
La réponse arrive… quand ?
Le BLE est asynchrone : on demande, puis on attend la réponse.
Il faut donc gérer l'attente : un loader, au bon moment.
Scan, connexion, connecté, déconnecté…
À chaque état son affichage : la liste, un loader, les actions.
Flow lui envoient.// Dans le ViewModel
val connectedDeviceLedStateFlow = MutableStateFlow(false)
// Dans le composant
val ledState by viewModel.connectedDeviceLedStateFlow.collectAsStateWithLifecycle()Le périphérique notifie, le flow change, l'écran suit.
Erreurs, déconnexions, timeouts…
Le BLE est simple dans ses actions, exigeant dans sa mise en œuvre : structurez votre code.
Place au TP 🚀