- Integrering av UniversalTelegramBot-biblioteket for å forenkle HTTPS-kommunikasjon med Telegram API.
- Fjernkontroll av GPIO-pinner for å betjene aktuatorer som LED-er og lese brytertilstander.
- Implementering av sikkerhet gjennom Chat ID-validering og bruk av SSL-sertifikater.

Har du noen gang vurdert å kontrollere hjemmeautomatiseringsenhetene dine fra sofakroken med mobiltelefonen? Vel, å sette opp et system for å kontrollere en ESP32 via Telegram er en av de enkleste og kraftigste måtene å komme inn i hjemmeautomatiseringens verden uten å komplisere livet ditt med dyre eksterne servere eller umulige konfigurasjoner.
Magien ligger i å gjøre brettet ditt om til en liten server som lytter til kommandoer fra en bot. Du trenger ikke å være en programmeringsgeni, for med et par biblioteker og litt tålmodighet kan du få enheten din til å slå på lys eller varsle deg om statusen til en sensor i sanntid, alt gjennom direktemeldinger.
Materialer du trenger
For å komme i gang trenger du ikke å bruke en formue. Det viktigste er å ha et ESP32-kort ; det spiller ingen rolle om det er en eldre modell eller en av de nyeste, siden kompatibiliteten er total. I tillegg til prosjektets hjerne trenger du noen grunnleggende komponenter for testing:
- En lysdiode (LED) for å sjekke at alt fungerer.
- En motstand på 220 ohm for å unngå at LED-en brenner ut.
- En trykknapp eller bryter for å lese fysiske tilstander.
- Tilkobling av kabler og et koblingsbrett slik at du ikke trenger å lodde noe i begynnelsen.
Elektronisk kretsmontering
Før du redigerer koden, må du forberede maskinvaren. I dette eksemplet kobler vi LED-en til GPIO-pinne 33 og bryteren til GPIO 14. Det er viktig å huske at du kan endre disse pinnene etter behov, men du må gjenspeile denne endringen senere i programmets konstanter.
LED-en er koblet til den tilhørende motstanden for beskyttelse, mens trykknappen er konfigurert internt for å unngå ekstra kabling. Når du har montert kretsen på koblingsbrettet , kan du gå videre til programvaredelen, som er der alt skjer.
Botoppsett i Telegram
For at ESP32 skal vite hvem den skal lytte til, må vi først opprette botens identitet i selve Telegram-applikasjonen. Denne prosessen er avgjørende fordi den gir to viktige opplysninger: botens token (en lang rekke med tall og bokstaver) og din personlige bruker-ID . Uten disse to nøklene kan ikke enheten autentisere seg selv eller bestemme hvem som er autorisert til å gi den kommandoer.
Hvis du på noe tidspunkt føler at chatten har blitt kaotisk, husk at du alltid kan slette historikken fra menyen øverst til høyre. Dette vil starte boten på nytt og returnere til hjemknappen med de tilgjengelige kommandoene, slik at du kan starte på nytt.
Klargjøring av utviklingsmiljøet
For at koden skal fungere, må vi installere et verktøy som gjør livene våre enklere: UniversalTelegramBot -biblioteket . I stedet for å skrive hundrevis av kodelinjer for å håndtere Telegram API, gjør dette biblioteket nesten alt for oss.
For å installere det, gå til Arduino IDEs bibliotekbehandler, skriv inn biblioteknavnet og klikk på installer. Sørg også for at du har WiFi- og WiFiClientSecure- bibliotekene installert , da disse lar ESP32 koble til internett og bruke HTTPS-protokollen for sikker kommunikasjon.
Kontrollkodeanalyse
Programmet begynner med å definere Wi-Fi-nettverkslegitimasjonen din og robotens nøkler. Det er viktig at du erstatter eksempelverdiene med dine egne. SSID og passordsamt token og chat-ID. For interaktivitet definerer vi en variabel kalt info som inneholder listen over kommandoer som boten vil gjenkjenne, for eksempel /led_on eller /sw_state.
Meldings- og kommandohåndtering
Systemets hjerte er funksjonen som sjekker etter nye meldinger. ESP32 bruker metoden getUpdates til sjekk meldingskøen fra Telegram. For å forhindre at fremmede kontrollerer hjemmet ditt, inkluderer koden et filter som bekrefter at avsenderens ID samsvarer nøyaktig med din. forhåndsdefinert CHAT_ID.
Når brukeren er validert, analyserer boten den mottatte teksten: hvis den oppdager /led_onDen sender et digitalt signal til pinne 33 for å slå på lyset; hvis den mottar /led_off, slår den av. Det finnes også muligheten til å /led_togglenoe som er veldig praktisk fordi reverserer den nåværende tilstanden av LED-lyset uten at du trenger å vite om det tidligere var på eller av.
Sensoravlesning og fullføring
I tillegg til å utstede kommandoer, kan boten også gi informasjon. Bruk av kommandoen /sw_stateESP32 leser tilstanden til pinne 14. Siden vi har konfigurert pinnen som INPUT_PULLUPEnheten vil oppdage om knappen er trykket inn eller ikke, og vil sende oss en tekstmelding som bekrefter det.
Under oppstartsprosessen kobler enheten seg til Wi-Fi på en låst måte, noe som betyr at den ikke vil gjøre noe før forbindelsen er stabil . For å forbedre sikkerheten ytterligere brukes Telegrams rotsertifikat, noe som sikrer at datatrafikken er kryptert. Hovedløkken gjentar ganske enkelt meldingssjekken hvert sekund for å holde systemet smidig og responsivt.
Med dette systemet har vi integrert maskinvare og programvare for å lage en trådløs kommunikasjonsbro. Vi har konfigurert en bot, administrert sikkerhet ved hjelp av ID-er og sertifikater, og programmert GPIO-pin-svar for å samhandle med den fysiske verden fra hvor som helst med en internettforbindelse.
Vanlige spørsmål
Hvilket bibliotek trengs for å koble ESP32 til Telegram?
UniversalTelegramBot-biblioteket bør brukes, noe som forenkler samhandling med Telegram API og letter sending og mottak av meldinger.
Hvordan sørger jeg for at bare jeg kan kontrollere boten?
Koden implementerer et filter som sammenligner chat-ID-en til den mottatte meldingen med en forhåndsdefinert CHAT_ID, og ignorerer kommandoer som kommer fra en annen bruker.
Er det nødvendig å bruke HTTPS for å kommunisere med boten?
Ja, Telegram krever sikre tilkoblinger, så WiFiClientSecure brukes og Telegram-rotsertifikatet må konfigureres på ESP32.
Hva er hensikten med /led_toggle-kommandoen i koden?
Denne kommandoen brukes til å invertere LED-lysets gjeldende tilstand, slå den på hvis den var av eller slå den av hvis den var på.
Hvorfor brukes INPUT_PULLUP for svitsjen?
Den brukes til å aktivere den interne motstanden på kortet, og dermed unngår man behovet for å legge til en ekstern fysisk motstand til trykknappkretsen.
Hvor får jeg tak i bot-tokenet og bruker-ID-en?
Tokenet innhentes ved å opprette boten gjennom BotFather på Telegram, og bruker-ID-en kan innhentes gjennom boter som spesialiserer seg på å innhente profilidentiteten.



