App-RPi-EnvUI
view release on metacpan or search on metacpan
lib/App/RPi/EnvUI/API.pm view on Meta::CPAN
my $log = $log->child('read_sensor');
if (! defined $self->sensor){
confess "\$self->{sensor} is not defined";
}
my $temp = $self->sensor->temp('f');
my $hum = $self->sensor->humidity;
$log->_6("temp: $temp, humidity: $hum");
return ($temp, $hum);
}
sub switch {
my ($self, $aux_id) = @_;
my $log = $log->child('switch');
my $state = $self->aux_state($aux_id);
my $pin = $self->aux_pin($aux_id);
if ($pin != -1){
if (read_pin($pin) != $state){
if ($state){
$log->_6("set $pin state to HIGH");
pin_mode($pin, OUTPUT);
write_pin($pin, HIGH);
}
else {
$log->_6("set $pin state to LOW");
pin_mode($pin, OUTPUT);
write_pin($pin, LOW);
}
}
else {
$log->_6("pin $pin state already set properly");
}
}
}
sub temp {
my $self = shift;
return $self->env->{temp};
}
# public core operational methods
sub auth {
my ($self, $user, $pw) = @_;
if (! defined $user){
confess "\n\nauth() requires a username sent in\n\n";
}
if (! defined $pw){
confess "\n\nauth() requires a password sent in\n\n";
}
my $csh = Crypt::SaltedHash->new(algorithm => 'SHA1');
my $crypted = $self->db->user($user)->{pass};
return $csh->validate($crypted, $pw);
}
sub events {
my $self = shift;
my $log = $log->child('events');
$events = App::RPi::EnvUI::Event->new($self->testing);
$self->{events}{env_to_db} = $events->env_to_db;
$self->{events}{env_action} = $events->env_action;
$self->{events}{env_to_db}->start;
$self->{events}{env_action}->start;
$log->_5("events successfully started");
}
sub log {
my $self = shift;
$master_log->file($self->log_file) if $self->log_file;
$master_log->level($self->debug_level);
return $master_log;
}
sub passwd {
my ($self, $pw) = @_;
if (! defined $pw){
confess "\n\nplain text password string required\n\n";
}
my $csh = Crypt::SaltedHash->new(
algorithm => 'SHA1',
);
$csh->add($pw);
my $salted = $csh->generate;
return $salted;
}
sub user {
my ($self, $un) = @_;
if (! defined $un){
confess "\n\nuser() requires a username to be sent in\n\n";
}
return $self->db->user($un);
}
# public configuration getters
sub env_humidity_aux {
return $_[0]->_config_control('humidity_aux');
}
sub env_light_aux {
return $_[0]->_config_control('light_aux');
}
sub env_temp_aux {
return $_[0]->_config_control('temp_aux');
}
lib/App/RPi/EnvUI/API.pm view on Meta::CPAN
debug_sensor
Optional, Bool. Enable/disable debug print output from the L<RPi::DHT11> sensor
code. Send in C<1> to enable, and C<0> to disable.
Default: C<0> (off)
=head2 action_humidity($aux_id, $humidity)
Performs the check of the current humidity against the configured set limit, and
enables/disables any devices attached to the humidity auxillary GPIO pin, if
set.
Parameters:
$aux_id
Mandatory, String. The string name representation of the humidity auxillary. By
default, this will be C<aux2>.
$humidity
Mandatory: Integer. The integer value of the current humidity (typically
supplied by the C<RPi::DHT11> hygrometer sensor.
=head2 action_light($dt)
Performs the time calculations on the configured light on/off event settings,
and turns the GPIO pin associated with the light auxillary channel on and off as
required.
Parameters (only used for testing):
%args
Optional (use for testing only!). Pass in a hash with the desired configuration
parameters as found in the configuration file for light configuration.
=head2 action_temp($aux_id, $temperature)
Performs the check of the current temperature against the configured set limit,
and enables/disables any devices attached to the temp auxillary GPIO pin, if
set.
Parameters:
$aux_id
Mandatory, String. The string name representation of the temperature auxillary.
By default, this will be C<aux1>.
=head2 auth($user, $pw)
Checks whether a user is supplying the correct password.
Parameters:
$user
Mandatory, String. The user name to validate the password for.
$pw
Mandatory, String. The plain text password to verify.
Return: True (C<1>) if successful, C<undef> otherwise.
=head2 aux($aux_id)
Retrieves from the database a hash reference that contains the details of a
specific auxillary channel, and returns it.
Parameters:
$aux_id
Mandatory, String. The string name representation of the auxillary channel to
retrieve (eg: C<aux1>).
Returns: Hash reference with the auxillary channel details.
=head2 auxs
Fetches the details of all the auxillary channels from the database. Takes no
parameters.
Return: A hash reference of hash references, where each auxillary channel name
is a key, and the value is a hash reference containing that auxillary channel's
details.
=head2 aux_id($aux)
Extracts the name/ID of a specific auxillary channel.
Parameters:
$aux
Mandatory, href. A hash reference as returned from a call to C<aux()>.
Return: String. The name/ID of the specified auxillary channel.
=head2 aux_override($aux_id, $override)
Sets/gets the override status of a specific aux channel.
The override functionality is a flag in the database that informs the system
that automated triggering of an auxillary GPIO pin should be bypassed due to
user override.
Parameters:
$aux_id
Mandatory, String. The string name of an auxillary channel (eg: C<aux1>).
$state
Optional, Bool. C<0> to disable an aux pin override, C<1> to enable it.
( run in 2.478 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )