fix add twilight device automatically, change intern structure, delete old temporary Code
This commit is contained in:
parent
af757f9842
commit
e7cee41006
@ -41,7 +41,7 @@ package main;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
my $version = "0.2.1dev25";
|
my $version = "0.2.1dev26";
|
||||||
|
|
||||||
sub AutoShuttersControl_Initialize($) {
|
sub AutoShuttersControl_Initialize($) {
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
@ -240,12 +240,13 @@ sub Define($$) {
|
|||||||
. $name; # Liste aller Devices auf deren Events gehört werden sollen
|
. $name; # Liste aller Devices auf deren Events gehört werden sollen
|
||||||
$ascDev->setName($name);
|
$ascDev->setName($name);
|
||||||
|
|
||||||
readingsSingleUpdate(
|
readingsBeginUpdate($hash);
|
||||||
$hash,
|
readingsBulkUpdate($hash,
|
||||||
"state",
|
"state",
|
||||||
"please set attribute ASC with value 1 or 2 in all auto controlled shutter devices and then execute 'set DEVICENAME scanForShutters'",
|
"please set attribute ASC with value 1 or 2 in all auto controlled shutter devices and then execute 'set DEVICENAME scanForShutters'");
|
||||||
1
|
readingsBulkUpdate($hash, 'userAttrList', 'none', 0);
|
||||||
);
|
readingsEndUpdate($hash, 1);
|
||||||
|
|
||||||
CommandAttr( undef, $name . ' room ASC' )
|
CommandAttr( undef, $name . ' room ASC' )
|
||||||
if ( AttrVal( $name, 'room', 'none' ) eq 'none' );
|
if ( AttrVal( $name, 'room', 'none' ) eq 'none' );
|
||||||
CommandAttr( undef, $name . ' icon fts_shutter_automatic' )
|
CommandAttr( undef, $name . ' icon fts_shutter_automatic' )
|
||||||
@ -362,16 +363,6 @@ sub Notify($$) {
|
|||||||
if ( $ascDev->getSunriseTimeWeHoliday eq 'none' );
|
if ( $ascDev->getSunriseTimeWeHoliday eq 'none' );
|
||||||
readingsSingleUpdate( $hash, 'selfDefense', 'off', 0 )
|
readingsSingleUpdate( $hash, 'selfDefense', 'off', 0 )
|
||||||
if ( $ascDev->getSelfDefense eq 'none' );
|
if ( $ascDev->getSelfDefense eq 'none' );
|
||||||
CommandDeleteReading( undef, $name . ' selfDefence' )
|
|
||||||
if ( ReadingsVal( $name, 'selfDefence', 'none' ) ne 'none' )
|
|
||||||
; # temporär kann später entfernt werden.
|
|
||||||
if ( devspec2array('TYPE=(Astro|Twilight)') > 0 ) {
|
|
||||||
CommandAttr( undef,
|
|
||||||
$name
|
|
||||||
. ' ASC_twilightDevice '
|
|
||||||
. ( devspec2array('TYPE=(Astro|Twilight)') )[0] )
|
|
||||||
if ( AttrVal( $name, 'ASC_twilightDevice', 'none' ) eq 'none' );
|
|
||||||
}
|
|
||||||
|
|
||||||
# Ist der Event ein globaler und passt zum Rest der Abfrage oben wird nach neuen Rolläden Devices gescannt und eine Liste im Rolladenmodul sortiert nach Raum generiert
|
# Ist der Event ein globaler und passt zum Rest der Abfrage oben wird nach neuen Rolläden Devices gescannt und eine Liste im Rolladenmodul sortiert nach Raum generiert
|
||||||
ShuttersDeviceScan($hash)
|
ShuttersDeviceScan($hash)
|
||||||
@ -391,6 +382,9 @@ sub Notify($$) {
|
|||||||
InternalTimer( gettimeofday() + 3,
|
InternalTimer( gettimeofday() + 3,
|
||||||
'AutoShuttersControl::RenewSunRiseSetShuttersTimer',
|
'AutoShuttersControl::RenewSunRiseSetShuttersTimer',
|
||||||
$hash );
|
$hash );
|
||||||
|
InternalTimer( gettimeofday() + 5,
|
||||||
|
'AutoShuttersControl::AutoSearchTwilightDev',
|
||||||
|
$hash );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ( grep /^partyMode:.off$/, @{$events} ) {
|
elsif ( grep /^partyMode:.off$/, @{$events} ) {
|
||||||
@ -606,29 +600,6 @@ sub ShuttersDeviceScan($) {
|
|||||||
push( @{ $hash->{helper}{shuttersList} }, $_ )
|
push( @{ $hash->{helper}{shuttersList} }, $_ )
|
||||||
; ## einem Hash wird ein Array zugewiesen welches die Liste der erkannten Rollos beinhaltet
|
; ## einem Hash wird ein Array zugewiesen welches die Liste der erkannten Rollos beinhaltet
|
||||||
|
|
||||||
delFromDevAttrList( $_, 'ASC_Up:time,astro' )
|
|
||||||
if (
|
|
||||||
AttrVal( $_, 'userattr', 'none' ) =~ /\sASC_Up:time,astro\sASC_/ )
|
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.80
|
|
||||||
delFromDevAttrList( $_, 'ASC_Down:time,astro' )
|
|
||||||
if (
|
|
||||||
AttrVal( $_, 'userattr', 'none' ) =~ /\sASC_Down:time,astro\sASC_/ )
|
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.80
|
|
||||||
delFromDevAttrList( $_, 'ASC_Mode_Up:absent,always,off' )
|
|
||||||
if ( AttrVal( $_, 'userattr', 'none' ) =~
|
|
||||||
/\sASC_Mode_Up:absent,always,off\sASC_/ )
|
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.81
|
|
||||||
delFromDevAttrList( $_, 'ASC_Mode_Down:absent,always,off' )
|
|
||||||
if ( AttrVal( $_, 'userattr', 'none' ) =~
|
|
||||||
/\sASC_Mode_Down:absent,always,off\sASC_/ )
|
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.81
|
|
||||||
delFromDevAttrList( $_, 'ASC_Self_Defence_Exclude:on,off' )
|
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.80
|
|
||||||
delFromDevAttrList( $_, 'ASC_Offset_Minutes_Morning' )
|
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.81
|
|
||||||
delFromDevAttrList( $_, 'ASC_Offset_Minutes_Evening' )
|
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.81
|
|
||||||
|
|
||||||
delFromDevAttrList( $_, 'ASC_Direction' )
|
delFromDevAttrList( $_, 'ASC_Direction' )
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.89
|
; # temporär muss später gelöscht werden ab Version 0.1.89
|
||||||
delFromDevAttrList( $_,
|
delFromDevAttrList( $_,
|
||||||
@ -672,15 +643,6 @@ sub ShuttersDeviceScan($) {
|
|||||||
delFromDevAttrList( $_, 'ASC_lock-outCmd:inhibit,blocked' )
|
delFromDevAttrList( $_, 'ASC_lock-outCmd:inhibit,blocked' )
|
||||||
; # temporär muss später gelöscht werden ab Version 0.2.1
|
; # temporär muss später gelöscht werden ab Version 0.2.1
|
||||||
|
|
||||||
CommandDeleteReading( undef,
|
|
||||||
$_ . ' .AutoShuttersControl_InternalTimerFuncHash' )
|
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.81
|
|
||||||
CommandDeleteReading( undef,
|
|
||||||
$_ . ' .AutoShuttersControl_LastPosition' )
|
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.81
|
|
||||||
CommandDeleteReading( undef, $_ . ' .AutoShuttersControl_DelayCmd' )
|
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.82
|
|
||||||
|
|
||||||
$shuttersList = $shuttersList . ',' . $_;
|
$shuttersList = $shuttersList . ',' . $_;
|
||||||
$shutters->setShuttersDev($_);
|
$shutters->setShuttersDev($_);
|
||||||
$shutters->setLastManPos( $shutters->getStatus );
|
$shutters->setLastManPos( $shutters->getStatus );
|
||||||
@ -1269,18 +1231,9 @@ sub EventProcessingTwilightDevice($@) {
|
|||||||
# Astro
|
# Astro
|
||||||
# SunAz = azimuth = Sonnenwinkel
|
# SunAz = azimuth = Sonnenwinkel
|
||||||
# SunAlt = evaluation = Sonnenhöhe
|
# SunAlt = evaluation = Sonnenhöhe
|
||||||
my $name = $device;
|
|
||||||
Log3( $name, 1,
|
|
||||||
"AutoShuttersControl ($name) - EventProcessingTwilightDevice - Vor dem IF. EVENT ist: " . $events);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ( $events =~ m#(azimuth|evaluation|SunAz|SunAlt):\s(\d+.\d+)# ) {
|
if ( $events =~ m#(azimuth|evaluation|SunAz|SunAlt):\s(\d+.\d+)# ) {
|
||||||
Log3( $name, 1,
|
my $name = $device;
|
||||||
"AutoShuttersControl ($name) - EventProcessingTwilightDevice - gleich nach dem IF / Wert1 ist: " . $1 . " Wert2 ist: " . $2);
|
|
||||||
|
|
||||||
Log3( $name, 1,
|
|
||||||
"AutoShuttersControl ($name) - EventProcessingTwilightDevice - gleich nach dem ZWEITEN IF");
|
|
||||||
my ($azimuth,$elevation, $outTemp, $brightness);
|
my ($azimuth,$elevation, $outTemp, $brightness);
|
||||||
|
|
||||||
$azimuth = $2 if ( $1 eq 'azimuth' or $1 eq 'SunAz' );
|
$azimuth = $2 if ( $1 eq 'azimuth' or $1 eq 'SunAz' );
|
||||||
@ -1289,17 +1242,8 @@ sub EventProcessingTwilightDevice($@) {
|
|||||||
$azimuth = $ascDev->getAzimuth if (not defined($azimuth) and not $azimuth );
|
$azimuth = $ascDev->getAzimuth if (not defined($azimuth) and not $azimuth );
|
||||||
$elevation = $ascDev->getElevation if (not defined($elevation) and not $elevation );
|
$elevation = $ascDev->getElevation if (not defined($elevation) and not $elevation );
|
||||||
|
|
||||||
Log3( $name, 1,
|
|
||||||
"AutoShuttersControl ($name) - EventProcessingTwilightDevice - Azimuth: " . $azimuth . ", Elevation: " . $elevation );
|
|
||||||
|
|
||||||
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
|
||||||
Log3( $name, 1,
|
|
||||||
"AutoShuttersControl ($name) - EventProcessingTwilightDevice - Shutters: " . $shuttersDev . ", Ist Tag: " . ( IsDay( $hash, $shuttersDev ? 'yes' : 'no') ) );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ShadingProcessing($hash,$shuttersDev,$azimuth,$elevation,$shutters->getBrightness,$ascDev->getOutTemp,$shutters->getDirection,$shutters->getShadingAngleLeft,$shutters->getShadingAngleRight)
|
ShadingProcessing($hash,$shuttersDev,$azimuth,$elevation,$shutters->getBrightness,$ascDev->getOutTemp,$shutters->getDirection,$shutters->getShadingAngleLeft,$shutters->getShadingAngleRight)
|
||||||
if ( ($shutters->getShadingMode eq 'on' or $shutters->getShadingMode eq $ascDev->getResidentsStatus) and IsDay( $hash, $shuttersDev ) );
|
if ( ($shutters->getShadingMode eq 'on' or $shutters->getShadingMode eq $ascDev->getResidentsStatus) and IsDay( $hash, $shuttersDev ) );
|
||||||
}
|
}
|
||||||
@ -1492,32 +1436,6 @@ sub CreateSunRiseSetShuttersTimer($$) {
|
|||||||
);
|
);
|
||||||
readingsEndUpdate( $hash, 1 );
|
readingsEndUpdate( $hash, 1 );
|
||||||
|
|
||||||
CommandDeleteReading( undef,
|
|
||||||
$name . ' ' . $shuttersDev . '_nextAstroEvent' )
|
|
||||||
if ( ReadingsVal( $name, $shuttersDev . '_nextAstroEvent', 'none' ) ne
|
|
||||||
'none' ); # temporär
|
|
||||||
CommandDeleteReading( undef,
|
|
||||||
$shuttersDev . ' AutoShuttersControl_Time_Sunrise' )
|
|
||||||
if (
|
|
||||||
ReadingsVal( $shuttersDev, 'AutoShuttersControl_Time_Sunrise', 'none' )
|
|
||||||
ne 'none' ); # temporär
|
|
||||||
CommandDeleteReading( undef,
|
|
||||||
$shuttersDev . ' AutoShuttersControl_Time_Sunset' )
|
|
||||||
if (
|
|
||||||
ReadingsVal( $shuttersDev, 'AutoShuttersControl_Time_Sunset', 'none' )
|
|
||||||
ne 'none' ); # temporär
|
|
||||||
CommandDeleteReading( undef,
|
|
||||||
$shuttersDev . ' AutoShuttersControl_Time_DriveDown' )
|
|
||||||
if (
|
|
||||||
ReadingsVal( $shuttersDev, 'AutoShuttersControl_Time_DriveDown',
|
|
||||||
'none' ) ne 'none'
|
|
||||||
); # temporär
|
|
||||||
CommandDeleteReading( undef,
|
|
||||||
$shuttersDev . ' AutoShuttersControl_Time_DriveUp' )
|
|
||||||
if (
|
|
||||||
ReadingsVal( $shuttersDev, 'AutoShuttersControl_Time_DriveUp', 'none' )
|
|
||||||
ne 'none' ); # temporär
|
|
||||||
|
|
||||||
RemoveInternalTimer( $shutters->getInTimerFuncHash )
|
RemoveInternalTimer( $shutters->getInTimerFuncHash )
|
||||||
if ( defined( $shutters->getInTimerFuncHash ) );
|
if ( defined( $shutters->getInTimerFuncHash ) );
|
||||||
|
|
||||||
@ -1842,6 +1760,19 @@ sub GetMonitoredDevs($) {
|
|||||||
## my little helper
|
## my little helper
|
||||||
#################################
|
#################################
|
||||||
|
|
||||||
|
sub AutoSearchTwilightDev($) {
|
||||||
|
my $hash = shift;
|
||||||
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
|
if ( devspec2array('TYPE=(Astro|Twilight)') > 0 ) {
|
||||||
|
CommandAttr( undef,
|
||||||
|
$name
|
||||||
|
. ' ASC_twilightDevice '
|
||||||
|
. ( devspec2array('TYPE=(Astro|Twilight)') )[0] )
|
||||||
|
if ( AttrVal( $name, 'ASC_twilightDevice', 'none' ) eq 'none' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Hilfsfunktion welche meinen ReadingString zum finden der getriggerten Devices und der Zurdnung was das Device überhaupt ist und zu welchen Rolladen es gehört aus liest und das Device extraiert
|
# Hilfsfunktion welche meinen ReadingString zum finden der getriggerten Devices und der Zurdnung was das Device überhaupt ist und zu welchen Rolladen es gehört aus liest und das Device extraiert
|
||||||
sub ExtractNotifyDevFromEvent($$$) {
|
sub ExtractNotifyDevFromEvent($$$) {
|
||||||
my ( $hash, $shuttersDev, $shuttersAttr ) = @_;
|
my ( $hash, $shuttersDev, $shuttersAttr ) = @_;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user