Custom switch avec ESPHOME

Bonjour.
Qui peut m’aider s’il vous plait ?
J’essaye de faire un ‹ custom_switch › (On/Off) qui :
- Obtenir une variable globale du YAML
- Change la valeur de cette variable (0x0C<->0x0D)
- Écrit la nouvelle valeur sur le port UART
- Ecrit la nouvelle valeur dans la variable globale
- Allume brièvement la LED embarquée.
Mon code ci-dessous se compile bien et se téléverse bien via OTA mais il plante lorsque j’appuie sur le Switch.
Merci de votre aide.
Yaml code:

    globals:
      - id: var_on_off
        type: int
        restore_value: no
        initial_value: '0'
    switch:
      - platform: custom
        lambda: |-
          auto On_Off = new Switch_OnOff();
          App.register_component(On_Off);
          return {On_Off};
        switches:
          id: On_Off
          name: "Marche/Arrêt"
          inverted: true
          on_turn_on:
            - delay: 250ms
            - switch.turn_off: On_Off`

Custom Switch Code:

#include "esphome.h"
class Switch_OnOff : public Component, public UARTDevice, public Switch {
  public:
   void setup() override {
   pinMode(LED_BUILTIN, OUTPUT);
 }
 int data_1;
 void write_state(bool state) override {
     data = var_on_off->value();
     switch(var_on_off){
       case 0x0C:
         write(0x0D);
         var_on_off->value() = 0x0D;
       case 0x0D:
        write(0x0C);
        var_on_off->value() = 0x0C;
      default:
        break;
    }
    digitalWrite(LED_BUILTIN, state);
    publish_state(state);
  }
};`

Et voici le message d’erreur :
INFO 192.168.0.81: Error while reading incoming messages:
Error while reading data: [Errno 104] Connection reset by peer
INFO Disconnected from ESPHome API for 192.168.0.81
WARNING Disconnected from API
INFO 192.168.0.81: Ping Failed: Error while reading data: [Errno 104] Connection reset by peer
INFO Successfully connected to 192.168.0.81

Salut,

Tu n’as pas un souci d’indentation ?
image

Ou alors une fantaisie lors du copié/collé ?
Sinon 3 points à vérifier :

  • 192.168.0.81 c’est bien ton device ?
  • L’option OTA est active dessus ?
  • Ton wifi porte bien jusqu’à ton device ? J’ai ce genre comportement quand je suis en limite de réception

Merci de l’analyse
Aucun soucis d’indentation, c’est mon copié/collé… :wink:
Pas de problème d’OTA non plus.
Aucun problème d’IP ni de WiFi.
Le serveur WEB est accessible et mon code fonctionne dans HA sauf le ‹ custom_switch ›.
Mon problème est lié à mon code C++, c’est sûr.
Lors du click sur ‹ on_off › :
- Lecture de la variable globale : Ok
- Change la variable globale 0x0C<->0x0D : Ok
- Stock la nouvelle valeur : Ok
- Allume brièvement la led embarqué : Ok
- Écrit sur le port serie : Plante !!!
Je maîtrise très mal les custom components, les class et tout ce qui tourne autour…
Je ne suis pas développeur :wink: