Code und Syntax für komplexe Attributsangaben steht, Anpassungen für die Moduleigenen Attribute vorgenommen, Wind Attribute in den Rollläden müssen noch angepasst werden
This commit is contained in:
parent
99d904f3e6
commit
3bdf6c5963
@ -312,7 +312,7 @@ sub Notify($$) {
|
|||||||
my $events = deviceEvents( $dev, 1 );
|
my $events = deviceEvents( $dev, 1 );
|
||||||
return if ( !$events );
|
return if ( !$events );
|
||||||
|
|
||||||
Log3( $name, 3,
|
Log3( $name, 4,
|
||||||
"AutoShuttersControl ($name) - Devname: "
|
"AutoShuttersControl ($name) - Devname: "
|
||||||
. $devname
|
. $devname
|
||||||
. " Name: "
|
. " Name: "
|
||||||
@ -381,7 +381,6 @@ sub Notify($$) {
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
EventProcessingGeneral( $hash, undef, join( ' ', @{$events} ) );
|
EventProcessingGeneral( $hash, undef, join( ' ', @{$events} ) );
|
||||||
print 'in Processinf rein' . "\n";
|
|
||||||
}
|
}
|
||||||
# elsif (
|
# elsif (
|
||||||
# grep
|
# grep
|
||||||
@ -601,7 +600,7 @@ sub ShuttersDeviceScan($) {
|
|||||||
### Temporär und muss später entfernt werden
|
### Temporär und muss später entfernt werden
|
||||||
CommandAttr(undef,$name . ' ASC_tempSensor '.AttrVal($name,'ASC_temperatureSensor','none').':'.AttrVal($name,'ASC_temperatureReading','temperature')) if ( AttrVal($name,'ASC_temperatureSensor','none') ne 'none' );
|
CommandAttr(undef,$name . ' ASC_tempSensor '.AttrVal($name,'ASC_temperatureSensor','none').':'.AttrVal($name,'ASC_temperatureReading','temperature')) if ( AttrVal($name,'ASC_temperatureSensor','none') ne 'none' );
|
||||||
CommandAttr(undef,$name . ' ASC_residentsDev '.AttrVal($name,'ASC_residentsDevice','none').':'.AttrVal($name,'ASC_residentsDeviceReading','state')) if ( AttrVal($name,'ASC_residentsDevice','none') ne 'none' );
|
CommandAttr(undef,$name . ' ASC_residentsDev '.AttrVal($name,'ASC_residentsDevice','none').':'.AttrVal($name,'ASC_residentsDeviceReading','state')) if ( AttrVal($name,'ASC_residentsDevice','none') ne 'none' );
|
||||||
CommandAttr(undef,$name . ' ASC_rainSensor '.AttrVal($name,'ASC_rainSensorDevice','none').':'.AttrVal($name,'ASC_rainSensorReading','rain')) if ( AttrVal($name,'ASC_rainSensorDevice','none') ne 'none' );
|
CommandAttr(undef,$name . ' ASC_rainSensor '.AttrVal($name,'ASC_rainSensorDevice','none').':'.AttrVal($name,'ASC_rainSensorReading','rain').':'.AttrVal($name,'ASC_rainSensorShuttersClosedPos',50)) if ( AttrVal($name,'ASC_rainSensorDevice','none') ne 'none' );
|
||||||
|
|
||||||
CommandDeleteAttr(undef,$name . ' ASC_temperatureSensor') if ( AttrVal($name,'ASC_temperatureSensor','none') ne 'none' );
|
CommandDeleteAttr(undef,$name . ' ASC_temperatureSensor') if ( AttrVal($name,'ASC_temperatureSensor','none') ne 'none' );
|
||||||
CommandDeleteAttr(undef,$name . ' ASC_temperatureReading') if ( AttrVal($name,'ASC_temperatureReading','none') ne 'none' );
|
CommandDeleteAttr(undef,$name . ' ASC_temperatureReading') if ( AttrVal($name,'ASC_temperatureReading','none') ne 'none' );
|
||||||
@ -609,7 +608,7 @@ sub ShuttersDeviceScan($) {
|
|||||||
CommandDeleteAttr(undef,$name . ' ASC_residentsDeviceReading') if ( AttrVal($name,'ASC_residentsDeviceReading','none') ne 'none' );
|
CommandDeleteAttr(undef,$name . ' ASC_residentsDeviceReading') if ( AttrVal($name,'ASC_residentsDeviceReading','none') ne 'none' );
|
||||||
CommandDeleteAttr(undef,$name . ' ASC_rainSensorDevice') if ( AttrVal($name,'ASC_rainSensorDevice','none') ne 'none' );
|
CommandDeleteAttr(undef,$name . ' ASC_rainSensorDevice') if ( AttrVal($name,'ASC_rainSensorDevice','none') ne 'none' );
|
||||||
CommandDeleteAttr(undef,$name . ' ASC_rainSensorReading') if ( AttrVal($name,'ASC_rainSensorReading','none') ne 'none' );
|
CommandDeleteAttr(undef,$name . ' ASC_rainSensorReading') if ( AttrVal($name,'ASC_rainSensorReading','none') ne 'none' );
|
||||||
CommandDeleteAttr(undef,$name . ' ASC_rainSensorShuttersClosedPos:0,10,20,30,40,50,60,70,80,90,100') if ( AttrVal($name,'ASC_rainSensorShuttersClosedPos','none') ne 'none' );
|
CommandDeleteAttr(undef,$name . ' ASC_rainSensorShuttersClosedPos') if ( AttrVal($name,'ASC_rainSensorShuttersClosedPos','none') ne 'none' );
|
||||||
|
|
||||||
|
|
||||||
$hash->{NOTIFYDEV} = "global," . $name . $shuttersList;
|
$hash->{NOTIFYDEV} = "global," . $name . $shuttersList;
|
||||||
@ -710,15 +709,20 @@ sub UserAttributs_Readings_ForShutters($$) {
|
|||||||
sub AddNotifyDev($@) {
|
sub AddNotifyDev($@) {
|
||||||
### Beispielaufruf: AddNotifyDev( $hash, $3, $1, $2 ) if ( $3 ne 'none' );
|
### Beispielaufruf: AddNotifyDev( $hash, $3, $1, $2 ) if ( $3 ne 'none' );
|
||||||
my ( $hash, $dev, $shuttersDev, $shuttersAttr ) = @_;
|
my ( $hash, $dev, $shuttersDev, $shuttersAttr ) = @_;
|
||||||
print 'Devicedavor: ' . $dev . "\n";
|
|
||||||
$dev = (split(':',$dev))[0]; ## Wir versuchen die Device Attribute anders zu setzen. DEVICE:READING
|
$dev = (split(':',$dev))[0];
|
||||||
print 'Device danach: ' . $dev . "\n";
|
my ($key, $value) = split(':',(split(' ',$dev))[0],2); ## Wir versuchen die Device Attribute anders zu setzen. device=DEVICE reading=READING
|
||||||
|
$dev = $key;
|
||||||
|
# if ( not defined($value) )
|
||||||
|
# { $dev = (split(':',$dev))[0] } ## Notfall falls noch kein device=DEVICE existiert SOLL NUR TEMPORÄR SEIN
|
||||||
|
# else { $dev = $value }
|
||||||
|
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
my $notifyDev = $hash->{NOTIFYDEV};
|
my $notifyDev = $hash->{NOTIFYDEV};
|
||||||
$notifyDev = "" if ( !$notifyDev );
|
$notifyDev = '' if ( !$notifyDev );
|
||||||
my %hash;
|
|
||||||
|
|
||||||
|
my %hash;
|
||||||
%hash = map { ( $_ => 1 ) }
|
%hash = map { ( $_ => 1 ) }
|
||||||
split( ",", "$notifyDev,$dev" );
|
split( ",", "$notifyDev,$dev" );
|
||||||
|
|
||||||
@ -1118,23 +1122,28 @@ sub EventProcessingRain($@) {
|
|||||||
my $val;
|
my $val;
|
||||||
|
|
||||||
if ( $events =~ m#$reading:\s(\d+|rain|dry)# ) {
|
if ( $events =~ m#$reading:\s(\d+|rain|dry)# ) {
|
||||||
if ( $1 eq 'rain' ) { $val = 1000 }
|
my $val;
|
||||||
elsif ( $1 eq 'dry' ) { $val = 0 }
|
my $triggerMsx = $ascDev->getRainTriggerMax;
|
||||||
|
my $triggerMin = $ascDev->getRainTriggerMin;
|
||||||
|
my $closedPos = $ascDev->getRainSensorShuttersClosedPos;
|
||||||
|
|
||||||
|
if ( $1 eq 'rain' ) { $val = $triggermax + 1 }
|
||||||
|
elsif ( $1 eq 'dry' ) { $val = $triggermin }
|
||||||
else { $val = $1 }
|
else { $val = $1 }
|
||||||
|
|
||||||
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
if ( $val > 100
|
if ( $val > $triggerMax
|
||||||
and $shutters->getStatus !=
|
and $shutters->getStatus !=
|
||||||
$ascDev->getRainSensorShuttersClosedPos )
|
$closedPos )
|
||||||
{
|
{
|
||||||
$shutters->setLastDrive('rain protection');
|
$shutters->setLastDrive('rain protection');
|
||||||
$shutters->setDriveCmd(
|
$shutters->setDriveCmd(
|
||||||
$ascDev->getRainSensorShuttersClosedPos );
|
$closedPos );
|
||||||
}
|
}
|
||||||
elsif ( $val == 0
|
elsif ( ($val == 0 or $val < $triggerMax)
|
||||||
and $shutters->getStatus ==
|
and $shutters->getStatus ==
|
||||||
$ascDev->getRainSensorShuttersClosedPos )
|
$closedPos )
|
||||||
{
|
{
|
||||||
$shutters->setLastDrive('rain un-protection');
|
$shutters->setLastDrive('rain un-protection');
|
||||||
$shutters->setDriveCmd( $shutters->getLastPos );
|
$shutters->setDriveCmd( $shutters->getLastPos );
|
||||||
@ -2078,6 +2087,13 @@ sub AutoSearchTwilightDev($) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub GetAttrValues($@) {
|
||||||
|
my ($dev,$attribut) = @_;
|
||||||
|
my @val = split(':',join(':',split(' ',AttrVal($dev,$attribut,'none'))));
|
||||||
|
|
||||||
|
return \@val;
|
||||||
|
}
|
||||||
|
|
||||||
# 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 ) = @_;
|
||||||
@ -3657,7 +3673,8 @@ use GPUtils qw(GP_Import);
|
|||||||
BEGIN {
|
BEGIN {
|
||||||
GP_Import(
|
GP_Import(
|
||||||
qw(
|
qw(
|
||||||
AttrVal)
|
AttrVal
|
||||||
|
gettimeofday)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3764,79 +3781,126 @@ sub _getTempSensor {
|
|||||||
my $name = $self->{name};
|
my $name = $self->{name};
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'none' if ( not defined($default) );
|
return $self->{ASC_tempSensor}->{device} if ( exists($self->{ASC_tempSensor}->{LASTGETTIME}) and (gettimeofday() - $self->{ASC_tempSensor}->{LASTGETTIME}) < 2);
|
||||||
return (split(':',AttrVal( $name, 'ASC_tempSensor', $default )))[0];
|
$self->{ASC_tempSensor}->{LASTGETTIME} = int(gettimeofday());
|
||||||
|
my $pairsrefarray = AutoShuttersControl::GetAttrValues($name,'ASC_tempSensor','none');
|
||||||
|
|
||||||
|
return @{$pairsrefarray}[0] if( @{$pairsrefarray}[0] eq 'none' );
|
||||||
|
$self->{ASC_tempSensor}->{device} = @{$pairsrefarray}[0];
|
||||||
|
$self->{ASC_tempSensor}->{reading} = ( defined(@{$pairsrefarray}[1]) ? @{$pairsrefarray}[1] : 'temperature');
|
||||||
|
|
||||||
|
return $self->{ASC_tempSensor}->{device};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getTempReading {
|
sub getTempReading {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $name = $self->{name};
|
my $name = $self->{name};
|
||||||
my $default = $self->{defaultarg};
|
|
||||||
|
|
||||||
$default = 'none' if ( not defined($default) );
|
return $self->{ASC_tempSensor}->{reading} if ( exists($self->{ASC_tempSensor}->{LASTGETTIME}) and (gettimeofday() - $self->{ASC_tempSensor}->{LASTGETTIME}) < 2);
|
||||||
return (split(':',AttrVal( $name, 'ASC_tempSensor', $default )))[1];
|
$ascDev->_getTempSensor;
|
||||||
|
return $self->{ASC_tempSensor}->{reading};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub _getResidentsDev {
|
sub _getResidentsDev {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $name = $self->{name};
|
my $name = $self->{name};
|
||||||
my $default = $self->{defaultarg};
|
|
||||||
|
|
||||||
$default = 'none' if ( not defined($default) );
|
return $self->{ASC_residentsDev}->{device} if ( exists($self->{ASC_residentsDev}->{LASTGETTIME}) and (gettimeofday() - $self->{ASC_residentsDev}->{LASTGETTIME}) < 2);
|
||||||
return (split(':',AttrVal( $name, 'ASC_residentsDev', $default )))[0];
|
$self->{ASC_residentsDev}->{LASTGETTIME} = int(gettimeofday());
|
||||||
|
my $pairsrefarray = AutoShuttersControl::GetAttrValues($name,'ASC_residentsDev','none');
|
||||||
|
|
||||||
|
return @{$pairsrefarray}[0] if( @{$pairsrefarray}[0] eq 'none' );
|
||||||
|
$self->{ASC_residentsDev}->{device} = @{$pairsrefarray}[0];
|
||||||
|
$self->{ASC_residentsDev}->{reading} = ( defined(@{$pairsrefarray}[1]) ? @{$pairsrefarray}[1] : 'state');
|
||||||
|
|
||||||
|
return $self->{ASC_residentsDev}->{device};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getResidentsReading {
|
sub getResidentsReading {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $name = $self->{name};
|
my $name = $self->{name};
|
||||||
my $default = $self->{defaultarg};
|
|
||||||
|
|
||||||
$default = 'state' if ( not defined($default) );
|
return $self->{ASC_residentsDev}->{reading} if ( exists($self->{ASC_residentsDev}->{LASTGETTIME}) and (gettimeofday() - $self->{ASC_residentsDev}->{LASTGETTIME}) < 2);
|
||||||
return (split(':',AttrVal( $name, 'ASC_residentsDev', $default )))[1];
|
$ascDev->_getResidentsDev;
|
||||||
|
return $self->{ASC_residentsDev}->{reading};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getRainSensor {
|
sub _getRainSensor {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $name = $self->{name};
|
my $name = $self->{name};
|
||||||
my $default = $self->{defaultarg};
|
|
||||||
|
|
||||||
$default = 'none' if ( not defined($default) );
|
return $self->{ASC_rainSensor}->{device} if ( exists($self->{ASC_rainSensor}->{LASTGETTIME}) and (gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME}) < 2);
|
||||||
return (split(':',AttrVal( $name, 'ASC_rainSensor', $default )))[0];
|
$self->{ASC_rainSensor}->{LASTGETTIME} = int(gettimeofday());
|
||||||
|
my $pairsrefarray = AutoShuttersControl::GetAttrValues($name,'ASC_rainSensor','none');
|
||||||
|
|
||||||
|
return @{$pairsrefarray}[0] if( @{$pairsrefarray}[0] eq 'none' );
|
||||||
|
$self->{ASC_rainSensor}->{device} = @{$pairsrefarray}[0];
|
||||||
|
$self->{ASC_rainSensor}->{reading} = ( defined(@{$pairsrefarray}[1]) ? @{$pairsrefarray}[1] : 'state');
|
||||||
|
$self->{ASC_rainSensor}->{triggermax} = ( defined(@{$pairsrefarray}[2]) ? @{$pairsrefarray}[2] : 1000);
|
||||||
|
$self->{ASC_rainSensor}->{triggermin} = ( defined(@{$pairsrefarray}[3]) ? $self->{ASC_rainSensor}->{triggermax} - @{$pairsrefarray}[3] : $self->{ASC_rainSensor}->{triggermax} - 900);
|
||||||
|
$self->{ASC_rainSensor}->{shuttersClosedPos} = ( defined(@{$pairsrefarray}[4]) ? @{$pairsrefarray}[4] : 0);
|
||||||
|
|
||||||
|
return $self->{ASC_rainSensor}->{device};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getRainSensorReading {
|
sub getRainSensorReading {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $name = $self->{name};
|
my $name = $self->{name};
|
||||||
my $default = $self->{defaultarg};
|
|
||||||
|
|
||||||
$default = 'state' if ( not defined($default) );
|
return $self->{ASC_rainSensor}->{reading} if ( exists($self->{ASC_rainSensor}->{LASTGETTIME}) and (gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME}) < 2);
|
||||||
return (split(':',AttrVal( $name, 'ASC_rainSensor', $default )))[1];
|
$ascDev->_getRainSensor;
|
||||||
|
return $self->{ASC_rainSensor}->{reading};
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getRainTriggerMax {
|
||||||
|
my $self = shift;
|
||||||
|
my $name = $self->{name};
|
||||||
|
|
||||||
|
return $self->{ASC_rainSensor}->{reading} if ( exists($self->{ASC_rainSensor}->{LASTGETTIME}) and (gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME}) < 2);
|
||||||
|
$ascDev->_getRainSensor;
|
||||||
|
return $self->{ASC_rainSensor}->{reading};
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getRainTriggerMin {
|
||||||
|
my $self = shift;
|
||||||
|
my $name = $self->{name};
|
||||||
|
|
||||||
|
return $self->{ASC_rainSensor}->{reading} if ( exists($self->{ASC_rainSensor}->{LASTGETTIME}) and (gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME}) < 2);
|
||||||
|
$ascDev->_getRainSensor;
|
||||||
|
return $self->{ASC_rainSensor}->{reading};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getRainSensorShuttersClosedPos {
|
sub getRainSensorShuttersClosedPos {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $name = $self->{name};
|
my $name = $self->{name};
|
||||||
|
|
||||||
my $default = 50;
|
return $self->{ASC_rainSensor}->{reading} if ( exists($self->{ASC_rainSensor}->{LASTGETTIME}) and (gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME}) < 2);
|
||||||
return (split(':',AttrVal( $name, 'ASC_rainSensor', $default )))[2];
|
$ascDev->_getRainSensor;
|
||||||
|
return $self->{ASC_rainSensor}->{reading};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub _getWindSensor {
|
sub _getWindSensor {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $name = $self->{name};
|
my $name = $self->{name};
|
||||||
my $default = $self->{defaultarg};
|
|
||||||
|
|
||||||
$default = 'none' if ( not defined($default) );
|
return $self->{ASC_windSensor}->{device} if ( exists($self->{ASC_windSensor}->{LASTGETTIME}) and (gettimeofday() - $self->{ASC_windSensor}->{LASTGETTIME}) < 2);
|
||||||
return (split(':',AttrVal( $name, 'ASC_windSensor', $default )))[0];
|
$self->{ASC_windSensor}->{LASTGETTIME} = int(gettimeofday());
|
||||||
|
my ($scalanum,$pairsrefarray) = AutoShuttersControl::GetAttrValues($name,'ASC_windSensor','none');
|
||||||
|
|
||||||
|
return @{$pairsrefarray}[0] if( @{$pairsrefarray}[0] eq 'none' );
|
||||||
|
$self->{ASC_windSensor}->{device} = @{$pairsrefarray}[0];
|
||||||
|
$self->{ASC_windSensor}->{reading} = ( defined(@{$pairsrefarray}[1]) ? @{$pairsrefarray}[1] : 'wind');
|
||||||
|
|
||||||
|
return $self->{ASC_windSensor}->{device};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getWindSensorReading {
|
sub getWindSensorReading {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $name = $self->{name};
|
my $name = $self->{name};
|
||||||
my $default = $self->{defaultarg};
|
|
||||||
|
|
||||||
$default = 'wind' if ( not defined($default) );
|
return $self->{ASC_windSensor}->{reading} if ( exists($self->{ASC_windSensor}->{LASTGETTIME}) and (gettimeofday() - $self->{ASC_windSensor}->{LASTGETTIME}) < 2);
|
||||||
return (split(':',AttrVal( $name, 'ASC_windSensor', $default )))[1];
|
$ascDev->_getWindSensor;
|
||||||
|
return $self->{ASC_windSensor}->{reading};
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
@ -4085,7 +4149,7 @@ sub getWindSensorReading {
|
|||||||
<a name="ASC_brightnessMaxVal"></a>
|
<a name="ASC_brightnessMaxVal"></a>
|
||||||
<li>ASC_brightnessMaxVal - maximaler Lichtwert, bei dem Schaltbedingungen geprüft werden sollen</li>
|
<li>ASC_brightnessMaxVal - maximaler Lichtwert, bei dem Schaltbedingungen geprüft werden sollen</li>
|
||||||
<a name="ASC_rainSensor"></a>
|
<a name="ASC_rainSensor"></a>
|
||||||
<li>ASC_rainSensor - DEVICENAME:READINGNAME:CLOSEDPOS / der Inhalt ist eine Kombination aus Devicename, Readingname und der Regen geschlossen Position.</li>
|
<li>ASC_rainSensor - DEVICENAME:READINGNAME [MAXTRIGGER[:HYSTERESE] CLOSEDPOS] / der Inhalt ist eine Kombination aus Devicename, Readingname, Wert ab dem getriggert werden soll, Hysterese Wert ab dem der Status Regenschutz aufgehoben weden soll und der "wegen Regen geschlossen Position".</li>
|
||||||
<a name="ASC_shuttersDriveOffset"></a>
|
<a name="ASC_shuttersDriveOffset"></a>
|
||||||
<li>ASC_shuttersDriveOffset - maximal zufällige Verzögerung in Sekunden bei der Berechnung der Fahrzeiten, 0 bedeutet keine Verzögerung</li>
|
<li>ASC_shuttersDriveOffset - maximal zufällige Verzögerung in Sekunden bei der Berechnung der Fahrzeiten, 0 bedeutet keine Verzögerung</li>
|
||||||
<a name="ASC_twilightDevice"></a>
|
<a name="ASC_twilightDevice"></a>
|
||||||
@ -4093,7 +4157,7 @@ sub getWindSensorReading {
|
|||||||
<a name="ASC_expert"></a>
|
<a name="ASC_expert"></a>
|
||||||
<li>ASC_expert - ist der Wert 1 werden erweiterte Informationen bezüglich des NotifyDevs unter set und get angezeigt</li>
|
<li>ASC_expert - ist der Wert 1 werden erweiterte Informationen bezüglich des NotifyDevs unter set und get angezeigt</li>
|
||||||
<a name="ASC_windSensor"></a>
|
<a name="ASC_windSensor"></a>
|
||||||
<li>ASC_windSensor - DEVICE:READING / Name des FHEM Devices und des Readings für die Windgeschwindigkeit</li>
|
<li>ASC_windSensor - DEVICE[:READING] / Name des FHEM Devices und des Readings für die Windgeschwindigkeit</li>
|
||||||
<a name="ASC_autoShuttersControlShading"></a>
|
<a name="ASC_autoShuttersControlShading"></a>
|
||||||
<li>ASC_autoShuttersControlShading - on/off aktiviert oder deaktiviert die globale Beschattungssteuerung</li>
|
<li>ASC_autoShuttersControlShading - on/off aktiviert oder deaktiviert die globale Beschattungssteuerung</li>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user