- Integratie van de UniversalTelegramBot-bibliotheek om HTTPS-communicatie met de Telegram API te vereenvoudigen.
- Afstandsbediening van GPIO-pinnen voor het aansturen van actuatoren zoals LED's en het uitlezen van schakelstatussen.
- Beveiliging wordt geïmplementeerd door middel van chat-ID-validatie en het gebruik van SSL-certificaten.

Heeft u er wel eens aan gedacht om uw domotica-apparaten vanaf uw luie stoel te bedienen met uw mobiele telefoon? Het opzetten van een systeem om een ESP32 via Telegram te bedienen is een van de eenvoudigste en krachtigste manieren om de wereld van domotica te betreden zonder uw leven te compliceren met dure externe servers of onmogelijke configuraties.
De magie zit hem in het transformeren van je board in een kleine server die luistert naar commando's van een bot. Je hoeft geen programmeerwonder te zijn, want met een paar libraries en een beetje geduld kun je je apparaat zo instellen dat het lampen aanzet of je in realtime via sms-berichten waarschuwt over de status van een sensor.
Materialen die je nodig hebt
Om te beginnen hoef je geen fortuin uit te geven. Het belangrijkste is dat je een ESP32-bord hebt ; het maakt niet uit of het een ouder model is of een van de nieuwste, want de compatibiliteit is volledig. Naast het brein van het project heb je een aantal basiscomponenten nodig om te testen:
- Een lichtgevende diode (LED) om te controleren of alles werkt.
- Een weerstand van 220 ohm om te voorkomen dat de LED doorbrandt.
- Een drukknop of schakelaar om fysieke toestanden uit te lezen.
- Aansluitkabels en een breadboard, zodat je in het begin niets hoeft te solderen.
Elektronische circuitassemblage
Voordat je de code bewerkt, moet je de hardware voorbereiden. In dit voorbeeld sluiten we de LED aan op GPIO-pin 33 en de schakelaar op GPIO-pin 14. Het is belangrijk om te onthouden dat je deze pinnen naar behoefte kunt wijzigen, maar je moet die wijziging later wel doorvoeren in de constanten van het programma.
De LED is met de bijbehorende weerstand verbonden voor bescherming, terwijl de drukknop intern is geconfigureerd om extra bedrading te vermijden. Zodra je het circuit op het breadboard hebt opgebouwd , kun je verdergaan met het softwaregedeelte, waar alle actie plaatsvindt.
De bot instellen in Telegram
Om de ESP32 te laten weten naar wie hij moet luisteren, moeten we eerst de identiteit van de bot aanmaken binnen de Telegram-app zelf. Dit proces is cruciaal omdat het twee belangrijke stukken informatie oplevert: het token van de bot (een lange reeks cijfers en letters) en je persoonlijke gebruikers-ID . Zonder deze twee sleutels kan het apparaat zichzelf niet authenticeren of bepalen wie gemachtigd is om commando's te geven.
Mocht je op enig moment het gevoel hebben dat de chat chaotisch wordt, vergeet dan niet dat je de geschiedenis altijd kunt wissen via het menu rechtsboven. Hierdoor wordt de bot opnieuw opgestart en keert hij terug naar de startpagina met de beschikbare commando's, zodat je weer helemaal opnieuw kunt beginnen.
Het voorbereiden van de ontwikkelomgeving
Om de code te laten werken, moeten we een tool installeren die ons leven gemakkelijker maakt: de UniversalTelegramBot -bibliotheek . In plaats van honderden regels code te schrijven om de Telegram API af te handelen, doet deze bibliotheek bijna alles voor ons.
Om de bibliotheek te installeren, ga je naar de bibliotheekbeheerder van de Arduino IDE, typ je de naam van de bibliotheek in en klik je op 'Installeren'. Zorg er ook voor dat je de bibliotheken WiFi en WiFiClientSecure hebt geïnstalleerd , want hiermee kan de ESP32 verbinding maken met internet en het HTTPS-protocol gebruiken voor veilige communicatie.
Controlecode-analyse
Het programma begint met het definiëren van uw wifi-netwerkgegevens en de sleutels van de bot. Het is essentieel dat u de voorbeeldwaarden vervangt door uw eigen waarden. SSID en wachtwoordevenals het token en de chat-ID. Voor interactiviteit definiëren we een variabele genaamd info Dit bestand bevat een lijst met commando's die de bot herkent, zoals /led_on of /sw_state.
Bericht- en commandobeheer
De kern van het systeem is de functie die controleert op nieuwe berichten. De ESP32 gebruikt de methode getUpdates voor controleer de berichtenwachtrij Afkomstig van Telegram. Om te voorkomen dat een onbekende je huis overneemt, bevat de code een filter dat controleert of de ID van de afzender exact overeenkomt met die van jou. vooraf gedefinieerde CHAT_ID.
Nadat de gebruiker is gevalideerd, analyseert de bot de ontvangen tekst: als hij detecteert... /led_onHet stuurt een digitaal signaal naar pin 33 om het licht aan te doen; als het ontvangt /led_off, schakelt het uit. Er is ook de optie om /led_togglewat erg praktisch is omdat keert de huidige toestand om van de LED zonder dat je hoeft te weten of deze eerder aan of uit stond.
Sensoruitlezing en voltooiing
Naast het geven van commando's kan de bot ook informatie verstrekken. Met behulp van het commando /sw_stateDe ESP32 leest de status van pin 14. Omdat we de pin als volgt hebben geconfigureerd: INPUT_PULLUPHet apparaat detecteert of de knop is ingedrukt en stuurt ons een sms-bericht ter bevestiging.
Tijdens het opstarten maakt het apparaat op een vergrendelde manier verbinding met wifi, wat betekent dat het niets doet totdat de verbinding stabiel is . Om de beveiliging verder te verbeteren, wordt het rootcertificaat van Telegram gebruikt, waardoor het dataverkeer versleuteld is. De hoofdloop herhaalt simpelweg elke seconde de berichtcontrole om het systeem snel en responsief te houden.
Met dit systeem hebben we hardware en software succesvol geïntegreerd om een draadloze communicatiebrug te creëren. We hebben een bot geconfigureerd, de beveiliging beheerd met behulp van ID's en certificaten, en GPIO-pinreacties geprogrammeerd om vanaf elke locatie met een internetverbinding met de fysieke wereld te communiceren.
Veel gestelde vragen
Welke bibliotheek is nodig om de ESP32 met Telegram te verbinden?
Gebruik de UniversalTelegramBot-bibliotheek, die de interactie met de Telegram API vereenvoudigt en het verzenden en ontvangen van berichten vergemakkelijkt.
Hoe zorg ik ervoor dat alleen ik de bot kan besturen?
De code implementeert een filter dat de chat-ID van het ontvangen bericht vergelijkt met een vooraf gedefinieerde CHAT_ID, waarbij alle commando's van een andere gebruiker worden genegeerd.
Is het noodzakelijk om HTTPS te gebruiken voor de communicatie met de bot?
Ja, Telegram vereist beveiligde verbindingen, dus WiFiClientSecure wordt gebruikt en het rootcertificaat van Telegram moet op de ESP32 geconfigureerd zijn.
Wat is het doel van de opdracht /led_toggle in de code?
Met dit commando wordt de huidige status van de LED omgekeerd: de LED wordt ingeschakeld als deze uit was, of uitgeschakeld als deze aan was.
Waarom wordt INPUT_PULLUP gebruikt voor de schakelaar?
Het wordt gebruikt om de interne weerstand van de printplaat te activeren, waardoor het niet nodig is om een externe fysieke weerstand aan het drukknopcircuit toe te voegen.
Waar vind ik het bottoken en de gebruikers-ID?
Het token wordt verkregen door de bot aan te maken via BotFather op Telegram, en de gebruikers-ID kan worden verkregen via bots die gespecialiseerd zijn in het achterhalen van de profielidentiteit.



