Skip to content

Commit

Permalink
Added in option to omit groups from logger
Browse files Browse the repository at this point in the history
  • Loading branch information
hplato committed Sep 8, 2016
1 parent 072257c commit cac6c2e
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 3 deletions.
27 changes: 25 additions & 2 deletions lib/Generic_Item.pm
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,10 @@ sub new {
$$self{state_now} = undef;
$$self{state_changed} = undef;
$self->restore_data('sort_order');
$self->{logger_enable} = $main::config_parms{logger_enable} if (defined $main::config_parms{logger_enable});
$self->{logger_enable} = $main::config_parms{object_logger_enable} if (defined $main::config_parms{object_logger_enable});
$self->{logger_mintime} = 1;
$self->{logger_updatetime} = 0;

return $self;
}

Expand Down Expand Up @@ -1158,14 +1161,19 @@ sub logger {
my ($self,$state,$set_by_name,$target) = @_;
my $object_name = $self->{object_name};
$object_name =~ s/^\$//;
return if ($object_name eq "");
return if ($state eq "");
my $tickcount = int(&::get_tickcount()); #log in milliseconds
return if ($tickcount < ($self->{logger_updatetime} + $self->{logger_mintime}));

#create directory structure if it doesn't exist
mkdir ($::config_parms{data_dir} . "/object_logs") unless (-d $::config_parms{data_dir} . "/object_logs");
mkdir ($::config_parms{data_dir} . "/object_logs/" . $object_name) unless (-d $::config_parms{data_dir} . "/object_logs/" . $object_name);
mkdir ($::config_parms{data_dir} . "/object_logs/" . $object_name . "/" . $::Year) unless (-d $::config_parms{data_dir} . "/object_logs/" . $object_name . "/" . $::Year);
mkdir ($::config_parms{data_dir} . "/object_logs/" . $object_name . "/" . $::Year . "/" . $::Month) unless (-d $::config_parms{data_dir} . "/object_logs/" . $object_name . "/" . $::Year . "/" . $::Month);
#write the data to the log; time, ticks (milliseconds), object, state, set_by, target
&::logit ($::config_parms{data_dir} . "/object_logs/" . $object_name . "/" . $::Year . "/" . $::Month . "/" . $::Mday . ".log", "$main::Time_Date,$tickcount,$object_name,$state,$set_by_name," . ( ($target) ? "$target" : '') ."\n",0);
$self->{logger_updatetime} = $tickcount;
}

=item C<reset_states2()>
Expand Down Expand Up @@ -1276,7 +1284,11 @@ Will start logging state changes to a historical log file

sub logger_enable {
my ( $self, $enable ) = @_;
$self->{logger_enable} = 1;
if ($self->isa('Group') and (defined $main::config_parms{object_logger_group})) {
$self->{logger_enable} = $main::config_parms{object_logger_group};
} else {
$self->{logger_enable} = 1;
}
}

=item C<logger_disable()>
Expand All @@ -1290,6 +1302,17 @@ sub logger_disable {
$self->{logger_enable} = 0;
}

=item C<logger_mintime()>
Set the minimum number of seconds to log updates. Useful to 'throttle' noisey objects such as AD2 motion sensors
=cut

sub logger_mintime {
my ( $self, $mintime ) = @_;
$self->{logger_mintime} = $mintime;
}

=item C<get_logger_status()>
Returns 1 if logger is enabled on the object. Otherwise 0.
Expand Down
1 change: 1 addition & 0 deletions lib/Group.pm
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ sub new {
my $self = new Generic_Item();
$$self{members} = [];
&add( $self, @items ) if @items;
$self->{logger_enable} = $main::config_parms{object_logger_group} if (defined $main::config_parms{object_logger_group});
bless $self, $class;
return $self;
}
Expand Down
4 changes: 3 additions & 1 deletion lib/Insteon/BaseInsteon.pm
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,9 @@ sub new {
$$self{default_hop_count} = 0;
$$self{timeout_factor} = 1.0;
$$self{is_deaf} = 0;

$$self{logger_enable} = $main::config_parms{object_logger_enable} if (defined $main::config_parms{object_logger_enable});
$$self{logger_mintime} = 1;
$$self{logger_updatetime} = 0;
&Insteon::add($self);
return $self;
}
Expand Down

0 comments on commit cac6c2e

Please sign in to comment.