Take snapshot with camera when ringing doorbell

Topics (not sure which fora)
when not sure where to post, post here and mods will move it to right forum.

Moderators: leecollings, remb0

denkol
Posts: 3
Joined: Saturday 26 March 2016 11:51
Target OS: Windows
Domoticz version:
Contact:

Take snapshot with camera when ringing doorbell

Post by denkol »

I am new to this forum and have some questions. Although I have searched for a topic on this forum, I get not found anything that can help me. I'm a starter with Domoticz and already playfully acquainted with the program. I have no programming knowledge, but do like to experiment with everything that has to do with automation. What I have achieved; At this time I got it done if someone rings my doorbell, enters the lighting in my hall and I get a push message on my phone. What do I expand now? I would like it if someone pressed my doorbell with my security camera a snapshot is created and sent via push to my phone. I read somewhere that this should be possible by using a script. Where can I find a script that I can modify it if necessary? How / where do I put the software Domoticz this script? Where can I find somewhere a good description of "how it works". Thanks for the effort
User avatar
Egregius
Posts: 2582
Joined: Thursday 09 April 2015 12:19
Target OS: Linux
Domoticz version: v2024.7
Location: Beitem, BE
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by Egregius »

trixwood

Re: Take snapshot with camera when ringing doorbell

Post by trixwood »

with your post 345... 346 now :lol:
denkol
Posts: 3
Joined: Saturday 26 March 2016 11:51
Target OS: Windows
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by denkol »

Thanks. Do not know why I could not find it myself. Hope I can find my answer here. :D
ernieb44
Posts: 5
Joined: Monday 18 December 2017 22:30
Target OS: Linux
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by ernieb44 »

I have been working on this for a while now and used the script provided by a fellow Domoticz forum user.
The script has been improved over time, it now consists of transcoding a video directly from the RTSP stream from my cam and sending it to Telegram when someone hits the doorbell. In the event that someone hits the doorbell again within 10 seconds after the previous push the script does nothing.

I've created a blockly event where it rings the bell and kicks off the script below the moment de doorbell is pressed.

Make sure you have ffmpeg installed [sudo apt-get install ffmpeg]

Code: Select all

#!/bin/sh
now=$(date +"%T")

SnapFile="/var/tmp/frontdoorcam.mp4"    # Temp name of the video, change it when using this script for multiple cams
VideoLength=5     # Seconds to record
WaitTime=10       # Seconds the script waits before it sends another video
User=****         # Username which has access to the RTSP stream
Password=******   # Password for above provided user
rtspUrl="rtsp://$User:$Password@[IP address]/"   # Use https://sourceforge.net/projects/onvifdm/ to find your correct RTSP stream url
ChatID=*******    # Telegram chat ID   See https://www.domoticz.com/wiki/Installing_Telegram_Notification_System for setup instructions
TelegramAPIToken=*********:**********************     # Telegram API token

filedate=`stat -L --format %Y $SnapFile`
retc=$?
if [ $retc -eq 0 ] ; then
        sec=$(( `date +%s`-$filedate))
        echo file found and age is $sec seconds
else
        sec=999
        echo File not found $SnapFile
fi
if [ $sec -gt $WaitTime ] ; then    
        echo file older than $WaitTime seconds:  $sec sending video
        ffmpeg -y -i $rtspUrl -r 30 -vcodec copy -an -t $VideoLength $SnapFile
        curl -s -F chat_id=$ChatID -F video="@$SnapFile" -F caption="$now Doorbell ringing.." https://api.telegram.org/bot$TelegramAPIToken/sendVideo
else
        echo There was another try within $WaitTime seconds: $sec
fi


gajotnt
Posts: 70
Joined: Monday 06 February 2017 12:48
Target OS: Raspberry Pi / ODroid
Domoticz version: V4.9700
Location: Azores
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by gajotnt »

Hello Ernieb44, can you do a more detailed explanation on how to make this? :oops:




ernieb44 wrote: Wednesday 03 January 2018 0:10 I have been working on this for a while now and used the script provided by a fellow Domoticz forum user.
The script has been improved over time, it now consists of transcoding a video directly from the RTSP stream from my cam and sending it to Telegram when someone hits the doorbell. In the event that someone hits the doorbell again within 10 seconds after the previous push the script does nothing.

I've created a blockly event where it rings the bell and kicks off the script below the moment de doorbell is pressed.

Make sure you have ffmpeg installed [sudo apt-get install ffmpeg]

Code: Select all

#!/bin/sh
now=$(date +"%T")

SnapFile="/var/tmp/frontdoorcam.mp4"    # Temp name of the video, change it when using this script for multiple cams
VideoLength=5     # Seconds to record
WaitTime=10       # Seconds the script waits before it sends another video
User=****         # Username which has access to the RTSP stream
Password=******   # Password for above provided user
rtspUrl="rtsp://$User:$Password@[IP address]/"   # Use https://sourceforge.net/projects/onvifdm/ to find your correct RTSP stream url
ChatID=*******    # Telegram chat ID   See https://www.domoticz.com/wiki/Installing_Telegram_Notification_System for setup instructions
TelegramAPIToken=*********:**********************     # Telegram API token

filedate=`stat -L --format %Y $SnapFile`
retc=$?
if [ $retc -eq 0 ] ; then
        sec=$(( `date +%s`-$filedate))
        echo file found and age is $sec seconds
else
        sec=999
        echo File not found $SnapFile
fi
if [ $sec -gt $WaitTime ] ; then    
        echo file older than $WaitTime seconds:  $sec sending video
        ffmpeg -y -i $rtspUrl -r 30 -vcodec copy -an -t $VideoLength $SnapFile
        curl -s -F chat_id=$ChatID -F video="@$SnapFile" -F caption="$now Doorbell ringing.." https://api.telegram.org/bot$TelegramAPIToken/sendVideo
else
        echo There was another try within $WaitTime seconds: $sec
fi


gajotnt
Posts: 70
Joined: Monday 06 February 2017 12:48
Target OS: Raspberry Pi / ODroid
Domoticz version: V4.9700
Location: Azores
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by gajotnt »

Looks like FFMPEG isint available.
Had to use: apt-get install libav-tools

Guess that now for me to send photos instead of video it should be something like this (will try as soon as I get home):

Code: Select all

#!/bin/sh
now=$(date +"%T")

SnapFile="/var/tmp/frontdoorcam.jpg"    # Temp name of the photo, change it when using this script for multiple cams
#VideoLength=5     # Seconds to record
WaitTime=10       # Seconds the script waits before it sends another photo
User=****         # Username which has access to the RTSP stream
Password=******   # Password for above provided user
rtspUrl="rtsp://$User:$Password@[IP address]/"   # Use https://sourceforge.net/projects/onvifdm/ to find your correct RTSP stream url
ChatID=*******    # Telegram chat ID   See https://www.domoticz.com/wiki/Installing_Telegram_Notification_System for setup instructions
TelegramAPIToken=*********:**********************     # Telegram API token

filedate=`stat -L --format %Y $SnapFile`
retc=$?
if [ $retc -eq 0 ] ; then
        sec=$(( `date +%s`-$filedate))
        echo file found and age is $sec seconds
else
        sec=999
        echo File not found $SnapFile
fi
if [ $sec -gt $WaitTime ] ; then    
        echo file older than $WaitTime seconds:  $sec sending photo
        avconv -rtsp_transport tcp -i $rtspUrl -f image2 -vframes 1 -pix_fmt yuvj420p $SnapFile     # avconv -i $rtspUrl -vf $SnapFile
        curl -s -F chat_id=$ChatID -F photo="@$SnapFile" -F caption="$now Doorbell ringing.." https://api.telegram.org/bot$TelegramAPIToken/sendPhoto
else
        echo There was another try within $WaitTime seconds: $sec
fi
ernieb44
Posts: 5
Joined: Monday 18 December 2017 22:30
Target OS: Linux
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by ernieb44 »

gajotnt wrote: Wednesday 03 January 2018 16:14 Hello Ernieb44, can you do a more detailed explanation on how to make this? :oops:




ernieb44 wrote: Wednesday 03 January 2018 0:10 I have been working on this for a while now and used the script provided by a fellow Domoticz forum user.
The script has been improved over time, it now consists of transcoding a video directly from the RTSP stream from my cam and sending it to Telegram when someone hits the doorbell. In the event that someone hits the doorbell again within 10 seconds after the previous push the script does nothing.

I've created a blockly event where it rings the bell and kicks off the script below the moment de doorbell is pressed.

Make sure you have ffmpeg installed [sudo apt-get install ffmpeg]

Code: Select all

#!/bin/sh
now=$(date +"%T")

SnapFile="/var/tmp/frontdoorcam.mp4"    # Temp name of the video, change it when using this script for multiple cams
VideoLength=5     # Seconds to record
WaitTime=10       # Seconds the script waits before it sends another video
User=****         # Username which has access to the RTSP stream
Password=******   # Password for above provided user
rtspUrl="rtsp://$User:$Password@[IP address]/"   # Use https://sourceforge.net/projects/onvifdm/ to find your correct RTSP stream url
ChatID=*******    # Telegram chat ID   See https://www.domoticz.com/wiki/Installing_Telegram_Notification_System for setup instructions
TelegramAPIToken=*********:**********************     # Telegram API token

filedate=`stat -L --format %Y $SnapFile`
retc=$?
if [ $retc -eq 0 ] ; then
        sec=$(( `date +%s`-$filedate))
        echo file found and age is $sec seconds
else
        sec=999
        echo File not found $SnapFile
fi
if [ $sec -gt $WaitTime ] ; then    
        echo file older than $WaitTime seconds:  $sec sending video
        ffmpeg -y -i $rtspUrl -r 30 -vcodec copy -an -t $VideoLength $SnapFile
        curl -s -F chat_id=$ChatID -F video="@$SnapFile" -F caption="$now Doorbell ringing.." https://api.telegram.org/bot$TelegramAPIToken/sendVideo
else
        echo There was another try within $WaitTime seconds: $sec
fi


Sure.. i can do that.. but please let me know what extra information you are looking for?
wastaal
Posts: 5
Joined: Sunday 08 January 2017 12:02
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by wastaal »

ernieb44 wrote: Wednesday 03 January 2018 0:10 I have been working on this for a while now and used the script provided by a fellow Domoticz forum user.
The script has been improved over time, it now consists of transcoding a video directly from the RTSP stream from my cam and sending it to Telegram when someone hits the doorbell. In the event that someone hits the doorbell again within 10 seconds after the previous push the script does nothing.

I've created a blockly event where it rings the bell and kicks off the script below the moment de doorbell is pressed.

Make sure you have ffmpeg installed [sudo apt-get install ffmpeg]

Code: Select all

#!/bin/sh
now=$(date +"%T")

SnapFile="/var/tmp/frontdoorcam.mp4"    # Temp name of the video, change it when using this script for multiple cams
VideoLength=5     # Seconds to record
WaitTime=10       # Seconds the script waits before it sends another video
User=****         # Username which has access to the RTSP stream
Password=******   # Password for above provided user
rtspUrl="rtsp://$User:$Password@[IP address]/"   # Use https://sourceforge.net/projects/onvifdm/ to find your correct RTSP stream url
ChatID=*******    # Telegram chat ID   See https://www.domoticz.com/wiki/Installing_Telegram_Notification_System for setup instructions
TelegramAPIToken=*********:**********************     # Telegram API token

filedate=`stat -L --format %Y $SnapFile`
retc=$?
if [ $retc -eq 0 ] ; then
        sec=$(( `date +%s`-$filedate))
        echo file found and age is $sec seconds
else
        sec=999
        echo File not found $SnapFile
fi
if [ $sec -gt $WaitTime ] ; then    
        echo file older than $WaitTime seconds:  $sec sending video
        ffmpeg -y -i $rtspUrl -r 30 -vcodec copy -an -t $VideoLength $SnapFile
        curl -s -F chat_id=$ChatID -F video="@$SnapFile" -F caption="$now Doorbell ringing.." https://api.telegram.org/bot$TelegramAPIToken/sendVideo
else
        echo There was another try within $WaitTime seconds: $sec
fi


I'm trying to get this to work but so far no luck. Anyone here who can help me out? Here's the script which is on my raspberry.

Code: Select all

#!/bin/sh
now=$(date +"%T")

SnapFile="/var/tmp/frontdoorcam.mp4"    # Temp name of the video, change it when using this script for multiple cams
VideoLength=5     # Seconds to record
WaitTime=10       # Seconds the script waits before it sends another video
User=<username>         # Username which has access to the RTSP stream
Password=<password>   # Password for above provided user
rtspUrl="rtsp://$User:[email protected]:554/play1.sdp/"   # Use https://sourceforge.net/projects/onvifdm/ to find your correct RTSP stream url
ChatID=<chatid>    # Telegram chat ID   See https://www.domoticz.com/wiki/Installing_Telegram_Notification_System for setup instructions
TelegramAPIToken=<token>    # Telegram API token

filedate=`stat -L --format %Y $SnapFile`
retc=$?
if [ $retc -eq 0 ] ; then
        sec=$(( `date +%s`-$filedate))
        echo file found and age is $sec seconds
else
        sec=999
        echo File not found $SnapFile
fi
if [ $sec -gt $WaitTime ] ; then
        echo file older than $WaitTime seconds:  $sec sending video
        ffmpeg -y -i $rtspUrl -r 30 -vcodec copy -an -t $VideoLength $SnapFile
        curl -s -F chat_id=$ChatID -F video="@$SnapFile" -F caption="$now Doorbell ringing.." https://api.telegram.org/bot$TelegramAPIToken/sendVideo
else
        echo There was another try within $WaitTime seconds: $sec
fi
FFMpeg is installed. RTSP dream works in VLC. When I run the script I get the following error.

Code: Select all

stat: cannot stat '/var/tmp/frontdoorcam.mp4': No such file or directory
File not found /var/tmp/frontdoorcam.mp4
file older than 10 seconds: 999 sending video
ffmpeg version 3.2.10-1~deb9u1+rpt2 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 6.3.0 (Raspbian 6.3.0-18+rpi1+deb9u1) 20170516
  configuration: --prefix=/usr --extra-version='1~deb9u1+rpt2' --toolchain=hardened --libdir=/usr/lib/arm-linux-gnueabihf --incdir=/usr/include/arm-linux-gnueabihf --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx-rpi --enable-mmal --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --arch=armhf --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 34.101 / 55. 34.101
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.101 / 57. 56.101
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libavresample   3.  1.  0 /  3.  1.  0
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
[rtsp @ 0xb97620] method DESCRIBE failed: 404 File Not Found, Or In Incorrect Format
rtsp://admin:[email protected]:554/play1.sdp/: Server returned 404 Not Found
tonbor
Posts: 153
Joined: Monday 17 February 2014 9:12
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by tonbor »

Did you change the variables to your own, IP adres, password...… etc. And if so, did you get the script working after all?
wastaal
Posts: 5
Joined: Sunday 08 January 2017 12:02
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by wastaal »

tonbor wrote: Saturday 09 February 2019 16:22 Did you change the variables to your own, IP adres, password...… etc. And if so, did you get the script working after all?
No unfortunately not. And yes, I changed IP adres, pass word....
tonbor
Posts: 153
Joined: Monday 17 February 2014 9:12
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by tonbor »

I did examen this piece of code. I cannot find the part where the ip camera starts to record and give back the result to the variable $retc in this bash file. Should be here I think but it isn't "retc=$?=$?………………………." :oops: I will look further…….
tonbor
Posts: 153
Joined: Monday 17 February 2014 9:12
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by tonbor »

I did not look very well, this is the video catch line ffmpeg -y -i $rtspUrl -r 30 -vcodec copy -an -t $VideoLength $SnapFile, still trying…….
tonbor
Posts: 153
Joined: Monday 17 February 2014 9:12
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by tonbor »

Do not worry, I came far, but not yet to the end :)
wastaal
Posts: 5
Joined: Sunday 08 January 2017 12:02
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by wastaal »

tonbor wrote: Wednesday 13 February 2019 15:54 Do not worry, I came far, but not yet to the end :)
Would be awesome if you get it right.
tonbor
Posts: 153
Joined: Monday 17 February 2014 9:12
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by tonbor »

I got it working. The code is allright. Use your ip adres of your camera (not domoticz) and right url, see onvif suggestions in the code. So your ip and url should be in place of this piece of code "@192.168.1.22:554/play1.sdp/" Copy code from the net make sure it is not dos characters, so use dos2unix if you get unespected and of file running bash. Do install FFMJPEG library. And do not forget to chmod your bashfile.That s it. :D
Last edited by tonbor on Tuesday 19 February 2019 12:30, edited 1 time in total.
tonbor
Posts: 153
Joined: Monday 17 February 2014 9:12
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by tonbor »

#!/bin/sh
now=$(date +"%T")
SnapFile="/var/tmp/frontdoorcam.mp4" # Temp name of the video, change it when using this script for multiple cams
VideoLength=5 # Seconds to record
WaitTime=10 # Seconds the script waits before it sends another video
User="user" # Username which has access to the RTSP stream
Password="password" # Password for above provided user
rtspUrl="rtsp://user:[email protected]:554/11" # Use https://sourceforge.net/projects/onvifdm/ to find your correct RTSP stream url
echo $rtspUrl
ChatID=yourIDenumber # Telegram chat ID See https://www.domoticz.com/wiki/Installin ... ion_System for setup instructions
TelegramAPIToken="number:verylongstring" # Telegram API token
echo $TelegramAPIToken
filedate=`stat -L --format %Y $SnapFile`
ffmpeg -y -i $rtspUrl -r 30 -vcodec copy -an -t $VideoLength $SnapFile
curl -s -F chat_id=$ChatID -F video="@$SnapFile" -F caption="$now Deurbel klinkt.." https://api.telegram.org/bot$TelegramAPIToken/sendVideo
tonbor
Posts: 153
Joined: Monday 17 February 2014 9:12
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by tonbor »

It :D Works
Attachments
20190222_101340.jpg
20190222_101340.jpg (76.32 KiB) Viewed 4145 times
Last edited by tonbor on Friday 22 February 2019 10:14, edited 1 time in total.
Prutsium
Posts: 92
Joined: Monday 18 June 2018 11:31
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Location: Germany / Netherlands
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by Prutsium »

Fun ... ook even het scriptje als basis gebruikt maar ik krijg het binnen als een (Animated)Gif .... klopt dat?
wastaal
Posts: 5
Joined: Sunday 08 January 2017 12:02
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Take snapshot with camera when ringing doorbell

Post by wastaal »

tonbor wrote: Wednesday 20 February 2019 15:56It :D Works
Super! Unfortunately no luck here. Still same errors. I will look into this later again.
Post Reply

Who is online

Users browsing this forum: Bing [Bot] and 0 guests