Sync up missing fields in Monitor class. Add code for Manufacturer and Model

more_gps
Isaac Connor 2023-07-11 17:27:08 -04:00
parent efb27298c1
commit 3e3d628fa1
1 changed files with 130 additions and 7 deletions

View File

@ -37,6 +37,8 @@ require ZoneMinder::Memory;
require ZoneMinder::Monitor_Status; require ZoneMinder::Monitor_Status;
require ZoneMinder::Event_Summary; require ZoneMinder::Event_Summary;
require ZoneMinder::Zone; require ZoneMinder::Zone;
require ZoneMinder::Manufacturer;
require ZoneMinder::Model;
use ZoneMinder::Logger qw(:all); use ZoneMinder::Logger qw(:all);
use parent qw(ZoneMinder::Object); use parent qw(ZoneMinder::Object);
@ -52,11 +54,21 @@ $serial = $primary_key = 'Id';
Notes Notes
ServerId ServerId
StorageId StorageId
ManufacturerId
ModelId
Type Type
Capturing Capturing
Analysing Analysing
AnalysisSource
AnalysisImage`
Recording Recording
Decoding Decoding
JanusEnabled
JanusAudioEnabled
Janus_Profile_Override
Janus_Use_RTSP_Restream
Janus_RTSP_User
Janus_RTSP_Session_Timeout
LinkedMonitors LinkedMonitors
Triggers Triggers
EventStartCommand EventStartCommand
@ -66,6 +78,7 @@ $serial = $primary_key = 'Id';
ONVIF_Password ONVIF_Password
ONVIF_Options ONVIF_Options
ONVIF_Event_Listener ONVIF_Event_Listener
ONVIF_Alarm_Text
use_Amcrest_API use_Amcrest_API
Device Device
Channel Channel
@ -78,6 +91,7 @@ $serial = $primary_key = 'Id';
Port Port
SubPath SubPath
Path Path
SecondPath
Options Options
User User
Pass Pass
@ -87,6 +101,7 @@ $serial = $primary_key = 'Id';
Palette Palette
Orientation Orientation
Deinterlacing Deinterlacing
Decoder
DecoderHWAccelName DecoderHWAccelName
DecoderHWAccelDevice DecoderHWAccelDevice
SaveJPEGs SaveJPEGs
@ -95,6 +110,7 @@ $serial = $primary_key = 'Id';
OutputContainer OutputContainer
EncoderParameters EncoderParameters
RecordAudio RecordAudio
RecordingSource
RTSPDescribe RTSPDescribe
Brightness Brightness
Contrast Contrast
@ -106,12 +122,14 @@ $serial = $primary_key = 'Id';
LabelY LabelY
LabelSize LabelSize
ImageBufferCount ImageBufferCount
MaxImageBufferCount
WarmupCount WarmupCount
PreEventCount PreEventCount
PostEventCount PostEventCount
StreamReplayBuffer StreamReplayBuffer
AlarmFrameCount AlarmFrameCount
SectionLength SectionLength
SectionLengthWarn
MinSectionLength MinSectionLength
FrameSkip FrameSkip
MotionFrameSkip MotionFrameSkip
@ -134,6 +152,7 @@ $serial = $primary_key = 'Id';
ModectDuringPTZ ModectDuringPTZ
DefaultRate DefaultRate
DefaultScale DefaultScale
DefaultCodec
SignalCheckPoints SignalCheckPoints
SignalCheckColour SignalCheckColour
WebColour WebColour
@ -147,21 +166,41 @@ $serial = $primary_key = 'Id';
RTSPServer RTSPServer
RTSPStreamName RTSPStreamName
Importance Importance
MQTT_Enabled
MQTT_Subscriptions
); );
%defaults = ( %defaults = (
Name => q`'Monitor'`,
Deleted => 0, Deleted => 0,
ServerId => 0, ServerId => 0,
StorageId => 0, StorageId => 0,
ManufacturerId => undef,
ModelId => undef,
Type => q`'Ffmpeg'`, Type => q`'Ffmpeg'`,
Capturing => q`'Always'`, Capturing => q`'Always'`,
Analysing => q`'Always'`, Analysing => q`'Always'`,
AnalysisSource => q`'Primary'`,
AnalysisImage => q`'FullColour'`,
Recording => q`'Always'`, Recording => q`'Always'`,
Decoding => q`'Always'`, Decoding => q`'Always'`,
JanusEnabled => 0,
JanusAudioEnabled => 0,
Janus_Profile_Override => q`''`,
Janus_Use_RTSP_Restream => 0,
Janus_RTSP_User => undef,
Janus_RTSP_Session_Timeout => 0,
LinkedMonitors => undef, LinkedMonitors => undef,
Triggers => '', Triggers => '',
EventEndCommand => '',
EventStartCommand => '', EventStartCommand => '',
EventEndCommand => '',
ONVIF_URL => q`''`,
ONVIF_Username => q`''`,
ONVIF_Password => q`''`,
ONVIF_Options => q`''`,
ONVIF_Event_Listener => 0,
ONVIF_Alarm_Text => q`'MotionAlarm'`,
use_Amcrest_API => 0,
Device => '', Device => '',
Channel => 0, Channel => 0,
Format => 0, Format => 0,
@ -173,6 +212,7 @@ $serial = $primary_key = 'Id';
Port => '', Port => '',
SubPath => '', SubPath => '',
Path => undef, Path => undef,
SecondPath => undef,
Options => undef, Options => undef,
User => undef, User => undef,
Pass => undef, Pass => undef,
@ -182,6 +222,7 @@ $serial = $primary_key = 'Id';
Palette => 0, Palette => 0,
Orientation => q`'ROTATE_0'`, Orientation => q`'ROTATE_0'`,
Deinterlacing => 0, Deinterlacing => 0,
Decoder => undef,
DecoderHWAccelName => undef, DecoderHWAccelName => undef,
DecoderHWAccelDevice => undef, DecoderHWAccelDevice => undef,
SaveJPEGs => 3, SaveJPEGs => 3,
@ -190,6 +231,7 @@ $serial = $primary_key = 'Id';
OutputContainer => undef, OutputContainer => undef,
EncoderParameters => '', EncoderParameters => '',
RecordAudio=>0, RecordAudio=>0,
RecordingSource => q`'Primary'`,
RTSPDescribe=>0, RTSPDescribe=>0,
Brightness => -1, Brightness => -1,
Contrast => -1, Contrast => -1,
@ -201,12 +243,14 @@ $serial = $primary_key = 'Id';
LabelY => 0, LabelY => 0,
LabelSize => 1, LabelSize => 1,
ImageBufferCount => 20, ImageBufferCount => 20,
MaxImageBufferCount => 121,
WarmupCount => 0, WarmupCount => 0,
PreEventCount => 5, PreEventCount => 5,
PostEventCount => 5, PostEventCount => 5,
StreamReplayBuffer => 0, StreamReplayBuffer => 0,
AlarmFrameCount => 1, AlarmFrameCount => 1,
SectionLength => 600, SectionLength => 600,
SectionLengthWarn => 1,
MinSectionLength => 10, MinSectionLength => 10,
FrameSkip => 0, FrameSkip => 0,
MotionFrameSkip => 0, MotionFrameSkip => 0,
@ -229,6 +273,7 @@ $serial = $primary_key = 'Id';
ModectDuringPTZ => 0, ModectDuringPTZ => 0,
DefaultRate => 100, DefaultRate => 100,
DefaultScale => 100, DefaultScale => 100,
DefaultCodec => q`'auto'`,
SignalCheckPoints => 0, SignalCheckPoints => 0,
SignalCheckColour => q`'#0000BE'`, SignalCheckColour => q`'#0000BE'`,
WebColour => q`'#ff0000'`, WebColour => q`'#ff0000'`,
@ -239,15 +284,11 @@ $serial = $primary_key = 'Id';
DefaultCodec => q`'auto'`, DefaultCodec => q`'auto'`,
Latitude => undef, Latitude => undef,
Longitude => undef, Longitude => undef,
ONVIF_Username => '',
ONVIF_Options => '',
ONVIF_Password => '',
ONVIF_URL => '',
RTSPStreamName => '', RTSPStreamName => '',
RTSPServer => 0, RTSPServer => 0,
Importance => 0, Importance => 0,
ONVIF_Event_Listener => 0, MQTT_Enabled => 0,
use_Amcrest_API => 0, MQTT_Subscriptions => q`''`,
); );
use constant CAPTURING_NONE => 1; use constant CAPTURING_NONE => 1;
@ -256,6 +297,31 @@ use constant CAPTURING_ALWAYS => 3;
use constant ANALYSING_ALWAYS => 2; use constant ANALYSING_ALWAYS => 2;
use constant ANALYSING_NONE => 1; use constant ANALYSING_NONE => 1;
sub save {
my $self = shift;
my $manufacturer = $self->Manufacturer();
my $model = $self->Model();
if ($manufacturer->Name() and !$self->ManufacturerId()) {
if ($manufacturer->save()) {
$$self{ManufacturerId} = $manufacturer->Id();
if ($model->Name()) {
$model->ManufacturerId($$self{ManufacturerId});
}
}
}
if ($model->Name() and !$self->ModelId()) {
if ($model->save()) {
$$self{ModelId} = $model->Id()
}
}
my $error = $self->SUPER::save( );
return $error;
} # end sub save
sub Server { sub Server {
return new ZoneMinder::Server( $_[0]{ServerId} ); return new ZoneMinder::Server( $_[0]{ServerId} );
} # end sub Server } # end sub Server
@ -470,6 +536,63 @@ sub ImportanceNumber {
return 0; return 0;
} }
sub Manufacturer {
my $self = shift;
$$self{Manufacturer} = shift if @_;
if (!$$self{Manufacturer}) {
$$self{Manufacturer} = new ZoneMinder::Manufacturer($$self{ManufacturerId});
}
return $$self{Manufacturer};
}
sub manufacturer {
my $self = shift;
if (@_) {
my $new = shift;
$$self{Manufacturer} = ZoneMinder::Manufacturer->find_one(Name=>$new);
if (!$$self{Manufacturer}) {
$$self{Manufacturer} = new ZoneMinder::Manufacturer();
$$self{Manufacturer}->Name($new);
}
}
if (!$$self{Manufacturer}) {
$$self{Manufacturer} = new ZoneMinder::Manufacturer($$self{ManufacturerId});
}
return $$self{Manufacturer}->Name();
}
sub Model {
my $self = shift;
if (@_) {
$$self{Model} = shift;
$$self{ModelId} = $$self{Model}
}
if (!$$self{Model}) {
$$self{Model} = new ZoneMinder::Model($$self{ModelId});
}
return $$self{Model};
}
sub model {
my $self = shift;
if (@_) {
my $new = shift;
if ($new ne $$self{Model}->Name()) {
$$self{Model} = ZoneMinder::Model->find_one(Name=>$new);
if (!$$self{Model}) {
$$self{Model} = new ZoneMinder::Model();
$$self{Model}->Name($new);
}
$$self{ModelId} = $$self{Model}->Id();
}
}
if (!$$self{Model}) {
$$self{Model} = new ZoneMinder::Model($$self{ModelId});
}
return $$self{Model}->Name();
}
1; 1;
__END__ __END__