autologin when matrixPoll=1
poll changed from set to attr matrixPoll
This commit is contained in:
@ -46,11 +46,11 @@ BEGIN {
|
||||
))
|
||||
};
|
||||
|
||||
my $Module_Version = '0.0.7';
|
||||
my $Module_Version = '0.0.8';
|
||||
my $language = 'EN';
|
||||
|
||||
sub Attr_List{
|
||||
return "matrixLogin:password matrixRoom matrixSender matrixMessage matrixQuestion_ matrixQuestion_[0-9]+ matrixAnswer_ matrixAnswer_[0-9]+ $readingFnAttributes";
|
||||
return "matrixLogin:password matrixRoom matrixPoll:0,1 matrixSender matrixMessage matrixQuestion_ matrixQuestion_[0-9]+ matrixAnswer_ matrixAnswer_[0-9]+ $readingFnAttributes";
|
||||
}
|
||||
|
||||
sub Define {
|
||||
@ -86,24 +86,19 @@ sub Undef {
|
||||
sub Startproc {
|
||||
my ($hash) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
Log3($name, 4, "$name : Matrix::Startproc $hash ".AttrVal($name,'matrixPoll','-1'));
|
||||
# Update necessary?
|
||||
Log3($name, 1, "$name: Start V".$hash->{ModuleVersion}." -> V".$Module_Version) if ($hash->{ModuleVersion});
|
||||
$hash->{ModuleVersion} = $Module_Version;
|
||||
$language = AttrVal('global','language','EN');
|
||||
$data{MATRIX}{"$name"}{"softfail"} = 1;
|
||||
Log3($name, 4, "$name : Matrix::Startproc $hash");
|
||||
Login($hash) if (ReadingsVal($name,'poll',0) == 1);
|
||||
Login($hash) if (AttrVal($name,'matrixPoll',0) == 1);
|
||||
}
|
||||
|
||||
sub Login {
|
||||
my $hash = @_;
|
||||
Log3("nn", 4, "nn : Matrix::Login $hash");
|
||||
if ($hash eq "1"){
|
||||
Log3("nn", 4, "nn : Matrix::Login $hash");
|
||||
} else {
|
||||
Log3($hash->{NAME}, 4, "$hash->{NAME} : Matrix::Login $hash");
|
||||
return PerformHttpRequest($hash, 'login', '');
|
||||
}
|
||||
my ($hash) = @_;
|
||||
Log3($hash->{NAME}, 4, "$hash->{NAME} : Matrix::Login $hash");
|
||||
return PerformHttpRequest($hash, 'login', '');
|
||||
}
|
||||
|
||||
##########################
|
||||
@ -124,7 +119,7 @@ sub Notify($$)
|
||||
foreach my $event (@{$events}) {
|
||||
$event = "" if(!defined($event));
|
||||
### Writing log entry
|
||||
Log3($name, 4, "$name : X_Notify $devName - $event");
|
||||
Log3($name, 4, "$name : Matrix::Notify $devName - $event");
|
||||
$language = AttrVal('global','language','EN') if ($event =~ /ATTR global language.*/);
|
||||
# Examples:
|
||||
# $event = "ATTR global language DE"
|
||||
@ -200,7 +195,7 @@ sub Set {
|
||||
if ($cmd eq "msg") {
|
||||
return PerformHttpRequest($hash, $cmd, $value);
|
||||
}
|
||||
elsif ($cmd eq "poll" || $cmd eq "pollFullstate") {
|
||||
elsif ($cmd eq "pollFullstate") {
|
||||
readingsSingleUpdate($hash, $cmd, $value, 1); # Readings erzeugen
|
||||
}
|
||||
elsif ($cmd eq "password") {
|
||||
@ -226,7 +221,7 @@ sub Set {
|
||||
return PerformHttpRequest($hash, $cmd, '');
|
||||
}
|
||||
else {
|
||||
return "Unknown argument $cmd, choose one of filter:noArg password question questionEnd poll:0,1 pollFullstate:0,1 msg register login:noArg refresh:noArg";
|
||||
return "Unknown argument $cmd, choose one of filter:noArg password question questionEnd pollFullstate:0,1 msg register login:noArg refresh:noArg";
|
||||
}
|
||||
|
||||
#return "$opt set to $value. Try to get it.";
|
||||
@ -605,35 +600,36 @@ sub ParseHttpResponse($)
|
||||
|
||||
# PerformHttpRequest or InternalTimer if FAIL >= 3
|
||||
Log3($name, 4, "$name : Matrix::ParseHttpResponse $hash");
|
||||
if ($nextRequest ne "" && ReadingsVal($name,'poll',0) == 1 && $data{MATRIX}{"$name"}{"softfail"} < 3) {
|
||||
if ($nextRequest eq "sync" && $data{MATRIX}{"$name"}{"repeat"}){
|
||||
$def = $data{MATRIX}{"$name"}{"repeat"}->{"def"};
|
||||
$value = $data{MATRIX}{"$name"}{"repeat"}->{"value"};
|
||||
$data{MATRIX}{"$name"}{"repeat"} = undef;
|
||||
PerformHttpRequest($hash, $def, $value);
|
||||
if (AttrVal($name,'matrixPoll',0) == 1){
|
||||
if ($nextRequest ne "" && $data{MATRIX}{"$name"}{"softfail"} < 3) {
|
||||
if ($nextRequest eq "sync" && $data{MATRIX}{"$name"}{"repeat"}){
|
||||
$def = $data{MATRIX}{"$name"}{"repeat"}->{"def"};
|
||||
$value = $data{MATRIX}{"$name"}{"repeat"}->{"value"};
|
||||
$data{MATRIX}{"$name"}{"repeat"} = undef;
|
||||
PerformHttpRequest($hash, $def, $value);
|
||||
} else {
|
||||
PerformHttpRequest($hash, $nextRequest, '');
|
||||
}
|
||||
} else {
|
||||
PerformHttpRequest($hash, $nextRequest, '');
|
||||
}
|
||||
} else {
|
||||
my $pauseLogin;
|
||||
if ($data{MATRIX}{"$name"}{"hardfail"} >= 3){
|
||||
$pauseLogin = 300;
|
||||
} elsif ($data{MATRIX}{"$name"}{"softfail"} >= 3){
|
||||
$pauseLogin = 30;
|
||||
} elsif ($data{MATRIX}{"$name"}{"softfail"} > 0){
|
||||
$pauseLogin = 10;
|
||||
} else {
|
||||
$pauseLogin = 0;
|
||||
}
|
||||
if ($pauseLogin > 0){
|
||||
my $timeToStart = gettimeofday() + $pauseLogin;
|
||||
RemoveInternalTimer($hash->{myTimer}) if($hash->{myTimer});
|
||||
$hash->{myTimer} = { hash=>$hash };
|
||||
InternalTimer($timeToStart, \&FHEM::Devices::Matrix::Login, $hash->{myTimer});
|
||||
} else {
|
||||
Login($hash);
|
||||
my $pauseLogin;
|
||||
if ($data{MATRIX}{"$name"}{"hardfail"} >= 3){
|
||||
$pauseLogin = 300;
|
||||
} elsif ($data{MATRIX}{"$name"}{"softfail"} >= 3){
|
||||
$pauseLogin = 30;
|
||||
} elsif ($data{MATRIX}{"$name"}{"softfail"} > 0){
|
||||
$pauseLogin = 10;
|
||||
} else {
|
||||
$pauseLogin = 0;
|
||||
}
|
||||
if ($pauseLogin > 0){
|
||||
my $timeToStart = gettimeofday() + $pauseLogin;
|
||||
RemoveInternalTimer($hash->{myTimer}) if($hash->{myTimer});
|
||||
$hash->{myTimer} = { hash=>$hash };
|
||||
InternalTimer($timeToStart, \&FHEM::Devices::Matrix::Login, $hash->{myTimer});
|
||||
} else {
|
||||
Login($hash);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Damit ist die Abfrage zuende.
|
||||
}
|
||||
|
Reference in New Issue
Block a user