Dokumentoidaampas hiukan omaa Reolink - VPN - Frigate-säätöä. Mulla on siis parissa paikassa eri puolilla suomea kameroita, joista halutaan kuva näkyville ja talteen jos jotain tapahtuu. Mahdollisesti myös säädetään jossain kohtaa hälytyksiä "mökin pihalla ihminen" tms, kuhan homma on hiottu luotetettavaksi.
Kamerana siis noin viidelläkympillä ostettuja Reolinkin 410:jä, sekä tuota perusmallia poe:lla että rinnakkaista wifi-versiota:
https://reolink.com/product/rlc-410/ Nämä ostettu suoraan tuolta, tulee noin viikossa DHL:llä, suomikauppiaillakin näitä hyvin näyttä olevan saatavilla oletettavalla hintaerolla.
Noiden kaverina etäkohteessa on sit mikrotikin routeri, paikasta riippuen joko suoraan 4G:llä tai sitten vaan wifipurkki joka on kiinni paikan päällä valmiiksi olleessa huaweissa. Mikrotik avaa openvpn:llä yhteyden mun kotikoneelle, tähän väliin pitäisi jossain kohtaa joku dyndns vielä viritellä kun nyt on pariin kertaan puolen vuoden sisään ip vaihtunut DNA:n kaapelimodeemissa, aikaisemmin säilyi useamman vuoden putkeen.
Kotikoneella tämä pyörii koska tuo Frigate (
https://frigate.video/ ) käytännössä tarvii kylkeensä joko USB tai PCI-E väyläisn Googlen Coral-tekoälypalikan
https://coral.ai/ . Moisen liittäminen pilvikoneeseen olisi kovasti haastavampaa. Tässä on myös tämän järjestelmän skaalautumisen isoin ongelma, noi palikat ovat maailmasta täysin loppu jos ei ebay:n riistohintoja makseta, ehkä kesällä voisi olla taas saatavissa normaalilla alle satasen hinnalla.
Softat koti-linux-koneella pyörivät tuota openvpn:ää lukuunottamatta Dockerissa, senkin voisi joskus sinne jumpata niin olisi helpompi siirtää tarvitaessa uudelle koneelle.
docker-compose.yaml näyttää seuraavalta: (sopivasti anonymisoituna, toivottavasti ei montaa bugia tullut siinä mukaan
Koodi:
version: "3.8"
services:
mqtt:
container_name: "bb-mqtt"
image: eclipse-mosquitto
volumes:
- "/opt/bb/mosquitto:/mosquitto"
networks:
- bb-srv
restart: unless-stopped
rtmp:
container_name: "bb-rtmp"
image: tiangolo/nginx-rtmp
volumes:
- "/opt/bb/rtmp/proxy.conf:/etc/nginx/nginx.conf"
networks:
- bb-srv
restart: unless-stopped
frigate:
container_name: "bb-frigate"
privileged: true # this may not be necessary for all setups
restart: unless-stopped
image: blakeblackshear/frigate:stable-amd64
volumes:
- /etc/localtime:/etc/localtime:ro
- /opt/bb/frigate/config/config.yml:/config/config.yml:ro
- /opt/bb/frigate/media:/media/frigate
- /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware
- /dev/bus/usb:/dev/bus/usb
- type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
target: /tmp/cache
tmpfs:
size: 1000000000
networks:
- bb-srv
ports:
- "5000:5000"
- "1935:1935" # RTMP feeds
environment:
FRIGATE_RTSP_PASSWORD: "password"
homeassistant:
container_name: "bb-ha"
image: "ghcr.io/home-assistant/home-assistant:stable"
volumes:
- /opt/bb/ha:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
privileged: true
networks:
- bb-srv
ports:
- "8123:8123"
networks:
bb-srv:
RTMP-proxyn konffi, tuotannossa mulla on tossa kolme samanlaista kameraa:
Koodi:
worker_processes auto;
rtmp_auto_push on;
events {}
rtmp {
server {
listen 1935;
listen [::]:1935 ipv6only=on;
application cam1-main {
live on;
pull rtmp://<ip>/bcs/channel0_main.bcs?channel=0&stream=0&user=<user>&password=<pass>;
record off;
}
application cam1-sub {
live on;
pull rtmp://<ip>/bcs/channel0_sub.bcs?channel=0&stream=0&user=<user>&password=<pass>;
record off;
}
}
}
Frigaten konffi, tässä käytössä PCI-e versio coralista. Myöskin tästä siivottu tunnistetietoja ja toistuvat muut kamerat
Koodi:
mqtt:
host: mqtt
detectors:
coral:
type: edgetpu
device: pci:0
record:
enabled: true
retain_days: 5
events:
retain:
default: 14
ffmpeg:
global_args:
- -hide_banner
- -loglevel
- info
# hwaccel_args:
# - -hwaccel
# - vaapi
# - -hwaccel_device
# - /dev/dri/renderD128
# - -hwaccel_output_format
# - yuv420p
input_args:
- -avoid_negative_ts
- make_zero
#- -fflags
#- nobuffer
#- -flags
#- low_delay
- -strict
- experimental
- -fflags
- +genpts+discardcorrupt
# - -rw_timeout
# - "5000000"
# - -use_wallclock_as_timestamps
# - "1"
cameras:
cam1:
ffmpeg:
inputs:
- path: rtmp://rtmp:1935/cam1-main/
roles:
- record
- rtmp
- path: rtmp://rtmp:1935/cam1-sub/
roles:
- detect
detect:
width: 640
height: 352
fps: 7
objects:
track:
- person
- car
- cat
Tuo proxy on tuossa välissä ihan tarpeen, syystä tai toisesta frigate ei tykkää palauttaa tuota tallennus-striimiään jos verkko pääse hikkaamaan välissä. Eli ilman proxyä mulla tuo paremman laadun tallennuskuva katosi noin vuorokaudessa softan käynnistyksen jälkeen, löytyyäkseen uudestaan seuraavalla bootilla.
Yksi kehityskohde tässä on vielä tuo h264-streamin rautapurku, sitä en oo vielä testannut.
Mainittujen lisäksi tuossa dockerissa potkitaan käyntiin home-assistant joka toimii käyttöliittymänä noille kameroille, ja tekee mahdollisesti tulevaisuudessa hälyjäkin. Lisäksi yhdessä kohteissa on myös esp8266-palikalla tehty lämpömittari seuraamassa lämpötiloja, sieltä saadaan tarvittaessa kans hälyä jos putket meinaa mennä pakkaselle.