This article only applies to Dashboard V3. You can use Dashboard V3 by installing the Development (dev) branch.
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.
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 .
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.
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.
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.
Welcome to the community, we hope you like Shinobi :)
Enjoy!
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"}}]}