Posts mit dem Label Webcam werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Webcam werden angezeigt. Alle Posts anzeigen

Mittwoch, 6. November 2024

Raspberry Pi - WLAN Überwachungskamera mit MotionEyeOS (Zero W)

In diesem Beitrag werde ich auf das MotionEyeOS eingehen, welches eine Linux-Distribution für Einplatinencomputer ist und diese in ein Videoüberwachungssystem verwandelt. 


Der Anwendungsfall ist relativ einfach, die Software soll eine Bewegung vor der Kamera erkennen und diese Bilder auf der SD-Karte speichern und ggf. weitere Aktionen (z.B. E-Mail Benachrichtigung) ausführen.

Folgende Hardware wird benötigt:

Wie genau das Kamera Modul angeschlossen wird, habe ich bereits in dem Beitrag "Raspberry Pi - Camera Modul V2.1" beschrieben.

Hinweis: Am Besten als erstes die SD-Karte mit dem MotionEye Betriebssystem beschreiben, dann muss man später den Pi nicht wieder zerlegen.

MotionEyeOs Image Flashen

1. Neueste Version von MotionEyeOS herunterladen (entsprechend dem verwendeten Raspberry Pi-Modell): https://github.com/ccrisan/motioneyeos/releases

2. Micro SD-Karte in einem Computer einlegen und den Raspberry Pi Imager starten und "Use custom" auswählen


3. Jetzt die zuvor heruntergeladene Motioneyeos-Version (.img.xz Datei) auswählen und flashen (SD Card -> Write). Dies dauert ca. 1-2 Minuten.

Damit anschließend die WLAN-Konfiguration und der SSH-Zugriff funktioniert, bitte die nachfolgenden Beiträge beachten:

 

MotionEyeOS starten und einrichten

Wenn alles funktioniert hat, startet der Raspberry Pi jetzt mit dem installierten MotionEyeOS. Eine direkte Verbindung mit einem Monitor ist nicht unbedingt erforderlich beim ersten Start, ist aber hilfreich um die aktuell zugewiesene IP-Adresse auslesen zu können.

Die nachfolgende Konfiguration kann jetzt über das komfortable Webinterface erfolgen. Hierfür einfach die jetzt zugewiesene IP-Adresse in der Adresszeile des Browser eingeben (192.168.1.100) und als "admin" einloggen.

Benutername: admin
Passwort: <leer>

 

Folgende Einstellungen kann ich für den Raspberry Pi Zero W empfehlen:
  • Zeitzone: General -> Time Zone -> Europe Berlin
  • Feste IP-Adresse: Network -> IP Configuration > Manual Static IP
  • FTP Server deaktivieren: Services -> Enable FTP Server off
  • Kamera Name: Video Device -> Camera Name -> <Name> 
  • Video Auflösung: Video Device -> Video Resolution -> 1024×780
  • Bilder Pro Sekunde: Video Device -> Frame Rate -> 8
  • Aufbewahrungsfrist Bilder: Still Images -> Preserve Pictures -> For One Month
  • (Optional) E-Mail Benachrichtigung: Motion Notifications -> Send An Email (ggf. funktioniert hier nur der SMTP-Port 25)


Zugriff auf die Bilder per Windows Explorer (IP-Adresse des Raspberry Pi) im Windows Explorer eingeben. Zum Beispiel: \\192.168.1.100


Sonntag, 5. März 2023

ESP32 - WLAN-Kamera mit ESP32-CAM-Modul (Tasmota)

Mit Hilfe der Tasmota Firmware, welche eigentlich für Sensoren und Schalter verwendet wird, kann man auch sehr gut die Kamera des ESP32-CAM-Modul betreiben. Das ESP32-CAM-Entwicklungsboard mit Kameramodul gibt es schon für ca. 15 EUR. Die Anwendungsgebiete wären z.B. Webcam, Beobachtungs Kamera oder auch Gesichtserkennung.


ESP32 Cam – Verbindung mit USB Brücke (FTDI)

Leider hat das ESP32-CAM-Modul keine direkte USB-Schnittstelle. Um die Programmierung durchführen zu können benötigt man einen USB to Serial Konverter. Dieser FTDI (Yizhet FTDI Serial Adapter FT232RL USB zu TTL Adapter 3,3V / 5V Modul) kostet ca. 3-4 EUR.


Hinweis: Bitte auf die richtige Spannung von 3.3V des FTDI achten!

Für die Verkabelung habe ich ein Steckbrett und Pinheader Kabel verwendet.

  1. Strom Verbindung herstellen (3,3V und Masse (GND)) verbinden
  2. Datenleitungen (RX/TX) anschließen
  3. Verbindung zwischen Masse und IO0 wird NUR zum Programmieren gesteckt und danach wieder entfernt. Vor der Programmierung sollte man ggf. ein Reset durchführen.


Tasmota Webcam Server installieren

  1. Schritt: Firmware aufspielen, hierfür benötigt man nur einen Browser, welcher auf die USB-Schnittstelle Zugriff hat.
  2.  Schritt: Verbindung zwischen Masse und IO0 kappen, damit die Konfiguration (für z.B. WLAN) erfolgen kann.

    • nn
  3. Schritt: Einstiegsseite (IP-Adresse des ESP32) zeigt das Kamerabild

Übersicht über die Konfigurationsoptionen des Kamera-Webservers in Tasmota https://cgomesu.com/blog/Esp32cam-tasmota-webcam-server/#webcam-server-additional-configurations.

Eine weitere Alternative Firmware ist https://github.com/easytarget/esp32-cam-webserver, diese lässt sich aber nicht direkt per Browser installieren (siehe auch Arduino IDE für ESP32 einrichten). Auch interssant ist die folgende KI Firmware https://jomjol.github.io/AI-on-the-edge-device/index.html.

Quelle c't 6/2023 S. 30

Dienstag, 1. Juni 2021

ImageMagick - Wasserzeichen (watermark) einem Bild hinzufügen

In dem Artikel Raspberry Pi - Camera Modul V2.1 bin ich bereits kurz auf ImageMagick eingegangen, um das Bild meiner Webcam anzupassen. Mittlerweile nutzen viele Dienste ungefragt meine Webcam Bilder und schneiden sogar den Copyright Hinweis einfach ab (siehe z.B. https://www.outdooractive.com/de/webcam/obergeis-webcam-neuenstein/55939506/). Daher habe ich mich entschieden in jedes Bild ein größeres Wasserzeichen einzubauen und das Vorgehen hier zu beschreiben.


Damit man ein Wasserzeichen in sein Bild einbauen kann, wird natürlich ein passendes Logo benötigt.
Ich nehme dafür das bereits vorhandene Logo meiner Android App und setze es oben rechts (northeast) in die Ecke.

Dafür ist der folgende Befehl notwendig:

convert cam.jpg ic_launcher_192x192.png -gravity northeast -geometry +10+10 -composite cam-watermark.jpg

Was genau bedeuten die beiden Befehle?

  • convert - liest Bilder, bearbeitet sie und speichert sie ab
  • geometry +10+10 - um das Wasserzeichen 10 Pixel von der ausgewählten Ecke nach innen zu verschieben
  • composite - überlagert mehrere Bilder zu einem Bild


Samstag, 2. November 2019

Raspberry Pi - Camera Modul V2.1

Für den Raspberry Pi gibt es ein Kamera Modul V2, welche mit dem Flachbandkabel direkt an den CSI-Port (Camera Serial Interface) angeschlossen wird. Die Kamera kann full HD 1080p mit 30fps und hat einen 8 Megapixel Sensor (Sony IMX219).

Hinweis für die Verwendung der Kamera am Raspberry Pi Zero

Das Kameramodul wird mit einem flexiblen Kabel geliefert, das nicht in den CSI-Kameraanschluss des Raspberry Pi Zero W passt. Dieses muss durch z.B. AZDelivery Ersatz Flexkabel 15 cm für Raspberry Pi Zero Kamera/Display 15cm ersetzt werden.



Adafruit Raspberry Pi Camera Board Case für mit 1/4 Zoll Stativhalterung, ich habe hier die Plastikabdeckung entfernt. Da das Loch für die Linse nicht optimal ist. Mir ging es hier in erster Linie nur um die Möglichkeit die "Pi Cam" auf ein Stativ zu stellen.

Kamera aktivieren

Bevor man mit der Kamera arbeiten kann, muss man sie in unter raspi-config aktivieren.

Update 2025: "If you are using the legacy camera stack, it will only have support for the Camera Module 1, Camera Module 2 and the High Quality Camera, and will never support any newer camera modules." --> https://www.raspberrypi.com/documentation/computers/camera_software.html

sudo raspi-config => 5 Interfacing Options => Enable Camera
sudo raspi-config => 3 Interfacing Options => I1 Legacy Camera Enable Camera

Einzelbilder erstellen

Mit dem folgenden Befehl lässt sich ein erstes Bild erstellen:
 raspistill -o testimage.jpg
Nach einer Auslöseverzögerung von ca. 5s wird ein Bild mit der Maximalauflösung der Pi Cam von 3280 x 2464 Pixel erstellt.


Fehler - mmal: Cannot read camera info, keeping the defaults for OV5647

Sollte es hierbei zu der folgenden Fehlermeldung kommen:

mmal: Cannot read camera info, keeping the defaults for OV5647</strong>
mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
mmal: Failed to create camera component
mmal: main: Failed to create camera component
mmal: Camera is not detected. Please check carefully the camera module is installed correctly


Dies kann verschiedene Ursachen haben, das verwendete Flachbandkabel hat einen Defekt oder sitzt nicht richtig, die Kamera wurde nicht per raspi-config aktiviert, die Kamera selber ist nicht richtig mit dem Sockel verbunden.
In meinem Fall war einfach die verwendete Kamera selber defekt. Tipp: Mittlerweile bestelle ich alle Pi Bauteile im Doppelpack ;-)

Mit den Befehlen -hf horizontal und -vf vertikal lässt sich das Bild drehen:
raspistill -hf -vf -o testimage.jpg

Videos aufnehmen

Mit dem folgenden Befehl lässt sich ein erstes Video aufnehmen:
raspivid -o testvideo.h264 -t 8000
Auch hier lässt sich das Bild mit -hf und -vf wieder drehen.

Mit dem folgenden Befehl lässt sich auch die Bitrate (default: 17MBit/s) anpassen, um in einer geringeren Qualität (z.B. 9MBit/s) die Videos aufzunehmen.
raspivid -o testvideo.h264 -t 8000 -b 9000000
Weitere Befehle finden sich in der original Dokumetation zum Kameramodul.

Angepasstes Script für den "Webcam- und Temperatur-Server mit OLED Display"

In dem Artikel vom Februar 2015 (https://sebastianhemel.blogspot.com/2015/02/raspberry-pi-logitech-webcam-anschlieen.html), habe ich noch eine Logitech USB-Webcam verwendet.
 
Durch die Verwendung des Camera Moduls, muss das Script (webcam.sh) angepasst werden.
Zuvor muss auch ImageMagick installiert werden, damit das erstellte Bild angepasst werden kann (z.B. crop, Titel, Datum und Uhrzeit).
sudo apt-get install imagemagick
Jetzt benötigen wir noch die Schriftart arial, welche wir schon hier verwendet haben.

Mit der Option ROI "Region of Onterest" kann man den Zoom für einen bestimmten Bereich realisieren. Siehe auch https://elinux.org/Rpi_Camera_Module:
-roi, --roi     : Set region of interest (x,y,w,d as normalised coordinates [0.0-1.0])
Ich selber habe mich aber dann für die "crop" Funktion von ImageMagick entschieden:
convert camPre.jpg -crop 1920x1080+550+680 cam.jpg
Angepasste webcam.sh

#!/bin/sh
# Webcam Bild mit Pi Cam erstellen und auf FTP hochalden
# (c) Sebastian Hemel

OPTIONS='-w 2592 -h 1944 -q 95 -x'
DATE=$(date +"%d.%m.%Y")
HOUR=$(date +"%R")

#-roi, --roi     : Set region of interest (x,y,w,d as normalised coordinates [0.0-1.0])
#raspistill -roi 0.6,0.6,1,1 -o /home/pi/webcam/cam.jpg $OPTIONS

raspistill -o /home/pi/webcam/camPre.jpg $OPTIONS
#Overlay?
#composite -gravity center overlay.png  cam.jpg  result1.jpg

#crop rectangle, start at top corner X: 550 Y: 680, crop rectangle to be of size W: 1920 H: 1080
convert /home/pi/webcam/camPre.jpg -crop 1920x1080+550+680 /home/pi/webcam/cam.jpg
convert /home/pi/webcam/cam.jpg -font /home/pi/font/arial.ttf \
   -pointsize 15 -fill white -annotate +1785+1072  \
   $DATE \
   -pointsize 15 -fill white -annotate +1865+1072  \
   $HOUR \
   -pointsize 15 -draw "gravity southwest \
   fill white text 15,6 'www.webcam-ingolstadt.de | 85051 Ingolstadt' " \
/home/pi/webcam/cam.jpg

sleep 1
ncftpput -f /home/pi/ftp.cfg /cam /home/pi/webcam/cam.jpg



Nicht vergessen, den FTP Client zu installieren. siehe auch https://sebastianhemel.blogspot.com/2015/02/raspberry-pi-logitech-webcam-anschlieen.html:
sudo apt-get install ncftp

Dienstag, 19. Januar 2016

Spion im Wohnzimmer - Offene Webcams finden

Viele Webcams sind über das Internt frei zugänglich und haben oft gar keinen oder nur einen sehr einfachen Schutz vor fremden Zugriffen.

Es gibt Möglichkeiten diese mit einigen Suchbegriffen über Google zu finden oder man verwendet  spezielle Suchmaschinen für diesen Fall. Eine davon ist zum Beispiel SHODAN.
https://www.shodan.io/search?query=webcam
Hier findet man schnell tausende Webcams ohne Passwortschutz und viele lassen sich mit einem einfachen Angriff hacken. Zum Beispiel:

  • User: admin PW: admin
  • User: admin PW: 1234 

Sonntag, 8. Februar 2015

Raspberry Pi - Logitech Webcam anschließen incl. FTP-Client

Die folgenden Pakte müssen vorab für die Webcam installiert werden:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get -u dist-upgrade
sudo apt-get install fswebcam ncftp
Es gibt auch noch das Paket motion => Bewegungserkennung.

Jetzt kann die USB Webcam angeschlossen werden. Nach erfolgreicher Installation sollte Sie hier aufgelistet sein.
lsusb

Mit dem folgenden Befehl kann jetzt ein erstes Test-Bild erstellt werden:
fswebcam test.jpg
 --- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'test.jpg'.

Erstellen einer Konfigurations-Datei für das Webcam-Bild (webcam.cfg):
device /dev/video0
jpeg 95
resolution 1280x720

#Zuschneiden des Bildes
#crop 930x570,190x150

#Ausgabegroesse
#scale 465x282

timestamp "%d.%m.%Y %H:%M"
title "www.webcam-ingolstadt.de | 85051 Ingolstadt"
set "White Balance Temperature, Auto"=True
set "Backlight Compensation"=0
set "Brightness"=140
set "Contrast"=25
set "Saturation"=25
skip 3
frames 3
save "/home/pi/webcam/cam.jpg"
Welche Funktion die Webcam bereitstellt, kann mit dem folgenden Befehl abgerufen werden:
fswebcam -d /dev/video0 --list-controls


Anschließend soll das soeben erstellte Bild noch per FTP auf einen Webserver hochgeladen werden und ein Cron-Job erstellt werden.

Erstellen einer Konfigurations-Datei für den FTP-Client (ftp.cfg):
host HOST-IP
user NUTZERNAME
pass PASSWORT
Jetzt kann mit dem Befehl
ncftpput -f /home/pi/webcam/ftp.cfg /cam /home/pi/webcam/cam.jpg
das Bild auf dem hinterlegten FTP-Server hochgeladen werden.

Abschließend kann das nachfolgende Bash-Script noch mit einem Cron-Job verbunden werden, damit z.B. alle 5min ein Bild erstellt wird von 08:00 - 17:55 Uhr.

Aufruf mit crontab -e und folgendes eintragen:
*/5 8-17 * * * /home/pi/webcam/webcam.sh >/dev/null 2>&1

#!/bin/sh
# Webcam Bild erstellen und auf FTP hochalden
# (c) Sebastian Hemel

fswebcam -c /home/pi/webcam/webcam.cfg
sleep 1
ncftpput -f /home/pi/webcam/ftp.cfg /cam /home/pi/webcam/cam.jpg