Version 2.0 Pre-Release #20
@@ -1,4 +1,4 @@
 | 
				
			|||||||
UPD 2021-11-27_21:26:06 9224 FHEM/73_NUKIBridge.pm
 | 
					UPD 2021-11-27_21:42:00 9224 FHEM/73_NUKIBridge.pm
 | 
				
			||||||
UPD 2021-11-27_21:30:28 7569 FHEM/74_NUKIDevice.pm
 | 
					UPD 2021-11-27_21:36:27 7569 FHEM/74_NUKIDevice.pm
 | 
				
			||||||
UPD 2021-11-27_21:26:06 40444 lib/FHEM/Devices/Nuki/Bridge.pm
 | 
					UPD 2021-11-27_22:32:28 40699 lib/FHEM/Devices/Nuki/Bridge.pm
 | 
				
			||||||
UPD 2021-11-27_21:32:02 15123 lib/FHEM/Devices/Nuki/Device.pm
 | 
					UPD 2021-11-27_22:49:00 15481 lib/FHEM/Devices/Nuki/Device.pm
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -501,7 +501,14 @@ sub GetCheckBridgeAlive {
 | 
				
			|||||||
    if ( !::IsDisabled($name)
 | 
					    if ( !::IsDisabled($name)
 | 
				
			||||||
        && $hash->{helper}->{iowrite} == 0 )
 | 
					        && $hash->{helper}->{iowrite} == 0 )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        Write( $hash, 'info', undef );
 | 
					        if ( $hash->{helper}->{runInfo} == 0 ) {
 | 
				
			||||||
 | 
					            Write( $hash, 'info', undef );
 | 
				
			||||||
 | 
					            $hash->{helper}->{runInfo} = 1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            Write( $hash, 'list', undef );
 | 
				
			||||||
 | 
					            $hash->{helper}->{runInfo} = 0;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ::Log3( $name, 4, "NUKIBridge ($name) - run Write" );
 | 
					        ::Log3( $name, 4, "NUKIBridge ($name) - run Write" );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -521,6 +528,7 @@ sub FirstRun {
 | 
				
			|||||||
    Write( $hash, 'list', undef )
 | 
					    Write( $hash, 'list', undef )
 | 
				
			||||||
      if ( !::IsDisabled($name) );
 | 
					      if ( !::IsDisabled($name) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $hash->{helper}->{runInfo} = 0;
 | 
				
			||||||
    return ::InternalTimer( ::gettimeofday() + 5,
 | 
					    return ::InternalTimer( ::gettimeofday() + 5,
 | 
				
			||||||
        \&FHEM::Devices::Nuki::Bridge::GetCheckBridgeAlive, $hash );
 | 
					        \&FHEM::Devices::Nuki::Bridge::GetCheckBridgeAlive, $hash );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -111,6 +111,9 @@ my %deviceTypes = (
 | 
				
			|||||||
    4 => 'smartlock3'
 | 
					    4 => 'smartlock3'
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					my %deviceTypeIds = reverse(%deviceTypes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my %modes = (
 | 
					my %modes = (
 | 
				
			||||||
    2 => {
 | 
					    2 => {
 | 
				
			||||||
        0 => 'door mode',
 | 
					        0 => 'door mode',
 | 
				
			||||||
@@ -180,7 +183,14 @@ my %lockStates = (
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my %deviceTypeIds = reverse(%deviceTypes);
 | 
					my %doorsensorStates = (
 | 
				
			||||||
 | 
					    1 => 'deactivated',
 | 
				
			||||||
 | 
					    2 => 'door closed',
 | 
				
			||||||
 | 
					    3 => 'door opened',
 | 
				
			||||||
 | 
					    4 => 'door state unknown',
 | 
				
			||||||
 | 
					    5 => 'calibrating'
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub Define {
 | 
					sub Define {
 | 
				
			||||||
    my $hash = shift;
 | 
					    my $hash = shift;
 | 
				
			||||||
@@ -205,6 +215,7 @@ sub Define {
 | 
				
			|||||||
    $hash->{STATE}          = 'Initialized';
 | 
					    $hash->{STATE}          = 'Initialized';
 | 
				
			||||||
    $hash->{NOTIFYDEV}      = 'global,autocreate,' . $name;
 | 
					    $hash->{NOTIFYDEV}      = 'global,autocreate,' . $name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $iodev = ::AttrVal( $name, 'IODev', 'none' );
 | 
					    my $iodev = ::AttrVal( $name, 'IODev', 'none' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ::AssignIoPort( $hash, $iodev ) if ( !$hash->{IODev} );
 | 
					    ::AssignIoPort( $hash, $iodev ) if ( !$hash->{IODev} );
 | 
				
			||||||
@@ -541,7 +552,9 @@ sub WriteReadings {
 | 
				
			|||||||
            && $t ne 'deviceType'
 | 
					            && $t ne 'deviceType'
 | 
				
			||||||
            && $t ne 'paired'
 | 
					            && $t ne 'paired'
 | 
				
			||||||
            && $t ne 'batteryCritical'
 | 
					            && $t ne 'batteryCritical'
 | 
				
			||||||
            && $t ne 'timestamp' );
 | 
					            && $t ne 'timestamp'
 | 
				
			||||||
 | 
					            && $t ne 'doorsensorState'
 | 
				
			||||||
 | 
					            && $t ne 'doorsensorStateName' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ::readingsBulkUpdate( $hash, $t,
 | 
					        ::readingsBulkUpdate( $hash, $t,
 | 
				
			||||||
            ( $v =~ m/^[0-9]$/ ? $lockStates{$v}{ $hash->{DEVICETYPEID} } : $v ) )
 | 
					            ( $v =~ m/^[0-9]$/ ? $lockStates{$v}{ $hash->{DEVICETYPEID} } : $v ) )
 | 
				
			||||||
@@ -552,6 +565,9 @@ sub WriteReadings {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        ::readingsBulkUpdate( $hash, $t, $deviceTypes{$v} )
 | 
					        ::readingsBulkUpdate( $hash, $t, $deviceTypes{$v} )
 | 
				
			||||||
          if ( $t eq 'deviceType' );
 | 
					          if ( $t eq 'deviceType' );
 | 
				
			||||||
 | 
					          
 | 
				
			||||||
 | 
					        ::readingsBulkUpdate( $hash, $t, $doorsensorStates{$v} )
 | 
				
			||||||
 | 
					          if ( $t eq 'doorsensorState' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ::readingsBulkUpdate( $hash, $t, ( $v == 1 ? 'true' : 'false' ) )
 | 
					        ::readingsBulkUpdate( $hash, $t, ( $v == 1 ? 'true' : 'false' ) )
 | 
				
			||||||
          if ( $t eq 'paired' );
 | 
					          if ( $t eq 'paired' );
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user