App-RPi-EnvUI

 view release on metacpan or  search on metacpan

lib/App/RPi/EnvUI.pm  view on Meta::CPAN

        my $want = params->{want};
        my $log = $log->child('/get_control');
        my $value = $api->_config_control($want);
        $log->_5("param: $want, value: $value");
        return $value;
    };
get '/get_aux/:aux' => sub {
        my $aux_id = params->{aux};

        my $log = $log->child('/get_aux');
        $log->_7("fetching aux object for $aux_id");

        $api->switch($aux_id);

        return to_json $api->aux($aux_id);
    };
get '/get_aux_override/:aux' => sub {
        my $aux_id = params->{aux};
        my $log = $log->child('/get_aux_override');
        $log->_7("fetching aux override value for $aux_id");
        return to_json $api->aux_override($aux_id);
    };
get '/fetch_env' => sub {
        my $log = $log->child('/fetch_env');

        my $data = $api->env;
         
        $log->_6(
            "temp: $data->{temp}, humidity: $data->{humidity}"
        );

        return to_json {
            temp => $data->{temp},
            humidity => $data->{humidity},
            error => $data->{error}
        };
    };

#
# set routes
#

get '/set_aux_state/:aux/:state' => sub {
        
        if (
            (request->address ne '127.0.0.1' && ! session 'logged_in_user')
            || $ENV{UNIT_TEST}){
            return to_json {
                    error => 'unauthorized request. You must be logged in'
            };
        }

        my $aux_id = params->{aux};
        my $state = $api->_bool(params->{state});

        my $log = $log->child('/set_aux_state');
        $log->_5("aux_id: $aux_id, state: $state");

        $state = $api->aux_state($aux_id, $state);

        $log->_6("$aux_id updated state: $state");

        $api->switch($aux_id);

        return to_json {
            aux => $aux_id,
            state => $state,
        };
    };

get '/set_aux_override/:aux/:override' => sub {

        my $log = $log->child('/set_aux_override');

        if (
            (request->address ne '127.0.0.1' && ! session 'logged_in_user')
            || $ENV{UNIT_TEST}){
            $log->_1("attempted call of a 'set' operation while not logged in");
            return to_json {
                    error => 'unauthorized request. You must be logged in'
            };
        }

        my $aux_id = params->{aux};
        my $override = $api->_bool(params->{override});

        $log->_5("setting override for aux id: $aux_id");

        $override = $api->aux_override($aux_id, $override);

        $log->_5("current override status for aux id $aux_id is $override");

        if ($override == -1){
            $log->_5("override for aux id $aux_id is currently disabled");
        }

        return to_json {
            aux => $aux_id,
            override => $override,
        };
    };

true;

__END__

=head1 NAME

App::RPi::EnvUI - One-page asynchronous grow room environment control web
application

=head1 SYNOPSIS

    cd ~/envui
    sudo plackup bin/app.pl

Now direct your browser at your Pi, on port 3000:

    http://raspberry.pi:3000

=head1 DESCRIPTION



( run in 1.718 second using v1.01-cache-2.11-cpan-39bf76dae61 )