Electrolyseur E-Pool Technologie Justsalt

Bonjour ,

Merci , j’ai réussi à charger le code sur l’ESP C6 ,

Bonjour a tous, Je me greffe sur ce projet très interressant !
J’ai aussi un electrolyseur Poolsquad Uno de la société Pool Technologie
J’ai pris un EST-Poe-32 compatible esp32 (avec le port lan en plus) j’ai pas de wifi dans mon local technique de piscine.

J’ai un bout de code @Ricky_D
je viens de le faire tourner en changeant la mac adress voici les resultats:

[15:48:37][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_CONNECT_EVT
[15:48:37][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_OPEN_EVT
[15:48:37][I][ble_sensor:031]: [device_name] Connected successfully!
[15:48:37][I][ble_sensor:031]: [traitement] Connected successfully!
[15:48:37][D][esp32_ble_tracker:266]: Starting scan...
[15:48:37][D][esp32_ble_client:172]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_DISCONNECT_EVT, reason 19
[15:48:37][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_CLOSE_EVT
[15:48:37][W][ble_sensor:037]: [device_name] Disconnected!
[15:48:37][D][sensor:094]: 'device_name': Sending state nan  with 0 decimals of accuracy
[15:48:37][W][ble_sensor:037]: [traitement] Disconnected!
[15:48:37][D][sensor:094]: 'traitement': Sending state nan  with 0 decimals of accuracy
[15:48:43][D][sensor:094]: 'JustSalt RSSI': Sending state -55.00000 dBm with 0 decimals of accuracy
[15:48:43][D][ble_adv:076]: New BLE device
[15:48:43][D][ble_adv:077]:   address: 18:C2:93:03:CC:FB
[15:48:43][D][ble_adv:078]:   name: GEN_0323-047091-009
[15:48:43][D][text_sensor:064]: 'Name': Sending state 'GEN_0323-047091-009'
[15:48:43][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] Found device
[15:48:43][D][esp32_ble_tracker:665]: Found device 18:C2:93:03:CC:FB RSSI=-55
[15:48:43][D][esp32_ble_tracker:686]:   Address Type: PUBLIC
[15:48:43][D][esp32_ble_tracker:688]:   Name: 'GEN_0323-047091-009'
[15:48:43][D][esp32_ble_tracker:215]: Pausing scan to make connection...
[15:48:43][W][component:237]: Component esp32_ble_tracker took a long time for an operation (63 ms).
[15:48:43][W][component:238]: Components should block for at most 30 ms.
[15:48:43][I][esp32_ble_client:067]: [0] [18:C2:93:03:CC:FB] 0x00 Attempting BLE connection
[15:48:44][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_CONNECT_EVT
[15:48:44][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_OPEN_EVT
[15:48:44][I][ble_sensor:031]: [device_name] Connected successfully!
[15:48:44][I][ble_sensor:031]: [traitement] Connected successfully!
[15:48:44][D][esp32_ble_tracker:266]: Starting scan...
[15:48:44][D][esp32_ble_client:306]: [0] [18:C2:93:03:CC:FB] Event 46
[15:48:44][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_SEARCH_CMPL_EVT
[15:48:44][I][esp32_ble_client:227]: [0] [18:C2:93:03:CC:FB] Connected
[15:48:44][D][esp32_ble_client:188]: [0] [18:C2:93:03:CC:FB] cfg_mtu status 0, mtu 250
[15:48:44][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_REG_FOR_NOTIFY_EVT
[15:48:44][D][esp32_ble_client:296]: Wrote notify descriptor 2, properties=46
[15:48:44][D][ble_sensor:103]: Register for notify on EF785C24-22BB-463D-B651-0B7445BA091C complete
[15:48:44][D][ble_client:058]: All clients established, services released
[15:48:44][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_WRITE_DESCR_EVT
[15:48:44][W][component:237]: Component esp32_ble took a long time for an operation (54 ms).
[15:48:44][W][component:238]: Components should block for at most 30 ms.
[15:48:49][D][esp32_ble_client:172]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_DISCONNECT_EVT, reason 19
[15:48:49][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_CLOSE_EVT
[15:48:49][W][ble_sensor:037]: [device_name] Disconnected!
[15:48:49][D][sensor:094]: 'device_name': Sending state nan  with 0 decimals of accuracy
[15:48:49][W][ble_sensor:037]: [traitement] Disconnected!
[15:48:49][D][sensor:094]: 'traitement': Sending state nan  with 0 decimals of accuracy



Il a l’air de se connecter mais …

Voici mon code:

substitutions:
  mac_justsalt: "18:C2:93:03:CC:FB"
  service_uuid: '09912756-7b32-4629-aeb1-b309d9a338ae'
  characteristic_uuid: 'ef785c24-22bb-463d-b651-0b7445ba091c'
  characteristic_uuid_write: '4d32c5e5-2bb5-45c6-8c89-6f59bb3930d2'


esphome:
  name: bluetooth
  friendly_name: Bluetooth

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

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

ota:
  password: "a8ca7d114e2ae67004c035e7cea8c7f5"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
#ap:
#  ssid: "Bluetooth Fallback Hotspot"
#  password: "b29toFGi4EAN"

#captive_portal:

web_server:
  port: 80

ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO17_OUT
  phy_addr: 0
  power_pin: GPIO12
  manual_ip:
    static_ip: 192.168.1.163
    gateway: 192.168.1.254
    subnet: 255.255.255.0

bluetooth_proxy:
  active: true


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:
  on_ble_advertise:
    - mac_address:
       - ${mac_justsalt}
      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());
            id(ble_name2).publish_state(x.get_name().c_str());

ble_client:
  - mac_address:  ${mac_justsalt}
    auto_connect: true
    id: JustSaltPro
    on_connect:
      then:
        - ble_client.numeric_comparison_reply:
            id: JustSaltPro
            accept: True
binary_sensor:
  - platform: ble_presence
    mac_address: ${mac_justsalt}
    name: JustSaltPro

text_sensor:
  - platform: version
    name: ESPHome Version
  #- platform: wifi_info
  #  ssid:
  #    name: WiFi

  - id: ble_name
    name: "Name BLE"
    platform: template 
  
  - id: ble_name2
    name: "Name"
    platform: template 


  - id: version_logiciel
    name: "version logiciel"
    platform: template 
  
  - id: Slave
    name: "Slave"
    platform: template 

sensor:
  #- platform: wifi_signal
  #  name: Wifi signal
  #  update_interval: 10s
  - platform: uptime
    name: Uptime
  
  - platform: ble_rssi
    mac_address:  ${mac_justsalt}
    name: "JustSalt RSSI"  

  - platform: template
    name: "volume piscine"
    id: JustSalt_volume_sensor
    unit_of_measurement: "m3"
    
  - platform: template
    name: "JustSalt Temperature"
    id: JustSalt_temperature_sensor
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    state_class: measurement
    device_class: temperature
  
  - platform: template
    name: "JustSalt Temperature Int"
    id: JustSalt_temperature_int_sensor
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    state_class: measurement
    device_class: temperature
  
  - platform: template
    name: "JustSalt pH"
    id: JustSalt_ph_sensor
    unit_of_measurement: "pH"
    accuracy_decimals: 2
    state_class: measurement
    icon: mdi:ph
  
  - platform: template
    name: "JustSalt pH consigne"
    id: JustSalt_ph_consigne_sensor
    unit_of_measurement: "pH"
    accuracy_decimals: 2
    state_class: measurement
    icon: mdi:ph

  - platform: template
    name: "JustSalt ORP"
    id: JustSalt_orp_sensor
    unit_of_measurement: "mV"
    accuracy_decimals: 0
    state_class: measurement
    device_class: voltage
  
  - platform: template
    name: "JustSalt TDS"
    id: JustSalt_tds_sensor
    unit_of_measurement: "g/L"
    accuracy_decimals: 1
    state_class: measurement
    icon: mdi:water-opacity


  - platform: ble_client
    ble_client_id: JustSaltPro
    id: device_name
    service_uuid: '1800'  # Generic Access Profile
    characteristic_uuid: '2a00'  # Device Name
    type: characteristic
    lambda: |-
      std::string data_string(x.begin(), x.end());
      id(ble_name).publish_state(data_string.c_str());
      return (float)x.size();


  - platform: ble_client
    ble_client_id: JustSaltPro
    name: "traitement"
    id: sensor_state    
    service_uuid: '09912756-7b32-4629-aeb1-b309d9a338ae'
    characteristic_uuid: 'ef785c24-22bb-463d-b651-0b7445ba091c'
    type: characteristic
    update_interval: 30s
    notify: true
    lambda: |-      
      ESP_LOGD("ble_client.receive", "start - value received with %d bytes: [%.*s]", x.size(), x.size(), &x[0]);
      std::string value2(x.begin(), x.end());
      std::string rawhex = format_hex_pretty((uint8_t *) value2.c_str(), value2.size()).c_str();
      ESP_LOGD("raw_hex", "%s", rawhex.c_str());
      
      rawhex.erase(std::remove(rawhex.begin(), rawhex.end(), '.'), rawhex.end());
      //ESP_LOGD("raw_hex_stripped", "%s", rawhex.c_str());
      ESP_LOGD("raw_hex_stripped", "value received with %d bytes: [%.*s]", rawhex.size(), rawhex.c_str());
         
      switch (x.size()) {

        case 9: {
          std::string temppart1 = rawhex.substr(10, 4);
          ESP_LOGD("chaine 9", "%s", temppart1.c_str());
          uint16_t tempinthex = (x[5] << 8) + x[6];
          ESP_LOGD("chaine 9", "%x", tempinthex);
          float tempint = static_cast<float>(tempinthex)/10;
          //id(JustSalt_temperature_int_sensor).publish_state(tempint);
          }break;
        case 13: {
          std::string temppart1 = rawhex.substr(10, 4);
          ESP_LOGD("chaine 13", "%s", temppart1.c_str());
          uint16_t orphex = (x[5] << 8) + x[6];
          ESP_LOGD("chaine 13", "%x", orphex);
          float orp = static_cast<float>(orphex);
          id(JustSalt_orp_sensor).publish_state(orp);
          }break;
        case 71: {

          
          std::string temppart3 = rawhex.substr(30, 4);
          ESP_LOGD("chaine 71", "version : %s", temppart3.c_str());
          id(version_logiciel).publish_state(temppart3);
          }break;

        case 76:{
          std::string temppart2 = rawhex.substr(10, 2);
          ESP_LOGD("chaine 76", "%s", temppart2.c_str());
          uint8_t phhex = x[5];
          float ph = static_cast<float>(phhex)/10;
          id(JustSalt_ph_sensor).publish_state(ph);

          std::string temppart3 = rawhex.substr(44, 4);
          ESP_LOGD("chaine 76", "%s", temppart3.c_str());
          uint16_t tempeauhex = (x[22]<< 8) + x[23];
          ESP_LOGD("chaine 76", "%x", tempeauhex);
          float tempeau = static_cast<float>(tempeauhex)/10;
          id(JustSalt_temperature_sensor).publish_state(tempeau);

          std::string temppart1 = rawhex.substr(52, 2);
          ESP_LOGD("chaine 76", "%s", temppart1.c_str());
          uint8_t selhex = x[26] ;
          float sel = static_cast<float>(selhex)/10;
          id(JustSalt_tds_sensor).publish_state(sel);

          std::string temppart4 = rawhex.substr(104, 2);
          ESP_LOGD("chaine 76", "%s", temppart4.c_str());
          uint8_t volhex = x[52] ;
          float vol = static_cast<float>(volhex);
          id(JustSalt_volume_sensor).publish_state(vol);
          
          }break;

        case 78:{
          std::string temppart2 = rawhex.substr(24, 2);
          ESP_LOGD("chaine 78", "%s", temppart2.c_str());
          uint8_t phhex = x[12];
          float ph = static_cast<float>(phhex)/10;
          id(JustSalt_ph_consigne_sensor).publish_state(ph);

          }break;
      }
      return 1;


switch:      
  - platform: restart
    name: JustSalt_Gatway restart    

  - platform: ble_client
    id: ble_switch_com
    ble_client_id: JustSaltPro
    name: "Enable com JustSalt"

voici la vue du server_web de mon esp_home

voici la capture avec mon tel android

Pouvez vous m’aider pour aller plus loin, pour afficher une trame par ex
merci

salut
as tu déclencher le mode appairage sur ton électrolyseur
attention pour rappel l électrolyseur ne peux appairer qu’un seul appareil !
donc coupe le BT de ton tel, reboot ton esp puis enclenche l appairage
ca devrai le faire

ok ca a l’air mieux

[16:20:23][W][component:237]: Component esp32_ble took a long time for an operation (59 ms).
[16:20:23][W][component:238]: Components should block for at most 30 ms.
[16:20:23][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_WRITE_DESCR_EVT
[16:20:24][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_NOTIFY_EVT
[16:20:24][D][ble_sensor:089]: [device_name] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:24][D][ble_sensor:089]: [traitement] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:24][D][ble_client.receive:206]: start - value received with 245 bytes: []
[16:20:24][D][raw_hex:209]: 00.F5.01.01.01.46.02.02.02.BC.03.01.4E.08.01.64.09.02.00.EB.0A.01.23.0B.01.1B.0C.01.11.0D.02.00.60.0E.02.08.07.0F.02.01.02.10.02.01.90.11.02.00.1E.12.04.00.16.06.17.1F.02.02.E9.28.02.0D.AC.29.01.03.2A.01.01.30.01.48.31.01.00.32.01.0F.33.01.4E.39.01.02.45.01.5A.46.01.14.4E.01.01.4F.01.00.50.01.01.51.01.01.5F.01.1B.67.02.00.00.69.04.00.00.00.00.6A.01.00.8F.01.05.90.08.00.00.00.00.00.00.00.00.91.08.00.00.00.00.00.0E.6F.C3.92.01.15.93.02.01.81.94.02.00.F1.95.04.01.80.B1.82.96.02.01.03.
[16:20:24][D][raw_hex_stripped:213]: value received with 496 bytes: []
[16:20:24][D][sensor:094]: 'traitement': Sending state 1.00000  with 0 decimals of accuracy
[16:20:24][W][component:237]: Component esp32_ble took a long time for an operation (96 ms).
[16:20:24][W][component:238]: Components should block for at most 30 ms.
[16:20:24][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_NOTIFY_EVT
[16:20:24][D][ble_sensor:089]: [device_name] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:24][D][ble_sensor:089]: [traitement] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:24][D][ble_client.receive:206]: start - value received with 28 bytes: []
[16:20:24][D][raw_hex:209]: 00.1C.01.B0.01.3E.B1.06.18.C2.93.03.CC.FB.B2.02.F7.00.B3.02.01.02.D1.01.05.FE.01.01 (28)
[16:20:24][D][raw_hex_stripped:213]: value received with 61 bytes: []
[16:20:25][D][sensor:094]: 'traitement': Sending state 1.00000  with 0 decimals of accuracy
[16:20:25][W][component:237]: Component esp32_ble took a long time for an operation (62 ms).
[16:20:25][W][component:238]: Components should block for at most 30 ms.
[16:20:25][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_NOTIFY_EVT
[16:20:26][D][ble_sensor:089]: [device_name] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:26][D][ble_sensor:089]: [traitement] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:26][D][ble_client.receive:206]: start - value received with 6 bytes: []
[16:20:26][D][raw_hex:209]: 00.06.01.B0.01.3E (6)
[16:20:26][D][raw_hex_stripped:213]: value received with 16 bytes: []
[16:20:26][D][sensor:094]: 'traitement': Sending state 1.00000  with 0 decimals of accuracy
[16:20:27][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_NOTIFY_EVT
[16:20:27][D][ble_sensor:089]: [device_name] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:27][D][ble_sensor:089]: [traitement] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:27][D][ble_client.receive:206]: start - value received with 6 bytes: []
[16:20:27][D][raw_hex:209]: 00.06.01.B0.01.3D (6)
[16:20:27][D][raw_hex_stripped:213]: value received with 16 bytes: []
[16:20:27][D][sensor:094]: 'traitement': Sending state 1.00000  with 0 decimals of accuracy
[16:20:27][W][component:237]: Component esp32_ble took a long time for an operation (52 ms).
[16:20:27][W][component:238]: Components should block for at most 30 ms.
[16:20:28][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_NOTIFY_EVT
[16:20:28][D][ble_sensor:089]: [device_name] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:28][D][ble_sensor:089]: [traitement] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:28][D][ble_client.receive:206]: start - value received with 6 bytes: []
[16:20:28][D][raw_hex:209]: 00.06.01.B0.01.3F (6)
[16:20:28][D][raw_hex_stripped:213]: value received with 16 bytes: []
[16:20:28][D][sensor:094]: 'traitement': Sending state 1.00000  with 0 decimals of accuracy
[16:20:28][W][component:237]: Component esp32_ble took a long time for an operation (51 ms).
[16:20:28][W][component:238]: Components should block for at most 30 ms.
[16:20:29][D][esp32_ble_client:110]: [0] [18:C2:93:03:CC:FB] ESP_GATTC_NOTIFY_EVT
[16:20:29][D][ble_sensor:089]: [device_name] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:29][D][ble_sensor:089]: [traitement] ESP_GATTC_NOTIFY_EVT: handle=0x13, value=0x0
[16:20:29][D][ble_client.receive:206]: start - value received with 13 bytes: []
[16:20:29][D][raw_hex:209]: 00.0D.01.01.01.47.02.02.02.C6.B0.01.3F (13)
[16:20:29][D][raw_hex_stripped:213]: value received with 31 bytes: []
[16:20:29][D][chaine 13:227]: 4702
[16:20:29][D][chaine 13:229]: 4702
[16:20:29][D][sensor:094]: 'JustSalt ORP': Sending state 18178.00000 mV with 0 decimals of accuracy
[16:20:29][D][sensor:094]: 'traitement': Sending state 1.00000  with 0 decimals of accuracy
[16:20:29][W][component:237]: Component esp32_ble took a long time for an operation (75 ms).
[16:20:29][W][component:238]: Components should block for at most 30 ms.

Par contre je sais pas comment interpreter la trame , sachant que mon :
Ph vaut actuellement 7.1 (47 en Hex)
Sel : 3.5
Temperature de l’eau : 23 (17 en Hex)

J’imagine que c’est la grosse trame que je recois quand il est : xx:x5 ?

 00.F5.01.01.01.46.02.02.02.BC.03.01.4E.08.01.64.09.02.00.EB.0A.01.23.0B.01.1B.0C.01.11.0D.02.00.60.0E.02.08.07.0F.02.01.02.10.02.01.90.11.02.00.1E.12.04.00.16.06.17.1F.02.02.E9.28.02.0D.AC.29.01.03.2A.01.01.30.01.48.31.01.00.32.01.0F.33.01.4E.39.01.02.45.01.5A.46.01.14.4E.01.01.4F.01.00.50.01.01.51.01.01.5F.01.1B.67.02.00.00.69.04.00.00.00.00.6A.01.00.8F.01.05.90.08.00.00.00.00.00.00.00.00.91.08.00.00.00.00.00.0E.6F.C3.92.01.15.93.02.01.81.94.02.00.F1.95.04.01.80.B1.82.96.02.01.03.

en passant la trame dans chatgpt
il me dit

Température (23.5°C) : 23.5×10=235. En hexadécimal, cela donne 00 EB.
Taux de sel (3.5 g/L) :** 3.5×10=35. En hexadécimal, cela donne 23.
Taux de pH (7.0) :** 7.0×10=70. En hexadécimal, cela donne 46.

Tu crois que ca marche comme ca?

Faut que j’arrive a extraire les données avec Esphome maintenant dur dur

oui ca marche comme ca ! c est ce que je fait dans mon code :slight_smile:
mais si tu a repris mon code ! ca doit tous te remonter

ta trame est composer de :
XX XX XX 3premier octet que je ne sais pas ce qu il signifie certainement un CRC
puis les octets de donnée contruit comme ca!
XX : ID de la donnée
XX : taille en octet de la donnée
XX (en foncttion de la taille)

voici ce que nous avons déjà trouvé co

ID ID hex
0 00
1 01 PH float Valeur : ID = 1: taille = 1: Value = 48
2 02 Valeur : ID = 2: taille = 2: Value = 02.D0
3 03 Valeur : ID = 3: taille = 1: Value = 64
4 04
5 05
6 06 ORP uint16_t Valeur : ID = 6: taille = 2: Value = 02.AC
7 07
8 08 Valeur : ID = 8: taille = 1: Value = 64
9 09 Temp eau float Valeur : ID = 9: taille = 2: Value = 00.B9
10 0A Sel float Valeur : ID = 10: taille = 1: Value = 1C
11 0B Valeur : ID = 11: taille = 1: Value = 0B
12 0C Valeur : ID = 12: taille = 1: Value = 00
13 0D Valeur : ID = 13: taille = 2: Value = 00.44
14 0E compteur en heure ? float Valeur : ID = 14: taille = 2: Value = 0E.14
15 0F minutes de fonctionement float Valeur : ID = 15: taille = 2: Value = 00.69
16 10 Valeur : ID = 16: taille = 2: Value = 00.4A
17 11 Vol eau float Valeur : ID = 17: taille = 2: Value = 00.46
18 12 Valeur : ID = 18: taille = 4: Value = 00.0A.04.18
19 13 Valeur : ID = 19: taille = 4: Value = 00.0A.04.18
20 14
21 15
22 16
23 17
24 18
25 19
26 1A
27 1B
28 1C
29 1D
30 1E
31 1F
32 20
33 21
34 22
35 23
36 24
37 25
38 26
39 27
40 28 Valeur : ID = 40: taille = 2: Value = 0A.F0
41 29 Valeur : ID = 41: taille = 1: Value = 03
42 2A Valeur : ID = 42: taille = 1: Value = 01
43 2B
44 2C
45 2D
46 2E
47 2F
48 30 Consigne PH float Valeur : ID = 48: taille = 1: Value = 48
49 31 Valeur : ID = 49: taille = 1: Value = 00
50 32 %Acide float Valeur : ID = 50: taille = 1: Value = 25
51 33 Production float Valeur : ID = 51: taille = 1: Value = 64
52 34
53 35 Consihne ORP float Valeur : ID = 53: taille = 1: Value = 43
54 36
55 37 Seuil alarme ORP float Valeur : ID = 55: taille = 1: Value = 30
56 38
57 39 Inversion float Valeur : ID = 57: taille = 1: Value = 08
58 3A
59 3B
60 3C
61 3D
62 3E
63 3F
64 40
65 41
66 42
67 43
68 44
69 45
70 46
71 47
72 48
73 49
74 4A
75 4B
76 4C
77 4D
78 4E
79 4F
80 50 Valeur : ID = 80: taille = 1: Value = 02
81 51 Valeur : ID = 81: taille = 1: Value = 01
82 52
83 53
84 54
85 55
86 56
87 57
88 58 I
89 59
90 5A
91 5B
92 5C
93 5D
94 5E Valeur : ID = 95: taille = 1: Value = 00
95 5F
96 60
97 61
98 62
99 63
100 64
101 65
102 66
103 67
104 68
105 69 Valeur : ID = 105: taille = 4: Value = 00.00.00.00
106 6A Valeur : ID = 106: taille = 1: Value = 00
107 6B
108 6C
109 6D
110 6E
111 6F
112 70
113 71
114 72
115 73
116 74
117 75
118 76
119 77
120 78
121 79
122 7A
123 7B
124 7C
125 7D
126 7E
127 7F
128 80
129 81
130 82
131 83
132 84
133 85
134 86
135 87
136 88
137 89
138 8A
139 8B
140 8C
141 8D
142 8E
143 8F Valeur : ID = 143: taille = 1: Value = 04
144 90 Valeur : ID = 144: taille = 8: Value = 00.00.00.00.00.00.00.00
145 91 Valeur : ID = 145: taille = 8: Value = 00.00.00.00.00.06.6F.C7
146 92 Valeur : ID = 146: taille = 1: Value = 07
147 93 Valeur : ID = 147: taille = 2: Value = 00.88
148 94 Valeur : ID = 148: taille = 2: Value = 00.F8
149 95 ID Code float Valeur : ID = 149: taille = 4: Value = 01.72.F5.DF
150 96 Version string Valeur : ID = 150: taille = 2: Value = 02.04
151 97 Slave string Valeur : ID = 151: taille = 2: Value = 01.00
152 98
153 99 Nom Ascii Valeur : ID = 153: taille = 22: Value = 47.45.4E.5F.30.35.32.32.2D.30.34.33.39.35.33.2D.30.30.33.00.00.00
154 9A SN Ascii Valeur : ID = 154: taille = 16: Value = 30.35.32.32.2D.30.34.33.39.35.33.2D.30.30.33.00
155 9B Valeur : ID = 155: taille = 2: Value = 00.00
156 9C Valeur : ID = 156: taille = 2: Value = 00.00
157 9D Valeur : ID = 157: taille = 8: Value = 00.00.00.00.00.00.01.FF
158 9E
159 9F
160 A0
161 A1
162 A2
163 A3
164 A4
165 A5
166 A6
167 A7
168 A8
169 A9
170 AA
171 AB
172 AC
173 AD
174 AE
175 AF
176 B0 Valeur : ID = 176: taille = 1: Value = 37
177 B1 Mac adresse Ascii Valeur : ID = 177: taille = 6: Value = 94.DE.B8.A1.1A.AC
178 B2
179 B3
180 B4
181 B5
182 B6
183 B7
184 B8
185 B9
186 BA
187 BB
188 BC
189 BD
190 BE
191 BF
192 C0
193 C1
194 C2
195 C3
196 C4
197 C5
198 C6
199 C7
200 C8
201 C9
202 CA
203 CB
204 CC
205 CD
206 CE
207 CF
208 D0
209 D1 Valeur : ID = 209: taille = 1: Value = 05
210 D2
211 D3
212 D4
213 D5
214 D6
215 D7
216 D8
217 D9
218 DA
219 DB
220 DC
221 DD
222 DE
223 DF
224 E0
225 E1 Valeur : ID = 225: taille = 15: Value = 18.05.17.0B.28.15.00.00.88.00.F8.00.00.00.00
226 E2
227 E3
228 E4
229 E5
230 E6
231 E7
232 E8
233 E9
234 EA
235 EB
236 EC
237 ED
238 EE
239 EF
240 F0
241 F1
242 F2
243 F3
244 F4
245 F5
246 F6
247 F7
248 F8
249 F9
250 FA
251 FB
252 FC
253 FD
254 FE
255 FF

C’est genial !
Je vais regarder tout ca…
tiens j’en profite, sur ma piscine j’ai un volet roulant pilotable en bluetooth
tu crois que je peux aussi l’automatiser ?
merci

Oui ça doit ce faire

Bon moi je n’arrive à rien faire avec mon ESP32;
J’ai collé le code, modifié le MAC de l’électrolyseur mais je n’ai que des problèmes de connexion wifi, j’ai pourtant fixé l’ip mais je suis soit déconnecté sans arrêt, soit pas de connexion avec toujours ce message d’erreur . J’ai même changé d’esp, ça déco*ne toujours.

INFO Starting log output from 192.168.1.225 using esphome API
WARNING Can't connect to ESPHome API for epool-usbc @ 192.168.1.225: Error connecting to [AddrInfo(family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, proto=6, sockaddr=IPv4Sockaddr(address='192.168.1.225', port=6053))]: [Errno 113] Connect call failed ('192.168.1.225', 6053) (SocketAPIError)
INFO Trying to connect to epool-usbc @ 192.168.1.225 in the background

voici le début mon code (le reste c’est un copié coller du dernier code) si quelqu’un peut m’aider ?

esphome:
  name: epool-usbc
  friendly_name: epool_usbc
substitutions:
  mac_justsalt: "F4:B3:B1:0B:CA:18"
  service_uuid: '09912756-7b32-4629-aeb1-b309d9a338ae'
  characteristic_uuid: 'ef785c24-22bb-463d-b651-0b7445ba091c'
  characteristic_uuid_write: '4d32c5e5-2bb5-45c6-8c89-6f59bb3930d2'
esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "v89B5kO1KMv818EZx9Cmuke+p5TR58UmU9slQmukOq8="

ota:
  password: "c3f1f13c96c22d1ea75ec07926b6bcc9"

wifi:
  ssid: Freebox
  password: **********
  manual_ip:
    static_ip: 192.168.1.225
    gateway: 192.168.1.1
    subnet: 255.255.255.0
  


  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Epool"
    password: "***********"





captive_portal:
bluetooth_proxy:
active: true

autre message incompréhensible pour moi

INFO Starting log output from 192.168.1.225 using esphome API
INFO Successfully connected to epool-usbc @ 192.168.1.225 in 8.033s
WARNING epool-usbc @ 192.168.1.225: Connection error occurred: epool-usbc @ 192.168.1.225: The connection dropped immediately after encrypted hello; Try enabling encryption on the device or turning off encryption on the client (ESPHome Logs 2024.5.4).
WARNING Can't connect to ESPHome API for epool-usbc @ 192.168.1.225: epool-usbc @ 192.168.1.225: The connection dropped immediately after encrypted hello; Try enabling encryption on the device or turning off encryption on the client (ESPHome Logs 2024.5.4). (HandshakeAPIError)
INFO Trying to connect to epool-usbc @ 192.168.1.225 in the background

Je pense qu il y a de toute façon une merde dans le code le mien plante régulièrement
Et en cpp ça me déréglé l électrolyseur
Il faut que j arrive a me débloquer du temps pour regarder ce qui merdouille
Il est possible que tes déco soit lié au PB de lecture que je rencontre aussi
Donc soit prendre une vielle version 3 4 version en arrière soit patienter jusqu a la prochaine

Merci, je pense plutot à un problème de wifi car si j’essaie de me connecter sans fil à l’esp32, soit ça rame au démarrage, soit ça bloque, soit erreur alors que si je me connecte directement en usb avec l’ordi, toutes les valeurs remontent sau à l’instant, j’ai ça

[I][wifi:303]: WiFi Connecting to 'Apple'...
[20:40:52][W][wifi:633]: Error while connecting to network.
[20:40:52][D][wifi:677]: Retrying with hidden networks...
[20:40:52][I][wifi:303]: WiFi Connecting to 'Apple'...
[20:40:52][W][wifi:649]: Connecting to WiFi network failed. Are the credentials wrong?
[20:40:54][W][wifi_esp32:482][arduino_events]: Event: Disconnected ssid='Apple' bssid=[redacted] reason='Auth Expired'
[20:40:57][I][wifi:303]: WiFi Connecting to 'Apple'...
[20:40:57][W][wifi:633]: Error while connecting to network.
[20:40:57][D][wifi:677]: Retrying with hidden networks...
[20:40:57][I][wifi:303]: WiFi Connecting to 'Apple'...
[20:40:57][W][wifi:649]: Connecting to WiFi network failed. Are the credentials wrong?
[20:40:57][D][wifi:677]: Retrying with hidden networks...
[20:40:59][W][wifi_esp32:482][arduino_events]: Event: Disconnected ssid='Apple' bssid=[redacted] reason='Auth Expired'
[20:41:02][I][wifi:303]: WiFi Connecting to 'Apple'...
[20:41:02][W][wifi:633]: Error while connecting to network.
[20:41:02][W][wifi:670]: Restarting WiFi adapter...
[20:41:02][D][esp-idf:000][esp_timer]: E (29013) wifi:
[20:41:02][D][esp-idf:000][esp_timer]: timeout when WiFi un-init, type=4
[20:41:02][D][esp-idf:000][esp_timer]: 

Bonjour ,
pour info: (pour mon Electrolyseur Racer )
la version ESPhome ( version ou l’on peux voir les consigne d’il y a 18 jours) fonctionne sur un ESP32 standard, pas de plantage .
la dernière version ESPhome plante effectivement régulièrement mais je n’ai pas trouvé pourquoi sur un ESP32 standard

la modification de @Alain2 fonctionne sur un ESP32 C6 , pas de plantage

je n’ai pas réussi avec la version MQTT à connecter le bluetooth

Bonjour ,
As tu essayé de laisser l’IP ’ libre ’ du coté ESP et la fixer plutôt du coté Freebox ?
J’ai un routeur entre ma Freebox et mes ESP , je fixe les IP dans le routeur pas dans les ESP .
pas de déconnexion intempestive de mon coté

merci, là j’ai repris un « vieux » code en ne fixant pas l’ip et en laissant la freebox gérer toute seule. Ca a l’air de fonctionner, on va bien voir.
Y aurait pas moyen de supprimer toutes les entités qui ne me servent à rien, je ne voudrais garder que le ph la température le sel et l’orp, ça allégerait le traitement ?

Je ne maitrise pas le reverse bluetooth , comme c’est un ensemble de valeur/trame qui est envoyé je ne suis pas sur que tu puisses les séparer @Ricky_D pourra peut etre confirmer .

Par contre, pour mon volet de piscine sur l’application fournie sur mon téléphone je dois taper un password.
On peut le faire en esphome ?
Tu peux me donner quelques explications ?

@Benoit_Dierickx : soit on fait ca en MP , soit sur un autre topic , mais on va essayer de pas tout mélanger :slight_smile:

Toujours sur esphome J’ai modifié le framework en esp idf c’est plus stable pour moi car jusqu’à maintenant j’étais en wifi et je suis passé en ethernet.

Je ai également rajouter un capteur de débit. Je suis intéressé par la fonction volet piscine fermer, même si c sera manuel j’ai pas de contact je penser passer par un swit virtuel dans home assistant

Bonjour, je suis intéressé par la formule ethernet car impossible de stabiliser le wifi de l’esp. Que faut-il faire et acheter pour que l’ethernet fonctionne ? Merci

Voici le modèle que j’utilise

Wt32-eth01

Il faut commenter ce qui touche au wifi la config le signal etc