Est-ce normal que mes ESP ne déconnectent et se reconnectent régulièrement?

Bonsoir, j’ai 5 Proxy bluetooth et un ESP pour mon électrolyseur.
Je me suis mis à les surveiller avec l’intégration PING et je m’aperçois qu’ils se déconnectent tous régulièrement. Est-ce un comportement normal et sinon y a-t-il un moyen de conserver la connexion ?


Aussi souvent c’est pas vraiment normal, soit tu as un soucis de Wifi ou de portée ou alors d’alimentation de tes ESP qui les rend instable ?

Bonjour,
pourquoi utiliser un ping, au lieu d’un sensor uptime ou statut ( sous esphome ) ?
image

Merci , quel genre de souci wifi cela peut-il être ?
Trop de devices ?(85)
Trop de répéteurs ?(3)
Deux réseaux différents dans la maison ?
Les alims sont de 1a

Peu être limite, j’utilise des 1.5A voir 2A.

je ne trouve pas ces sensors sur mes proxy bluetooth

Normal, faut les ajouter dans le code du esp :slight_smile:

J’utilise ce code sur mes bluetooth proxy avec des atom lite.

sensor:
  - platform: wifi_signal
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    internal: true

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

  - platform: uptime
    id: uptime_sec
    update_interval: 60s
    internal: true

switch:
  - platform: restart
    name: Restart
    entity_category: "diagnostic"

binary_sensor:
  - platform: status
    name: Statut
    entity_category: "diagnostic"

text_sensor:
  - platform: template
    id: lite_uptime
    name: Uptime
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      if ( days ) {
        return { (to_string(days) +"d " + to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( hours ) {
        return { (to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( minutes ) {
        return { (to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else {
        return { (to_string(seconds) +"s ").c_str() };
      }
    icon: mdi:clock-start
    update_interval: 60s
    entity_category: "diagnostic"

code a utiliser avec esp-idf. pas le même code pour le template uptime sous arduino.

Ah oui je comprends l’erreur que j’ai eu en voulant l’injecter; Qu’est-ce qu’il faudrait changer pour que ça soit compatible avec l’esp32 arduino ?

Pour arduino, le template uptime:

text_sensor:
  - platform: template
    name: Uptime
    id: lite_uptime
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      if ( days ) {
        return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s ").c_str() };
      } else if ( hours ) {
        return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s ").c_str() };
      } else if ( minutes ) {
        return { (String(minutes) +"m "+ String(seconds) +"s ").c_str() };
      } else {
        return { (String(seconds) +"s ").c_str() };
      }
    icon: mdi:clock-start
    update_interval: 60s
    entity_category: "diagnostic"

to_string pour esp-idf, String pour arduino.

1 « J'aime »

bon j’ai quand même une erreur à la fin


juste avec ce code

substitutions:
  name: esp32-bluetooth-proxy-529468
packages:
  esphome.bluetooth-proxy: github://esphome/bluetooth-proxies/esp32-generic.yaml@main
esphome:
  name: ${name}
  name_add_mac_suffix: false


wifi:
  ssid: ***
  password: ****
sensor:
  - platform: wifi_signal
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    internal: true

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

  - platform: uptime
    id: uptime_sec
    update_interval: 60s
    internal: true

switch:
  - platform: restart
    name: Restart
    entity_category: "diagnostic"

binary_sensor:
  - platform: status
    name: Statut
    entity_category: "diagnostic"

tu utilise esp-idf

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

le nouveau lien du package

ta pas mis le template pour l’uptime ( pour esp-idf ).

text_sensor:
  - platform: template
    id: lite_uptime
    name: Uptime
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      if ( days ) {
        return { (to_string(days) +"d " + to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( hours ) {
        return { (to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( minutes ) {
        return { (to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else {
        return { (to_string(seconds) +"s ").c_str() };
      }
    icon: mdi:clock-start
    update_interval: 60s
    entity_category: "diagnostic"

Faut faire un clean build files du dossier et recompiler.
image

je viens de lire (traduction) ça

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)
sur le site Proxy Bluetooth, ceci explique peut-être ces déconnexions

C’est à dire ? Clean build files ?

Dans le dashboard de esphome, sur le esp a compiler, tu va sur les 3 points et fait clean build files.
Sa efface tout le dossier de compilation de c’est esp et ca retéléchargera et compilera du début quand tu lancera le flash.

esp-idf me fais le même genre d’erreur quand j’ai déjé compiler un firmware et que je rajoute un sensor et recompile, il plante. Je clean le dossier et refait la compilation et ca passe.

Bon désolé, je suis vraiment une brèle en ESP, je ne comprends pas ce que je dois mettre en entier dans le code.
voilà ce que j’ai

substitutions:
  name: esp32-bluetooth-proxy-1346fc
packages:
  esphome.bluetooth-proxy: github://esphome/bluetooth-proxies/esp32-generic.yaml@main
esphome:
  name: ${name}
  name_add_mac_suffix: false


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

Ta configuration devrais être comme telle:

substitutions:
  name: esp32-bluetooth-proxy-1346fc
  friendly_name: Bluetooth Proxy 1346fc
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: xxxxxxxxxxxxxxxxxxxxxxxxxxx


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

sensor:
  - platform: wifi_signal
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    internal: true

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

  - platform: uptime
    id: uptime_sec
    update_interval: 60s
    internal: true

switch:
  - platform: restart
    name: Restart
    entity_category: "diagnostic"

binary_sensor:
  - platform: status
    name: Statut
    entity_category: "diagnostic"

text_sensor:
  - platform: template
    id: lite_uptime
    name: Uptime
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      if ( days ) {
        return { (to_string(days) +"d " + to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( hours ) {
        return { (to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( minutes ) {
        return { (to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else {
        return { (to_string(seconds) +"s ").c_str() };
      }
    icon: mdi:clock-start
    update_interval: 60s
    entity_category: "diagnostic"

Merci beaucoup api key: xxxx —> je mets n’importe quoi ?

Normalement, si ta ajouter ton esp dans le dasboard ESPHome, il ta créer un clé api.
Si t’en as pas, tu peu ajouter un nouveau device dans le dashboard esphome. Tu choisir esp32, il te créer une clé api, a la fin tu fais skip ( pas install ) . Il t’ajoute un nouveau device , et récupère la clé dans le yaml et utilise la pour ton bluetooth proxy.
Tu peu supprimer le nouveau device créer après que t’es récupérer la clé.

Bon écoute, un grand merci, j’ai pris la clé api de la doc D5Ko+g2/ceHat/uQZRGdQ+07qcjNlNfekYZLWRS5374=
c’est passé, la compilation s’est parfaitement déroulée et j’ai bien les entités
Donc bravo pour ton aide précieuse

une dernière question, est-ce que je pourrais utiliser toujours la même clé API pour chaque ESP ?

Je sais pas, mais je pense qu’il faut une clé différente.