Last Updated on 30 juli 2025 by Syds
Op internet zijn er legio tutorials te vinden over het omturnen van een ESP32-Cam ontwikkelbord tot een heuse beveiligingscamera. Tijd om er eens zelf te maken.
Het idee is om een ESP32-Cam ontwikkelbord, met een cameralens, te voorzien van een Tasmota Webcam image. Vervolgens te koppelen met Domoticz. Op de plek waar ik de security cam wil plaatsen, namelijk gericht op de oprit, hangt een bewegingsmelder voor het aansturen van de buitenverlichting. Deze bewegingsmelder is reeds geïntegreerd binnen Domoticz (zie mijn tutorial https://www.sydspost.nl/index.php/2021/04/26/bewegingsmelder-slim-maken-met-shelly-i3/). Ik wil de door deze bewegingsmelder gesignaleerde beweging de security cam laten triggeren en één of meer foto’s laten maken of een video gedurende de tijd dat er beweging wordt gesignaleerd. Zodra er beweging wordt gesignaleerd wordt er een notificatie via Domoticz verstuurd naar mij emailadres en/of een pushsaver bericht. De bewegingsmelder is aangesloten op het elektriciteitsnet. Qua voeding zit ik te denken aan een HI-Link PCB voeding of iets dergelijks die aangesloten wordt op het elektriciteitsnet via de bewegingsmelder zodat ik geen extra kabels hoef te trekken.
Onderdelenlijst:
Aantal | Onderdeel | Te bestellen bij | Kosten |
1 | ESP32-Cam ontwikkelbord | www.aliexpress.com | € 6,71 |
1 | OV5640 cameramodule 5MP | www.aliexpress.com | € 5,69 |
1 | WiFi 2.4ghz antenne + IPX naar SMA kabel | www.aliexpress.com | € 3.55 |
1 | Hi-Link HLK-PM03 converter | www.aliexpress.com | € 3,08 |
2 | 2-voudige PCB terminal | Op voorraad | |
2 | Female dupont connectors | Op voorraad | |
1 | PCB prototype board 70x30mm | Op voorraad | |
1 | FD 10S kabeldoos 80x43x36mm | Markthal Berltsum | € 1,99 |
0,5 meter | dun twee-aderig draad | Op voorraad | |
Optioneel 1 | Dummy camera | www.aliexpress.com | € 8,69 |
Benodigdheden:
- ESP32-CAM-MB USB module of FTDI-USB adapter
- USB-C kabel
- Krimptang voor dupont connectors
- Optioneel: 3D-printer + PLA
- Optioneel: secondenlijm
- Boormachine met 6mm boortje en optioneel een stappenboor
Up-and-running:
- Domoticz server, met MQTT plugin
- MQTT-server
- Optioneel t.b.v. Stap 6:
- Google account (of account voor andere cloudopslag)
- rclone geïnstalleerd op Domoticz server en geconfigureerd voor Google Drive (of andere cloudopslag), zie ook https://rclone.org/drive/
Stap 1. Domoticz configureren
We gaan eerst de ip-cam toevoegen aan Domoticz. Kies in het hoofdmenu voor Instellingen -> Meer Opties -> Camera’s. Klik op “+ Camera toevoegen”, het volgende scherm verschijnt:

Onderstaand een toelichting op de niet default instellingen:
Attribuut | Waarde | Toelichting |
Naam | Beveiligingscamera Oprit | Logische naam |
IP Adres | beveiligingscamera-oprit | fqdn-naam of IP-adres van je ESP32, zie volgende stap |
ImageUrl | wc.jpg | Default voor Tasmota |
Klik op “Add” om de camera toe te voegen, we testen deze later na de volgende stap.
Tot slot configureren we in de emailinstellingen dat er een foto meegestuurd moet worden bij de emailnotificatie. Klik op Instellingen -> Instellingen, kies voor het tabblad “E-mail”, het volgende scherm verschijnt:

Vink de optie “Stuur camerabeelden als bijlage (Gmail)” aan en klik op “Bewaar Instellingen”.
Indien je E-mail notificaties überhaupt nog niet hebt ingesteld, volg dan de instructies op de wiki van Domoticz. Voor het configureren van Pushsafer notificaties verwijs ik je graag naar stap 8. van mijn Bel camera tutorial: https://www.sydspost.nl/index.php/2021/03/16/slimme-bel-met-camera/
Je bent klaar met het configureren van Domoticz.
Stap 2. ESP-32 CAM voorzien van Tasmota Webcam image en configureren
Sluit de ESP-32 CAM met behulp van een ESP32-CAM-MB USB Module of FTDI-USB adapter en USB-C kabel aan op je laptop/desktop.
Installeer Tasmota Webcam m.b.v. de webtool op https://tasmota.github.io/install/. Kies voor de Tasmota32 WebCam (english) release, de rest wijst zich zelf dit inclusief het instellen van je WiFi SSID en Password.
Open het menu van het device in je browser, en kies voor “Configuration”, het volgende scherm verschijnt:

Kies voor “Configure Other”, het volgende scherm verschijnt:

Onderstaand een toelichting op de niet default instellingen:
Attribuut | Waarde | Toelichting |
Template | {“NAME”:”AITHINKER CAM”,”GPIO”:[4992,1,672,1,416,5088,1,1,1,6720,736,704,1,1,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,576,5094,5095,5092,0,0,5093],”FLAG”:0,”BASE”:2} | Knip en plak de waarde in dit veld |
Activate | Vink aan | Hiermee activeer je bovenstaande template |
HTTP API enable | Vink aan | De HTTP API is nodig zodat Domoticz de foto kan ophalen |
MQTT enable | Vink aan | De communicatie met Domoticz verloopt via de MQTT server |
Device Name | Beveiligingscamera-Oprit | Herkenbare naam van het device, komt boven het hoofdmenu te staan. |
Klik op “Save”, als je op het hoofdmenu terugkeert kies dan opnieuw voor “Configuration” en vervolgens voor “Configure Wifi”, het volgende scherm verschijnt:

Onderstaand een toelichting op de niet default instellingen:
Attribuut | Waarde | Toelichting |
Hostname | Beveiligingscamera-Oprit | FQDN-naam van het device, zie ook stap 1. |
Klik op “Save”, als je op het hoofdmenu terugkeert kies dan opnieuw voor “Configuration” en vervolgens voor “Configure Wifi”, het volgende scherm verschijnt:

Onderstaand een toelichting op de niet default instellingen:
Attribuut | Waarde | Toelichting |
Host | <ip-address of FQDN-naam van je MQTT server> |
Klik op “Save”, als je op het hoofdmenu terugkeert kies dan voor “Tools” en vervolgens voor “Console”. De console verschijnt. Toets achtereenvolgens de volgende commando’s in op de command prompt:
Rule1 ON System#Boot DO WcInit ENDON
Rule1 1
WcResolution 5 (bij standaard OV2640) of WcResolution 10 (bij OV5640)
WcMirror 1
Toelichting op de commando’s:
Commando | Toelichting |
Rule1 ON System#Boot DO WcInit ENDON | Deze rule zorgt ervoor dat de camera geinitialiseerd wordt bij het opstarten van het systeem. |
Rule1 1 | Zet de rule aan |
WcResolution 5 | Zet de camera resolutie op CIF (400×296) |
WcResolution 10 | Zet de camera resolutie op UXGA (1600×1200) |
WcMirror 1 | Flipped het beeld horizontaal |
Je bent nu klaar met het configureren van Tasmota. We sluiten dit af met enkele tests. We gaan eerst de camera testen. Ga hiervoor terug naar Domoticz, en kies voor Instellingen -> Meer opties -> Camera’s. Klik op het video icoontje om de video stream te starten.

Het volgende scherm verschijnt:

het was al schemerig toen ik deze foto nam
De camera werkt binnen Domoticz ! Nu nog de email notificatie testen. Navigeer binnen Domoticz naar Schakelaars en kies de virtuele schakelaar die je in stap 1. hebt aangemaakt, zet die aan en check je mail:

Zet de schakelaar daarna uit. Dat werkt allemaal, op naar de volgende stap, het printen van een casing.
Stap 3. Casing printen
Noot: 8-7-2025 Deze casing is bedoeld voor binnenhuis gebruik. Mijn intentie was om deze security cam achter een raam te plaatsen zodat mooi droog zou blijven en ik gebruik kon maken van een stopcontact binnen. Echter ben er achter gekomen dat door weerspiegeling van de zon op het raam de kwaliteit van de beelden enorm achteruit ging. Daarom besloten om een (waterdichte) dummy camera op Aliexpress te bestellen en de ESP32-Cam hierin te verwerken. Wil je ook een waterdichte oplossing voor buiten, sla dan stap 3 en 4 over, en scroll door naar Stap 5.
Ik heb een mooie behuizing voor de ESP32-Cam gevonden op Thingiverse: https://www.thingiverse.com/thing:5373465. Download de files en print die uit, je krijgt dan onderstaande onderdelen.








Hieronder de geprinte onderdelen:

Stap 4. Assemblage
Met een 6mm boortje maken we één van de uitsparingen in de body iets groter zodat we daar de antennekabel in kunnen monteren.

Vervolgens klikken we de antennekabel op de ESP32-CAM, de aansluiting zit net boven de S van ESP-32S. Dit gaat best moeizaam, gebruik eventueel voorzichtig een tangetje om ze op elkaar te klikken.

Vervolgens plaatsen we de ESP32-CAM in de body en zekeren die met het geprintje stripje en een zelftappend schroefje.


Nu gaan we de voedingsdraad doorvoeren. Neem een stukje twee-adering draad en voer dit door de swivel, voer de draad door het rechtergat van de body, en klik de body op de swivel. Haal de draad door de connector en druk de connector in de swivel. Haal de draad door de muursteun en klik de swivel met connector op de muursteun.


We splitsen de draad en strippen deze 3-4mm. Met een krimptang knippen we er twee female dupont connectors op. We werken dit af met een klein stukje krimpkous. Vervolgens koppelen we de ene draad met de 3.3v (3v3) aansluiting van de ESP32-CAM, en de andere met een ground (GND) aansluiting. Tot slot drukken we het deksel op de body.
Stap 5. Voeding
Voor de voeding gebruik ik een Hi-Link HLK-PM03 converter, deze zet 220 volt AC om naar 3.3v DC. De converter soldeer ik samen met twee terminals op een stukje printplaat.

Soldeer de componenten op de PCB, en verbindt de terminals m.b.v. een stukje koperdraad met de in- en output pins van de Hi-Link.

Nu gaan we de security cam bevestigen op de kabeldoos. Hiervoor boren we twee 3mm gaatjes in het deksel van de kabeldoos. Leg de “Wall mount” die je geprint hebt op het deksel en teken alle drie de gaten af. Boor met een 3mm boortje alle drie de gaten. Schroef m.b.v. twee moertjes en boutjes de Wall mount op het deksel van de kabeldoos. Steek het draad door het middelste gat en schuif de camera op de kabeldoos. Verbindt de draden met de output terminal van de voeding, let er op dat je de + (3.3v) en de – (gnd) goed om bevestigd.



Plaats de voeding onderste boven in de kabeldoos en sluit het deksel.


Je security cam is klaar om ergens gemonteerd te worden, veel kijkplezier 😉
Optioneel: Stap 6. Waterdichte oplossing, de dummy camera
Voor een waterdichte oplossing voor buitenhuis maak ik gebruik van een dummy camera:


Deze dummy camera beschikt over genoeg ruimte voor het herbergen van de ESP32-Cam en voeding, heeft een knipperend rood ledje en een ingang voor de kabel en een zonnepaneeltje die 3v afgeeft. Aangezien ik de camera onder de dakoverstek ga plaatsen waardoor er geen direct zonlicht op het zonnepaneeltje gaat vallen, ga ik de knipperende led ook voeden vanuit dezelfde voeding waar ik de ESP32-Cam uit ga voeden.
Allereerst ga ik de batterijhouder er uithalen, die heb ik toch niet nodig en het front van de dummy halen om ruimte te maken voor de cameralens van de ESP32-Cam. Hiervoor draai ik alle schroefjes aan de binnenkant los van de batterijhouder en van het front en maak ik de aansluiting van het zonnepaneeltje los.



Vervolgens maak ik de schroefjes aan de binnenkant van het front los en soldeer ik de batterijhouder los van het front.



Met een stappenboor verwijder ik de achterkant van de “nep” cameralens om ruimte te maken voor de cameralens van de ESP32-Cam, deze past daar dan straks precies in. Om ongewenste filtering/vervorming van de nep lens te voorkomen druk ik deze eruit m.b.v. de boor. Met een stanleymesje werk ik de rafelige randen wat bij.

Na mijn eerdere niet waterdichte implementatie beschreven in stappen 4 & 5 te hebben ontmanteld hou ik onderstaande componenten over om te verwerken in de dummy camera:

We beginnen nu met de assemblage van de componenten in de dummy camera, te starten met de voeding en het netsnoer.

Het netsnoer leidt ik door de bestaande invoer van de dummy camera, en sluit ik aan op de voeding. De voeding schroef ik met 1 schroefje vast aan de bestaande steun van het batterijcompartiment.
Ik lijm de cameralens van de ESP32-Cam in het ontstane gat, en zorg ervoor dat deze horizontaal uitgelijnd is.


Ik soldeer jumperdraden aan de led, de – draad plaats ik op een vrije ground (gnd) pin van de ESP32. De + draad soldeer ik op de weerstand en voeg ik samen met de 3.3v voeding. Tenslotte sluit ik de antennedraad aan.

De camera kan weer in elkaar gezet worden. Ik schroef eerst het frame met de ESP32-Cam op het front van de dummy camera. En daarna de bovenklep samen met het front weer op de body van de camera. Het zonnepaneeltje sluit ik niet opnieuw aan, deze heeft geen functie meer. De bovenklep dicht en dan is dit het resultaat.


Stap 7. Optioneel: Video verzenden via Pushsafer
Deze stap is optioneel, maar stelt je in staat om een video opname te maken na een gesignaleerde beweging, via Pushsafer hiervan een notificatie te krijgen op je telefoon en de video op je telefoon te bekijken.
Grofweg is de werking als volgt. Een bewegingsmelder triggert een Unix Shell script. Dit Shell script maakt m.b.v. de utility ffmpeg een videoclip totdat er geen beweging meer geconstateerd wordt, slaat deze videoclip op op een plek waarbij hij vanaf internet bereikbaar is. En stuurt vervolgens een notificatie naar je telefoon met een link naar voorgenoemde video.
We beginnen met het Unix script:
pi@raspberrypi:~/domoticz/scripts $ cat SecCam.sh
#!/bin/bash
# Auteur: S. Post
# Website: www.sydspost.nl
# Versie: 1.0
#
domoticzUrl="http://192.168.2.29:8080" # http(s) url van je Domoticz server
OutputDir="/home/pi/SecCam" # Output direcotry for footage
rtspUrl="rtsp://beveiligingscamera-oprit.sydspost.nl:8554/mjpeg/1" # rtsp URL van beveiligingscamera
httpUrl="http://beveiligingscamera-oprit.sydspost.nl/wc.jpg" # http(s) URL van beveiligingscamera
httpOutputUrl="https://www.sydspost.nl/wp-content/uploads/SecCam/" # https URL waar de output bestanden staan, via internet bereikbaar
PushsaferAPIToken="********************" # Pushsafer API token
now=$(date +%d-%m-%Y_%T) # vult variable now met juiste datum/tijd formaat t.b.v. unieke bestandsnaam
idx=358 # Domoticz idx van bewegingsmelder
umask 0022 # zet file rechten op rw-r--r--
wget -q $httpUrl -O $OutputDir/SecCam$now.jpg # Haal een snapshot op
Picture=`cat $OutputDir/SecCam$now.jpg | base64 -w 0` # vult variable Picture met base64 gecodeerde snapshot jpg
nohup ffmpeg -i $rtspUrl -pix_fmt yuv420p -c:v wmv1 -map 0 $OutputDir/SecCam$now.avi >/dev/null 2>&1 & # Haal video op
while true; # zolang de beweging gedecteerd wordt, blijft de recorder lopen
do
sleep 1
if [[ `curl --url $domoticaUrl/json.htm\?type=command\¶m=getdevices\&rid=$idx -s | grep Status | awk '{print substr($3,2,2)}'` == "Of" ]]; then # check of bewegingsmelder nog actief is
kill -9 `ps -ef | grep 'ffmpeg -i' | grep -v grep | awk '{print $2}'` # bewegingsmelder is niet meer actief, stop recorder
curl -s --form-string "t=Beveiligingscamera-Oprit" --form-string "m=Beweging op de oprit" --form-string "i=82" --form-string "d=82294" --form-string "u=$httpOutputUrl/SecCam$now.avi" --form-string "ut=Video" --form-string "p=data:image/jpeg;base64,$Picture" --form-string "k=$PushsaferAPIToken" https://www.pushsafer.com/api # Zend video en snapshot naar Pushsafer API
break # stop script
fi
done
Pas het unix script aan met jou specifieke instellingen en sla de file op in ~/domoticz/scripts. Geef de file een logische naam, bijvoorbeeld “SecCam.sh”. Zorg voor execute rechten d.m.v. het commando:
chmod 755 <filenaam>
Zoals gezegd, de files moeten op een vanaf internet toegankelijk plek staan. Je kunt ze naar Dropbox of Google Drive uploaden met rclone, vervolgens de link ophalen met rclone -v, in dat geval moet je bovenstaand script aanpassen en uitbreiden. Ik heb er voor gekozen om de files toe te voegen aan de mediabibliotheek van mijn wordpress omgeving waar ik deze site ook op draai. Ik heb hiervoor met het commando
sudo ln -s /var/www/html/sydspost.nl/wp-content/uploads/SecCam /home/pi/SecCam
de output directory gekoppeld aan de uploads directory van WordPress
Om de ESP32-CAM een rtsp video stream te laten genereren dient dit nog aangezet te worden. Ga naar je ESP32-CAM en open de console. Type hier het commando:
WcRTSP 1

Laatste stap is het laten starten van het Unix script zodra de bewegingsmelder beweging detecteert. Ga in Domoticz naar de bewegingsmelder waar je security cam aan wilt koppelen en klik op “Aanpassen”, het volgende scherm verschijnt:

Plaats onderstaande code in het veld “Aan actie”:
script:///<path to domoticz>/domoticz/scripts/<Unix script naam> > /dev/null 2>&1 &
Verander <path to domoticz> naar het pad van jou domoticz installatie, en <Unix script naam> in de naam van het script die je hierboven hebt aangemaakt. Mijn code ziet er als volgt uit:
script:///home/pi/domoticz/scripts/SecCam.sh > /dev/null 2>&1 &
Sla op. Je kunt de werking nu testen door de schakelaar van je Bewegingsmelder op “Aan” te klikken. Als alles goed is gegaan zie je de volgende notificatie in Pushsafer:

Klik op “Video”, en bijbehorende video wordt afgespeeld.