Bonjour,
Que voulez-vous dire par schéma de câblage ?
Le WT32-ETH01 est un esp32 intégrant le « module Ethernet », il n’y a rien à câbler pour l’utilisation en Ethernet
Mcp
Bonjour,
Que voulez-vous dire par schéma de câblage ?
Le WT32-ETH01 est un esp32 intégrant le « module Ethernet », il n’y a rien à câbler pour l’utilisation en Ethernet
Mcp
Bonjour, je parlais pour l’alimentation. J’ai un modele qui est ethernet et wifi. J’ai trouver sur internet un schema de cablage pour raccorder l’alimentation 5v mais par contre pour l’ethernet je ne trouve pas. Merci
Désolé, mais je ne comprends pas ?
Pour l’Ethernet, il n’y pas de schéma, il suffit de brancher la prise sur le module
Que ne trouvez-vous pas ?
Bonjour a tous je reviens sur ce fil le systeme marche niquel sous esphome ethernet avec Just salt duo pro tout cela est très stable par contre j’aurai aimé épurer le code de tout les valeurs qu on a pas réussi à interpréter pour avoir que l essentiel. Et voir si y’a des optimisation possible. Alors pour ne pas parti de zéro si l un d entre vous la déjà fait.
Salut je suis désoler j ai acheter le meme module que cyber_chris et je vais reprendre le dev mais pour le moment j ai beaucoup de boulots donc je n ai pas pu mi remettre
Bonjour,
Quelqu’un a essayé d’exploiter le port RS485 ?
Ça me semble plus fiable en terme de connectivité par rapport au bluetooth.
J’ai commandé un convertisseur RS485 vers USB pour commencer à voir ce que je peux en tirer.
Cest du modbus mais j’ai trouvé aucune doc
Oui idem, et la marque n’est pas très coopérative :
"Bonjour,
Le port MODBUS est réservé à Pool Technologie.
Il n’est pas accessible aux particuliers ou autres entreprises, même en lecture seule.
De même le dialogue bluetooth est développé pour notre application epool, il n’est pas destiné à être diffusé.
Nous ne diffusons pas les protocoles, même juste les tables « sortantes ».
Désolé."
Bref je vais commencer à voir ce qu’il est possible de faire ce week-end ![]()
Pour info j’ai créé un sujet dédié pour l’intégration via modbus:
vous avez trouver le paramètre pour la mise en veille ?
Bonjour,
Impossible d’installer sur la derniere version d’ESPHOME de HAOS 2025.4.0
J’ai ce message d’erreur :
INFO ESPHome 2025.4.0 INFO Reading configuration /config/esphome/racer-bt.yaml… INFO Detected timezone ‹ Europe/Paris › Failed config esp32_ble_tracker: None {} esp32_ble_tracker exceeded
max_connections: components attempted to consume 4 connection slot(s) out of available configured maximum 3 connection slot(s); Decrease the number of BLE clients (bluetooth_proxy, bluetooth_proxy, bluetooth_proxy, ble_client) to stay under the 3 connection slot(s) limit.
Pour pouvoir installer je dois mettre false sur cette ligne.
bluetooth_proxy:
active: false
Mais je pense que ce n’est pas la bonne solution. Qui peut m’aider @Ricky_D ? J’ai un ESP32
Pas fait l’update encore
Essaye de rajouter:
max_connections: 4
Tu as réussi avec la modification ?
Bonjour Cyber_Chris,
Merci pour ta réponse et désolé pour le délai de réponse, j’ai eu un travail monstre.
J’ai mis ceci
–
bluetooth_proxy:
active: True
max_connections: 4
globals:
---- ou encore
bluetooth_proxy:
active: True
max_connections: 4
globals:
Et j’ai ceci :
INFO ESPHome 2025.4.1
INFO Reading configuration /config/esphome/electrolyseur-bt.yaml...
Failed config
bluetooth_proxy: [source /config/esphome/electrolyseur-bt.yaml:41]
active: True
[max_connections] is an invalid option for [bluetooth_proxy]. Did you mean [connections], [connection_slots]?
max_connections: 4
INFO ESPHome 2025.4.1
INFO Reading configuration /config/esphome/electrolyseur-bt.yaml…
INFO Unable to import component max_connections: No module named ‹ esphome.components.max_connections ›
Failed configmax_connections: [source /config/esphome/electrolyseur-bt.yaml:43]
Component not found: max_connections.
4
–
Merci pour ton aide.
Bonjour
J’ai le meme soucis avec ce
max_connections: 4
Par contre j’ai peut etre une piste si je mets :
bluetooth_proxy:
active: True
connection_slots: 2
time:
- platform: homeassistant
id: homeassistant_time
on_time:
- seconds: 0
minutes: /5
then:
- switch.turn_off: ble_switch_com
- delay: 20s
- switch.turn_on: ble_switch_com
esp32_ble_tracker:
max_connections: 3
En tout cas, la validation elle passe
Je vais compiler et tester tout ca
Merci de votre aide
est ce que l’un d’entre vous trouver les valeurs alarme? manque d’eau ou ph .hivernage en fait il ne manque plus grand chose pour terminer peut être la focntion volet fermé
J’arrive un peu en retard sur le projet et je n’ai pas pris le temps de lire la conversation complète.
De mon côté, j’ai commencé à décompiler l’app epool pour trouver de l’info sur le protocole et peut-être éventuellement trouver plus de détails. Je vais injecter du code pour mieux visualiser le tout mais pour l’instant voici ce que j’ai:
1: “ph_standard” un byte, divisé par 10 (quand même surprenant que ce ne soit pas n/255*14)
r26 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt8;
r2 = r1.bind(r2)();
r1 = 10;
r1 = r2 / r1;
r0['ph_standard'] = r1;
return r0;
};
2: “ph_premium”, aucune idée ce que c’est mais on divise par 100…
r26 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt16BE;
r2 = r1.bind(r2)();
r1 = 100;
r1 = r2 / r1;
r0['ph_premium'] = r1;
return r0;
};
3: “electrolysis_production”
r25 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt8;
r1 = r1.bind(r2)();
r0['electrolysis_production'] = r1;
return r0;
};
4: “dosing_production”
r24 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt16BE;
r1 = r1.bind(r2)();
r0['dosing_production'] = r1;
return r0;
};
5: “orp_standard” 2 bytes ou 1 byte, basé sur un param
r23 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
_fun21419: for(var _fun21419_ip = 0; ; ) switch(_fun21419_ip) {
r2 = a3;
r1 = a0;
r0 = 6;
if(!(!(r1 < r0))) { _fun21419_ip = 32; continue _fun21419 }
r0 = {};
r1 = r2.readUInt16BE;
r1 = r1.bind(r2)();
r0['orp_standard'] = r1;
return r0;
r0 = {};
r1 = r2.readUInt8;
r2 = r1.bind(r2)();
r1 = 10;
r1 = r2 * r1;
r0['orp_standard'] = r1;
return r0;
}
};
6: “orp_premium” 2 bytes
r22 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt16BE;
r1 = r1.bind(r2)();
r0['orp_premium'] = r1;
return r0;
};
7: “chlorine_standard” 2 bytes
r20 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt8;
r2 = r1.bind(r2)();
r1 = 10;
r1 = r2 / r1;
r0['chlorine_standard'] = r1;
return r0;
};
8: “temperature_offset”, 1 byte, -100 et /10 ?
r19 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r1 = a3;
r0 = _closure1_slot2;
r2 = r0.default;
r0 = r1.readUInt8;
r3 = r0.bind(r1)();
r1 = r2.prototype;
r1 = Object.create(r1, {constructor: {value: r2}});
r4 = r1;
r0 = new r4[r2](r3, r2);
r2 = r0 instanceof Object ? r0 : r1;
r1 = r2.minus;
r0 = 100;
r2 = r1.bind(r2)(r0);
r1 = r2.dividedBy;
r0 = 10;
r1 = r1.bind(r2)(r0);
r0 = r1.toNumber;
r1 = r0.bind(r1)();
r0 = {};
r0['temperature_offset'] = r1;
return r0;
};
9: “temperature_premium”, 2 bytes
r18 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
_fun21423: for(var _fun21423_ip = 0; ; ) switch(_fun21423_ip) {
r1 = a3;
r0 = _closure1_slot2;
r3 = r0.default;
r0 = r1.readUInt16BE;
r7 = r0.bind(r1)();
r1 = r3.prototype;
r1 = Object.create(r1, {constructor: {value: r3}});
r8 = r1;
r0 = new r8[r3](r7, r6);
r3 = r0 instanceof Object ? r0 : r1;
r1 = r3.dividedBy;
r0 = 10;
r1 = r1.bind(r3)(r0);
r0 = r1.toNumber;
r4 = r0.bind(r1)();
r1 = _closure1_slot0;
r3 = _closure1_slot1;
r0 = 4;
r0 = r3[r0];
r3 = undefined;
r0 = r1.bind(r3)(r0);
r1 = r0.isAmericanConfiguration;
r0 = a2;
r5 = r1.bind(r3)(r0);
r0 = {};
r1 = r4;
if(!r5) { _fun21423_ip = 144; continue _fun21423 }
:
r5 = _closure1_slot0;
r6 = _closure1_slot1;
r2 = 5;
r2 = r6[r2];
r2 = r5.bind(r3)(r2);
r2 = r2.toFahrenheit;
r1 = r2.bind(r3)(r4);
:
r0['temperature_premium'] = r1;
return r0;
}
10: “salt”, encore une diff au niveau des unités, ceux qui ont un “moov” vs “epool” auront une valeur différente sur l’appareil.
r17 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
_fun21424: for(var _fun21424_ip = 0; ; ) switch(_fun21424_ip) {
r1 = a3;
r0 = _closure1_slot2;
r3 = r0.default;
r0 = r1.readUInt8;
r7 = r0.bind(r1)();
r1 = r3.prototype;
r1 = Object.create(r1, {constructor: {value: r3}});
r8 = r1;
r0 = new r8[r3](r7, r6);
r3 = r0 instanceof Object ? r0 : r1;
r1 = r3.dividedBy;
r0 = 10;
r1 = r1.bind(r3)(r0);
r0 = r1.toNumber;
r4 = r0.bind(r1)();
r1 = _closure1_slot0;
r3 = _closure1_slot1;
r0 = 4;
r0 = r3[r0];
r3 = undefined;
r0 = r1.bind(r3)(r0);
r1 = r0.isAmericanConfiguration;
r0 = a2;
r5 = r1.bind(r3)(r0);
r0 = {};
r1 = r4;
if(!r5) { _fun21424_ip = 144; continue _fun21424 }
:
r5 = _closure1_slot0;
r6 = _closure1_slot1;
r2 = 5;
r2 = r6[r2];
r2 = r5.bind(r3)(r2);
r2 = r2.toPpm;
r1 = r2.bind(r3)(r4);
:
r0['salt'] = r1;
return r0;
}
};
11: “cell_voltage”, div 10
r26 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt8;
r2 = r1.bind(r2)();
r1 = 10;
r1 = r2 / r1;
r0['cell_voltage'] = r1;
return r0;
};
12: “cell_current”, div 10
r26 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt8;
r2 = r1.bind(r2)();
r1 = 10;
r1 = r2 / r1;
r0['cell_current'] = r1;
return r0;
};
13: “ph_counter”
r25 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt16BE;
r1 = r1.bind(r2)();
r0['ph_counter'] = r1;
return r0;
};
14: “electrolysis_counter_mn_curr_day”
r24 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt16BE;
r1 = r1.bind(r2)();
r0['electrolysis_counter_mn_curr_day'] = r1;
return r0;
};
15: “filtration_time_mn_curr_day”
r23 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt16BE;
r1 = r1.bind(r2)();
r0['filtration_time_mn_curr_day'] = r1;
return r0;
};
… J’en passe plusieurs, injection chlore, uv, etc.
16: “temperature_fahrenheit”, 2 bytes, div par 10
r17 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r1 = a3;
r0 = _closure1_slot2;
r2 = r0.default;
r0 = r1.readUInt16BE;
r3 = r0.bind(r1)();
r1 = r2.prototype;
r1 = Object.create(r1, {constructor: {value: r2}});
r4 = r1;
r0 = new r4[r2](r3, r2);
r2 = r0 instanceof Object ? r0 : r1;
r1 = r2.dividedBy;
r0 = 10;
r1 = r1.bind(r2)(r0);
r0 = r1.toNumber;
r1 = r0.bind(r1)();
r0 = {};
r0['temperature_fahrenheit'] = r1;
return r0;
};
17: “salt_ppm”
r18 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
r2 = a3;
r0 = {};
r1 = r2.readUInt16BE;
r1 = r1.bind(r2)();
r0['salt_ppm'] = r1;
return r0;
};
18: “salt_unit”
r17 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
_fun21456: for(var _fun21456_ip = 0; ; ) switch(_fun21456_ip) {
r2 = a3;
r0 = {};
r1 = r2.readUInt8;
r3 = r1.bind(r2)();
r1 = 'ppm';
r2 = 3;
if(!(r3 === r2)) { _fun21456_ip = 30; continue _fun21456 }
r1 = 'g/L';
r0['salt_unit'] = r1;
return r0;
}
};
19: “temperature_unit”
r26 = function(a0, a1, a2, a3) { // Original name: parse, environment: r14
_fun21457: for(var _fun21457_ip = 0; ; ) switch(_fun21457_ip) {
r2 = a3;
r0 = {};
r1 = r2.readUInt8;
r3 = r1.bind(r2)();
r1 = '°F';
r2 = 1;
if(!(r3 === r2)) { _fun21457_ip = 30; continue _fun21457 }
r1 = '°C';
r0['temperature_unit'] = r1;
return r0;
}
};