delete temporary code for rename attributs, fix many commandref and code bugs (thanks to Christoph)

This commit is contained in:
Marko Oldenburg 2019-06-03 07:44:35 +02:00
parent 5336af574c
commit 2af032e4af

View File

@ -7,13 +7,14 @@
# #
# Special thanks goes to: # Special thanks goes to:
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html) # - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
# - Beta-User for many tests and ideas # - Beta-User for many tests, many suggestions and good discussions
# - pc1246 write english commandref # - pc1246 write english commandref
# - FunkOdyssey commandref style # - FunkOdyssey commandref style
# - sledge fix many typo in commandref # - sledge fix many typo in commandref
# - many User that use with modul and report bugs # - many User that use with modul and report bugs
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events # - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
# - Julian (Loredo) expand Residents Events for new Residents functions # - Julian (Loredo) expand Residents Events for new Residents functions
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
# #
# #
# This script is free software; you can redistribute it and/or modify # This script is free software; you can redistribute it and/or modify
@ -47,7 +48,7 @@ use strict;
use warnings; use warnings;
use FHEM::Meta; use FHEM::Meta;
my $version = '0.6.16'; my $version = '0.6.15';
sub AutoShuttersControl_Initialize($) { sub AutoShuttersControl_Initialize($) {
my ($hash) = @_; my ($hash) = @_;
@ -316,7 +317,8 @@ sub Undef($$) {
sub Attr(@) { sub Attr(@) {
my ( $cmd, $name, $attrName, $attrVal ) = @_; my ( $cmd, $name, $attrName, $attrVal ) = @_;
my $hash = $defs{$name};
# my $hash = $defs{$name};
return undef; return undef;
} }
@ -621,17 +623,17 @@ 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_Wind_SensorDevice' ) # delFromDevAttrList( $_, 'ASC_Wind_SensorDevice' )
; # temporär muss später gelöscht werden ab Version 0.4.0.10 # ; # temporär muss später gelöscht werden ab Version 0.4.0.10
delFromDevAttrList( $_, 'ASC_Wind_SensorReading' ) # delFromDevAttrList( $_, 'ASC_Wind_SensorReading' )
; # temporär muss später gelöscht werden ab Version 0.4.0.10 # ; # temporär muss später gelöscht werden ab Version 0.4.0.10
delFromDevAttrList( $_, 'ASC_Wind_minMaxSpeed' ) # delFromDevAttrList( $_, 'ASC_Wind_minMaxSpeed' )
; # temporär muss später gelöscht werden ab Version 0.4.11beta6 # ; # temporär muss später gelöscht werden ab Version 0.4.11beta6
delFromDevAttrList( $_, 'ASC_Wind_Pos' ) # delFromDevAttrList( $_, 'ASC_Wind_Pos' )
; # temporär muss später gelöscht werden ab Version 0.4.11beta6 # ; # temporär muss später gelöscht werden ab Version 0.4.11beta6
CommandDeleteReading( undef, $_ . ' ASC_Time_PrivacyDriveUp' ) # CommandDeleteReading( undef, $_ . ' ASC_Time_PrivacyDriveUp' )
if ( ReadingsVal( $_, 'ASC_Time_PrivacyDriveUp', 'none' ) ne 'none' ) # if ( ReadingsVal( $_, 'ASC_Time_PrivacyDriveUp', 'none' ) ne 'none' )
; # temporär muss später gelöscht werden ab Version 0.6.3 # ; # temporär muss später gelöscht werden ab Version 0.6.3
$shuttersList = $shuttersList . ',' . $_; $shuttersList = $shuttersList . ',' . $_;
$shutters->setShuttersDev($_); $shutters->setShuttersDev($_);
@ -1330,20 +1332,20 @@ sub EventProcessingRain($@) {
if ( $val > $triggerMax if ( $val > $triggerMax
and $shutters->getStatus != $closedPos and $shutters->getStatus != $closedPos
and IsAfterShuttersManualBlocking($shuttersDev) and IsAfterShuttersManualBlocking($shuttersDev)
and $shutters->getRainProtectionStatus eq 'unprotection' ) and $shutters->getRainProtectionStatus eq 'unprotected' )
{ {
$shutters->setLastDrive('rain protection'); $shutters->setLastDrive('rain protected');
$shutters->setDriveCmd($closedPos); $shutters->setDriveCmd($closedPos);
$shutters->setRainProtectionStatus('protection'); $shutters->setRainProtectionStatus('protected');
} }
elsif ( ( $val == 0 or $val < $triggerMax ) elsif ( ( $val == 0 or $val < $triggerMax )
and $shutters->getStatus == $closedPos and $shutters->getStatus == $closedPos
and IsAfterShuttersManualBlocking($shuttersDev) and IsAfterShuttersManualBlocking($shuttersDev)
and $shutters->getRainProtectionStatus eq 'protection' ) and $shutters->getRainProtectionStatus eq 'protected' )
{ {
$shutters->setLastDrive('rain un-protection'); $shutters->setLastDrive('rain un-protected');
$shutters->setDriveCmd( $shutters->getLastPos ); $shutters->setDriveCmd( $shutters->getLastPos );
$shutters->setRainProtectionStatus('unprotection'); $shutters->setRainProtectionStatus('unprotected');
} }
} }
} }
@ -1380,18 +1382,18 @@ sub EventProcessingWind($@) {
); );
if ( $1 > $shutters->getWindMax if ( $1 > $shutters->getWindMax
and $shutters->getWindProtectionStatus eq 'unprotection' ) and $shutters->getWindProtectionStatus eq 'unprotected' )
{ {
$shutters->setLastDrive('wind protection'); $shutters->setLastDrive('wind protected');
$shutters->setDriveCmd( $shutters->getWindPos ); $shutters->setDriveCmd( $shutters->getWindPos );
$shutters->setWindProtectionStatus('protection'); $shutters->setWindProtectionStatus('protected');
} }
elsif ( $1 < $shutters->getWindMin elsif ( $1 < $shutters->getWindMin
and $shutters->getWindProtectionStatus eq 'protection' ) and $shutters->getWindProtectionStatus eq 'protected' )
{ {
$shutters->setLastDrive('wind un-protection'); $shutters->setLastDrive('wind un-protected');
$shutters->setDriveCmd( $shutters->getLastPos ); $shutters->setDriveCmd( $shutters->getLastPos );
$shutters->setWindProtectionStatus('unprotection'); $shutters->setWindProtectionStatus('unprotected');
} }
ASC_Debug( 'EventProcessingWind: ' ASC_Debug( 'EventProcessingWind: '
@ -1720,8 +1722,8 @@ sub EventProcessingShadingBrightness($@) {
) )
and IsDay($shuttersDev) and IsDay($shuttersDev)
and $ascDev->getAutoShuttersControlShading eq 'on' and $ascDev->getAutoShuttersControlShading eq 'on'
and $shutters->getRainProtectionStatus eq 'unprotection' and $shutters->getRainProtectionStatus eq 'unprotected'
and $shutters->getWindProtectionStatus eq 'unprotection' and $shutters->getWindProtectionStatus eq 'unprotected'
) )
{ {
ShadingProcessing( ShadingProcessing(
@ -1743,8 +1745,8 @@ sub EventProcessingShadingBrightness($@) {
} }
elsif ( $shutters->getShadingStatus eq 'in' elsif ( $shutters->getShadingStatus eq 'in'
and $shutters->getShadingMode ne $homemode and $shutters->getShadingMode ne $homemode
and $shutters->getRainProtectionStatus eq 'unprotection' and $shutters->getRainProtectionStatus eq 'unprotected'
and $shutters->getWindProtectionStatus eq 'unprotection' ) and $shutters->getWindProtectionStatus eq 'unprotected' )
{ {
$shutters->setShadingStatus('out'); $shutters->setShadingStatus('out');
ShadingProcessingDriveCommand( $hash, $shuttersDev ); ShadingProcessingDriveCommand( $hash, $shuttersDev );
@ -1805,8 +1807,8 @@ sub EventProcessingTwilightDevice($@) {
) )
and IsDay($shuttersDev) and IsDay($shuttersDev)
and $ascDev->getAutoShuttersControlShading eq 'on' and $ascDev->getAutoShuttersControlShading eq 'on'
and $shutters->getRainProtectionStatus eq 'unprotection' and $shutters->getRainProtectionStatus eq 'unprotected'
and $shutters->getWindProtectionStatus eq 'unprotection' and $shutters->getWindProtectionStatus eq 'unprotected'
) )
{ {
ShadingProcessing( ShadingProcessing(
@ -2381,14 +2383,14 @@ sub RenewSunRiseSetShuttersTimer($) {
. AttrVal( $_, 'ASC_BrightnessMaxVal', 700 ) . AttrVal( $_, 'ASC_BrightnessMaxVal', 700 )
if ( AttrVal( $_, 'ASC_Brightness_Sensor', 'none' ) ne 'none' ); if ( AttrVal( $_, 'ASC_Brightness_Sensor', 'none' ) ne 'none' );
delFromDevAttrList( $_, 'ASC_Brightness_Sensor' ) # delFromDevAttrList( $_, 'ASC_Brightness_Sensor' )
; # temporär muss später gelöscht werden ab Version 0.4.11beta9 # ; # temporär muss später gelöscht werden ab Version 0.4.11beta9
delFromDevAttrList( $_, 'ASC_Brightness_Reading' ) # delFromDevAttrList( $_, 'ASC_Brightness_Reading' )
; # temporär muss später gelöscht werden ab Version 0.4.11beta9 # ; # temporär muss später gelöscht werden ab Version 0.4.11beta9
delFromDevAttrList( $_, 'ASC_BrightnessMinVal' ) # delFromDevAttrList( $_, 'ASC_BrightnessMinVal' )
; # temporär muss später gelöscht werden ab Version 0.4.11beta9 # ; # temporär muss später gelöscht werden ab Version 0.4.11beta9
delFromDevAttrList( $_, 'ASC_BrightnessMaxVal' ) # delFromDevAttrList( $_, 'ASC_BrightnessMaxVal' )
; # temporär muss später gelöscht werden ab Version 0.4.11beta9 # ; # temporär muss später gelöscht werden ab Version 0.4.11beta9
} }
} }
@ -3531,7 +3533,7 @@ sub setHardLockOut {
CommandSet( undef, CommandSet( undef,
$self->{shuttersDev} . ' ' $self->{shuttersDev} . ' '
. ( $cmd eq 'on' ? 'protectionOn' : 'protectionOff' ) ) . ( $cmd eq 'on' ? 'protectionOn' : 'protectionOff' ) )
if ( $shutters->getLockOutCmd eq 'protection' ); if ( $shutters->getLockOutCmd eq 'protected' );
} }
return 0; return 0;
} }
@ -3893,7 +3895,7 @@ sub setShadingStatus {
return 0; return 0;
} }
sub setWindProtectionStatus { # Werte protection, unprotection sub setWindProtectionStatus { # Werte protected, unprotected
my ( $self, $value ) = @_; my ( $self, $value ) = @_;
$self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{VAL} = $value $self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{VAL} = $value
@ -3901,7 +3903,7 @@ sub setWindProtectionStatus { # Werte protection, unprotection
return 0; return 0;
} }
sub setRainProtectionStatus { # Werte protection, unprotection sub setRainProtectionStatus { # Werte protected, unprotected
my ( $self, $value ) = @_; my ( $self, $value ) = @_;
$self->{ $self->{shuttersDev} }->{RainProtection}->{VAL} = $value $self->{ $self->{shuttersDev} }->{RainProtection}->{VAL} = $value
@ -3929,7 +3931,7 @@ sub getIfInShading {
); );
} }
sub getWindProtectionStatus { # Werte protection, unprotection sub getWindProtectionStatus { # Werte protected, unprotected
my $self = shift; my $self = shift;
return ( return (
@ -3940,11 +3942,11 @@ sub getWindProtectionStatus { # Werte protection, unprotection
) )
) )
? $self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{VAL} ? $self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{VAL}
: 'unprotection' : 'unprotected'
); );
} }
sub getRainProtectionStatus { # Werte protection, unprotection sub getRainProtectionStatus { # Werte protected, unprotected
my $self = shift; my $self = shift;
return ( return (
@ -3955,7 +3957,7 @@ sub getRainProtectionStatus { # Werte protection, unprotection
) )
) )
? $self->{ $self->{shuttersDev} }->{RainProtection}->{VAL} ? $self->{ $self->{shuttersDev} }->{RainProtection}->{VAL}
: 'unprotection' : 'unprotected'
); );
} }
@ -4153,17 +4155,15 @@ sub getShadingWaitingPeriod {
sub getOffset { sub getOffset {
my $self = shift; my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_Drive_Offset', -1 ); my $val = AttrVal( $self->{shuttersDev}, 'ASC_Drive_Offset', -1 );
return ( $val =~ /^\d+$/ ? $val : -1 );
} }
sub getOffsetStart { sub getOffsetStart {
my $self = shift; my $self = shift;
return ( my $val = AttrVal( $self->{shuttersDev}, 'ASC_Drive_OffsetStart', -1 );
AttrVal( $self->{shuttersDev}, 'ASC_Drive_OffsetStart', -1 ) > 0 return ( ( $val > 0 and $val =~ /^\d+$/ ) ? $val : -1 );
? AttrVal( $self->{shuttersDev}, 'ASC_Drive_OffsetStart', -1 )
: -1
);
} }
sub getBlockingTimeAfterManual { sub getBlockingTimeAfterManual {
@ -5235,7 +5235,7 @@ sub getblockAscDrivesAfterManual {
<a name="ASC_autoAstroModeMorning"></a> <a name="ASC_autoAstroModeMorning"></a>
<li><strong>ASC_autoAstroModeMorning</strong> - REAL, CIVIL, NAUTIC, ASTRONOMIC oder HORIZON</li> <li><strong>ASC_autoAstroModeMorning</strong> - REAL, CIVIL, NAUTIC, ASTRONOMIC oder HORIZON</li>
<a name="ASC_autoAstroModeMorningHorizon"></a> <a name="ASC_autoAstroModeMorningHorizon"></a>
<li><strong>ASC_autoAstroModeMorningHorizon</strong> - H&ouml;he &uuml;ber dem Horizont. Wird nur ber&uuml;cksichtigt, wenn im Attribut <em>ASC_autoAstroModeEvening</em> der Wert <em>HORIZON</em> ausgew&auml;hlt wurde. (default: 0)</li> <li><strong>ASC_autoAstroModeMorningHorizon</strong> - H&ouml;he &uuml;ber dem Horizont. Wird nur ber&uuml;cksichtigt, wenn im Attribut <em>ASC_autoAstroModeMorning</em> der Wert <em>HORIZON</em> ausgew&auml;hlt wurde. (default: 0)</li>
<a name="ASC_autoShuttersControlComfort"></a> <a name="ASC_autoShuttersControlComfort"></a>
<li><strong>ASC_autoShuttersControlComfort - on/off</strong> - schaltet die Komfortfunktion an. Bedeutet, dass ein Rollladen mit einem threestate-Sensor am Fenster beim &Ouml;ffnen in eine Offenposition f&auml;hrt. Hierzu muss beim Rollladen das Attribut <em>ASC_ComfortOpen_Pos</em> entsprechend konfiguriert sein. (default: off)</li> <li><strong>ASC_autoShuttersControlComfort - on/off</strong> - schaltet die Komfortfunktion an. Bedeutet, dass ein Rollladen mit einem threestate-Sensor am Fenster beim &Ouml;ffnen in eine Offenposition f&auml;hrt. Hierzu muss beim Rollladen das Attribut <em>ASC_ComfortOpen_Pos</em> entsprechend konfiguriert sein. (default: off)</li>
<a name="ASC_autoShuttersControlEvening"></a> <a name="ASC_autoShuttersControlEvening"></a>
@ -5378,8 +5378,8 @@ sub getblockAscDrivesAfterManual {
<tr><td>ShadingStatus</td><td>Ausgabe des aktuellen Shading Status, in, out, in reserved, out reserved</td></tr> <tr><td>ShadingStatus</td><td>Ausgabe des aktuellen Shading Status, in, out, in reserved, out reserved</td></tr>
<tr><td>ShadingStatusTimestamp</td><td>Timestamp des letzten Beschattungsstatus</td></tr> <tr><td>ShadingStatusTimestamp</td><td>Timestamp des letzten Beschattungsstatus</td></tr>
<tr><td>IfInShading</td><td>Befindet sich der Rollladen, in Abh&auml;ngigkeit des Shading Mode, in der Beschattung</td></tr> <tr><td>IfInShading</td><td>Befindet sich der Rollladen, in Abh&auml;ngigkeit des Shading Mode, in der Beschattung</td></tr>
<tr><td>WindProtectionStatus</td><td>aktueller Status der Wind Protection protection oder unprotection</td></tr> <tr><td>WindProtectionStatus</td><td>aktueller Status der Wind Protection protected oder unprotected</td></tr>
<tr><td>RainProtectionStatus</td><td>aktueller Status der Regen Protection protection oder unprotection</td></tr> <tr><td>RainProtectionStatus</td><td>aktueller Status der Regen Protection unprotected oder unprotected</td></tr>
<tr><td>DelayCmd</td><td>letzter Fahrbefehl welcher in die Warteschlange kam. Grund z.B. Partymodus.</td></tr> <tr><td>DelayCmd</td><td>letzter Fahrbefehl welcher in die Warteschlange kam. Grund z.B. Partymodus.</td></tr>
<tr><td>Status</td><td>Position des Rollladens</td></tr> <tr><td>Status</td><td>Position des Rollladens</td></tr>
<tr><td>ASCenable</td><td>Abfrage ob f&uuml;r den Rollladen die ASC Steuerung aktiv ist.</td></tr> <tr><td>ASCenable</td><td>Abfrage ob f&uuml;r den Rollladen die ASC Steuerung aktiv ist.</td></tr>