Eichhörnchen-Kamera (ESP32 CAM mit Push-Notification per Telegram Bot!)

Die Anzahl der Projekte mit einem ESP im heimischen WLAN wächst stetig.
Manche agieren still und heimlich im Hintergrund, andere bedürfen regelmäßiger Intervention.

In den allermeisten Fällen läuft ein Webserver mit einer kleinen Seite auf den ESP´s und ich kann lokal den aktuellen Status einsehen oder gar Dinge per Button steuern.

Nur von alleine melden können sich die Geräte nicht!
Dazu könnte man eMails versenden, GSM-Module anbringen, IFTTT nutzen, MQTT-Server aufbauen, usw.
Alles aus meiner Sicht etwas eingeschränkt. Entweder vom Umfang der Möglichkeiten oder dem Bezahlmodell.
Zumindest aber mit einer gewissen Hürde verbunden, das alles korrekt einzurichten und in Betrieb zu halten.

Dann bin ich über ein Tutorial gestolpert, welches sich einen Telegram-Bot zunutze macht.
Man kann von Telegram nun halten was man will, aber es ist ein Messenger der Nachrichten, Bilder und sogar HTML senden und empfangen kann.

Was ist nötig?
Man sucht den sog. "BotFather" und schreibt Ihm eine Nachricht /start
Nun gibt es eine Übersicht der Möglichkeiten und man wählt /newbot
Es folgt der Namen, der zwingend "Bot" enthalten muss MeinPersönlicherBot
Noch einen Benutzernamen vergeben und fertig!

Man erhält einen Token, welchen man unbedingt speichern sollte und die URL für den Bot selbst. Nachdem man diesen anhand der URL seinem Chat hinzugefügt hat, sollte man noch ein paar Einstellungen vornehmen, z.B. dass dieser nicht von irgendwelchen Gruppen abonniert werden darf.
In meinem Code prüfe ich zusätzlich noch die eingehende ChatID, damit definitiv niemand anderes etwas steuern kann. Sicher ist sicher!

  • Mehr dazu im oben verlinkten Tutorial.

Einbinden:
Die Library UniversalTelegramBot nimmt einem die ganze Arbeit ab und ist soweit selbsterklärend.
Man findet sie auch im Bibliothek-Manager.

Was ist nun möglich?
Der ESP kann Nachrichten an einen Chat oder eine Gruppe schicken. Z.B. wenn der Batteriestand zu niedrig ist.
Commands können empfangen werden um Aktionen zu starten. Eine LED an-/ausschalten.
Bilder können übertragen werden.
Der Zugriff kann von überall erfolgen, ohne dass ich Freigaben am Router machen muss oder einen Anbieter wie dyndns benötige.

Eindruck:
In Summe hat die Einrichtung des Bots bis zur ersten Nachricht von meinem ESP32 keine 10 Minuten gedauert! Bin echt begeistert wie einfach und gut das funktioniert.
Es klappt alles schnell und recht verlässlich. Nur mit dem Übertragen von Bildern habe ich ab und an noch Probleme.

Wie einfach und effektiv das Ganze funktioniert hat mich beeindruckt! Deshalb wollte ich meine kurze Erfahrung einfach mal teilen.

Von meinem aktuellen Projekt möchte ich aber noch nicht zu viel verraten, da es sich noch im absoluten Beta Bastel-Status befindet. Da kommt aber noch was in den nächsten Tagen :chipmunk:

Ohne Bilder und Beispiele findet das Thema wohl keinen großen Anklang :sweat_smile:

Also worum geht es?
Vor meinem Arbeitszimmer toben ein paar Eichhörnchen herum. Vor dem Winter würde ich gerne ein Futterhäuschen aufbauen, welches ich schon besorgt habe.
Wie bekomme ich nun also mit, dass Herr & Frau Eichhorn sich gerade bedienen?

Ein PIR oder ein Schalter am Häuschen lösen die ESP32 Cam aus und speichern das Foto auf der SD Karte. Dann verbindet sich der ESP mit dem WiFi und sendet das Bild an meinen Bot:


( Symbolfoto, hatte gerade kein echtes Eichhörnchen zur Hand)

Wie oben zu sehen, kann man dem Bot Befehle "beibringen". Ähnlich eines Webservers mit on() , kann man diese dann auf dem ESP verarbeiten.

Für den ESP32 habe ich ein WebInterface gebaut, womit man die wichtigsten Einstellungen vornehmen und die Bilder einsehen kann:

Im Livestream kann man entweder auf Knopfdruck ein Bild machen oder einen mjpeg-Stream starten.

Läuft der Webserver, wird der Deepsleep verhindert. Hat man zuende eingerichtet, Bilder heruntergeladen, per Upload Dateien ausgetauscht oder ein OTA durchgeführt, kann man den ESP wieder schlafen legen.
Entweder schaut er dann nach (je Einrichtung) 2 Minuten nach neuen Nachrichten oder wird per PIN12 aus dem Tiefschlaf gerissen.
2023-07-11_16h22_55

Aktueller Stand:
Der von mir angedachte Funktionsumfang ist erfüllt! Nun muss ich nochmal über den Code eskalieren. Anschließend landet alles auf GitHub.
Dann testen/entscheiden ob Bewegungsmelder oder Schalter an dem Deckel des Futterhäuschens (damit keine Vögel an das Futter kommen) angebracht wird.
Schlussendlich ein Gehäuse konstruieren, welches unter einem Vordach die Elektronik ausreichend schützt.

Zwischenfazit:
Den ESP mit dem Telegram-Bot zum Leben zu erwecken ist echt spannend gewesen und hat nahezu problemlos funktioniert! Nur Bilder verschicken war nicht ganz verlässlich, das liegt aber eher daran, dass die Kamera teilweise einen unvollständigen Stream liefert.
Das wird nicht mein letztes Projekt mit einem ESP und einem Bot gewesen sein!
Auch wenn es nur ein Bot für alle Geräte ist, die Fehler, Probleme oder Batteriestände melden.

Immer wieder spannend, wie alles auf dem Steckbrett hervorragend klappt und dann sauber zusammengelötet nicht mehr funktioniert :smiley:

Erst wurde der PIR gekillt, vermutlich durch unsachgemäßes ins Gehäuse quetschen, dann kamen noch einige Bugs zu Tage.
Das meiste konnte ich aber mittlerweile beheben!

Ein großes Brett war OTA, was aufgrund der standardmäßigen Partitionierung vom "AI Thinker ESP32-CAM"-Board immer im Reset geendet hat.
Schwer herauszufinden, einfach zu beheben: "ESP32 Dev Module" als Board auswählen und PSRAM aktivieren.


Nicht zu sehen: Es ist alles steckbar verbaut. Unter der Kamera befindet sich ein USB-Anschluss, welcher rein der Stromversorgung dient.

Nun funktioniert alles softwaretechnisch wie gewünscht...

Und Hardwareseitig? Tja, da ist der Gehäusedeckel leider nicht für den PIR geeignet!
Selbst auf höchster Einstellung, muss man mit dem Finger praktisch auf den Sensor tatschen. Sonst tut sich da leider nix :expressionless:

Da muss ich mir noch eine andere Lösung ausdenken. Auch wenn das Ganze unter einem Balkon geschützt ist, möchte ich alles mindestens Spritzwassergeschützt verpacken.

Sofern der Code ansehnlich wird, schiebe ich den auf Git-Hub. Ist doch sehr umfangreich geworden, mit dem Webserver, Fernsteuerung & Co.

Kannst du nicht eine kleinere Fresnellinse wasserdicht ins Gehäuse einkleben ?

Und was mir noch auffällt, die Antenne des ESP32 ist sehr ungünstig plaziert, da sie nicht frei liegt. Die darunter befindliche Platine wird die Abstrahlung ungünstig beeinflussen.

Das ist eine gute Idee! Dann fräse ich einen Ausschnitt in der Größe der original Linse in das Gehäuse und klebe diese ein. Und habe damit dann auch gleich wieder einen größeren Erfassungswinkel.

Dass ich da nicht selbst drauf gekommen bin :sweat_smile:

Mit der Antenne hast Du natürlich Recht, das ist nicht optimal. Der Repeater steht ca. 5 Meter Luftlinie entfernt, das müsste dennoch klappen.
Ansonsten schließe ich eine externe IPEX-Antenne an.

Ja, das gibt manches mal so Dinge, da kommt ma nicht drauf. :wink:
Und 5 m sollten so funktionieren, wenn nicht noch eine Wand o.ä. dazwischen ist.

Muss die Erfassung zwingend optisch erfolgen? Oder macht so ein Rauptier nicht so viel rabautz das evtl. ein Vibrationssensor für die Bewegungserfassung auch reichen tät. Hier hätte man sogar den Vorteil, dass man das ganze System Hardwareseitig so gestallten könnte, dass wenn es nicht benötigt wird komplett stromlos geschalten werden könnte. Und erst bei Bewegung alles aktiv schaltet.

Nicht zwingend.
Das Eichhörnchen-Futterhaus hat auch eine Klappe/Deckel, damit sich dort Vögel und anderes Getier nicht den Magen vollschlagen.
Dort einen Schalter anzubringen war meine erste Idee und hat auch ganz gut funktioniert.
Dann müsste die Kamera aber in dem Futterhaus angebracht werden.

Mit dem PIR kann ich flexibel den Bereich vor dem Häuschen überwachen und alles aufnehmen was dort vorbeikommt. Den Winkel verändern, sowohl von der Kamera als auch von der Erfassung.

Der PIR funktioniert im Deepsleep genauso wie ein Schalter oder ein Vibrationssensor. Der Verbrauch ist gering und ich kann aus der Ferne den ESP jederzeit aufwecken.
Bzw. wacht er alle 10 Minuten auf und prüft einmal ob was im Telegram Bot steht. Dann legt er sich wieder hin.

Denke am Ende wird der Produktiveinsatz zeigen ob das Ganze so praktikabel ist. Noch steht hier alles neben mir auf dem Schreibtisch :chipmunk:

Meine Tests habe ich auf das nächste Raubtier erweitert.
Dabei spielte mir die Positionierung und das Gegenlicht allerdings nicht gerade in die Karten:

Das kann zum Teil mit den Kameraeinstellungen kompensiert werden, allerdings hebe ich mir das dann für den späteren, echten Standort auf.
Der Timer war noch zu niedrig eingestellt, die Empfindlichkeit zu hoch. Kann man ja am PIR justieren. So bekomme ich nun ca. alle 20-25 Sekunden ein Foto, wenn sich was bewegt.

Der Umbau war erfolgreich und muss nur noch verklebt werden:


Checke noch was ich hier UV-beständiges rumliegen habe. Silikon, Sekunden-/ Heißkleber eignen sich nicht sonderlich. Im Keller hätte ich wohl noch was für den Einsatz am Wohnwagen aber wer weiß wie alt...

Der Verbrauch mit SD-Karte, Kamera, WiFi und Webserver, geht von 0,04A bis 0,1A hoch. Im Deepsleep kann mein USB-Messgerät nicht unter 0,00A darstellen. Trotz aktivem PIR. Muss ich dann mal verlässlich nachmessen.

Klappt beim Start etwas nicht, so erhalte ich das als Nachricht:
grafik

Noch zwei kleine Bugfixes an der Weboberfläche und der Ausseneinsatz kann losgehen :muscle:t2:

Aprospos, so schaut sie in "Aktion" aus:
Squirrel Cam Webinterface

1 Like

Sehr cool! Das muss ich mir merken!

1 Like

Bin zwar nicht soooo ein großer Tierfreund, als das ich für soetwas Verwendung hätte, aber muss ehrlich sagen, dass was du so schreibst und Bildtechnisch postest, macht bock auf mehr. Kurz, gefällt mir echt gut, bitte mehr davon, top!

1 Like

Schön gemacht. Großes Lob.

Gruß Tommy

1 Like

Gefällt mir auch sehr gut.
Muss ich direkt mal schaun, ob ich das nachbauen kann. :wink:

Das wäre doch jetzt etwas für die "geilen Projekte".

1 Like

Cooles projet. musst aber noch ein schild ans häusschen hängen , dass die Eichhörnchen darüber aufklärt, dass sie gefilmt werden. Und Forulare , damit Die Eichhörnchen ihr Einverständnis für die Verwendung ihrer Aufnahmen erklären können, wegen dem Datenschutz. Auch Eichhörnchen haben Rechte.

1 Like

:rofl: dann werde ich natürlich noch ein DSGVO-konformen Prozess erdenken und eine digitale Unterschrift jedes gefilmten Tierchens einfordern.
Denke da an ein eInk-Display für das Vertragswerk und eine Touchpad-Lösung für den Pfotenabdruck :paw_prints:

Der Nachbau gestaltet sich mehr als simpel. Besteht ja nur aus 2 Komponenten + Spannungsversorgung. Den Code gibt es bald. Fange immer sauber an, dann eskaliert alles, Stagnierung, blindes kopieren, hauptsache es läuft, verdammt wo war meine Struktur, Bugfix, nochmal Bugfix, letzten Bugfix wieder löschen -> aufräumen.

Sobald der Code veröffentlicht und das erste Tier erwischt ist, erstelle ich gerne noch einen Eintrag in den "geilen Projekten" :slight_smile:


Wird dann noch an der Wand montiert.
Schaut aber schon viel besser aus als am Katzentisch.

Die ganze Telegram-Implementation ist echt super geworden. Überlege schon die Rolladensteuerung, welche bisher nur im WLAN funktioniert, ebenfalls über einen Bot steuerbar zu machen.
Für die Klingel(n) auch eine gute Idee, wir haben aktuell zwei. Und ein "stiller"-Alarm wäre schon praktisch :baby:t2: :dog:
Finde die Idee der einfachen Push-Notification immer noch grandios! Quasi der Hammer und nun suche ich Nägel :sweat_smile:

Kein Problem:
Wer einen Hammer hat, sieht überall Nägel

Der Testaufbau erforderte noch den ein oder anderen Eingriff.
So ein PIR ist bauartbedingt wärmeempfindlich, dementsprechend auch für Sonneneinstrahlung sehr empfänglich.

Nicht nur im Sinne des PIR, sondern auch der Kamera macht es Sinn der Sonne den Rücken zu zudrehen.
Auch sollte man reflektierende Oberflächen meiden. Sonst gibt es Fehlauslöser und überbelichtete Ergebnisse.

Aber nun, viel Text und wenig Ergebnisse...
Hier meine ersten Erfolge, schon an Tag 2 :sunglasses:

Das mit dem Deckel hat noch nicht funktioniert. Das Hörnchen hat bisher nur die von mir gelegte Hänsel & Gretel´sche Spur verarbeitet.
Die Kamera wird noch ein bisschen gedreht und dann überlege ich mir, wie ich das Häuschen an der Wand anbringen und den Winkel einigermaßen halten kann.

Test im 24h Betrieb: :white_check_mark:
Fehlauslösungen minimiert: :white_check_mark:
Eichhörnchen: :chipmunk:

Echt cooles Projekt. bekommat Du die Eichhörnchen noch schärfer aufs Bild?

Das will ich doch stark hoffen!
Man kann noch viel mit der Position der Kamera arbeiten. Und die ESP Cam bietet noch etliche Konfigurationsmöglichkeiten.
Da muss ich mich erstmal einarbeiten und etwas Erfahrung sammeln.

Die Helligkeit unterscheidet sich doch stark bei Sonneneinstrahlung, Wolken oder Dämmerung. Im Zweifel muss man ein Foto machen und der Kamera die Zeit geben sich an die Lichtverhältnisse anzupassen. Dann erst das zweite Bild abspeichern.

Man kann glaube ich die Schärfe auch noch manuell einstellen, das checke ich gleich mal.
Ansonsten nochmal ein Bild in "vollauflösung" von heute morgen. Da war´s aber auch grau und recht dunkel:


Und die Position war noch nicht optimal :man_shrugging:t2:

1 Like

Um nun der DSGVO gerecht zu werden, weise ich den Kollegen Eichhorn nun darauf hin, gefilmt zu werden:

Die Kamera macht nun nach dem Start ein Testbild und speichert erst das Nächste. Damit ist die Überbelichtung schon deutlich geringer geworden.

In den vergangenen Tagen war es recht regnerisch und grau, das hat die "Fehlalarme" schon deutlich verringert. Als nächstes drucke ich noch eine Abdeckung für den PIR, damit dieser etwas fokussierter den zu überwachenden Bereich einschränkt.

Den Code habe ich zwar etwas überarbeitet, allerdings noch nicht "schön" strukturiert.
Wen es interessiert, liegt alles auf Git:

PS: Noch blieb es bei dem einen :chipmunk: welches sich ein bis zweimal täglich blicken lässt.

2 Likes