Für einfache private Anwendungen gibt es beim Chinesenshop diverse PTZ Webcams um die 8 Euro.
Nachteile: Cloudbindung, Appbindung, ungutes Gefühl dass die Kamera nur „von aussen“ gesteuert wird.
Bei genauerer Untersuchung zeigt sich auch was da alles in die China-Cloud übertragen wird… das geht auch besser!
Idee: nur lokal drauf zugreifen und den Internetzugang blocken.
Schritt 1: Kamera erstmals einrichten, onvif aktivieren und dann in das „China-Wlan“ (jenes ohne Internetzugang!) verschieben.
Schritt 2: den rtsp Stream finden – leider weichen die Billigcams oft vom Standard ab. nmap kann hier helfen:
nmap -p 554 --script rtsp-url-brute 192.168.x.x
Starting Nmap 7.95 ( https://nmap.org ) at 2024-09-07 10:34 Mitteleuropõische Sommerzeit
Nmap scan report for 192.168.x.x
Host is up (0.0074s latency).
PORT STATE SERVICE
554/tcp open rtsp
| rtsp-url-brute:
| discovered:
| rtsp://192.168.x.x/MediaInput/mpeg4
| rtsp://192.168.x.x/cam1/mpeg4
| rtsp://192.168.x.x/cam1/mjpeg
| rtsp://192.168.x.x/cam4/mpeg4
| rtsp://192.168.x.x/live/mpeg4
| rtsp://192.168.x.x/live_mpeg4.sdp
| rtsp://192.168.x.x/mjpeg.cgi
| rtsp://192.168.x.x/mjpeg/media.smp
| rtsp://192.168.x.x/mpeg4
| rtsp://192.168.x.x/mpeg4/1/media.amp
| rtsp://192.168.x.x/mpeg4/media.amp
| rtsp://192.168.x.x/mpeg4/media.amp?resolution=640x480
| rtsp://192.168.x.x/mpeg4/media.smp
| rtsp://192.168.x.x/mpeg4cif
| rtsp://192.168.x.x/mpeg4unicast
|_ rtsp://192.168.x.x/streaming/mjpeg
Nice!
Schritt 3: die Cam in die lokale Homeassistant Instanz bringen… da die onvif Integration es nicht mag, wenn die Kamera in einem anderen Subnetz ist macht man das via config:
camera:
- platform: ffmpeg
name: Meine Kamera
input: rtsp://192.168.x.x/cam1/mpeg4
Schritt 4: nun noch die PTZ Steuerung als Scripte konfigurieren – die onvif Integration muss vorhanden sein und die Kameras eingerichtet – auch wenn ein Fehler kommt. Ein Beispiel (muss man für hoch, runter, links, rechts und zoom machen):
kamera_pan_left:
alias: kamera_pan_left
sequence:
- alias: Kamera Pan Left
sequence:
- data:
pan: LEFT
move_mode: RelativeMove
distance: 0.51
action: onvif.ptz
target:
entity_id: camera.kamera
description: ''
icon: mdi:arrow-left-bold
Schritt 5: die Skripte kann man in Lovelace als Buttons anzeigen lassen:
type: horizontal-stack
cards:
- show_name: false
show_icon: true
type: button
name: Pan Left
tap_action:
action: call-service
service: script.Kamera_pan_left
show_state: false
icon: mdi:arrow-left-bold
- show_name: false
show_icon: true
type: button
name: Pan Right
tap_action:
action: call-service
service: script.Kamera_pan_right
show_state: true
icon: mdi:arrow-right-bold
- show_name: false
show_icon: true
type: button
name: Tilt Up
tap_action:
action: call-service
service: script.Kamera_tilt_up
show_state: true
icon: mdi:arrow-up-bold
- show_name: false
show_icon: true
type: button
name: Tilt Down
tap_action:
action: call-service
service: script.Kamera_tilt_down
show_state: true
icon: mdi:arrow-down-bold
- show_name: false
show_icon: true
type: button
name: Zoom In
tap_action:
action: call-service
service: script.Kamera_zoom_in
icon: mdi:magnify-plus
show_state: true
- show_name: false
show_icon: true
type: button
name: Zoom Out
tap_action:
action: call-service
service: script.Kamera_zoom_out
icon: mdi:magnify-minus
Fertig! Nun kann man getrost die Kamera verwenden – denn ohne Internetzugriff fließen keine Daten ab. Der Zugriff erfolgt lediglich „lokal“ von der Kamera zum lokalen Homeassistant – und auf diesen kann man relativ sicher zugreifen.
Und wer sich da nicht auf die Sicherheit der Homeassistant App verlassen möchte – siehe Aluhut auf: Wireguard!