Een drukknop uitlezen en lokaal laten werken
Sluit een drukknop aan en laat je ESP32 lokaal reageren met ESPHome. Controleer de werking zonder tussenkomst van Home Assistant.
Tot nu toe vertelde de ESP32 aan de buitenwereld wat er moest gebeuren: de led ging aan of uit. Met een drukknop draaien we dat om. De ESP32 moet nu vaststellen wat er buiten het bord gebeurt.
Wat doet een drukknop elektrisch?
Een gewone drukknop maakt contact wanneer je hem indrukt. De ESP32 kan die verandering zien op een digitale ingang: een GPIO die we gebruiken om een hoog of laag signaal te lezen.
Een losse ingang kan onbedoelde signalen oppikken. We noemen zo'n ingang zwevend. Daarom gebruiken we een pull-upweerstand. Die houdt de ingang standaard hoog. Zodra we de knop indrukken, verbinden we de ingang met GND en wordt het signaal laag.
De knop aansluiten
Koppel eerst de voeding los. Sluit de knop tussen GPIO18 en GND aan. Controleer bij vierpotige breadboardknoppen welke pootjes al onderling verbonden zijn. Plaats de knop zo dat indrukken daadwerkelijk contact maakt tussen de twee gebruikte aansluitingen.
Voeg vervolgens deze sectie toe, naast de bestaande
switch:-sectie:
binary_sensor:
- platform: gpio
name: "Werkplaats drukknop"
pin:
number: GPIO18
mode:
input: true
pullup: true
inverted: true
filters:
- delayed_on: 20ms
- delayed_off: 20ms
on_press:
then:
- switch.toggle: werkplaats_testled
Een binary sensor heeft twee toestanden, bijvoorbeeld
ingedrukt en losgelaten. pullup: true zet de interne
pull-up aan. inverted: true zorgt dat indrukken als de
actieve toestand wordt behandeld. De filters van 20 milliseconden helpen
korte contacttrillingen van de knop te onderdrukken. Dit heet
debouncing.
De actie on_press schakelt de led lokaal om. Daarmee
koppelen we een ingang rechtstreeks aan een uitgang, zonder een Home
Assistant-automatisering.
Eerst een voorspelling
Wat verwacht je wanneer je de knop eenmaal indrukt? En wanneer je hem
langer ingedrukt houdt? Met on_press verwachten we één
omschakeling wanneer de ingang actief wordt. De led moet niet
voortdurend blijven wisselen zolang je de knop vasthoudt.
Installeer de firmware, druk eenmaal, kijk naar de led en controleer het log. Werkt de knop niet, kijk dan eerst of de binaire sensor van toestand verandert. Zo niet, onderzoek de bedrading en de ingang. Verandert de sensor wel maar niet de led, richt je op de actie en uitgang.
Test of het echt lokaal werkt
Laat de ESP32 ingeschakeld en verbreek tijdelijk alleen de verbinding met Home Assistant. Druk opnieuw op de knop. De led moet nog steeds omschakelen. Dat komt doordat de actie onderdeel is van de firmware.
Dat is een belangrijk ontwerpprincipe. Een lokale functie die altijd nodig is, bouwen we bij voorkeur zo dat een ander systeem er niet onnodig tussen zit.
Wat je uit dit hoofdstuk kunt meenemen
Je begrijpt waarom een ingang een duidelijke standaardtoestand nodig
heeft, wat binary_sensor, pullup,
inverted en on_press doen en hoe je een
eenvoudige lokale bediening maakt. In het volgende hoofdstuk gaan we van
twee toestanden naar echte meetwaarden.