change prio in RoommateLastStatus, add selfDefense for absent, fix bugs

This commit is contained in:
Marko Oldenburg 2019-06-25 09:18:50 +02:00
parent aa0dc90a2e
commit 11d3942916

View File

@ -237,15 +237,16 @@ my %userAttrList = (
'ASC_Antifreeze:off,soft,hard,am,pm' => '-', 'ASC_Antifreeze:off,soft,hard,am,pm' => '-',
'ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100' 'ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100'
=> [ '', 85, 15 ], => [ '', 85, 15 ],
'ASC_Partymode:on,off' => '-', 'ASC_Partymode:on,off' => '-',
'ASC_Roommate_Device' => '-', 'ASC_Roommate_Device' => '-',
'ASC_Roommate_Reading' => '-', 'ASC_Roommate_Reading' => '-',
'ASC_Self_Defense_Exclude:on,off' => '-', 'ASC_Self_Defense_Exclude:on,off' => '-',
'ASC_WiggleValue' => '-', 'ASC_Self_Defense_Mode:absent,gone' => '-',
'ASC_WindParameters' => '-', 'ASC_WiggleValue' => '-',
'ASC_DriveUpMaxDuration' => '-', 'ASC_WindParameters' => '-',
'ASC_WindProtection:on,off' => '-', 'ASC_DriveUpMaxDuration' => '-',
'ASC_RainProtection:on,off' => '-', 'ASC_WindProtection:on,off' => '-',
'ASC_RainProtection:on,off' => '-'
); );
my %posSetCmds = ( my %posSetCmds = (
@ -369,7 +370,7 @@ sub Define($$) {
CommandAttr( undef, CommandAttr( undef,
$name $name
. ' devStateIcon selfeDefense.terrace:fts_door_tilt created.new.drive.timer:clock .*asleep:scene_sleeping roommate.(awoken|home):user_available residents.(home|awoken):status_available manual:fts_shutter_manual selfeDefense.active:status_locked selfeDefense.inactive:status_open day.open:scene_day night.close:scene_night shading.in:weather_sun shading.out:weather_cloudy' . ' devStateIcon selfDefense.terrace:fts_door_tilt created.new.drive.timer:clock .*asleep:scene_sleeping roommate.(awoken|home):user_available residents.(home|awoken):status_available manual:fts_shutter_manual selfDefense.active:status_locked selfDefense.inactive:status_open day.open:scene_day night.close:scene_night shading.in:weather_sun shading.out:weather_cloudy'
) if ( AttrVal( $name, 'devStateIcon', 'none' ) eq 'none' ); ) if ( AttrVal( $name, 'devStateIcon', 'none' ) eq 'none' );
addToAttrList('ASC:0,1,2'); addToAttrList('ASC:0,1,2');
@ -1207,8 +1208,7 @@ sub EventProcessingResidents($@) {
my $getModeDown = $shutters->getModeDown; my $getModeDown = $shutters->getModeDown;
$shutters->setHardLockOut('off'); $shutters->setHardLockOut('off');
if ( if (
CheckIfShuttersWindowRecOpen($shuttersDev) != 0 $ascDev->getSelfDefense eq 'on'
and $ascDev->getSelfDefense eq 'on'
and $shutters->getSelfDefenseExclude eq 'off' and $shutters->getSelfDefenseExclude eq 'off'
or ( or (
( (
@ -1220,11 +1220,12 @@ sub EventProcessingResidents($@) {
) )
) )
{ {
if ( CheckIfShuttersWindowRecOpen($shuttersDev) != 0 if ( ( CheckIfShuttersWindowRecOpen($shuttersDev) != 0
or $shutters->getSelfDefenseMode eq 'absent' )
and $ascDev->getSelfDefense eq 'on' and $ascDev->getSelfDefense eq 'on'
and $shutters->getSelfDefenseExclude eq 'off' ) and $shutters->getSelfDefenseExclude eq 'off' )
{ {
$shutters->setLastDrive('selfeDefense active'); $shutters->setLastDrive('selfDefense active');
} }
else { $shutters->setLastDrive('residents absent'); } else { $shutters->setLastDrive('residents absent'); }
@ -1233,7 +1234,8 @@ sub EventProcessingResidents($@) {
} }
} }
elsif ( $events =~ m#$reading:\s(gone)# elsif ( $events =~ m#$reading:\s(gone)#
and $ascDev->getSelfDefense eq 'on' ) and $ascDev->getSelfDefense eq 'on'
and $shutters->getSelfDefenseMode eq 'gone')
{ {
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) { foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
$shutters->setShuttersDev($shuttersDev); $shutters->setShuttersDev($shuttersDev);
@ -1241,7 +1243,7 @@ sub EventProcessingResidents($@) {
my $getModeDown = $shutters->getModeDown; my $getModeDown = $shutters->getModeDown;
$shutters->setHardLockOut('off'); $shutters->setHardLockOut('off');
if ( $shutters->getShuttersPlace eq 'terrace' ) { if ( $shutters->getShuttersPlace eq 'terrace' ) {
$shutters->setLastDrive('selfeDefense terrace'); $shutters->setLastDrive('selfDefense terrace');
$shutters->setDriveCmd( $shutters->getClosedPos ); $shutters->setDriveCmd( $shutters->getClosedPos );
} }
} }
@ -1309,7 +1311,7 @@ sub EventProcessingResidents($@) {
and not $shutters->getIfInShading and not $shutters->getIfInShading
) )
{ {
$shutters->setLastDrive('selfeDefense inactive'); $shutters->setLastDrive('selfDefense inactive');
$shutters->setDriveCmd( $shutters->setDriveCmd(
( (
$shutters->getPrivacyDownStatus $shutters->getPrivacyDownStatus
@ -3937,10 +3939,10 @@ sub getRoommatesLastStatus {
'asleep' => 1, 'asleep' => 1,
'gotosleep' => 2, 'gotosleep' => 2,
'awoken' => 3, 'awoken' => 3,
'home' => 4, 'home' => 7,
'absent' => 5, 'absent' => 6,
'gone' => 6, 'gone' => 5,
'none' => 7 'none' => 4
); );
my $minPrio = 10; my $minPrio = 10;
@ -4118,6 +4120,12 @@ sub getSelfDefenseExclude {
return AttrVal( $self->{shuttersDev}, 'ASC_Self_Defense_Exclude', 'off' ); return AttrVal( $self->{shuttersDev}, 'ASC_Self_Defense_Exclude', 'off' );
} }
sub getSelfDefenseMode {
my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_Self_Defense_Mode', 'gone' );
}
sub getWiggleValue { sub getWiggleValue {
my $self = shift; my $self = shift;
@ -6263,7 +6271,7 @@ sub getblockAscDrivesAfterManual {
"release_status": "under develop", "release_status": "under develop",
"license": "GPL_2", "license": "GPL_2",
"version": "v0.6.19", "version": "v0.6.19",
"x_developmentversion": "v0.6.19.13", "x_developmentversion": "v0.6.19.14",
"author": [ "author": [
"Marko Oldenburg <leongaultier@gmail.com>" "Marko Oldenburg <leongaultier@gmail.com>"
], ],