ESP32 S3 Kamera - Foto an Telegram senden, wenn die Tür geöffnet wird
Dieses Tutorial zeigt Ihnen, wie Sie mit dem ESP32 S3 eine Türkamera bauen. Ein magnetischer Türsensor überwacht Ihre Tür. Sobald jemand sie öffnet, macht der ESP32 S3 ein Foto und sendet es mit Telegram an Ihr Handy. Sie sehen, wer die Tür geöffnet hat, von überall auf der Welt.

Was Sie bauen werden:
- Ihren eigenen Telegram-Bot, der Ihnen Nachrichten sendet
- Eine ESP32 S3 Kamera mit einem magnetischen Türsensor
- Ein Foto mit dem Text "The door is open!" auf Ihrem Handy, jedes Mal wenn die Tür geöffnet wird
- Saubere Erkennung, sodass eine Türbewegung genau ein Foto sendet
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
※ Notiz:
Das ESP32 S3 Kamera-Board hat 40 Pins, aber der Schraubklemmenblock und das Breakout-Board haben 44 Pins. Sie funktionieren trotzdem zusammen. Setzen Sie das Kamera-Board in die Mitte des 44-Pin-Boards, sodass links 2 Pins und rechts 2 Pins frei bleiben.
Mit dem Schraubklemmenblock können Sie Drähte mit einem Schraubendreher anschließen, ganz ohne Löten. Das Breakout-Board bietet Ihnen einfache Stiftleisten für ein Steckbrett.
Überblick über Telegram
Telegram ist eine kostenlose Chat-Anwendung für Ihr Handy und Ihren Computer. Mit Telegram können Sie einen Bot erstellen. Ein Bot ist ein Roboter-Freund in Ihrer Chatliste. Ihr ESP32 S3 sendet das Foto an den Bot, und der Bot zeigt es Ihnen.
Sie benötigen zwei geheime Texte:
| Name | Was es ist | Sieht so aus |
|---|---|---|
| Bot-Token | Das Passwort Ihres Bots | 8012345678:AAHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| Chat-ID | Die Nummer Ihres Chats | 123456789 |
※ Notiz:
Zeigen Sie Ihr Bot-Token niemals jemandem und stellen Sie es niemals auf eine Website oder auf GitHub. Wer Ihr Token hat, kann Ihren Bot steuern.
Schritt 1: Erstellen Sie Ihren Bot
- Installieren Sie Telegram auf Ihrem Handy und erstellen Sie ein Konto.
- Suchen Sie in Telegram nach @BotFather. Er hat ein blaues Häkchen.
- Öffnen Sie den Chat mit BotFather und schreiben Sie ihm so:
BotFather
- Kopieren Sie das Bot-Token aus der letzten Nachricht und bewahren Sie es sicher auf.
Schritt 2: Finden Sie Ihre Chat-ID
- Suchen Sie in Telegram nach dem Namen Ihres neuen Bots und öffnen Sie den Chat.
- Senden Sie eine beliebige Nachricht an Ihren Bot, zum Beispiel hello. Dieser Schritt ist notwendig. Telegram erlaubt einem Bot nicht, Ihnen zu schreiben, bevor Sie ihm geschrieben haben.
ArduinoBot
- Öffnen Sie diese Adresse in Ihrem Webbrowser. Setzen Sie Ihr eigenes Bot-Token anstelle von <YOUR_BOT_TOKEN> ein:
- Der Browser zeigt einen langen Text. Suchen Sie nach "chat":{"id":. Die Zahl dahinter ist Ihre Chat-ID:
※ Notiz:
Zeigt der Browser {"ok":true,"result":[]} ohne Inhalt an? Dann haben Sie Ihrem Bot noch keine Nachricht gesendet. Gehen Sie zurück zu Schritt 2, senden Sie hello an Ihren Bot und laden Sie die Adresse erneut.
※ Notiz:
Viele andere Tutorials empfehlen, den Bot @myidbot mit der Nachricht /getid zu fragen. Dieser Bot gehört jemand anderem und antwortet sehr oft überhaupt nicht. Die obige Webadresse funktioniert immer, weil sie Telegram direkt fragt.
※ Notiz:
Schritt 2 vergessen? Dann zeigt der ESP32 S3 die Antwort Forbidden: bot can't initiate conversation with a user im Seriellen Monitor. Öffnen Sie den Chat mit Ihrem Bot, senden Sie ihm eine beliebige Nachricht und versuchen Sie es erneut.
Schritt 3: Tragen Sie die Werte in den Code ein
Öffnen Sie den Code und ändern Sie diese vier Zeilen:
Überblick über Door Sensor
Ein Türsensor besteht aus zwei Teilen:
- Einem kleinen Kunststoffgehäuse mit zwei Drähten. Dieser Teil enthält einen Reedschalter. Sie befestigen ihn am Türrahmen.
- Einem zweiten Kunststoffgehäuse ohne Drähte. Dieser Teil enthält einen Magneten. Sie befestigen ihn an der Tür selbst.
Wenn die Tür geschlossen ist, befindet sich der Magnet neben dem Reedschalter und schließt ihn. Wenn die Tür geöffnet wird, entfernt sich der Magnet, und der Schalter öffnet sich wieder.

Weitere Details zum Türsensor finden Sie im Tutorial ESP32 S3 - Türsensor.
Wichtige Spezifikationen
| Eigenschaft | Wert |
|---|---|
| Typ | Magnetischer Reedschalter (Schließer, normalerweise offen) |
| Drähte | 2, ohne Polarität |
| Schaltabstand | etwa 15 mm bis 25 mm |
| Stromversorgung | Keine. Es ist nur ein Schalter. |
※ Notiz:
Die beiden Drähte haben kein Plus und kein Minus. Sie können sie in beliebiger Richtung anschließen.
Wie der ESP32 S3 die Tür ausliest
Der Türsensor ist nur ein Schalter, daher muss der ESP32 S3 selbst eine Spannung bereitstellen. Wir verwenden den internen Pull-up-Widerstand:
Mit INPUT_PULLUP ist der Pin HIGH, wenn nichts ihn nach unten zieht. Die Tabelle zeigt, was passiert:
| Tür | Magnet | Reedschalter | Pin liest |
|---|---|---|---|
| Geschlossen | Neben dem Schalter | Geschlossen (mit GND verbunden) | LOW |
| Offen | Vom Schalter entfernt | Offen (nichts verbunden) | HIGH |
Im Code also:
Warum der Code 50 Millisekunden wartet
Ein Metallschalter wechselt nie sauber. In den ersten Millisekunden springt er viele Male zwischen offen und geschlossen. Das nennt man Prellen. Ohne Schutz würde eine einzige Türbewegung fünf Fotos senden.
Der Code wartet, bis der Wert 50 Millisekunden lang gleich bleibt:
Bewegungssensor oder Türsensor?
Beide ergeben eine kleine Sicherheitskamera, aber sie sind nicht gleich:
| Türsensor | Bewegungssensor (PIR) | |
|---|---|---|
| Erkennt | Nur das Öffnen der Tür | Jeden warmen Körper, der sich bewegt |
| Fehlalarme | Fast nie | Manchmal (Heizungen, Fenster, Tiere) |
| Aufwärmzeit | Keine | 30 bis 60 Sekunden |
| Benötigt Strom | Nein | Ja, 5V |
| Funktioniert durch Glas | Ja | Nein |
Ein Türsensor ist die bessere Wahl, wenn Sie von einem genauen Ereignis erfahren möchten. Siehe auch das Tutorial ESP32 S3 Kamera - Foto an Telegram senden, wenn eine Bewegung erkannt wird.
Wiring Diagram between Door Sensor and ESP32 S3
Verbinden Sie die beiden Drähte des Türsensors mit Ihrem ESP32 S3.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
| Draht des Türsensors | ESP32 S3 Pin |
|---|---|
| Erster Draht | GPIO2 |
| Zweiter Draht | GND |
Befestigen Sie dann die beiden Teile des Sensors an Ihrer Tür:
- Befestigen Sie den Teil mit den Drähten am Türrahmen.
- Befestigen Sie den Teil ohne Drähte an der Tür selbst.
- Bewegen Sie die Tür, bis die beiden Teile nebeneinander liegen. Sie müssen sich fast berühren, mit einem Abstand von weniger als 15 mm.
- Richten Sie die Kamera auf die Tür.
Sicherheitshinweise
Der Türsensor benötigt keinen Strom. Schließen Sie ihn nicht an 5V oder 3,3V an. Ein Draht geht an GPIO2, der andere an GND. Es kann nichts kaputtgehen, weil es nur ein Schalter ist.
Die Kamera verwendet GPIO4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17 und 18. Verwenden Sie diese Pins nicht für den Sensor. GPIO2 ist frei, deshalb verwenden wir ihn.
Arduino IDE Einstellungen für die ESP32 S3 Kamera
Die Kamera funktioniert nicht mit den Standardeinstellungen der Arduino IDE. Sie müssen einige Punkte im Menü Tools ändern, bevor Sie den Code hochladen.
| Menüpunkt in Tools | Diese Option wählen |
|---|---|
| Board | ESP32S3 Dev Module |
| Flash Size | 16MB (128Mb) |
| PSRAM | OPI PSRAM |
| Partition Scheme | Huge APP (3MB No OTA/1MB SPIFFS) |
| CPU Frequency | 240MHz (WiFi) |
| USB Mode | Hardware CDC and JTAG |
| Upload Mode | UART0 / Hardware CDC |
| Upload Speed | 921600 |
| USB CDC On Boot | Enabled |
※ Notiz:
PSRAM muss OPI PSRAM sein, und Partition Scheme muss Huge APP sein. Ändern Sie zuerst Flash Size, da sich danach die Liste der Partition-Scheme-Optionen ändert.
Wie man ein Foto an Telegram sendet
Sie müssen keine Bibliothek installieren. Der Code spricht direkt mit Telegram.
- Telegram verwendet https, daher benötigen wir einen sicheren Client.
※ Notiz:
setInsecure() bedeutet, dass der ESP32 S3 nicht prüft, wer der Server wirklich ist. Für ein kleines Heimprojekt ist das in Ordnung und spart viel Speicher. Das Foto wird trotzdem über eine verschlüsselte Verbindung gesendet.
- Um ein Foto zu senden, verwenden wir die Telegram-Adresse /bot<TOKEN>/sendPhoto. Das Foto wird innerhalb einer Multipart-Nachricht übertragen. Eine Multipart-Nachricht besteht aus Teilen, und eine Textzeile namens Boundary trennt die Teile. Dieses Projekt verwendet drei Teile: die Chat-ID, den Text und das Foto.
※ Notiz:
Der Teil caption ist der Text unter dem Foto in Telegram. Ändern Sie The door is open! in eine beliebige Nachricht.
- Die Content-Length muss die Größe von allem sein: dem ersten Teil, dem Foto und dem letzten Teil.
※ Notiz:
Eine falsche Content-Length ist der häufigste Fehler. Telegram wartet dann auf weitere Daten und antwortet nie.
- Senden Sie das Foto in kleinen Stücken. Ein großes write() schlägt bei einer sicheren Verbindung oft fehl.
- Lesen Sie die Antwort. Dieser Teil hat eine Falle. Telegram antwortet und schließt die Verbindung sofort, daher muss Ihr Code auch nach dem Schließen der Verbindung weiterlesen.
※ Notiz:
Eine Schleife der Form while (client.connected() && ...) sieht richtig aus, ist aber falsch. Telegram schließt die Verbindung sehr schnell, daher ist client.connected() oft schon false. Die Schleife läuft dann nie, und Sie verwerfen eine Antwort, die tatsächlich vorhanden ist. Der Serielle Monitor meldet, dass das Foto fehlgeschlagen ist, obwohl das Foto auf Ihrem Handy angekommen ist.
- Wenn alles in Ordnung ist, enthält die Antwort von Telegram "ok":true.
※ Notiz:
Dieses Projekt verwendet eine kleine Bildgröße (FRAMESIZE_SVGA, 800×600), da ein kleines Foto viel schneller gesendet wird. Ein Foto mit 50 KB dauert etwa 3 Sekunden. Ein Foto mit 200 KB dauert etwa 10 Sekunden.
ESP32 S3 Code
Der folgende Code sendet jedes Mal ein Foto an Ihren Telegram-Chat, wenn die Tür geöffnet wird. Wenn die Tür wieder geschlossen wird, wird nichts gesendet. Die Ruhezeit beträgt 30 Sekunden, sodass eine Person, die die Tür mehrmals öffnet und schließt, Ihren Chat nicht überflutet. Um sie zu ändern, ändern Sie die Zeile #define QUIET_TIME 30000.
Schnelle Schritte
- Neu beim ESP32 S3? Absolvieren Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3.
- Erstellen Sie Ihren Telegram-Bot und finden Sie Ihre Chat-ID. Siehe die Schritte oben.
- Ziehen Sie das USB-Kabel ab und schließen Sie dann die beiden Drähte des Türsensors wie in der Tabelle oben an.
- Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
- Ändern Sie YOUR_WIFI_SSID, YOUR_WIFI_PASSWORD, YOUR_TELEGRAM_BOT_TOKEN und YOUR_TELEGRAM_CHAT_ID.
- Ändern Sie die Einstellungen im Menü Tools. Siehe die Tabelle oben.
- Kompilieren Sie den Code und laden Sie ihn auf das ESP32 S3 Board hoch, indem Sie in der Arduino IDE auf die Schaltfläche Upload klicken.

- Öffnen Sie den Seriellen Monitor in der Arduino IDE.

- Drücken Sie einmal die Taste RESET.
- Legen Sie die beiden Teile des Sensors nebeneinander. Der Serielle Monitor meldet, dass die Tür geschlossen ist.
- Bewegen Sie die beiden Teile voneinander weg, wie bei einer sich öffnenden Tür.
- Schauen Sie auf Ihr Handy. Das Foto kommt in Ihrem Telegram-Chat an, mit dem Text darunter:
ArduinoBot

Serieller Monitor
Die folgenden Messwerte wurden im Jahr 2026 aufgezeichnet:
Wenn die Tür zu schnell wieder geöffnet wird, meldet der Code dies und sendet nichts:
Fehlerbehebung
Der Serielle Monitor meldet immer, dass die Tür offen ist, auch wenn sie geschlossen ist.
- Die beiden Teile sind zu weit voneinander entfernt. Sie müssen sich fast berühren, mit einem Abstand von weniger als 15 mm.
- Prüfen Sie den Draht an GPIO2 und den Draht an GND.
- Manche Türsensoren sind "normalerweise geschlossen" (Öffner) statt "normalerweise offen" (Schließer). Dann müssen die beiden Zeilen #define DOOR_CLOSED LOW und #define DOOR_OPEN HIGH ihre Werte tauschen.
Der Serielle Monitor meldet immer, dass die Tür geschlossen ist.
Die beiden Drähte berühren sich wahrscheinlich, oder ein Draht ist am falschen Pin. Ein Draht geht an GPIO2, der andere an GND.
Eine Türbewegung sendet zwei oder drei Fotos.
Erhöhen Sie DEBOUNCE_TIME von 50 auf 150.
Der Serielle Monitor zeigt Forbidden: bot can't initiate conversation with a user.
Sie haben Ihrem Bot nie geschrieben. Öffnen Sie Telegram, suchen Sie Ihren Bot und senden Sie ihm eine beliebige Nachricht. Drücken Sie dann RESET auf dem Board.
Der Serielle Monitor zeigt Unauthorized.
Ihr Bot-Token ist falsch. Kopieren Sie es erneut von BotFather. Das Token besteht aus zwei Teilen, die durch : verbunden sind, und Sie benötigen es vollständig.
Der Serielle Monitor zeigt chat not found.
Ihre Chat-ID ist falsch. Fragen Sie @myidbot erneut mit /getid. Setzen Sie keine Leerzeichen um die Zahl.
Der Serielle Monitor zeigt Telegram did not answer at all.
Das Board hat das Foto gesendet, aber nichts zurückbekommen. Prüfen Sie Ihre Internetverbindung. Manche Schul- und Firmennetzwerke blockieren Telegram, versuchen Sie es daher mit dem Hotspot Ihres Handys. Wenn das Foto auf Ihrem Handy ankommt, obwohl das Board einen Fehler meldet, stoppt Ihre Leseschleife zu früh. Siehe den Hinweis zu client.connected() oben.
Der Serielle Monitor zeigt Sending stopped after ... bytes.
Das WLAN ist abgebrochen, während das Foto gesendet wurde. Stellen Sie das Board näher an den Router oder verwenden Sie eine kleinere Bildgröße.
Der Serielle Monitor zeigt Cannot connect to Telegram.
Prüfen Sie, ob Ihr WLAN funktioniert. Die IP-Adresse muss im Seriellen Monitor erscheinen. Manche Schul- und Firmennetzwerke blockieren Telegram, versuchen Sie es daher mit dem Hotspot Ihres Handys.
Das Foto dauert lange.
Verwenden Sie eine kleinere Bildgröße. FRAMESIZE_VGA (640×480) ist etwa halb so groß wie SVGA.
Das Foto ist dunkel.
Die Kamera kann im Dunkeln nicht sehen. Bringen Sie ein Licht in der Nähe der Tür an oder eine Lampe, die sich mit der Tür einschaltet.
Anwendungen
Ein Türsensor liefert Ihnen ein klares Ereignis mit fast keinen Fehlalarmen, daher eignet sich dieses Projekt überall dort, wo etwas geschlossen bleiben muss. Hier sind praktische Projekte, die Sie mit diesem Code bauen können:
- Sicherheitskamera für die Haustür: Sehen Sie, wer Ihre Haustür öffnet, während Sie bei der Arbeit oder im Urlaub sind.
- Paketkasten-Kamera: Erhalten Sie ein Foto, wenn der Zusteller Ihren Paketkasten oder Ihren Briefkasten öffnet.
- Medizinschrank-Alarm: Erfahren Sie, wenn ein Kind einen Schrank öffnet, der geschlossen bleiben muss.
- Ladentür-Zähler: Behalten Sie ein Bild von jedem Kunden, der die Ladentür öffnet.
- Alarm für Werkzeugkasten, Tresor oder Spind: Erhalten Sie ein Foto, sobald jemand ihn öffnet, auch wenn Sie weit weg sind.
- Garagentor-Benachrichtigung: Erfahren Sie, wenn Ihr Garagentor oder Ihr Schuppen nachts geöffnet wird.
- Fensteröffnungs-Alarm: Befestigen Sie den Sensor an einem Fenster statt an einer Tür und erhalten Sie ein Foto, wenn es geöffnet wird.
- Serverschrank und Schaltschrank: Führen Sie eine Fotoaufzeichnung von allen, die bei der Arbeit einen Schrank öffnen.
- Kühlschrank- oder Gefrierschrank-Wächter: Ein lustiges Heimprojekt, um zu sehen, wer das letzte Stück Kuchen nimmt.
- Hotelzimmer oder Mietwohnung: Wissen Sie, dass die Tür geschlossen blieb, während das Zimmer leer war.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.
Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung für dieses ESP32 S3 Projekt an.
Herausforderungen
- Einsteiger: Ändern Sie den Text unter dem Foto von The door is open! in Ihre eigene Nachricht.
- Fortgeschritten: Senden Sie auch eine Nachricht, wenn die Tür wieder geschlossen wird, damit Sie wissen, wie lange sie offen war.
- Profi: Senden Sie ein Foto nur nachts, zwischen 22:00 und 06:00 Uhr. Verwenden Sie einen NTP-Zeitserver, um die echte Uhrzeit zu lesen.