BLE Scanner
Résumé
- Nom interne :
Ble_scanner - Catégorie : Bluetooth
- Objectif : Scanner les appareils BLE à proximité pendant une durée fixe, avec filtrage optionnel par force du signal, nom, ou adresse MAC, et retourner la liste trouvée.
- Type de tâche : Normale
Compatibilité
-
Version minimale AndroMate :
1.1.0 -
Version maximale AndroMate :
1.1.0 -
Android minimum :
Android 13 (API 33) -
Android maximum testé :
Android 16 (API 36) -
Constructeurs supportés :
- ✅ Tous les constructeurs
-
Permissions requises :
BLUETOOTH_SCANBLUETOOTH_CONNECT- Localisation de l'appareil activée (exigence Android pour les opérations BLE)
Description détaillée
La tâche BLE Scanner recherche les appareils Bluetooth Low Energy à proximité pendant ScanDurationMs millisecondes, en appliquant jusqu'à trois filtres optionnels (force de signal minimale, sous-chaîne du nom, sous-chaîne de l'adresse MAC), et retourne chaque appareil correspondant sous forme de tableau JSON — chaque appareil n'apparaissant qu'une seule fois (dédupliqué par adresse MAC).
Utilisez cette tâche pour découvrir des appareils avant de vous y connecter avec Ble_connect, par exemple lorsque le mac_ble exact n'est pas connu à l'avance.
Paramètres d'entrée
| Paramètre | Type | Obligatoire | Valeurs possibles | Compatibilité Android | Compatibilité AndroMate | Défaut |
|---|---|---|---|---|---|---|
ScanDurationMs |
Integer | Non | Durée du scan en millisecondes | Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | 30000 |
RssiMin |
Integer | Non | Force de signal minimale (dBm, ex. -70) ; 0 = pas de filtre |
Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | 0 |
name_filter |
String | Non | Sous-chaîne (insensible à la casse) que le nom de l'appareil doit contenir ; "" = pas de filtre |
Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | "" |
mac_ble |
String | Non | Sous-chaîne que l'adresse MAC de l'appareil doit contenir ; "" = pas de filtre |
Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | "" |
Paramètres de sortie
| Paramètre | Type | Condition | Compatibilité Android | Compatibilité AndroMate | Défaut |
|---|---|---|---|---|---|
json_array_output |
String (tableau JSON) | Toujours, en cas de succès | Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | <ANDROMATE_NULL_VALUE> |
json_array_output
Un tableau JSON des appareils correspondants, ex. [{"mac": "AA:BB:CC:DD:EE:FF", "name": "Capteur01", "rssi": -58}, ...]. Tableau vide si rien n'a correspondu.
Exceptions
| Code | Nom de l'exception | Description |
|---|---|---|
BLE-TASK-001 |
Bluetooth désactivé | Le Bluetooth est désactivé sur l'appareil. |
BLE-TASK-002 |
Bluetooth non supporté | Cet appareil ne supporte pas le Bluetooth. |
ERROR-001 |
Permission non accordée | BLUETOOTH_SCAN ou BLUETOOTH_CONNECT n'a pas été accordée. |
GPS-ERROR-003 |
Localisation désactivée | La localisation de l'appareil est désactivée — requise par Android pour le BLE. |
BLE-TASK-003 |
Format MAC invalide | Le filtre mac_ble est défini mais n'est pas une (sous-)chaîne MAC valide. |
Diagramme d'exécution
flowchart TD
Start([▶ Ble_scanner]) --> Prereq{BLE activé, supporté,\npermissions, localisation OK ?}
Prereq -->|Non| E1[❌ BLE-TASK-001/002\nERROR-001/GPS-ERROR-003]
Prereq -->|Oui| CheckMac{Filtre mac_ble\nformat valide ?}
CheckMac -->|Non| E2[❌ BLE-TASK-003\nINVALID_MAC]
CheckMac -->|Oui| Scan[📡 Démarrer le scan BLE]
Scan --> Filter[🔍 Filtrer chaque résultat :\nRSSI, nom, MAC]
Filter --> Dedup[🗂 Dédupliquer par MAC]
Dedup --> WaitDuration{ScanDurationMs\nécoulé ?}
WaitDuration -->|Non| Filter
WaitDuration -->|Oui| Build[📋 Construire le tableau JSON]
Build --> StoreResult[💾 Stocker json_array_output]
StoreResult --> Success([✅ JsonArrayTaskResult])
E1 --> Error([❌ Exception])
E2 --> Error
style Start fill:#e3f2fd
style Success fill:#c8e6c9
style Error fill:#ffcdd2
style Scan fill:#fff9c4
style StoreResult fill:#c8e6c9
Comment ça fonctionne :
- Vérifications préalables : Bluetooth activé/supporté, permissions, localisation.
- Validation du filtre
mac_ble: s'il est défini, doit être un format d'adresse MAC valide. - Scan : démarre un scan BLE pendant
ScanDurationMsmillisecondes. - Filtrer chaque résultat : ignoré si sous
RssiMin, ou si le nom de l'appareil ne contient pasname_filter, ou si l'adresse ne contient pas le filtremac_ble. - Dédupliquer : chaque adresse MAC n'est signalée qu'une seule fois, même si vue plusieurs fois pendant le scan.
- Stocker : écrit les appareils correspondants sous forme de tableau JSON dans
json_array_output.
Détails des paramètres d'entrée
1. Paramètre d'entrée : ScanDurationMs
Durée du scan, en millisecondes.
Exemple
Détails
- Optionnel — vaut
30000(30 secondes) par défaut.
2. Paramètre d'entrée : RssiMin
Force de signal minimale (dBm) qu'un appareil doit avoir pour être inclus.
Exemple
Détails
- Optionnel —
0(défaut) signifie aucun filtrage RSSI. - Plus négatif = signal plus faible ; ex.
-90est faible/lointain,-40est fort/très proche.
3. Paramètre d'entrée : name_filter
Sous-chaîne (insensible à la casse) que le nom annoncé de l'appareil doit contenir.
Exemple
Détails
- Optionnel — chaîne vide (défaut) signifie aucun filtrage par nom.
- Les appareils sans nom annoncé sont exclus quand ce filtre est défini.
4. Paramètre d'entrée : mac_ble
Sous-chaîne que l'adresse MAC de l'appareil doit contenir — utilisé ici comme filtre, pas comme cible.
Exemple
Détails
- Optionnel — chaîne vide (défaut) signifie aucun filtrage par MAC.