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