code clean and new battery readings
This commit is contained in:
parent
681e944b44
commit
e634cf4437
@ -64,8 +64,7 @@ sub Initialize {
|
||||
$hash->{NotifyFn} = \&FHEM::Devices::Nuki::Bridge::Notify;
|
||||
$hash->{AttrFn} = \&FHEM::Devices::Nuki::Bridge::Attr;
|
||||
$hash->{AttrList} =
|
||||
'disable:1 '
|
||||
. 'port '
|
||||
'disable:1 ' . 'port '
|
||||
. 'webhookFWinstance:'
|
||||
. $webhookFWinstance . ' '
|
||||
. 'webhookHttpHostname '
|
||||
|
@ -1,4 +1,4 @@
|
||||
UPD 2021-11-27_18:02:39 9224 FHEM/73_NUKIBridge.pm
|
||||
UPD 2021-11-27_18:01:59 7548 FHEM/74_NUKIDevice.pm
|
||||
UPD 2021-11-27_18:08:11 40444 lib/FHEM/Devices/Nuki/Bridge.pm
|
||||
UPD 2021-11-27_15:28:59 15728 lib/FHEM/Devices/Nuki/Device.pm
|
||||
UPD 2021-11-27_18:39:55 9217 FHEM/73_NUKIBridge.pm
|
||||
UPD 2021-11-27_18:40:10 7548 FHEM/74_NUKIDevice.pm
|
||||
UPD 2021-11-27_18:39:14 40112 lib/FHEM/Devices/Nuki/Bridge.pm
|
||||
UPD 2021-11-27_18:44:10 16135 lib/FHEM/Devices/Nuki/Device.pm
|
||||
|
@ -145,6 +145,7 @@ sub Define {
|
||||
use version 0.60; our $VERSION = FHEM::Meta::Get( $hash, 'version' );
|
||||
|
||||
my ( $name, undef, $host, $token ) = split( m{\s+}xms, $def );
|
||||
|
||||
# return ('too few parameters: define <name> NUKIBridge <HOST> <TOKEN>')
|
||||
# if ( !defined($host)
|
||||
# || !defined($token) );
|
||||
@ -236,7 +237,8 @@ sub Attr {
|
||||
}
|
||||
elsif ( $cmd eq 'del' ) {
|
||||
$hash->{PORT} = 8080;
|
||||
::Log3( $name, 3, "NUKIBridge ($name) - set bridge port to default" );
|
||||
::Log3( $name, 3,
|
||||
"NUKIBridge ($name) - set bridge port to default" );
|
||||
}
|
||||
}
|
||||
|
||||
@ -395,9 +397,7 @@ sub removeExtension {
|
||||
|
||||
::Log3( $name, 2,
|
||||
"NUKIBridge ($name) - Unregistering NUKIBridge for webhook URL $url..."
|
||||
)
|
||||
if ( defined($name) );
|
||||
|
||||
) if ( defined($name) );
|
||||
|
||||
delete $::data{FWEXT}{$url};
|
||||
|
||||
@ -656,6 +656,7 @@ sub Distribution {
|
||||
my $json = shift;
|
||||
|
||||
my $hash = $param->{hash};
|
||||
|
||||
# my $doTrigger = $param->{doTrigger};
|
||||
my $name = $hash->{NAME};
|
||||
my $host = $hash->{HOST};
|
||||
@ -1110,8 +1111,8 @@ sub getCallbackList {
|
||||
|
||||
if ( scalar( @{ $decode_json->{callbacks} } ) > 0 ) {
|
||||
for my $cb ( @{ $decode_json->{callbacks} } ) {
|
||||
$aHref =
|
||||
"<a href=\""
|
||||
$aHref = "<a href=\""
|
||||
|
||||
# . $::FW_httpheader->{host}
|
||||
. "/fhem?cmd=set+"
|
||||
. $name
|
||||
@ -1276,17 +1277,20 @@ sub BridgeDiscover {
|
||||
my $endpoint = shift;
|
||||
my $bridge = shift;
|
||||
my $name = $hash->{NAME};
|
||||
my $url = ( $endpoint eq 'discover' && !defined($bridge)
|
||||
my $url = (
|
||||
$endpoint eq 'discover' && !defined($bridge)
|
||||
? 'https://api.nuki.io/discover/bridges'
|
||||
: 'http://' . $bridge->{'ip'} . ':' . $bridge->{'port'} . '/auth' );
|
||||
my $timeout = ( $endpoint eq 'discover' && !defined($bridge)
|
||||
: 'http://' . $bridge->{'ip'} . ':' . $bridge->{'port'} . '/auth'
|
||||
);
|
||||
my $timeout = (
|
||||
$endpoint eq 'discover' && !defined($bridge)
|
||||
? 5
|
||||
: 35 );
|
||||
: 35
|
||||
);
|
||||
|
||||
if ( $endpoint eq 'discover' ) {
|
||||
::Log3( $name, 3,
|
||||
"NUKIBridge ($name) - Bridge device defined. run discover mode"
|
||||
);
|
||||
"NUKIBridge ($name) - Bridge device defined. run discover mode" );
|
||||
|
||||
::readingsSingleUpdate( $hash, 'state', 'run discovery', 1 );
|
||||
}
|
||||
@ -1297,7 +1301,6 @@ sub BridgeDiscover {
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
::HttpUtils_NonblockingGet(
|
||||
{
|
||||
url => $url,
|
||||
@ -1316,8 +1319,7 @@ sub BridgeDiscover {
|
||||
"NUKIBridge ($name) - Send Discover request to Nuki Cloud" )
|
||||
if ( $endpoint eq 'discover' );
|
||||
|
||||
::Log3( $name, 3,
|
||||
"NUKIBridge ($name) - get API Token from the Bridge" )
|
||||
::Log3( $name, 3, "NUKIBridge ($name) - get API Token from the Bridge" )
|
||||
if ( $endpoint eq 'getApiToken' );
|
||||
|
||||
return;
|
||||
@ -1331,18 +1333,17 @@ sub BridgeDiscoverRequest {
|
||||
my $hash = $param->{hash};
|
||||
my $name = $hash->{NAME};
|
||||
|
||||
|
||||
if ( defined($err)
|
||||
&& $err ne '' )
|
||||
{
|
||||
return ::Log3( $name, 3,
|
||||
"NUKIBridge ($name) - Error: $err");
|
||||
return ::Log3( $name, 3, "NUKIBridge ($name) - Error: $err" );
|
||||
}
|
||||
elsif ( exists( $param->{code} )
|
||||
&& $param->{code} != 200 )
|
||||
{
|
||||
return ::Log3( $name, 3,
|
||||
"NUKIBridge ($name) - HTTP error Code present. Code: $param->{code}");
|
||||
"NUKIBridge ($name) - HTTP error Code present. Code: $param->{code}"
|
||||
);
|
||||
}
|
||||
|
||||
my $decode_json;
|
||||
@ -1354,14 +1355,16 @@ sub BridgeDiscoverRequest {
|
||||
|
||||
if ( $param->{endpoint} eq 'discover' ) {
|
||||
|
||||
return ::readingsSingleUpdate($hash, 'state', 'no bridges discovered', 1)
|
||||
return ::readingsSingleUpdate( $hash, 'state', 'no bridges discovered',
|
||||
1 )
|
||||
if ( scalar( @{ $decode_json->{bridges} } ) == 0
|
||||
&& $decode_json->{errorCode} == 0 );
|
||||
|
||||
return BridgeDiscover_getAPIToken( $hash, $decode_json );
|
||||
}
|
||||
elsif ( $param->{endpoint} eq 'getApiToken' ) {
|
||||
::readingsSingleUpdate($hash, 'state', 'modefined bridge device in progress', 1);
|
||||
::readingsSingleUpdate( $hash, 'state',
|
||||
'modefined bridge device in progress', 1 );
|
||||
|
||||
$decode_json->{host} = $param->{host};
|
||||
$decode_json->{port} = $param->{port};
|
||||
@ -1369,7 +1372,8 @@ sub BridgeDiscoverRequest {
|
||||
return ModefinedBridgeDevices( $hash, $decode_json )
|
||||
if ( $decode_json->{success} == 1 );
|
||||
|
||||
return ::readingsSingleUpdate($hash, 'state', 'get api token failed', 1);
|
||||
return ::readingsSingleUpdate( $hash, 'state', 'get api token failed',
|
||||
1 );
|
||||
}
|
||||
|
||||
return;
|
||||
@ -1380,7 +1384,8 @@ sub BridgeDiscover_getAPIToken {
|
||||
my $decode_json = shift;
|
||||
my $name = $hash->{NAME};
|
||||
|
||||
my $pullApiKeyMessage = 'When issuing this API-call the bridge turns on its LED for 30 seconds.
|
||||
my $pullApiKeyMessage =
|
||||
'When issuing this API-call the bridge turns on its LED for 30 seconds.
|
||||
The button of the bridge has to be pressed within this timeframe. Otherwise the bridge returns a negative success and no token.';
|
||||
|
||||
::readingsSingleUpdate( $hash, 'state', $pullApiKeyMessage, 1 );
|
||||
@ -1398,7 +1403,6 @@ sub ModefinedBridgeDevices {
|
||||
my $decode_json = shift;
|
||||
my $name = $hash->{NAME};
|
||||
|
||||
|
||||
::CommandAttr( undef, $name . ' port ' . $decode_json->{port} )
|
||||
if ( $decode_json->{port} != 8080 );
|
||||
::CommandDefMod( undef,
|
||||
@ -1410,5 +1414,4 @@ sub ModefinedBridgeDevices {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
|
@ -464,7 +464,6 @@ sub Parse {
|
||||
# ::Log3( $name, 2, "NUKIDevice ($name) - redefined Defmod" );
|
||||
# }
|
||||
|
||||
|
||||
}
|
||||
else {
|
||||
::Log3( $name, 4,
|
||||
@ -557,11 +556,18 @@ sub WriteReadings {
|
||||
&& $t ne 'deviceType'
|
||||
&& $t ne 'paired'
|
||||
&& $t ne 'batteryCritical'
|
||||
&& $t ne 'batteryChargeState'
|
||||
&& $t ne 'batteryCharging'
|
||||
&& $t ne 'timestamp' );
|
||||
|
||||
::readingsBulkUpdate( $hash, $t,
|
||||
( $v =~ m/^[0-9]$/ ? $lockStates{$v}{ $hash->{DEVICETYPEID} } : $v ) )
|
||||
if ( $t eq 'state' );
|
||||
::readingsBulkUpdate(
|
||||
$hash, $t,
|
||||
(
|
||||
$v =~ m/^[0-9]$/
|
||||
? $lockStates{$v}{ $hash->{DEVICETYPEID} }
|
||||
: $v
|
||||
)
|
||||
) if ( $t eq 'state' );
|
||||
|
||||
::readingsBulkUpdate( $hash, $t, $modes{$v}{ $hash->{DEVICETYPEID} } )
|
||||
if ( $t eq 'mode' );
|
||||
@ -572,9 +578,15 @@ sub WriteReadings {
|
||||
::readingsBulkUpdate( $hash, $t, ( $v == 1 ? 'true' : 'false' ) )
|
||||
if ( $t eq 'paired' );
|
||||
|
||||
::readingsBulkUpdate( $hash, $t, ( $v == 1 ? 'true' : 'false' ) )
|
||||
if ( $t eq 'batteryCharging' );
|
||||
|
||||
::readingsBulkUpdate( $hash, 'batteryState',
|
||||
( ( $v eq 'true' or $v == 1 ) ? 'low' : 'ok' ) )
|
||||
( $v == 1 ? 'low' : 'ok' ) )
|
||||
if ( $t eq 'batteryCritical' );
|
||||
|
||||
::readingsBulkUpdate( $hash, 'batteryPercent', $v )
|
||||
if ( $t eq 'batteryChargeState' );
|
||||
}
|
||||
|
||||
::readingsEndUpdate( $hash, 1 );
|
||||
|
Loading…
Reference in New Issue
Block a user