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 ) ?
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.
Normal, faut les ajouter dans le code du esp
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.
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.
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.