This article only applies to Dashboard V3. You can use Dashboard V3 by installing the Development (dev) branch.

Get your Monitors list from ZoneMinder

ZoneMinder has an API that provides all the Monitors in a JSON. This can be pasted into Shinobi's Import window.

We will use the ZoneMinder demo as the example server.

  1. Login to your ZoneMinder instance. This demo has the login disabled so it will go directly to the Home page.
  2. Open these web endpoints from your ZoneMinder server and keep the Browser Tabs open, we will paste the contents into Shinobi.

Installing Shinobi

We suggest that you don't install Shinobi on a server with ZoneMinder still running. This could cause issues with performance and stability.

As of 2022-08-12 please be sure to select Development (dev) Branch to get Dashboard V3.

You can Install Shinobi fairly easily on Ubuntu 22.04 following the Ninja Way. Just setup Ubuntu and go straight to running the Shinobi installer.

Once Installed you will need to login to the Super User Panel and create your first Admin account. Admin accounts are the users that can manage cameras. Learn more about different account types here.

The Super User Panel can be accessed at the /super endpoint of your Shinobi server. It runs on port 8080 by default.

http://YOUR_SHINOBI_SERVER_IP:8080/super

The default login credentials for the Super User Panel is as follows.

Learn about Updating Shinobi here.

Single Monitor Import

Importing through the Monitor Settings tab will load the first Monitor in the ZoneMinder Monitors API list. It will offer you the chance to make changes before pressing Save.

In the bottom right corner you can open the Menu for the Monitors Settings tab and select Import. Just paste both JSON strings into the Input Field.

Multiple Monitor Import

Importing through the Monitors tab will automatically save all the Monitors in the list.

In the bottom right corner you can open the Menu for the Monitors tab and select Import. Just paste both JSON strings into the Input Field.

Limitations of this tool

At present you can only import Monitors with Type set to Ffmpeg or libvlc because they are expected to be H.264 streams. MJPEG streams may work but its highly likely you will need to make manual changes after import.

Zones imported will be scaled to 640x480 to improve performance on the server.

Documents that might interest you

Good Luck!

Welcome to the community, we hope you like Shinobi :)

Enjoy!

Sample Import Data for ZoneMinder Monitors and Zones associated

This is a large string of the monitors.json and zones.json put together. You will notice its not a valid JSON but the import tool can parse regardless. It will just merge any concatenated JSONs together.

{"monitors":[{"Monitor":{"Id":"1","Name":"Guinea Pigs","Notes":"test","ServerId":"0","StorageId":"0","ManufacturerId":"2","ModelId":null,"Type":"Ffmpeg","Function":"Monitor","Capturing":"Ondemand","Enabled":"0","DecodingEnabled":"1","Decoding":"KeyFrames+Ondemand","JanusEnabled":false,"JanusAudioEnabled":false,"LinkedMonitors":null,"Triggers":"","EventStartCommand":"","EventEndCommand":"","ONVIF_URL":"","ONVIF_Username":"","ONVIF_Password":"","ONVIF_Options":"","ONVIF_Event_Listener":false,"use_Amcrest_API":false,"Device":"","Channel":"0","Format":"0","V4LMultiBuffer":null,"V4LCapturesPerFrame":"1","Protocol":null,"Method":"rtpRtsp","Host":null,"Port":"","SubPath":"","Path":"rtsp:\/\/admin:[email protected]:554\/cam\/realmonitor?channel=1&subtype=0&unicast=true","SecondPath":null,"Options":null,"User":null,"Pass":null,"Width":"1920","Height":"1080","Colours":"4","Palette":"0","Orientation":"ROTATE_0","Deinterlacing":"0","DecoderHWAccelName":null,"DecoderHWAccelDevice":null,"SaveJPEGs":"0","VideoWriter":"2","OutputCodec":"0","Encoder":"auto","OutputContainer":"mkv","EncoderParameters":"","RecordAudio":"0","RecordingSource":"Primary","RTSPDescribe":false,"Brightness":"-1","Contrast":"-1","Hue":"-1","Colour":"-1","EventPrefix":"Event-","LabelFormat":"","LabelX":"0","LabelY":"0","LabelSize":"3","ImageBufferCount":"3","MaxImageBufferCount":"300","WarmupCount":"0","PreEventCount":"5","PostEventCount":"5","StreamReplayBuffer":"0","AlarmFrameCount":"1","SectionLength":"600","MinSectionLength":"10","FrameSkip":"0","MotionFrameSkip":"0","AnalysisFPSLimit":"2.00","AnalysisUpdateDelay":"0","MaxFPS":null,"AlarmMaxFPS":null,"FPSReportInterval":"100","RefBlendPerc":"6","AlarmRefBlendPerc":"6","Controllable":"0","ControlId":null,"ControlDevice":null,"ControlAddress":"user:port@ip","AutoStopTimeout":null,"TrackMotion":"0","TrackDelay":null,"ReturnLocation":"-1","ReturnDelay":null,"ModectDuringPTZ":"0","DefaultRate":"100","DefaultScale":"0","DefaultCodec":"MP4","SignalCheckPoints":"0","SignalCheckColour":"#0000be","WebColour":"#beec1a","Exif":false,"Sequence":"1","ZoneCount":"1","Refresh":null,"Latitude":null,"Longitude":null,"RTSPServer":false,"RTSPStreamName":"","Importance":"Normal","Analysing":"None","AnalysisSource":"Primary","Recording":"None"},"Manufacturer":{"Id":"2","Name":"Amcrest"},"CameraModel":{"Id":null,"Name":null,"ManufacturerId":null},"Monitor_Status":{"MonitorId":"1","Status":"Running","CaptureFPS":"0.00","AnalysisFPS":"0.00","CaptureBandwidth":"7"},"Event_Summary":{"MonitorId":"1","TotalEvents":"0","TotalEventDiskSpace":"0","HourEvents":"0","HourEventDiskSpace":"0","DayEvents":"0","DayEventDiskSpace":"0","WeekEvents":"0","WeekEventDiskSpace":"0","MonthEvents":"0","MonthEventDiskSpace":"0","ArchivedEvents":null,"ArchivedEventDiskSpace":null}},{"Monitor":{"Id":"5","Name":"Vivotek","Notes":"","ServerId":"0","StorageId":"0","ManufacturerId":"23","ModelId":null,"Type":"Ffmpeg","Function":"Monitor","Capturing":"None","Enabled":"0","DecodingEnabled":"0","Decoding":"KeyFrames","JanusEnabled":true,"JanusAudioEnabled":false,"LinkedMonitors":null,"Triggers":"","EventStartCommand":"","EventEndCommand":"","ONVIF_URL":"","ONVIF_Username":"","ONVIF_Password":"","ONVIF_Options":"","ONVIF_Event_Listener":false,"use_Amcrest_API":false,"Device":"","Channel":"0","Format":"0","V4LMultiBuffer":null,"V4LCapturesPerFrame":"1","Protocol":null,"Method":"rtpRtsp","Host":null,"Port":"","SubPath":"","Path":"rtsp:\/\/root:[email protected]\/live.sdp","SecondPath":null,"Options":null,"User":null,"Pass":null,"Width":"1920","Height":"1080","Colours":"4","Palette":"0","Orientation":"ROTATE_0","Deinterlacing":"0","DecoderHWAccelName":null,"DecoderHWAccelDevice":null,"SaveJPEGs":"0","VideoWriter":"2","OutputCodec":"0","Encoder":"auto","OutputContainer":null,"EncoderParameters":"","RecordAudio":"0","RecordingSource":"Primary","RTSPDescribe":false,"Brightness":"-1","Contrast":"-1","Hue":"-1","Colour":"-1","EventPrefix":"Event-","LabelFormat":"","LabelX":"0","LabelY":"0","LabelSize":"3","ImageBufferCount":"3","MaxImageBufferCount":"0","WarmupCount":"0","PreEventCount":"5","PostEventCount":"5","StreamReplayBuffer":"0","AlarmFrameCount":"1","SectionLength":"600","MinSectionLength":"10","FrameSkip":"0","MotionFrameSkip":"0","AnalysisFPSLimit":null,"AnalysisUpdateDelay":"0","MaxFPS":null,"AlarmMaxFPS":null,"FPSReportInterval":"100","RefBlendPerc":"6","AlarmRefBlendPerc":"6","Controllable":"0","ControlId":null,"ControlDevice":null,"ControlAddress":"user:port@ip","AutoStopTimeout":null,"TrackMotion":"0","TrackDelay":null,"ReturnLocation":"-1","ReturnDelay":null,"ModectDuringPTZ":"0","DefaultRate":"100","DefaultScale":"0","DefaultCodec":"auto","SignalCheckPoints":"0","SignalCheckColour":"#0000be","WebColour":"#effd80","Exif":false,"Sequence":"2","ZoneCount":"1","Refresh":null,"Latitude":null,"Longitude":null,"RTSPServer":false,"RTSPStreamName":"","Importance":"Normal","Analysing":"None","AnalysisSource":"Primary","Recording":"None"},"Manufacturer":{"Id":"23","Name":"Vivotek"},"CameraModel":{"Id":null,"Name":null,"ManufacturerId":null},"Monitor_Status":{"MonitorId":"5","Status":"Running","CaptureFPS":"0.00","AnalysisFPS":"0.00","CaptureBandwidth":"147932"},"Event_Summary":{"MonitorId":"5","TotalEvents":"0","TotalEventDiskSpace":"0","HourEvents":"0","HourEventDiskSpace":"0","DayEvents":"0","DayEventDiskSpace":"0","WeekEvents":"0","WeekEventDiskSpace":"0","MonthEvents":"0","MonthEventDiskSpace":"0","ArchivedEvents":null,"ArchivedEventDiskSpace":null}},{"Monitor":{"Id":"6","Name":"Monitor-6","Notes":"","ServerId":"0","StorageId":"0","ManufacturerId":"23","ModelId":"53","Type":"Ffmpeg","Function":"Monitor","Capturing":"None","Enabled":"0","DecodingEnabled":"1","Decoding":"KeyFrames","JanusEnabled":true,"JanusAudioEnabled":false,"LinkedMonitors":null,"Triggers":"","EventStartCommand":"","EventEndCommand":"","ONVIF_URL":"","ONVIF_Username":"","ONVIF_Password":"","ONVIF_Options":"","ONVIF_Event_Listener":false,"use_Amcrest_API":false,"Device":"","Channel":"0","Format":"0","V4LMultiBuffer":null,"V4LCapturesPerFrame":"1","Protocol":null,"Method":"rtpRtsp","Host":null,"Port":"","SubPath":"","Path":"rtsp:\/\/root:[email protected]\/live.sdp","SecondPath":null,"Options":null,"User":null,"Pass":null,"Width":"1280","Height":"720","Colours":"4","Palette":"0","Orientation":"ROTATE_0","Deinterlacing":"0","DecoderHWAccelName":null,"DecoderHWAccelDevice":null,"SaveJPEGs":"0","VideoWriter":"2","OutputCodec":"0","Encoder":"auto","OutputContainer":null,"EncoderParameters":"","RecordAudio":"0","RecordingSource":"Primary","RTSPDescribe":false,"Brightness":"-1","Contrast":"-1","Hue":"-1","Colour":"-1","EventPrefix":"Event-","LabelFormat":"%N - %d\/%m\/%y %H:%M:%S","LabelX":"0","LabelY":"0","LabelSize":"1","ImageBufferCount":"3","MaxImageBufferCount":"0","WarmupCount":"0","PreEventCount":"5","PostEventCount":"5","StreamReplayBuffer":"0","AlarmFrameCount":"1","SectionLength":"600","MinSectionLength":"10","FrameSkip":"0","MotionFrameSkip":"0","AnalysisFPSLimit":null,"AnalysisUpdateDelay":"0","MaxFPS":null,"AlarmMaxFPS":null,"FPSReportInterval":"100","RefBlendPerc":"6","AlarmRefBlendPerc":"6","Controllable":"0","ControlId":null,"ControlDevice":null,"ControlAddress":"user:port@ip","AutoStopTimeout":null,"TrackMotion":"0","TrackDelay":null,"ReturnLocation":"-1","ReturnDelay":null,"ModectDuringPTZ":"0","DefaultRate":"100","DefaultScale":"0","DefaultCodec":"auto","SignalCheckPoints":"0","SignalCheckColour":"#0000be","WebColour":"#2fb23a","Exif":false,"Sequence":"3","ZoneCount":"1","Refresh":null,"Latitude":null,"Longitude":null,"RTSPServer":false,"RTSPStreamName":"","Importance":"Normal","Analysing":"None","AnalysisSource":"Primary","Recording":"Always"},"Manufacturer":{"Id":"23","Name":"Vivotek"},"CameraModel":{"Id":"53","Name":"FD8166-F2(W)","ManufacturerId":"23"},"Monitor_Status":{"MonitorId":"6","Status":"NotRunning","CaptureFPS":"0.00","AnalysisFPS":"0.00","CaptureBandwidth":"34616"},"Event_Summary":{"MonitorId":"6","TotalEvents":"0","TotalEventDiskSpace":"0","HourEvents":"0","HourEventDiskSpace":"0","DayEvents":"0","DayEventDiskSpace":"0","WeekEvents":"0","WeekEventDiskSpace":"0","MonthEvents":"0","MonthEventDiskSpace":"0","ArchivedEvents":null,"ArchivedEventDiskSpace":null}}]}{"zones":[{"Zone":{"Id":"4","MonitorId":"5","Name":"All","Type":"Active","Units":"Percent","NumCoords":"4","Coords":"0,0 1919,0 1919,1079 0,1079","Area":"2073600","AlarmRGB":"16711680","CheckMethod":"Blobs","MinPixelThreshold":"25","MaxPixelThreshold":null,"MinAlarmPixels":"62208","MaxAlarmPixels":"1555200","FilterX":"3","FilterY":"3","MinFilterPixels":"62208","MaxFilterPixels":"1555200","MinBlobPixels":"41472","MaxBlobPixels":null,"MinBlobs":"1","MaxBlobs":null,"OverloadFrames":"0","ExtendAlarmFrames":"0"}},{"Zone":{"Id":"5","MonitorId":"1","Name":"All","Type":"Active","Units":"Percent","NumCoords":"4","Coords":"0,0 1919,0 1919,1079 0,1079","Area":"2073600","AlarmRGB":"16711680","CheckMethod":"Blobs","MinPixelThreshold":"25","MaxPixelThreshold":null,"MinAlarmPixels":"62208","MaxAlarmPixels":"1555200","FilterX":"3","FilterY":"3","MinFilterPixels":"62208","MaxFilterPixels":"1555200","MinBlobPixels":"41472","MaxBlobPixels":null,"MinBlobs":"1","MaxBlobs":null,"OverloadFrames":"0","ExtendAlarmFrames":"0"}},{"Zone":{"Id":"6","MonitorId":"6","Name":"All","Type":"Active","Units":"Percent","NumCoords":"4","Coords":"0,0 1279,0 1279,719 0,719","Area":"921600","AlarmRGB":"16711680","CheckMethod":"Blobs","MinPixelThreshold":"25","MaxPixelThreshold":null,"MinAlarmPixels":"27648","MaxAlarmPixels":"691200","FilterX":"3","FilterY":"3","MinFilterPixels":"27648","MaxFilterPixels":"691200","MinBlobPixels":"18432","MaxBlobPixels":null,"MinBlobs":"1","MaxBlobs":null,"OverloadFrames":"0","ExtendAlarmFrames":"0"}}]}