BLE Proxy détection adresse MAC

Bonjour à tous

Je suis nouveau sur le sujet !
J’ai flasher un esp32 il y a peu pour pouvoir

Le morceau de code que j’ai utiliser dans esphome :

substitutions:
  name: "pre-ch-parents"
  friendly_name: PRE CH Parents

packages:
  esphome.bluetooth-proxy: github://esphome/firmware/bluetooth-proxy/esp32-generic.yaml@main

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

api:
  encryption:
    key: MON_PASSWORD_API

ota:
  password: "MON_PASSWORD_OTA"

esp32:
  board: esp32dev
  framework:
    type:  esp-idf

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

web_server:
  port: 80

button:
  - platform: restart
    icon: mdi:power-cycle
    name: "ESP Reboot"
    entity_category: diagnostic
  - platform: shutdown
    name: "ESP Shutdown"

sensor:
  - platform: wifi_signal
    name: "WiFi"
    update_interval: 60s

esp32_ble_tracker:
  scan_parameters:
    interval: 500ms
    window: 500ms
    active: true
  on_ble_advertise:
    - mac_address:
        - MAC1
      then:
        - lambda: |-
            ESP_LOGD("ble_adv", "New BLE device");
            ESP_LOGD("ble_adv", "  address: %s", x.address_str().c_str());
            ESP_LOGD("ble_adv", "  name: %s", x.get_name().c_str());
            ESP_LOGD("ble_adv", "  Advertised service UUIDs:");
            for (auto uuid : x.get_service_uuids()) {
                ESP_LOGD("ble_adv", "    - %s", uuid.to_string().c_str());
            }
            ESP_LOGD("ble_adv", "  Advertised service data:");
            for (auto data : x.get_service_datas()) {
                ESP_LOGD("ble_adv", "    - %s: (length %i)", data.uuid.to_string().c_str(), data.data.size());
            }
            ESP_LOGD("ble_adv", "  Advertised manufacturer data:");
            for (auto data : x.get_manufacturer_datas()) {
                ESP_LOGD("ble_adv", "    - %s: (length %i)", data.uuid.to_string().c_str(), data.data.size());
            }

  on_scan_end:
    - then:
        - lambda: |-
             ESP_LOGD("ble_auto", "The scan has ended!");

bluetooth_proxy:
  active: false

binary_sensor:
  - platform: status
    name: "PRE CH Parents"
  - platform: ble_presence
    mac_address: MAC
    name: "Nut MAC1"
    id: nut_mac1
    min_rssi: -80dB
    on_state:
      then:
        - if:
            condition: 
              binary_sensor.is_on: nut_jerome
            then:
              - homeassistant.service:
                  service: device_tracker.see
                  data:
                    dev_id: nut_mac1
                    location_name: 'Maison'
            else:
              - homeassistant.service:
                  service: device_tracker.see
                  data:
                    dev_id: nut_mac1
                    location_name: 'not_home'

J’ai des device_tracker qui se crée à chaque détection d’une nouvelle adresse MAC de BT et qui s’écrit dans le fichier known_devices.yaml

Par contre si je laisse ça comme ça j’ai l’impression qu’il va trouver à l’infini des adresses MAC !!
Alors certainement des adresses flottantes de windows, iphone, personne passant devant chez moi ou je ne sais quel appareil !

Une fois ma liste d’appareil à détecter est-il possible de stopper cette détection ? Si oui comment ?

Je suis un peu perdu sur ce coup là :frowning:
Merci pour le coup de pouce

Oui dans ton config.yaml dans la partie device tracker tu dois avoir une ligne track_new_device a mettre a false.

Ok je vais regarder car je pense que j’ai rien du tout :slight_smile: sur le sujet

Salut,
tout est expliquer dans la doc :stuck_out_tongue:

Edit:
je me suis tromper de doc:

Alors oui mais pas tout compris en anglais !!
Et sur le PC du taf pas d’accès au traducteur :frowning:
Oui je suis une buse la dessus aussi !

track_new_devices boolean (optional, default: false)
Si les nouveaux appareils découverts sont suivis par défaut.

Si tu active sur true, tout les nouveaux appareils sont ajouter avec l’option track: true dans le known_devices.yaml.

Quand track est sur true, ca créer une entité device tracker qui sera suivie. Si tu met sur false, aucune entité est créer et suivie.

1 « J'aime »

C’est ce que je viens de comprendre ce soir à la maison :slight_smile:

Par contre je me pose une question existentielle dont je n’arrive pas clairement à trouver la réponse !
A quoi sert exactement :

bluetooth_proxy:
   active: true

car si je ne le mets pas cela semble fonctionner en détection de mes nut !

pareil si je met le framework à esp-idf à la place de arduino j’ai des erreurs de compilation avec par exemple ce binary :

  - platform: status
    name: "ESP Nut"

Si je commente ces deux lignes alors plus l’erreur !

et si je reste sur arduino alors ça marche aussi :thinking:

Voici le code que j’ai et les log que j’ai avec (il y a peut être des choses inutiles je suis en test et tente de comprendre les effets des lignes de codes) :

esphome:
  name: esp-nut
  friendly_name: ESP nut

esp32:
  board: esp32dev
  framework:
    type: arduino #esp-idf # Changement à faire en 1er

# Enable logging
logger:
  level: debug #very_verbose, debug

# Enable Home Assistant API
api:
  encryption:
    key: "l8PuF2JtovowXUlFJZGb3wgPJtnUvHOILoy0h6mnRbA="

ota:

web_server:
  port: 80

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true
  manual_ip:
    static_ip: 192.168.1.163
    gateway: 192.168.1.1
    subnet: 255.255.255.0
    dns1: 192.168.1.1

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-C4945C"
    password: "2D4aIVPlLWSt"

captive_portal:

esp32_ble_tracker:        
  scan_parameters:
    duration: 60s
    active: true
  on_ble_advertise:
    - mac_address:
        - CD:16:83:11:EF:38
        - D2:1C:3B:44:54:D9
        - D3:E2:D7:F9:5E:D9
      then:
        - lambda: |-
            ESP_LOGD("ble_adv", "New BLE device");
            ESP_LOGD("ble_adv", "  address: %s", x.address_str().c_str());
            ESP_LOGD("ble_adv", "  name: %s", x.get_name().c_str());
            ESP_LOGD("ble_adv", "  Advertised service UUIDs:");
            for (auto uuid : x.get_service_uuids()) {
                ESP_LOGD("ble_adv", "    - %s", uuid.to_string().c_str());
            }
            ESP_LOGD("ble_adv", "  Advertised service data:");
            for (auto data : x.get_service_datas()) {
                ESP_LOGD("ble_adv", "    - %s: (length %i)", data.uuid.to_string().c_str(), data.data.size());
            }
            ESP_LOGD("ble_adv", "  Advertised manufacturer data:");
            for (auto data : x.get_manufacturer_datas()) {
                ESP_LOGD("ble_adv", "    - %s: (length %i)", data.uuid.to_string().c_str(), data.data.size());
            }

  on_scan_end:
    - then:
        - lambda: |-
             ESP_LOGD("ble_auto", "The scan has ended!");

binary_sensor:
  - platform: ble_presence
    mac_address: CD:16:83:11:EF:38
    name: "Nut Jérôme ESP"
    id: nut_jerome_esp
    min_rssi: -80dB
  - platform: ble_presence
    mac_address: D3:E2:D7:F9:5E:D9
    name: "Nut Find 02 ESP"
    id: nut_find_02_esp
    min_rssi: -80dB
  - platform: status
    name: "ESP Nut"

sensor:
  - platform: wifi_signal
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"

  - platform: copy
    source_id: wifi_signal_db
    name: "WiFi Signal Percent"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "Signal %"
    entity_category: "diagnostic"

  - platform: uptime
    name: "BLE Proxy Uptime"

  - platform: internal_temperature
    name: "Internal Temperature"

button:
  - platform: restart
    name: "BLE Proxy Restart"

et les logs associés :

[21:49:15][D][ble_adv:052]: New BLE device
[21:49:15][D][ble_adv:053]:   address: D3:E2:D7:F9:5E:D9
[21:49:15][D][ble_adv:054]:   name: nut
[21:49:15][D][ble_adv:055]:   Advertised service UUIDs:
[21:49:15][D][ble_adv:057]:     - 0x1803
[21:49:15][D][ble_adv:059]:   Advertised service data:
[21:49:15][D][ble_adv:061]:     - 0x180A: (length 6)
[21:49:15][D][ble_adv:063]:   Advertised manufacturer data:
[21:49:15][D][ble_adv:065]:     - 0x0059: (length 2)
[21:49:16][D][internal_temperature:052]: Ignoring invalid temperature (success=0, value=53.3)

j’ai ajouté dans mon fichier device_tracker.yaml ceci :

- platform: bluetooth_le_tracker
  interval_seconds: 15
  consider_home: 60
  track_new_devices: false # Permet d'activer le tracking des nouveaux devices
  track_battery: false # permet de regarder l'état de la batterie
  track_battery_interval: 1

et il semble que j’ai bien des données dans le fichier en ayant mis true sur le tracking bien sur : known_devices.yaml

Bref voilà je cherche à savoir pourquoi le BLE proxy est activé chez certain

Salut,

active le proxy des connexions actives

Avertissement:

Connexions actives

Le proxy Bluetooth d’ESPHome fournit à Home Assistant un nombre maximum de 3 connexions actives simultanées. Les appareils qui maintiennent une connexion active continue en consommeront une en permanence, tandis que les appareils qui effectuent des déconnexions et des reconnexions périodiques permettront d’en utiliser plus de 3 (sur une base statistique). Les données de capteur diffusées passivement (annoncées par certains appareils sans connexion active) sont reçues séparément de celles-ci et ne sont pas limitées à un nombre spécifique.

Le composant de la plateforme ESP32 doit être configuré pour utiliser le esp-idf framework, car celui arduino -ci utilise beaucoup plus de mémoire et fonctionne mal avec le proxy Bluetooth activé. Lorsque vous passez de arduino à esp-idf , assurez-vous de mettre à jour l’appareil avec un câble série car la table de partition est différente entre les deux frameworks car les mises à jour du composant de mise à jour OTA ne modifieront pas la table de partition.

Faut utiliser esp-idf ( ta l’explication juste au dessus ), je crois que ton soucis est d’avoir ESP en majuscule dans le name. J’avais eu un soucis identique avec un name « esp32s3 », et d’enlever esp dans le name c’était passer a la compilation.

Pour passer de arduino a esp-idf, faut utiliser un cable USB, par OTA ca fonctionnera pas.

2 « J'aime »

Merci pour tes éclairages @WarC0zes
Je commence à comprendre un peu plus les échecs que j’ai pu avoir sur les flash tentés.

Et je commence à mieux cerner le fonctionnement je pense.
Si BLE proxy alors les devices peuvent être vu par plusieurs ESP
Sinon c’est un seul ESP qui va le voir

C’est surtout important si on a des devices qui occupe la ligne de manière continue.
Dans le cadre des NUT possible que ceci soit pas forcément nécessaire à voir je sais plus leur mode de connexion.

Est ce un bon résumé ?

Bon si faut flasher en direct via USB je crois que je vais m’installer un esphome sur mon PC bureautique pour faire ceci car la flemme de descendre au sous sol pour flasher les petits joujou :laughing:

Merci pour t’on explication en Arduino et esp-idf

En gros oui. J’ai pas de configue dans mes bluetooth proxy pour mes thermomètres et chaque bluetooth proxy ce débrouille pour récupérer les trames.

Je n’est pas de Nuts je connais pas leur type de connexion.

Tu peu tout faire du webserver esphome https://web.esphome.io/ , pas besoin de l’installer.
Tu peu aussi, créer un firmware avec le dashboard ESPHome sur HA puis le téléchargher et flasher avec le webserver.

pour dowload un firmware, quand tu installe, tu choisis Manual donwload et nouveau format.

Bonjour

Alors j’ai cheminé un peu sur le sujet avec de bonnes et de mauvaises surprises :slight_smile:

J’ai vu que le flash est plus simple enfin avec moins d’erreur en direct depuis Esphome HA qu’en OTA notamment pour le passage du Framework arduino à esp-idf.

Ensuite il ne faut pas passer à esp-idf de suite mais créer tous les capteurs que l’on souhaite avec le framework arduino
image image

Et seulement après cette action il faut passer en esp-idf et flasher depuis la VM HA pour mon cas.

J’ai pas encore tout compris sur le BLE proxy

mais si on regarde en début de code, les lignes :

packages:
  esphome.bluetooth-proxy: github://esphome/firmware/bluetooth-proxy/esp32-generic.yaml@main

et si l’on regarde le git correspondant

lignes 13 à 16

esp32:
  board: esp32dev
  framework:
    type: esp-idf

il est déjà indiqué esp-dif

je ne pense pas que ce soit donc utile de le re-spécifier dans le code après …

si je me trompe alors metez moi une :rightwards_hand:

1 « J'aime »

Oui, ta bien compris.
j’ai rien spécifier dans ma config.

substitutions:
  name: atom-bluetooth-proxy-854638
  friendly_name: Bluetooth Proxy 854638
packages:
  esphome.bluetooth-proxy: github://esphome/firmware/bluetooth-proxy/m5stack-atom-lite.yaml@main
esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}
api:
  encryption:
    key: ekgxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

sensor:
  - platform: wifi_signal
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"

  - platform: copy
    source_id: wifi_signal_db
    name: "WiFi Signal Percent"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "Signal %"
    entity_category: "diagnostic"

  - platform: uptime
    name: "BLE Proxy Uptime"

  - platform: internal_temperature
    name: "Internal Temperature"

switch:
  - platform: restart
    name: "BLE Proxy Restart"

binary_sensor:
  - platform: status
    name: "BLE Proxy Statut"

Ok j’aurais dû remettre mon dernier code vous avez raison :stuck_out_tongue_winking_eye: car j’ai que la déclaration esp-idf et pas le package.

Pour le coup je ne sais pas trop lequel il vaut mieux utiliser et lequel est le plus léger etc…

Sans avoir réfléchi plus que ça (au café du matin) je dirais le package car en lien direct avec le github et esp-idf doit aussi embarquer des éléments non nécessaires à l’usage que j’ai

Vous ok avec ça ?

Oui Jérome car si il y a une mise a jour tu en profite …

salut c’est le code que tu mes dans t’est esp?

Salut,
oui c’est le code que j’ai pour mes esp Atom lite. Faut bien choisir le package pour ton ESP.

packages:
  esphome.bluetooth-proxy: github://esphome/firmware/bluetooth-proxy/m5stack-atom-lite.yaml@main
1 « J'aime »

@jerome6994 comment tu a déclaré les appareils que tu suis?

Avec les adresses Mac