Bash script to manage cameras and zmtrigger

If you've made a patch to quick fix a bug or to add a new feature not yet in the main tree then post it here so others can try it out.
Post Reply
sagitt
Posts: 39
Joined: Mon Apr 30, 2012 1:13 pm

Bash script to manage cameras and zmtrigger

Post by sagitt »

Hi, I created this bash script and named it "cmd_ipcamers" (Put it into /sbin/ or other folder and give it 755 permission). It restart ZoneMinder's Cameras and (Force Manually) Start\Stop Recording.

Usage:
cmd_ipcameras {reboot|rebootid|record|recordid|stoprecord|stoprecordid|info}

reboot = Reboot all cameras (I have 7 Cameras).
rebootid <ID> = Reboot the specific ZoneMinder Camera ID.
record | stoprecord = Record all cameras (Again, I have 7 Cameras).
recordid | stoprecordid <ID> = Record the specific ZoneMinder Camera ID.

Reboot is managed by zmcontrol.pl using "--command=reset" (So, you need PTZ settings enabled and setted on your Camera [Control])
Recording is managed by zmtrigger.pl and the script send telent commands to localhost.

NOTE: Changing "cmd2" value, the script can do anything on the camera like pan\tilt etc..

"cmd_ipcameras" file:

Code: Select all

#!/bin/sh
host="localhost"
port="6802"
cmd1="timeout 5 zmcontrol.pl"
cmd2="--command=reset"
cmd3="|on+150|200|Manual|Record"
cmd4="|off+10|0|Manual|Stopped"

case "$1" in
	'reboot')
		$cmd1 --id=1 $cmd2
		echo Reboot ID 1 ZoneMinder IP Camera now.
		sleep 0.5
		$cmd1 --id=2 $cmd2
		echo Reboot ID 2 ZoneMinder IP Camera now.
		sleep 0.5
		$cmd1 --id=3 $cmd2
		echo Reboot ID 3 ZoneMinder IP Camera now.
		sleep 0.5
		$cmd1 --id=4 $cmd2
		echo Reboot ID 4 ZoneMinder IP Camera now.
		sleep 0.5
		$cmd1 --id=5 $cmd2
		echo Reboot ID 5 ZoneMinder IP Camera now.
		sleep 0.5
		$cmd1 --id=6 $cmd2
		echo Reboot ID 6 ZoneMinder IP Camera now.
		sleep 0.5
		$cmd1 --id=7 $cmd2
		echo Reboot ID 7 ZoneMinder IP Camera now.
		sleep 0.5
		echo All 7 ZoneMinder IP Cameras have been successfully rebooted.
	;;
	'rebootid')
		$cmd1 --id=$2 $cmd2
		echo Reboot ID $2 ZoneMinder IP Camera now.
	;;
	'record')
		( echo open $host $port
  		sleep 0.5
  		echo 1$cmd3
  		sleep 0.5
  		echo 2$cmd3
  		sleep 0.5
  		echo 3$cmd3
  		sleep 0.5
  		echo 4$cmd3
  		sleep 0.5
  		echo 5$cmd3
  		sleep 0.5
  		echo 6$cmd3
  		sleep 0.5
  		echo 7$cmd3
		sleep 0.5 ) | telnet
		sleep 0.5
		echo Record command sent to all 7 ZoneMinder IP Cameras.
	;;
	'recordid')
		( echo open $host $port
  		sleep 0.5
  		echo $2$cmd3
		sleep 0.5 ) | telnet
		sleep 0.5
		echo Record command sent to ID $2 ZoneMinder IP Camera.
	;;
	'stoprecord')
		( echo open $host $port
  		sleep 0.5
  		echo 1$cmd4
  		sleep 0.5
  		echo 2$cmd4
  		sleep 0.5
  		echo 3$cmd4
  		sleep 0.5
  		echo 4$cmd4
  		sleep 0.5
  		echo 5$cmd4
  		sleep 0.5
  		echo 6$cmd4
  		sleep 0.5
  		echo 7$cmd4
		sleep 0.5 ) | telnet
		sleep 0.5
		echo Stop record command sent to all 7 ZoneMinder IP Cameras.
	;;
	'stoprecordid')
		( echo open $host $port
  		sleep 0.5
  		echo $2$cmd4
		sleep 0.5 ) | telnet
		sleep 0.5
		echo Record command sent to ID $2 ZoneMinder IP Camera.
	;;
	'info')
		echo "Use reboot/record/stoprecord or rebootid/recordid/stoprecordid <ID> parameters to reboot or (stop)record IP Cameras manually"
	;;
	*)
		echo "Usage: $0 {reboot|rebootid|record|recordid|stoprecord|stoprecordid|info}"
		exit 1
	;;
esac

exit 0

As Arduino Sketh, I hope this can help someone.
:D
Last edited by sagitt on Mon Jan 29, 2018 7:26 am, edited 1 time in total.
User avatar
snake
Posts: 337
Joined: Sat May 21, 2016 2:20 am

Re: Bash script to manage cameras and zmtrigger

Post by snake »

Similar to my script I wrote here viewtopic.php?f=9&t=26909 except I use the API, not zmcntrol.pl.

Can you explain how this will reset the cameras? Does this require a specific ZM version, because I don't see any code for --control=reset in /usr/bin/zmcontrol.pl in 1.29 or 1.30.4.
sagitt
Posts: 39
Joined: Mon Apr 30, 2012 1:13 pm

Re: Bash script to manage cameras and zmtrigger

Post by sagitt »

I have HIKVISION IP Cameras. I used the integrated hikvision control script for reset camera from the ZoneMinder web ui

(see: viewtopic.php?t=25442)

in the script:

Code: Select all

#
# reset (reboot) the device
#
sub reset {
    my $self = shift;

    $self->PutCmd("ISAPI/System/reboot");
}

1;
I'm using this script (with other scripts) to send commands with HomeBridge and my iOS devices.

Like "Hey siri, record living room" or "hey siri, reboot living room camera" etc... etc..
Post Reply