Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

raZberry v2.0.1 - some checks around battery level #687

Merged
merged 1 commit into from
Apr 13, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 38 additions & 18 deletions lib/raZberry.pm
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

=head1 B<raZberry> v2.0
=head1 B<raZberry> v2.0.1

=head2 SYNOPSIS

Expand Down Expand Up @@ -112,6 +112,9 @@ http calls can cause pauses. There are a few possible options around this;


=head2 CHANGELOG
v2.0.1
- added full poll for getting battery data

v2.0
- added in authentication method for razberry 2.1.2+ support
- supports a push method when used in conjunction with the HTTPGet automation module
Expand Down Expand Up @@ -192,6 +195,7 @@ sub new {
my ( $class, $addr, $poll, $options ) = @_;
my $self = {};
bless $self, $class;
&main::print_log("[raZberry]: v2.0.1 Controller Initializing...");
$self->{data} = undef;
$self->{child_object} = undef;
$self->{config}->{poll_seconds} = 5;
Expand All @@ -215,7 +219,7 @@ sub new {
$self->{port} = $port if ($port);
$self->{debug} = 0;
( $self->{debug} ) = ( $options =~ /debug=(\s+)/i ) if ( ( defined $options ) and ( $options =~ m/debug=/i ) );
$self->{debug} = $main::Debug{raZberry} if ( defined $main::Debug{raZberry} );
$self->{debug} = $main::Debug{razberry} if ( defined $main::Debug{razberry} );
$self->{lastupdate} = undef;
$self->{timeout} = 2;
$self->{timeout} = $main::config_parms{raZberry_timeout} if ( defined $main::config_parms{raZberry_timeout} );
Expand Down Expand Up @@ -305,11 +309,13 @@ sub get_controllerdata {
}

sub poll {
my ($self) = @_;
my ( $self, $option ) = @_;

$option = "" unless ( defined $option );
&main::print_log("[raZberry]: Polling initiated") if ( $self->{debug} );
my $cmd = "";
$cmd = "?since=" . $self->{lastupdate} if ( defined $self->{lastupdate} );
$cmd = "" if ( lc $option eq "full" );
&main::print_log("[raZberry]: cmd=$cmd") if ( $self->{debug} > 1 );

for my $dev ( keys %{ $self->{data}->{force_update} } ) {
Expand All @@ -335,10 +341,13 @@ sub poll {
#my ($id) = ( split /_/, $item->{id} )[2];
my ($id) = ( split /_/, $item->{id} )[-1]; #always just get the last element
print "id=$id\n" if ( $self->{debug} > 1 );
&main::print_log("[raZberry]: WARNING: device $id level is undefined")
if ( ( !defined $item->{metrics}->{level} ) or ( lc $item->{metrics}->{level} eq "undefined" ) );
my $battery_dev = 0;
$battery_dev = 1 if ( $id =~ m/-0-128$/ );
my $voltage_dev = 0;
$voltage_dev = 1 if ( $id =~ m/-0-50-\d$/ );

if ($battery_dev) { #for a battery, set a different object
$self->{data}->{devices}->{$id}->{battery_level} = $item->{metrics}->{level};
}
Expand Down Expand Up @@ -1001,9 +1010,12 @@ sub battery_check {
return;
}

if ( $self->{battery_level} eq "" ) {
main::print_log("[raZberry_blind] INFO Battery level currently undefined");
return;
if ( ( $self->{battery_level} eq "" ) or ( !defined $self->{battery_level} ) ) {
$$self{master_object}->poll("full");
if ( ( $self->{battery_level} eq "" ) or ( !defined $self->{battery_level} ) ) {
main::print_log("[raZberry_blind] INFO Battery level currently undefined");
return;
}
}
main::print_log( "[raZberry_blind] INFO Battery currently at " . $self->{battery_level} . "%" );
if ( ( $self->{battery_level} < 30 ) and ( $self->{battery_alert} == 0 ) ) {
Expand All @@ -1013,6 +1025,7 @@ sub battery_check {
else {
$self->{battery_alert} = 0;
}
return $self->{battery_level};
}

sub _battery_timer {
Expand All @@ -1023,7 +1036,7 @@ sub _battery_timer {

sub battery_level {
my ($self) = @_;

$$self{master_object}->poll("full") if ( ( $self->{battery_level} eq "" ) or ( !defined $self->{battery_level} ) );
return ( $self->{battery_level} );
}

Expand All @@ -1048,9 +1061,9 @@ sub new {
$$self{devid} = $devid;
$$self{devid_battery} = $devid_battery;
$$self{type} = "Lock.Battery";

$object->register( $self, $devid, $options );
$object->register( $self, $devid_battery, $options );
$$self{type} = "Lock";
$object->register( $self, $devid, $options );

#$self->set($object->get_dev_status,$devid,'poll');
$self->{level} = "";
Expand Down Expand Up @@ -1109,7 +1122,7 @@ sub level {

sub battery_level {
my ($self) = @_;

$$self{master_object}->poll("full") if ( ( $self->{battery_level} eq "" ) or ( !defined $self->{battery_level} ) );
return ( $self->{battery_level} );
}

Expand All @@ -1136,9 +1149,12 @@ sub update_data {

sub battery_check {
my ($self) = @_;
if ( $self->{battery_level} eq "" ) {
&main::print_log("[raZberry_lock] INFO Battery level currently undefined");
return;
if ( ( $self->{battery_level} eq "" ) or ( !defined $self->{battery_level} ) ) {
$$self{master_object}->poll("full");
if ( ( $self->{battery_level} eq "" ) or ( !defined $self->{battery_level} ) ) {
main::print_log("[raZberry_lock] INFO Battery level currently undefined");
return;
}
}
&main::print_log( "[raZberry_lock] INFO Battery currently at " . $self->{battery_level} . "%" );
if ( ( $self->{battery_level} < 30 ) and ( $self->{battery_alert} == 0 ) ) {
Expand All @@ -1148,6 +1164,7 @@ sub battery_check {
else {
$self->{battery_alert} = 0;
}
return $self->{battery_level};
}

sub enable_user {
Expand Down Expand Up @@ -1544,7 +1561,7 @@ sub new {

sub battery_level {
my ($self) = @_;

$$self{master_object}->poll("full") if ( ( $self->{battery_level} eq "" ) or ( !defined $self->{battery_level} ) );
return ( $self->{battery_level} );
}

Expand All @@ -1562,17 +1579,19 @@ sub isfailed {

sub update_data {
my ( $self, $data ) = @_;

$self->{battery_level} = $data->{battery_level};
$self->SUPER::set( $self->{battery_level} );

}

sub battery_check {
my ($self) = @_;
if ( $self->{battery_level} eq "" ) {
main::print_log("[raZberry_battery] INFO Battery level currently undefined");
return;
if ( ( $self->{battery_level} eq "" ) or ( !defined $self->{battery_level} ) ) {
$$self{master_object}->poll("full");
if ( ( $self->{battery_level} eq "" ) or ( !defined $self->{battery_level} ) ) {
main::print_log("[raZberry_battery] INFO Battery level currently undefined");
return;
}
}
main::print_log( "[raZberry_battery] INFO Battery currently at " . $self->{battery_level} . "%" );
if ( ( $self->{battery_level} < 30 ) and ( $self->{battery_alert} == 0 ) ) {
Expand All @@ -1582,6 +1601,7 @@ sub battery_check {
else {
$self->{battery_alert} = 0;
}
return $self->{battery_level};
}

package raZberry_voltage;
Expand Down