pvvx
Активный участник сообщества
Очень часто ESP32 пропускает прием рекламных пакетов.
Что нужно сделать чтобы этого не происходило?
Для примера - устройство дает рекламу на 3 стандартных канала каждые 2.5 сек.
Сниффер на TLSR8266 принимает все пакеты, даже если от значительно дальше по расстоянию от ESP32 и устройства транслирующего рекламу. Можно и вместе сложить - смысл и поведение ESP32 не меняет.
Такие дыры в приеме, постоянный перезапуск сканирования 5 сек:
При этом подбор методом тыка периодов, окна, времени сканирования не сильно это дело меняет.
Немного помогает опустошение буфера сканирования, но оно и понятно - за период сканирования после очистки буфера заново набираются новые по MAC, т.к. фильтрация по MAC начинается снова.
Скетч примерно такой (ESP32 при сканировании ищет нужный MAC и разбирает рекламу только от него):
Что нужно сделать чтобы этого не происходило?
Для примера - устройство дает рекламу на 3 стандартных канала каждые 2.5 сек.
Сниффер на TLSR8266 принимает все пакеты, даже если от значительно дальше по расстоянию от ESP32 и устройства транслирующего рекламу. Можно и вместе сложить - смысл и поведение ESP32 не меняет.
Такие дыры в приеме, постоянный перезапуск сканирования 5 сек:
Код:
06:29:09.377 -> Found device, MAC: 33:72:99:ea:c5:e9
06:29:09.650 -> Found device, MAC: 40:16:3b:0c:3d:da
06:29:09.650 -> Found device, MAC: a4:c1:38:05:4e:0a
06:29:09.784 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:29:09.967 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:29:11.369 -> Found device, MAC: c8:f1:3b:3d:3f:ac
06:29:11.733 -> Found device, MAC: a4:c1:38:21:87:88
06:29:14.355 -> Time since boot: 517. New scan.
06:29:14.400 -> Found device, MAC: 40:16:3b:0c:3d:da
06:29:14.625 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:29:15.125 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:29:16.345 -> Found device, MAC: a4:c1:38:05:4e:0a
06:29:16.884 -> Found device, MAC: 33:72:99:ea:c5:e9
06:29:19.330 -> Time since boot: 522. New scan.
06:29:19.464 -> Found device, MAC: 40:16:3b:0c:3d:da
06:29:19.464 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:29:19.464 -> Found device, MAC: 33:72:99:ea:c5:e9
06:29:19.509 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:29:19.734 -> Found device, MAC: a4:c1:38:05:4e:0a
06:29:20.185 -> Found device, MAC: a4:c1:38:21:87:88
06:29:24.354 -> Time since boot: 527. New scan.
06:29:24.445 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:29:24.582 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:29:24.764 -> Found device, MAC: 40:16:3b:0c:3d:da
06:29:24.945 -> Found device, MAC: 33:72:99:ea:c5:e9
06:29:25.351 -> Found device, MAC: a4:c1:38:21:87:88
06:29:26.436 -> Found device, MAC: c8:f1:3b:3d:3f:ac
06:29:26.796 -> Found device, MAC: 78:11:dc:6d:41:38
06:29:26.886 -> Found device, MAC: c8:d5:41:38:ea:0f
06:29:29.374 -> Time since boot: 532. New scan.
06:29:29.421 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:29:29.556 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:29:29.917 -> Found device, MAC: 40:16:3b:0c:3d:da
06:29:30.052 -> Found device, MAC: a4:c1:38:05:4e:0a
06:29:30.279 -> Found device, MAC: 33:72:99:ea:c5:e9
06:29:34.396 -> Time since boot: 537. New scan.
06:29:34.441 -> Found device, MAC: 40:16:3b:0c:3d:da
06:29:34.530 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:29:34.803 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:29:35.032 -> Found device, MAC: 33:72:99:ea:c5:e9
06:29:36.790 -> Found device, MAC: 78:11:dc:6d:41:38
06:29:36.926 -> Found device, MAC: c8:d5:41:38:ea:0f
06:29:39.409 -> Time since boot: 542. New scan.
06:29:39.453 -> Found device, MAC: 40:16:3b:0c:3d:da
06:29:39.544 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:29:39.816 -> Found device, MAC: 33:72:99:ea:c5:e9
06:29:41.129 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:29:41.943 -> Found device, MAC: c8:d5:41:38:ea:0f
06:29:41.943 -> Found device, MAC: a4:c1:38:05:4e:0a
06:29:42.350 -> Found device, MAC: a4:c1:38:21:87:88
06:29:44.428 -> Time since boot: 547. New scan.
06:29:44.473 -> Found device, MAC: 40:16:3b:0c:3d:da
06:29:44.594 -> Found device, MAC: 33:72:99:ea:c5:e9
06:29:44.594 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:29:44.968 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:29:45.238 -> Found device, MAC: c8:f1:3b:3d:3f:ac
06:29:45.688 -> Found device, MAC: a4:c1:38:21:87:88
06:29:46.813 -> Found device, MAC: 78:11:dc:6d:41:38
06:29:48.717 -> Found device, MAC: a4:c1:38:05:4e:0a
06:31:06.369 -> Time since boot: 552. New scan.
06:31:06.369 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:31:06.369 -> Found device, MAC: 33:72:99:ea:c5:e9
06:31:06.369 -> Found device, MAC: a4:c1:38:05:4e:0a
06:31:06.369 -> Found device, MAC: 40:16:3b:0c:3d:da
06:31:06.369 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:31:06.369 -> Time since boot: 557. New scan.
06:31:06.369 -> Found device, MAC: 33:72:99:ea:c5:e9
06:31:06.369 -> Found device, MAC: 40:16:3b:0c:3d:da
06:31:06.369 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:31:06.369 -> Found device, MAC: a4:c1:38:05:4e:0a
06:31:06.369 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:31:06.369 -> Found device, MAC: a4:c1:38:21:87:88
06:31:06.369 -> Time since boot: 562. New scan.
06:31:06.369 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:31:06.369 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:31:06.369 -> Found device, MAC: 40:16:3b:0c:3d:da
06:31:06.369 -> Found device, MAC: 33:72:99:ea:c5:e9
06:31:06.369 -> Found service '181a' data len: 17, 10161a18a4c1380b5eed00a229550b9b1f
06:31:06.369 -> MAC: a4c1380b5eed
06:31:06.369 -> Temp: 16.2°, Humidity: 41%, Vbatt: 2971, Battery: 85%, cout: 31
06:31:06.369 -> Found device, MAC: a4:c1:38:21:87:88
06:31:06.369 -> Found device, MAC: 40:16:3b:0c:3d:da
06:31:06.369 -> Found device, MAC: 33:72:99:ea:c5:e9
06:31:06.369 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:31:06.369 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:31:06.369 -> Found device, MAC: a4:c1:38:05:4e:0a
06:31:06.369 -> New Data to LCD: Temp: 16.2°, Humidity: 41% : 22a20029003ca0
06:31:06.369 -> Time since boot: 567. New scan.
06:31:06.369 -> Found device, MAC: 40:16:3b:0c:3d:da
06:31:06.369 -> Found device, MAC: 90:dd:5d:a4:c2:b1
06:31:06.369 -> Found device, MAC: 48:4d:1e:a8:0b:57
06:31:06.369 -> Found device, MAC: 33:72:99:ea:c5:e9
06:31:06.369 -> Found device, MAC: a4:c1:38:05:4e:0a
06:31:06.369 -> Found service 'fe95' data len: 22, 151695fe50305b051fed5e0b38c1a40a100155029b0b
06:31:06.369 -> CTRL: 3050 DEVID: 055b MAC: a4c1380b5eed
06:31:06.369 -> Battery: 85%, 2971 mV
06:31:06.369 -> count: 31
...
Немного помогает опустошение буфера сканирования, но оно и понятно - за период сканирования после очистки буфера заново набираются новые по MAC, т.к. фильтрация по MAC начинается снова.
Скетч примерно такой (ESP32 при сканировании ищет нужный MAC и разбирает рекламу только от него):
ATC_MiThermometer/esp32/BLE_term_lcd/BLE_term_lcd.ino at master · pvvx/ATC_MiThermometer
Custom firmware for the Xiaomi Thermometers and Telink Flasher - pvvx/ATC_MiThermometer
github.com