HiPi
view release on metacpan or search on metacpan
lib/HiPi/Energenie/Command.pm view on Meta::CPAN
ERROR_ADAPTER_NAME_NOT_FOUND => 'ERROR_ADAPTER_NAME_NOT_FOUND',
ERROR_ADAPTER_FAILED => 'ERROR_ADAPTER_FAILED',
ERROR_MONITOR_INVALID_OPTIONS => 'ERROR_MONITOR_INVALID_OPTIONS',
ERROR_MONITOR_NAME_NOT_FOUND => 'ERROR_MONITOR_NAME_NOT_FOUND',
ERROR_MONITOR_FAILED => 'ERROR_MONITOR_FAILED',
};
my $commandopts = {
help => {
template => undef,
defaults => {},
},
version => {
template => undef,
defaults => {},
},
config => {
template => [ 'help|h!', 'list|l!', 'device|d:s', 'board|b:s', 'reset|r:s' ],
defaults => { help => 0, list => 0, device => undef, board => undef, reset => undef },
},
group => {
template => [ 'help|h!', 'create|c:s', 'delete|d:s', 'rename|r:s', 'group|g:o', 'newname|n:s', 'list|l!',],
defaults => { },
},
pair => {
template => [ 'help|h!', 'list|l', 'groupname|g:s', 'switch|s:i', 'name|n:s', ],
defaults => { groupname => undef, switch => 0, },
},
switch => {
template => [ 'help|h!', 'list|l!', 'groupname|g:s', 'switch|s:i', 'name|n:s', 'on|1!', 'off|0!', 'all!' ],
defaults => { help => 0, list => 0, groupname => undef, switch => undef, on => 0, off => 0, all => 0, } ,
},
alias => {
template => [ 'help|h!', 'list|l!', 'groupname|g:s', 'switch|s:i', 'name|n:s', ],
defaults => { help => 0, list => 0, } ,
},
join => {
template => [ 'help|h!', 'list|l!', 'name|n:s', 'delete|d:s', 'rename|r:s', 'timeout|t:i' ],
defaults => { help => 0, list => 0, name => '', delete => '', rename => '', timeout => 60 },
},
adapter => {
template => [ 'help|h!', 'list|l!', 'name|n:s', 'query|q!', 'on|1!', 'off|0!', 'timeout|t:i' ],
defaults => { name => undef, query => 0, on => 0, off => 0, list => 0, help => 0, timeout => 60 },
},
monitor => {
template => [ 'help|h!', 'list|l!', 'name|n:s', 'timeout|t:i' ],
defaults => { name => undef, list => 0, help => 0, timeout => 60 } ,
},
};
sub new {
my($class, %userparams ) = @_;
my %params = (
display => 'usage',
mode => 'console',
pretty => 0,
user => getpwuid($>),
console_display_message => '',
result => {
success => 0,
command => 'unknown',
option => '',
error => 'unknown error',
errorcode => ERROR_UNKNOWN,
data => {},
},
);
foreach my $key (sort keys(%userparams)) {
$params{$key} = $userparams{$key};
}
$params{config} = HiPi::Utils::Config->new(
configclass => 'scripts/energenie',
default => {
version => $VERSION,
board => 'ENER314_RT',
spi_device => '/dev/spidev0.1',
reset_gpio => RPI_PIN_22,
led_red_gpio => 0,
led_green_gpio => 0,
groups => {},
adapters => {},
monitors => {},
switches => {},
},
);
my $self = $class->SUPER::new( %params );
return $self;
}
sub conf { $_[0]->config->config(); }
sub valid_command {
my( $self, $command) = @_;
return 0 if( length($command) > 40 || $command !~ /^[a-z]+$/ );
return ( exists($commandopts->{$command}) ) ? 1 : 0;
}
sub handle_command {
my $self = shift;
my @commandargs = @ARGV;
$self->handle_command_arguments( @commandargs );
}
sub handle_command_arguments {
my ($self, @inputargs) = @_;
my @commandargs = ();
my $result = try {
for my $arg ( @inputargs ) {
if( lc($arg) eq '--json' ) {
$self->mode('json');
( run in 0.861 second using v1.01-cache-2.11-cpan-df04353d9ac )