Taster programmieren

Hallo zusammen,
sorry wenn ich so eine triviale Frage stelle, aber ich hab da leider nix passendes gefunden:
ich hab einen ESP32 WROOM 32 (aka ESP-Devkit-V1) und möchte so etwas simples wie einen Taster simulieren.
Heisst: wenn ich z.B. Pin 3V3 und GPIO39 verbinde, möchte ich das ein Ereignis ausgelöst wird.
Status: ich habe den ESP geflasht, ich kann auch darauf zugreifen (Web-Basis-Interface geht auch).
Folgender Code geht aber nicht (es wird kein Fehler angezeigt):

binary_sensor:
  - platform: gpio
    pin:
      number: 39
      inverted: False
      mode: 
        input: True
    filters:
    - delayed_on_off: 1000ms
    name: Klingelknopf

Ich möchte nur, dass wenn ein Taster gedrückt wird, ich per HA informiert werde (als notification oder sowas), aber das Ereignis bleibt aus…
Was ist hier falsch?
Sorry, ich bin noch komplett am Anfang mit sowas, meine Lernkurve ist grad ziemlich steil… :slight_smile:

Danke Euch!
MikeE

Wenn ich so etwas programmiere dann mit MQTT.
Hier mein Eintrag in der configuration.yaml
Oder als Schalter auch zu verwenden, dann ändern.
Bei Bedarf kann ich Dir auch den Code des ESP schicken. Flashe aber mit Arduino IDE .-)

 button: #oder Switch dann # ändern
    - name: "Duftspender Bad" 
      unique_id: duftspender_bad
      command_topic: MQTT Duftspender Bad/command
      #state_topic: MQTT Duftspender Bad/state
      #payload_on: "ON"
      #payload_off: "OFF"
      payload_press: "ON"
      qos: 0
      retain: false

Hallo Tialk,
danke Dir für den Input, ich möchte jedoch gerne bei ESPHome bleiben - Arduino IDE ist auch so ein rotes Tuch für mich… :slight_smile:
Ich möchte mich da nicht in alle Richtungen bewegen und mich verzetteln.

In der Zwischenzeit habe ich es herausgefunden: der Trigger (binary_sensor) “flattert” extrem, wenn ich den Filter delayed_on_off rausnehme.
ich hab folgendes Code snippet geladen:

switch:
  - platform: gpio
    pin: GPIO32
    name: "Schalter Aktor"
    id: schalter

binary_sensor:
  - platform: gpio
    pin: 
      number: 23
      inverted: false
      mode:
        input: true
    name: "Taster Trigger"
    on_press:
      then:
        - switch.toggle: schalter

und rausgekommen ist:

09:16:29 [D] [switch:055] 'Schalter Aktor': Sending state ON 09:16:29 [D] [binary_sensor:036] 'Taster Trigger': Sending state OFF 09:16:29 [D] [binary_sensor:036] 'Taster Trigger': Sending state ON 09:16:29 [D] [switch:020] 'Schalter Aktor' Toggling OFF. 09:16:29 [D] [switch:055] 'Schalter Aktor': Sending state OFF 09:16:29 [D] [binary_sensor:036] 'Taster Trigger': Sending state OFF 09:16:29 [D] [binary_sensor:036] 'Taster Trigger': Sending state ON 09:16:29 [D] [switch:020] 'Schalter Aktor' Toggling ON. 09:16:29 [D] [switch:055] 'Schalter Aktor': Sending state ON 09:16:29 [D] [binary_sensor:036] 'Taster Trigger': Sending state OFF

Nun habe ich es mit delayed_on versucht - eh voilá: es geht! Offensichtlich darf der delayed_off Part nicht gesetzt sein, dann erkennt der ESP das auch korrekt.

Wieder ein Geheimnis gelüftet :slight_smile:

LG,
MikeE

1 „Gefällt mir“

Wenn man einen GPIO als Input verwendet (es sei denn, man verwendet einen Pin mit integriertem Pull-Down), dann schließt man dazu normalerweise auch einen Pull-Down Widerstand an, um das Flattern zu verhindern.