MYSENSORS_DEVICE: fix commandref
git-svn-id: https://svn.fhem.de/fhem/trunk@30561 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -1345,7 +1345,7 @@ __END__
|
|||||||
|
|
||||||
<a id="MYSENSORS_DEVICE-define"></a>
|
<a id="MYSENSORS_DEVICE-define"></a>
|
||||||
<h4>Define</h4>
|
<h4>Define</h4>
|
||||||
<p><code>define <name> MYSENSORS_DEVICE <Sensor-type> <node-id></code>
|
<p><code>define <name> MYSENSORS_DEVICE <Sensor-type> <node-id></code></p>
|
||||||
<p>Specifies the MYSENSOR_DEVICE device.</p>
|
<p>Specifies the MYSENSOR_DEVICE device.</p>
|
||||||
|
|
||||||
<a id="MYSENSORS_DEVICE-set"></a>
|
<a id="MYSENSORS_DEVICE-set"></a>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# 89_FULLY.pm 2.3
|
# 89_FULLY.pm
|
||||||
#
|
#
|
||||||
# $Id$
|
# $Id$
|
||||||
#
|
#
|
||||||
@@ -34,7 +34,7 @@ use HttpUtils;
|
|||||||
use JSON;
|
use JSON;
|
||||||
use SetExtensions;
|
use SetExtensions;
|
||||||
|
|
||||||
my $FULLY_VERSION = '2.3';
|
my $FULLY_VERSION = '2.4';
|
||||||
|
|
||||||
# Timeout for Fully requests
|
# Timeout for Fully requests
|
||||||
my $FULLY_TIMEOUT = 5;
|
my $FULLY_TIMEOUT = 5;
|
||||||
@@ -78,26 +78,28 @@ sub FULLY_Initialize ($)
|
|||||||
# Define device
|
# Define device
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
sub FULLY_Define ($$)
|
sub FULLY_Define
|
||||||
{
|
{
|
||||||
my ($hash, $def) = @_;
|
my $hash = shift // return;
|
||||||
my @a = split( "[ \t][ \t]*", $def);
|
my $def = shift // return;
|
||||||
my $name = $a[0];
|
my @arr = split m{\s+}xms, $def;
|
||||||
|
|
||||||
|
my $name = $arr[0];
|
||||||
my $host = '';
|
my $host = '';
|
||||||
|
|
||||||
return "Usage: define devname FULLY [http|https]://IP_or_Hostname [password] [poll-interval]"
|
return 'Usage: define devname FULLY [http|https]://IP_or_Hostname [password] [poll-interval]'
|
||||||
if (@a < 3);
|
if (@arr < 3);
|
||||||
|
|
||||||
if ($a[2] =~ /^(https?):\/\/(.+)/) {
|
if ($arr[2] =~ m/^(https?):\/\/(.+)/) {
|
||||||
$hash->{prot} = $1;
|
$hash->{prot} = $1;
|
||||||
$host = $2;
|
$host = $2;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$hash->{prot} = $FULLY_DEFAULT_PROT;
|
$hash->{prot} = $FULLY_DEFAULT_PROT;
|
||||||
$host = $a[2];
|
$host = $arr[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($host =~ /^([^:]+):([0-9]+)$/) {
|
if ($host =~ m/^([^:]+):([0-9]+)$/) {
|
||||||
$hash->{host} = $1;
|
$hash->{host} = $1;
|
||||||
$hash->{port} = $2;
|
$hash->{port} = $2;
|
||||||
}
|
}
|
||||||
@@ -112,17 +114,17 @@ sub FULLY_Define ($$)
|
|||||||
$hash->{nextUpdate} = 'off';
|
$hash->{nextUpdate} = 'off';
|
||||||
$hash->{fully}{schedule} = 0;
|
$hash->{fully}{schedule} = 0;
|
||||||
|
|
||||||
if (@a == 4) {
|
if (@arr == 4) {
|
||||||
if ($a[3] =~ /^[0-9]+$/) {
|
if ($arr[3] =~ m/^[0-9]+$/) {
|
||||||
$hash->{fully}{interval} = $a[3];
|
$hash->{fully}{interval} = $arr[3];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$hash->{fully}{password} = $a[3];
|
$hash->{fully}{password} = $arr[3];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif (@a == 5) {
|
elsif (@arr == 5) {
|
||||||
$hash->{fully}{password} = $a[3];
|
$hash->{fully}{password} = $arr[3];
|
||||||
$hash->{fully}{interval} = $a[4];
|
$hash->{fully}{interval} = $arr[4];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!exists($hash->{fully}{password})) {
|
if (!exists($hash->{fully}{password})) {
|
||||||
@@ -131,12 +133,12 @@ sub FULLY_Define ($$)
|
|||||||
$hash->{fully}{password} = FULLY_Decrypt ($encpass);
|
$hash->{fully}{password} = FULLY_Decrypt ($encpass);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
FULLY_Log ($hash, 2, "Fully password not defined");
|
FULLY_Log ($hash, 2, 'Fully password /not defined');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$init_done && exists($hash->{fully}{password})) {
|
if (!$init_done && exists($hash->{fully}{password})) {
|
||||||
FULLY_Log ($hash, 1, "Version $FULLY_VERSION Opening device ".$hash->{host});
|
FULLY_Log ($hash, 1, "Version $FULLY_VERSION Opening device $hash->{host}");
|
||||||
FULLY_GetDeviceInfo ($name);
|
FULLY_GetDeviceInfo ($name);
|
||||||
if (exists($hash->{fully}{interval})) {
|
if (exists($hash->{fully}{interval})) {
|
||||||
FULLY_SetPolling ($hash, 1, $hash->{fully}{interval});
|
FULLY_SetPolling ($hash, 1, $hash->{fully}{interval});
|
||||||
@@ -147,17 +149,17 @@ sub FULLY_Define ($$)
|
|||||||
asyncOutput ($hash->{CL}, "Please use command 'set $name authentication' to set the Fully password");
|
asyncOutput ($hash->{CL}, "Please use command 'set $name authentication' to set the Fully password");
|
||||||
}
|
}
|
||||||
|
|
||||||
return undef;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
# Set or delete attribute
|
# Set or delete attribute
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
sub FULLY_Attr ($@)
|
sub FULLY_Attr
|
||||||
{
|
{
|
||||||
my ($cmd, $name, $attrname, $attrval) = @_;
|
my ($cmd, $name, $attrname, $attrval) = @_;
|
||||||
my $hash = $defs{$name};
|
my $hash = $defs{$name} // return;
|
||||||
|
|
||||||
if ($cmd eq 'set') {
|
if ($cmd eq 'set') {
|
||||||
if ($attrname eq 'pollInterval') {
|
if ($attrname eq 'pollInterval') {
|
||||||
@@ -198,18 +200,20 @@ sub FULLY_Attr ($@)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return undef;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
# Set polling on or off
|
# Set polling on or off
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
sub FULLY_SetPolling ($$;$)
|
sub FULLY_SetPolling
|
||||||
{
|
{
|
||||||
my ($hash, $mode, $interval) = @_;
|
my $hash = shift // return;
|
||||||
|
my $mode = shift // return;
|
||||||
|
my $interval = shift;
|
||||||
|
|
||||||
return if (!$init_done);
|
return if !$init_done;
|
||||||
|
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
$interval //= AttrVal ($name, 'pollInterval', $hash->{fully}{interval} // $FULLY_POLL_INTERVAL);
|
$interval //= AttrVal ($name, 'pollInterval', $hash->{fully}{interval} // $FULLY_POLL_INTERVAL);
|
||||||
@@ -239,26 +243,26 @@ sub FULLY_SetPolling ($$;$)
|
|||||||
# Delete device
|
# Delete device
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
sub FULLY_Undef ($$)
|
sub FULLY_Undef
|
||||||
{
|
{
|
||||||
my ($hash, $arg) = @_;
|
my $hash = shift // return;
|
||||||
|
|
||||||
RemoveInternalTimer ($hash);
|
RemoveInternalTimer ($hash);
|
||||||
|
|
||||||
return undef;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
# Shutdown FHEM
|
# Shutdown FHEM
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
sub FULLY_Shutdown ($)
|
sub FULLY_Shutdown
|
||||||
{
|
{
|
||||||
my ($hash) = @_;
|
my $hash = shift // return;
|
||||||
|
|
||||||
RemoveInternalTimer ($hash);
|
RemoveInternalTimer ($hash);
|
||||||
|
|
||||||
return undef;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
@@ -335,6 +339,8 @@ sub FULLY_Set ($@)
|
|||||||
"foreground" => "toForeground"
|
"foreground" => "toForeground"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return "FULLY: Unknown argument $opt, choose one of ".$options if $opt eq '?';
|
||||||
|
|
||||||
my @c = ();
|
my @c = ();
|
||||||
my @p = ();
|
my @p = ();
|
||||||
|
|
||||||
@@ -505,7 +511,7 @@ sub FULLY_Set ($@)
|
|||||||
}
|
}
|
||||||
FULLY_ExecuteNB ($hash, \@c, \@p, 1) if (scalar (@c) > 0);
|
FULLY_ExecuteNB ($hash, \@c, \@p, 1) if (scalar (@c) > 0);
|
||||||
|
|
||||||
return undef;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
@@ -535,7 +541,7 @@ sub FULLY_Get ($@)
|
|||||||
return "FULLY: Unknown argument $opt, choose one of ".$options;
|
return "FULLY: Unknown argument $opt, choose one of ".$options;
|
||||||
}
|
}
|
||||||
|
|
||||||
return undef;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
@@ -576,7 +582,7 @@ sub FULLY_Execute ($$$$)
|
|||||||
my $url = $hash->{prot}.'://'.$hash->{host}.':'.$hash->{port}."/?cmd=$command";
|
my $url = $hash->{prot}.'://'.$hash->{host}.':'.$hash->{port}."/?cmd=$command";
|
||||||
|
|
||||||
if (defined ($param)) {
|
if (defined ($param)) {
|
||||||
foreach my $parname (keys %$param) {
|
for my $parname (keys %$param) {
|
||||||
if (defined($param->{$parname})) {
|
if (defined($param->{$parname})) {
|
||||||
$url .= "&$parname=".$param->{$parname};
|
$url .= "&$parname=".$param->{$parname};
|
||||||
}
|
}
|
||||||
@@ -636,7 +642,7 @@ sub FULLY_ExecuteNB ($$$$)
|
|||||||
my $url = $hash->{prot}.'://'.$hash->{host}.':'.$hash->{port}."/?cmd=".$$command[$i];
|
my $url = $hash->{prot}.'://'.$hash->{host}.':'.$hash->{port}."/?cmd=".$$command[$i];
|
||||||
|
|
||||||
if (defined ($param) && defined ($$param[$i])) {
|
if (defined ($param) && defined ($$param[$i])) {
|
||||||
foreach my $parname (keys %{$$param[$i]}) {
|
for my $parname (keys %{$$param[$i]}) {
|
||||||
if (defined ($$param[$i]->{$parname})) {
|
if (defined ($$param[$i]->{$parname})) {
|
||||||
$url .= "&$parname=".$$param[$i]->{$parname};
|
$url .= "&$parname=".$$param[$i]->{$parname};
|
||||||
}
|
}
|
||||||
@@ -665,7 +671,7 @@ sub FULLY_ExecuteNB ($$$$)
|
|||||||
};
|
};
|
||||||
|
|
||||||
FULLY_Log ($hash, 4, "Executing command ".$urllist[0]);
|
FULLY_Log ($hash, 4, "Executing command ".$urllist[0]);
|
||||||
HttpUtils_NonblockingGet ($reqpar);
|
return HttpUtils_NonblockingGet ($reqpar);
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
@@ -767,6 +773,7 @@ sub FULLY_ExecuteCB ($$$)
|
|||||||
FULLY_Log ($hash, 2, "Error during request $param->{orgurl}. $err");
|
FULLY_Log ($hash, 2, "Error during request $param->{orgurl}. $err");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
@@ -781,6 +788,7 @@ sub FULLY_ScreenOff ($)
|
|||||||
my @p = ({ "key" => "keepScreenOn", "value" => "false" }, undef);
|
my @p = ({ "key" => "keepScreenOn", "value" => "false" }, undef);
|
||||||
FULLY_ExecuteNB ($hash, \@c, \@p, 1);
|
FULLY_ExecuteNB ($hash, \@c, \@p, 1);
|
||||||
$hash->{onForTimer} = 'off';
|
$hash->{onForTimer} = 'off';
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
@@ -794,7 +802,7 @@ sub FULLY_UpdateDeviceInfo ($)
|
|||||||
return if (AttrVal ($hash->{NAME}, 'disable', 0) == 1);
|
return if (AttrVal ($hash->{NAME}, 'disable', 0) == 1);
|
||||||
|
|
||||||
FULLY_ExecuteNB ($hash, ['deviceInfo'], undef, 1);
|
FULLY_ExecuteNB ($hash, ['deviceInfo'], undef, 1);
|
||||||
FULLY_SetPolling ($hash, 1);
|
return FULLY_SetPolling ($hash, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
@@ -806,7 +814,7 @@ sub FULLY_GetDeviceInfo ($)
|
|||||||
my ($name) = @_;
|
my ($name) = @_;
|
||||||
my $hash = $defs{$name};
|
my $hash = $defs{$name};
|
||||||
|
|
||||||
FULLY_ExecuteNB ($hash, ['deviceInfo'], undef, 1);
|
return FULLY_ExecuteNB ($hash, ['deviceInfo'], undef, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
@@ -841,12 +849,12 @@ sub FULLY_UpdateReadings ($$)
|
|||||||
);
|
);
|
||||||
|
|
||||||
readingsBeginUpdate ($hash);
|
readingsBeginUpdate ($hash);
|
||||||
foreach my $rn (keys %$result) {
|
for my $rn (keys %$result) {
|
||||||
my $key = lc($rn);
|
my $key = lc($rn);
|
||||||
next if (exists($readings{$key}) && $readings{$key} eq 'ignore');
|
next if (exists($readings{$key}) && $readings{$key} eq 'ignore');
|
||||||
if (ref($result->{$rn}) eq 'ARRAY') {
|
if (ref($result->{$rn}) eq 'ARRAY') {
|
||||||
if ($key eq 'sensorinfo') {
|
if ($key eq 'sensorinfo') {
|
||||||
foreach my $e (@{$result->{$rn}}) {
|
for my $e (@{$result->{$rn}}) {
|
||||||
$key = lc($e->{name});
|
$key = lc($e->{name});
|
||||||
$key =~ s/ /_/g;
|
$key =~ s/ /_/g;
|
||||||
my $rv = ref($e->{values}) eq 'ARRAY' ? join(',', @{$e->{values}}) : $e->{values};
|
my $rv = ref($e->{values}) eq 'ARRAY' ? join(',', @{$e->{values}}) : $e->{values};
|
||||||
@@ -870,7 +878,7 @@ sub FULLY_UpdateReadings ($$)
|
|||||||
$hash->{fully}{versionWarn} = 1;
|
$hash->{fully}{versionWarn} = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
readingsEndUpdate ($hash, 1);
|
return readingsEndUpdate ($hash, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
@@ -886,7 +894,7 @@ sub FULLY_Encrypt ($)
|
|||||||
return '' if ($id eq '');
|
return '' if ($id eq '');
|
||||||
|
|
||||||
my $key = $id;
|
my $key = $id;
|
||||||
foreach my $c (split //, $istr) {
|
for my $c (split //, $istr) {
|
||||||
my $k = chop($key);
|
my $k = chop($key);
|
||||||
if ($k eq '') {
|
if ($k eq '') {
|
||||||
$key = $id;
|
$key = $id;
|
||||||
@@ -902,9 +910,9 @@ sub FULLY_Encrypt ($)
|
|||||||
# Decrypt string with FHEM unique ID
|
# Decrypt string with FHEM unique ID
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
sub FULLY_Decrypt ($)
|
sub FULLY_Decrypt
|
||||||
{
|
{
|
||||||
my ($istr) = @_;
|
my $istr =shift // return;
|
||||||
my $ostr = '';
|
my $ostr = '';
|
||||||
|
|
||||||
my $id = getUniqueId() // '';
|
my $id = getUniqueId() // '';
|
||||||
@@ -959,7 +967,6 @@ sub FULLY_Ping ($$)
|
|||||||
return $temp;
|
return $temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
|
|||||||
Reference in New Issue
Block a user