Je cherche à créer un Json qui contient la liste des SSID WiFi accessibles.
Pour l'instant, j'ai fait un programme de simulation car j'ai un soucis de sérialisation.
Voici ce que je cherche à obtenir :
Donc tu cherches à créer un tableau avec 5 objets.
Cette ligne est erronée puisque le json à générer doit contenir un tableau 5 objets et chaque objet ayant de 3 item ce qui donnerait
const int capacity = JSON_ARRAY_SIZE(5) + 5* JSON_OBJECT_SIZE(3);
Cependant si on fait imprimer capacity avec cette définition on trouve 192 octets alors que si on utilise le simulateur sur le site arduinojson.org avec le modèle que tu veux obtenir il indique qu'il faut réserver au moins 384 octets.
Si tu remplaces
const int capacity = JSON_ARRAY_SIZE(2) + 4 * JSON_OBJECT_SIZE(2);
par
const int capacity = 384;
Le programme fonctionne
EDIT: l'essai du programme et la simulation ont été fait sur AVR pas ESP32 d'où l'écart avec les valeurs indiquées plus bas
J'avais bêtement recopié la formule de calcul sur un exemple.
Cependant avec 384, j'arrête à 3. Si je mets 512, j'arrive à 5.
Je vais tester quelle valeur mettre pour atteindre potentiellement 10.
L'objectif est de liste tous les SSID visibles autour de l'ESP32, dans certains quartiers, ils peut y en avoir plusieurs dizaines. Je vais me limiter à 10.
Cordialement
il vous faut déterminer une taille max pour les 3 éléments.
Par exemple la spec WiFi dit qu'un SSDI ne peut pas avoir plus de 32 caractères.
Pour le RSSI, En Wi-Fi les valeurs usuelles de RSSI varient de −30 dBm à −90 dBm. En 2G et 3G, on varie entre -30 dBm et −120 dBm selon la distance avec l'antenne émettrice et on peut aller jusqu'à −140 dBm dans les réseaux 4G LTE. On pourrait coder cela en entier sur un octet entre 30 et 140 par exemple.
j'imagine que encrypt c'est le mot de passe ? un mot de passe fait au max 63 caractères dans la spec 802.11 et 64 pour une clé PSK
➜ si vous voulez réserver la place max pour chaque entrée et ainsi rester flexible, il vous faudra 32+1+64 octets (sans compter un caractère nul de terminaison des cStrings) = 97 octets. En rajoutant le caractère null, ça fait 99. et 100 si vous voulez coder le RSSI directement sous forme int16_t
donc pour 10 entrées, sous forme de structure, il faudrait prévoir 1000 octets