Add files via upload
This commit is contained in:
parent
61b01312b2
commit
c2f4242942
177
FHEM/98_Siro.pm
177
FHEM/98_Siro.pm
@ -1,4 +1,4 @@
|
|||||||
# $Id: 98_Siro.pm 19490 2019-05-30 07:05:46Z Byte09 $
|
# $Id: 98_Siro.pm 19508 2019-05-31 09:34:17Z Byte09 $
|
||||||
#
|
#
|
||||||
# Siro module for FHEM
|
# Siro module for FHEM
|
||||||
# Thanks for templates/coding from SIGNALduino team and Jarnsen_darkmission_ralf9
|
# Thanks for templates/coding from SIGNALduino team and Jarnsen_darkmission_ralf9
|
||||||
@ -127,6 +127,7 @@ BEGIN {
|
|||||||
CommandAttr
|
CommandAttr
|
||||||
attr
|
attr
|
||||||
fhem
|
fhem
|
||||||
|
init_done
|
||||||
)
|
)
|
||||||
|
|
||||||
);
|
);
|
||||||
@ -195,6 +196,34 @@ sub Attr(@) {
|
|||||||
my $hash = $defs{$name};
|
my $hash = $defs{$name};
|
||||||
return "\"Siro Attr: \" $name does not exist" if ( !defined($hash) );
|
return "\"Siro Attr: \" $name does not exist" if ( !defined($hash) );
|
||||||
|
|
||||||
|
if ( $cmd eq "set" and $init_done == 1)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
if ( $aName eq "SIRO_inversPosition" )
|
||||||
|
{
|
||||||
|
my $oldinvers = AttrVal($name,'SIRO_inversPosition','undef');
|
||||||
|
Log3( $name,0 , "Siro_attr_oldinvers: $oldinvers ");
|
||||||
|
Log3( $name,0 , "Siro_attr_newinvers: $aVal ");
|
||||||
|
|
||||||
|
|
||||||
|
if ( $aVal ne $oldinvers)
|
||||||
|
{
|
||||||
|
my $aktstate = ReadingsVal( $name, 'state', 'undef' );
|
||||||
|
$aktstate = 100 - $aktstate;
|
||||||
|
|
||||||
|
readingsSingleUpdate( $hash, "state", $aktstate , 1 );
|
||||||
|
readingsSingleUpdate( $hash, "pct", $aktstate , 1 );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Log3( $name,0 , "Siro_attr: $cmd, $name, $aName, $aVal ");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Log3( $name,0 , "Siro_attr init done : $init_done");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#################################################################
|
#################################################################
|
||||||
@ -231,9 +260,15 @@ sub Define($$) {
|
|||||||
$modules{Siro}{defptr}{$devpointer} = $hash;
|
$modules{Siro}{defptr}{$devpointer} = $hash;
|
||||||
AssignIoPort($hash);
|
AssignIoPort($hash);
|
||||||
|
|
||||||
CommandAttr( undef,$name . ' devStateIcon {if (ReadingsVal( $name, \'state\', \'undef\' ) =~ m/[a-z]/ ) { return \'programming:edit_settings notAvaible:hue_room_garage runningUp.*:fts_shutter_up runningDown.*:fts_shutter_down\'}else{return \'[0-9]{1,3}:fts_shutter_1w_\'.(int($state/10)*10)}}' )
|
# CommandAttr( undef,$name . ' devStateIcon {if (ReadingsVal( $name, \'state\', \'undef\' ) =~ m/[a-z]/ ) { return \'programming:edit_settings notAvaible:hue_room_garage runningUp.*:fts_shutter_up runningDown.*:fts_shutter_down\'}else{return \'[0-9]{1,3}:fts_shutter_1w_\'.(int($state/10)*10)}}' )
|
||||||
if ( AttrVal($name,'devStateIcon','none') eq 'none' );
|
# if ( AttrVal($name,'devStateIcon','none') eq 'none' );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CommandAttr( undef,$name . ' devStateIcon {return FHEM::Siro::Siro_icon($name)}' )
|
||||||
|
if ( AttrVal($name,'devStateIcon','none') eq 'none' );
|
||||||
|
|
||||||
|
|
||||||
CommandAttr(undef,$name . ' webCmd stop:open:close:fav:pct')
|
CommandAttr(undef,$name . ' webCmd stop:open:close:fav:pct')
|
||||||
if ( AttrVal($name,'webCmd','none') eq 'none' );
|
if ( AttrVal($name,'webCmd','none') eq 'none' );
|
||||||
|
|
||||||
@ -294,14 +329,16 @@ sub SendCommand($@) {
|
|||||||
my $command = $siro_c2b{$cmd};
|
my $command = $siro_c2b{$cmd};
|
||||||
my $io = $hash->{IODev}; # IO-Device (SIGNALduino)
|
my $io = $hash->{IODev}; # IO-Device (SIGNALduino)
|
||||||
|
|
||||||
if ( $hash->{helper}{exexcmd} eq "off") # send kommand blockiert / keine ausf?hrung
|
#if ( $hash->{helper}{exexcmd} eq "off") # send kommand blockiert / keine ausf?hrung
|
||||||
|
if ( defined($hash->{helper}{exexcmd}) and $hash->{helper}{exexcmd} and $hash->{helper}{exexcmd} eq "off") # send kommand blockiert / keine ausf?hrung
|
||||||
{
|
{
|
||||||
Log3( $name, 5,"Siro_sendCommand: ausf?hrung durch helper blockiert ");
|
Log3( $name, 5,"Siro_sendCommand: ausf?hrung durch helper blockiert ");
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $hash->{helper}{ignorecmd} eq "on") # send kommand blockiert / keine ausf?hrung
|
#if ( $hash->{helper}{ignorecmd} eq "on") # send kommand blockiert / keine ausf?hrung
|
||||||
|
if ( defined($hash->{helper}) and $hash->{helper} and defined($hash->{helper}{ignorecmd}) and $hash->{helper}{ignorecmd} and $hash->{helper}{ignorecmd} eq "on") # send kommand blockiert / keine ausf?hrung
|
||||||
{
|
{
|
||||||
Log3( $name, 5,"Siro_sendCommand: ausführung einmalig blockiert ");
|
Log3( $name, 5,"Siro_sendCommand: ausführung einmalig blockiert ");
|
||||||
|
|
||||||
@ -309,13 +346,11 @@ sub SendCommand($@) {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#Log3( $name, 5,"Siro_sendCommand: args1 - $args[1]");
|
#Log3( $name, 5,"Siro_sendCommand: args1 - $args[1]");
|
||||||
|
|
||||||
if ( $args[1] eq "longstop" || $hash->{helper}{progmode} eq "on")
|
if ( defined($args[1]) and $args[1] eq "longstop" || defined $hash->{helper}{progmode} and $hash->{helper}{progmode} eq "on")
|
||||||
{
|
{
|
||||||
$SignalRepeats = AttrVal( $name, 'SIRO_signalLongStopRepeats', '15' );
|
$SignalRepeats = AttrVal( $name, 'SIRO_signalLongStopRepeats', '15' );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -390,8 +425,10 @@ sub Parse($$) {
|
|||||||
Log3 $hash, 5,"Siro_Parse: Incomming msg from IODevice $testid - $name device is defined";
|
Log3 $hash, 5,"Siro_Parse: Incomming msg from IODevice $testid - $name device is defined";
|
||||||
|
|
||||||
|
|
||||||
if ( defined($name)&& $testcmd ne "54")# prüfe auf doppele msg falls gerät vorhanden und cmd nicht stop
|
# if ( defined($name)&& $testcmd ne "54")# prüfe auf doppele msg falls gerät vorhanden und cmd nicht stop
|
||||||
{
|
if ( defined($name)&& $testcmd ne "54")# pr?fe auf doppele msg falls ger?t vorhanden und cmd nicht stop
|
||||||
|
|
||||||
|
{
|
||||||
Log3 $lh, 5,"Siro_Parse: Incomming msg $msg from IODevice name/DEF $testid - Hash -> $lh";
|
Log3 $lh, 5,"Siro_Parse: Incomming msg $msg from IODevice name/DEF $testid - Hash -> $lh";
|
||||||
|
|
||||||
my $testparsetime = gettimeofday();
|
my $testparsetime = gettimeofday();
|
||||||
@ -447,11 +484,13 @@ sub Parse($$) {
|
|||||||
Log3 $hash, 5, "Siro_Parse: Cmd: $cmd Newstate: $newstate";
|
Log3 $hash, 5, "Siro_Parse: Cmd: $cmd Newstate: $newstate";
|
||||||
Log3 $hash, 5, "Siro_Parse: deviceCode: $deviceCode";
|
Log3 $hash, 5, "Siro_Parse: deviceCode: $deviceCode";
|
||||||
|
|
||||||
if ( defined($name)&& $testcmd eq "54" )#prüfe auf doppele msg falls gerät vorhanden und cmd stop
|
#if ( defined($name)&& $testcmd eq "54" )#prüfe auf doppele msg falls gerät vorhanden und cmd stop
|
||||||
{
|
if ( defined($name)&& $testcmd eq "54" )#pr?fe auf doppele msg falls ger?t vorhanden und cmd stop
|
||||||
|
{
|
||||||
# Log3 $lh, 5, "Siro_Parse: prüfung auf douplestop ";
|
# Log3 $lh, 5, "Siro_Parse: prüfung auf douplestop ";
|
||||||
my $testparsetime = gettimeofday();
|
my $testparsetime = gettimeofday();
|
||||||
my $lastparsestop = $lh->{helper}{lastparse_stop};
|
my $lastparsestop = 0;
|
||||||
|
$lastparsestop = $lh->{helper}{lastparse_stop} if defined $lh->{helper}{lastparse_stop};
|
||||||
my $parseaborted = $lh->{helper}{parse_aborted};
|
my $parseaborted = $lh->{helper}{parse_aborted};
|
||||||
my @lastparsestoparray = split( / /, $lastparsestop );
|
my @lastparsestoparray = split( / /, $lastparsestop );
|
||||||
my $timediff = $testparsetime - $lastparsestoparray[1];
|
my $timediff = $testparsetime - $lastparsestoparray[1];
|
||||||
@ -497,14 +536,12 @@ sub Parse($$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Log3( $name, 5, "Siro Parse Befehl: $newstate");
|
Log3( $name, 5, "Siro Parse Befehl: $newstate");
|
||||||
|
|
||||||
if ( defined($name) ) {#device vorhanden
|
if ( defined($name) ) {#device vorhanden
|
||||||
my $parseaborted = 0;
|
my $parseaborted = 0;
|
||||||
$lh->{helper}{parse_aborted} = $parseaborted;
|
$lh->{helper}{parse_aborted} = $parseaborted;
|
||||||
Log3 $lh, 5, "Siro_Parse: $name $newstate";
|
Log3 $lh, 5, "Siro_Parse: $name $newstate";
|
||||||
|
|
||||||
|
|
||||||
my $defchannnel = $lh->{CHANNEL_RECEIVE};
|
my $defchannnel = $lh->{CHANNEL_RECEIVE};
|
||||||
my $atrrchannel = AttrVal( $name, 'SIRO_send_channel', $defchannnel );
|
my $atrrchannel = AttrVal( $name, 'SIRO_send_channel', $defchannnel );
|
||||||
|
|
||||||
@ -519,7 +556,6 @@ Log3( $name, 5, "Siro Parse Befehl: $newstate");
|
|||||||
Log3 $lh, 5, "Siro_Parse: hash->{helper}{remotecmd} - ".$hash->{helper}{remotecmd};
|
Log3 $lh, 5, "Siro_Parse: hash->{helper}{remotecmd} - ".$hash->{helper}{remotecmd};
|
||||||
Log3( $name, 3, "Siro-Parse ($name) : Signal FB emfangen - $newstate");
|
Log3( $name, 3, "Siro-Parse ($name) : Signal FB emfangen - $newstate");
|
||||||
Set( $lh, $name, $newstate );
|
Set( $lh, $name, $newstate );
|
||||||
|
|
||||||
return $name;
|
return $name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -590,7 +626,6 @@ sub Set($@) {
|
|||||||
my $favposition = ReadingsVal( $name, 'Favorite-Position', 'nA' ); #gespeicherte Favoritenposition
|
my $favposition = ReadingsVal( $name, 'Favorite-Position', 'nA' ); #gespeicherte Favoritenposition
|
||||||
my $invers = 1; #invertiert position
|
my $invers = 1; #invertiert position
|
||||||
|
|
||||||
|
|
||||||
if ($downtime ne "undef" && $uptime ne "undef")
|
if ($downtime ne "undef" && $uptime ne "undef")
|
||||||
{
|
{
|
||||||
$down1time = $downtime/100;
|
$down1time = $downtime/100;
|
||||||
@ -599,6 +634,10 @@ sub Set($@) {
|
|||||||
|
|
||||||
return "" if ( IsDisabled($name) );
|
return "" if ( IsDisabled($name) );
|
||||||
|
|
||||||
|
$hash->{helper}{progmode} = "off" if !defined $hash->{helper}{progmode};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# versionschange
|
# versionschange
|
||||||
#changeconfig
|
#changeconfig
|
||||||
|
|
||||||
@ -607,7 +646,7 @@ sub Set($@) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
# pr?fe auf unbekannte sets
|
# pruefe auf unbekannte sets
|
||||||
|
|
||||||
if ( $cmd =~ m/^exec.*/ )# empfangene sequenz aus programmiermode
|
if ( $cmd =~ m/^exec.*/ )# empfangene sequenz aus programmiermode
|
||||||
{
|
{
|
||||||
@ -637,7 +676,9 @@ sub Set($@) {
|
|||||||
# programmiermodus
|
# programmiermodus
|
||||||
####################################
|
####################################
|
||||||
|
|
||||||
if ( $hash->{helper}{progmode} eq "on" && $cmd eq "sequenz") # sequenz ausführen
|
#if ( $hash->{helper}{progmode} eq "on" && $cmd eq "sequenz") # sequenz ausführen
|
||||||
|
if ( defined $hash->{helper}{progmode} and $hash->{helper}{progmode} eq "on" && $cmd eq "sequenz") # sequenz ausf?hren
|
||||||
|
|
||||||
{
|
{
|
||||||
Log3( $name, 5, "Siro-Programmiermodus: Sequenz gefunden :$args[1]");
|
Log3( $name, 5, "Siro-Programmiermodus: Sequenz gefunden :$args[1]");
|
||||||
my @seq = split(/,/, $args[1]);
|
my @seq = split(/,/, $args[1]);
|
||||||
@ -656,6 +697,8 @@ sub Set($@) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($cmd eq "prog_mode_on" && $hash->{helper}{progmode} ne "on")
|
if ($cmd eq "prog_mode_on" && $hash->{helper}{progmode} ne "on")
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
readingsSingleUpdate( $hash, "state", 'programming', 1 );
|
readingsSingleUpdate( $hash, "state", 'programming', 1 );
|
||||||
$hash->{helper}{progmode} = "on";
|
$hash->{helper}{progmode} = "on";
|
||||||
@ -694,8 +737,8 @@ sub Set($@) {
|
|||||||
$hash->{helper}{exexcmd}="on"; #reset ignore send comand states
|
$hash->{helper}{exexcmd}="on"; #reset ignore send comand states
|
||||||
$hash->{helper}{ignorecmd} = "off" ; #reset ignore send comand states
|
$hash->{helper}{ignorecmd} = "off" ; #reset ignore send comand states
|
||||||
#setze helper neu wenn signal von fb kommt
|
#setze helper neu wenn signal von fb kommt
|
||||||
|
#if ($hash->{helper}{remotecmd} eq "on")
|
||||||
if ($hash->{helper}{remotecmd} eq "on")
|
if ( defined($hash->{helper}{remotecmd}) and $hash->{helper}{remotecmd} eq "on")
|
||||||
{
|
{
|
||||||
$hash->{helper}{exexcmd} = "off"
|
$hash->{helper}{exexcmd} = "off"
|
||||||
}
|
}
|
||||||
@ -748,6 +791,7 @@ sub Set($@) {
|
|||||||
{
|
{
|
||||||
readingsSingleUpdate( $hash, "motor-term", "0", 1 ) ;
|
readingsSingleUpdate( $hash, "motor-term", "0", 1 ) ;
|
||||||
readingsSingleUpdate( $hash, "batteryState", "unknown", 1 ) ;
|
readingsSingleUpdate( $hash, "batteryState", "unknown", 1 ) ;
|
||||||
|
readingsSingleUpdate( $hash, "motor-term-reset", time, 1 );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -772,7 +816,15 @@ sub Set($@) {
|
|||||||
$drivedpercents = $pastaction/$down1time;
|
$drivedpercents = $pastaction/$down1time;
|
||||||
$drivedpercents = ( int( $drivedpercents * 10 ) / 10 );
|
$drivedpercents = ( int( $drivedpercents * 10 ) / 10 );
|
||||||
Log3( $name, 5, "Siro-Set: Positionsveraenderung um $drivedpercents Prozent nach unten ");
|
Log3( $name, 5, "Siro-Set: Positionsveraenderung um $drivedpercents Prozent nach unten ");
|
||||||
|
|
||||||
|
|
||||||
|
if (AttrVal( $name, 'SIRO_inversPosition',0 ) eq "1")
|
||||||
|
{
|
||||||
|
$newposition = int ($position-$drivedpercents);
|
||||||
|
}
|
||||||
|
else{
|
||||||
$newposition = int ($position+$drivedpercents);
|
$newposition = int ($position+$drivedpercents);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($state eq "runningUp" || $state eq "runningUpfortimer")
|
if ($state eq "runningUp" || $state eq "runningUpfortimer")
|
||||||
@ -780,7 +832,14 @@ sub Set($@) {
|
|||||||
$drivedpercents = $pastaction/$up1time;
|
$drivedpercents = $pastaction/$up1time;
|
||||||
$drivedpercents = ( int( $drivedpercents * 10 ) / 10 );
|
$drivedpercents = ( int( $drivedpercents * 10 ) / 10 );
|
||||||
Log3( $name, 5, "Siro-Set: Positionsveraenderung um $drivedpercents Prozent nach oben ");
|
Log3( $name, 5, "Siro-Set: Positionsveraenderung um $drivedpercents Prozent nach oben ");
|
||||||
|
|
||||||
|
if (AttrVal( $name, 'SIRO_inversPosition',0 ) eq "1")
|
||||||
|
{
|
||||||
|
$newposition = int ($position+$drivedpercents);
|
||||||
|
}
|
||||||
|
else{
|
||||||
$newposition = int ($position-$drivedpercents);
|
$newposition = int ($position-$drivedpercents);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Log3( $name, 5, "Siro-Set: neue Position - $newposition ");
|
Log3( $name, 5, "Siro-Set: neue Position - $newposition ");
|
||||||
@ -810,6 +869,32 @@ sub Set($@) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
###############
|
||||||
|
#pct 100 und pct 0 auf on oder off mappen
|
||||||
|
if ($comand eq "level" and $zielposition eq "100")
|
||||||
|
{
|
||||||
|
$comand = "on" if AttrVal( $name, 'SIRO_inversPosition',0 ) eq "0";
|
||||||
|
$comand = "off" if AttrVal( $name, 'SIRO_inversPosition',0 ) eq "1";
|
||||||
|
|
||||||
|
Log3( $name, 4, "Siro-Set: mapping level 100 - on");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if ($comand eq "level" and $zielposition eq "0")
|
||||||
|
{
|
||||||
|
$comand = "off" if AttrVal( $name, 'SIRO_inversPosition',0 ) eq "0";
|
||||||
|
$comand = "on" if AttrVal( $name, 'SIRO_inversPosition',0 ) eq "1";
|
||||||
|
|
||||||
|
Log3( $name, 4, "Siro-Set: mapping level 0 - off");
|
||||||
|
}
|
||||||
|
|
||||||
|
#################
|
||||||
|
# mappe invers position
|
||||||
|
# verschoben in routine on/off
|
||||||
|
|
||||||
############## on off for timer
|
############## on off for timer
|
||||||
# up/down for timer mappen auf on/off und timer für stop setzen
|
# up/down for timer mappen auf on/off und timer für stop setzen
|
||||||
if ( $comand eq 'upfortimer' )
|
if ( $comand eq 'upfortimer' )
|
||||||
@ -929,6 +1014,9 @@ sub Set($@) {
|
|||||||
}
|
}
|
||||||
if ($state eq "undef" || $state eq "notAvaible") { $state = 0; }
|
if ($state eq "undef" || $state eq "notAvaible") { $state = 0; }
|
||||||
my $waytodrive = 100 - $state;
|
my $waytodrive = 100 - $state;
|
||||||
|
|
||||||
|
if (AttrVal( $name, 'SIRO_inversPosition',0 ) eq "1"){$waytodrive = $state;}
|
||||||
|
|
||||||
my $timetodrive = $waytodrive * $down1time;
|
my $timetodrive = $waytodrive * $down1time;
|
||||||
my $endaction = time + $timetodrive;
|
my $endaction = time + $timetodrive;
|
||||||
Log3( $name, 5, "Siro-Set: on downtime - waytodrive $waytodrive");
|
Log3( $name, 5, "Siro-Set: on downtime - waytodrive $waytodrive");
|
||||||
@ -974,14 +1062,22 @@ sub Set($@) {
|
|||||||
readingsEndUpdate( $hash, 1);
|
readingsEndUpdate( $hash, 1);
|
||||||
SendCommand( $hash, 'off' );
|
SendCommand( $hash, 'off' );
|
||||||
}
|
}
|
||||||
|
#
|
||||||
if ($state eq "undef" || $state eq "notAvaible") { $state = 100; }
|
if ($state eq "undef" || $state eq "notAvaible") { $state = 100; }
|
||||||
|
|
||||||
|
|
||||||
my $waytodrive = 0 + $state;
|
my $waytodrive = 0 + $state;
|
||||||
|
if (AttrVal( $name, 'SIRO_inversPosition',0 ) eq "1"){$waytodrive = 0 + (100- $state);}
|
||||||
|
|
||||||
my $timetodrive = $waytodrive * $up1time;
|
my $timetodrive = $waytodrive * $up1time;
|
||||||
|
|
||||||
|
|
||||||
my $endaction = time + $timetodrive;
|
my $endaction = time + $timetodrive;
|
||||||
|
|
||||||
|
|
||||||
Log3( $name, 5, "Siro-Set: off downtime - waytodrive $waytodrive");
|
Log3( $name, 5, "Siro-Set: off downtime - waytodrive $waytodrive");
|
||||||
Log3( $name, 5, "Siro-Set: off downtime - state $state");
|
Log3( $name, 5, "Siro-Set: off downtime - state $state");
|
||||||
Log3( $name, 5, "Siro-Set: off downtime - down1time $down1time");
|
Log3( $name, 5, "Siro-Set: off downtime - up1time $up1time");
|
||||||
SendCommand( $hash, 'off' );
|
SendCommand( $hash, 'off' );
|
||||||
|
|
||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
@ -1214,8 +1310,6 @@ sub versionchange($) {
|
|||||||
|
|
||||||
fhem("deleteattr $name operation_mode");
|
fhem("deleteattr $name operation_mode");
|
||||||
fhem("deleteattr $name channel_send_mode_1");
|
fhem("deleteattr $name channel_send_mode_1");
|
||||||
|
|
||||||
|
|
||||||
fhem("deleteattr $name down_limit_mode_1");
|
fhem("deleteattr $name down_limit_mode_1");
|
||||||
fhem("deleteattr $name operation_mode");
|
fhem("deleteattr $name operation_mode");
|
||||||
fhem("deleteattr $name invers_position");
|
fhem("deleteattr $name invers_position");
|
||||||
@ -1223,18 +1317,14 @@ sub versionchange($) {
|
|||||||
fhem("deleteattr $name prog_fav_sequence");
|
fhem("deleteattr $name prog_fav_sequence");
|
||||||
fhem("deleteattr $name time_down_to_favorite");
|
fhem("deleteattr $name time_down_to_favorite");
|
||||||
fhem("deleteattr $name time_down_to_favorite");
|
fhem("deleteattr $name time_down_to_favorite");
|
||||||
|
|
||||||
|
|
||||||
my $seconds = ReadingsVal( $name, 'operating_seconds', '0' );
|
my $seconds = ReadingsVal( $name, 'operating_seconds', '0' );
|
||||||
fhem("deletereading $name .*");
|
fhem("deletereading $name .*");
|
||||||
|
|
||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
readingsBulkUpdate( $hash, "state", "0" );
|
readingsBulkUpdate( $hash, "state", "0" );
|
||||||
readingsBulkUpdate( $hash, "pct", "0" ) ;
|
readingsBulkUpdate( $hash, "pct", "0" ) ;
|
||||||
readingsBulkUpdate( $hash, "position", "0" ) ;
|
readingsBulkUpdate( $hash, "position", "0" ) ;
|
||||||
readingsBulkUpdate( $hash, "motor-term", $seconds ) ;
|
readingsBulkUpdate( $hash, "motor-term", $seconds ) ;
|
||||||
readingsEndUpdate( $hash, 1 );
|
readingsEndUpdate( $hash, 1 );
|
||||||
|
|
||||||
SendCommand( $hash, 'off' );
|
SendCommand( $hash, 'off' );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1245,9 +1335,10 @@ my ( $FW_wname, $d, $room, $pageHash ) =@_; # pageHash is set for summaryFn.
|
|||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
return "" if ( IsDisabled($name) );
|
return "" if ( IsDisabled($name) );
|
||||||
my $progmode =$hash->{helper}{progmode};
|
my $progmode =$hash->{helper}{progmode};
|
||||||
|
Log3( $name, 5, "Siro-progmode: reached progmode $progmode");
|
||||||
if (!defined $progmode){$progmode='off';}
|
if (!defined $progmode){$progmode='off';}
|
||||||
my $msg;
|
my $msg;
|
||||||
|
|
||||||
############## versionsänderung
|
############## versionsänderung
|
||||||
# kann irgendwann entfernt werden
|
# kann irgendwann entfernt werden
|
||||||
|
|
||||||
@ -1270,13 +1361,8 @@ my ( $FW_wname, $d, $room, $pageHash ) =@_; # pageHash is set for summaryFn.
|
|||||||
$msg.= "<table class='block wide' id='SiroWebTR'>
|
$msg.= "<table class='block wide' id='SiroWebTR'>
|
||||||
<tr class='even'>
|
<tr class='even'>
|
||||||
<td><center> <br>Programmiermodus aktiv, es werden nur folgende Befehle unterstuetzt:<br> <br>";
|
<td><center> <br>Programmiermodus aktiv, es werden nur folgende Befehle unterstuetzt:<br> <br>";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$msg.= "Das Anlernen ene Rollos erfolgt unter der ID: ";
|
$msg.= "Das Anlernen ene Rollos erfolgt unter der ID: ";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
my $sendid = AttrVal( $name, 'SIRO_send_id', 'undef' );
|
my $sendid = AttrVal( $name, 'SIRO_send_id', 'undef' );
|
||||||
if ( $sendid eq 'undef')
|
if ( $sendid eq 'undef')
|
||||||
{
|
{
|
||||||
@ -1362,6 +1448,19 @@ my ( $FW_wname, $d, $room, $pageHash ) =@_; # pageHash is set for summaryFn.
|
|||||||
$msg.= "}</script>";
|
$msg.= "}</script>";
|
||||||
return $msg;
|
return $msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
################
|
||||||
|
sub Siro_icon($)
|
||||||
|
{
|
||||||
|
my ($name) = @_;
|
||||||
|
my $hash = $defs{$name};
|
||||||
|
my $state = ReadingsVal( $name, 'state', 'undef' );
|
||||||
|
my $invers = AttrVal( $name, 'SIRO_inversPosition',0 );
|
||||||
|
my $ret ="programming:edit_settings notAvaible:hue_room_garage runningUp.*:fts_shutter_up runningDown.*:fts_shutter_down ".$state.":fts_shutter_1w_".(int($state/10)*10);
|
||||||
|
$ret ="programming:edit_settings notAvaible:hue_room_garage runningUp.*:fts_shutter_up runningDown.*:fts_shutter_down ".$state.":fts_shutter_1w_".(100 - (int($state/10)*10)) if $invers eq "1";
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
################
|
################
|
||||||
|
|
||||||
|
|
||||||
@ -1578,8 +1677,8 @@ set Siro1 stop stoppt die aktuelle Fahrt des Rollos<br>
|
|||||||
set Siro1 pct 45 fährt das Rollo zur angegebenen Position (45%)<br>
|
set Siro1 pct 45 fährt das Rollo zur angegebenen Position (45%)<br>
|
||||||
set Siro1 45 fährt das Rollo zur angegebenen Position (45%)<br>
|
set Siro1 45 fährt das Rollo zur angegebenen Position (45%)<br>
|
||||||
set Siro1 fav fährt das Rollo in die hardwaremässig programmierte Mittelposition<br>
|
set Siro1 fav fährt das Rollo in die hardwaremässig programmierte Mittelposition<br>
|
||||||
et Siro1 down_for_timer 5 fährt das Rollo 5 Sekunden nach unten<br>
|
set Siro1 down_for_timer 5 fährt das Rollo 5 Sekunden nach unten<br>
|
||||||
et Siro1 uown_for_timer 5 fährt das Rollo 5 Sekunden nach oben<br>
|
set Siro1 down_for_timer 5 fährt das Rollo 5 Sekunden nach oben<br>
|
||||||
set Siro1 progmode_on Das Modul wird in den Programmiermodus versetzt<br>
|
set Siro1 progmode_on Das Modul wird in den Programmiermodus versetzt<br>
|
||||||
set Siro1 set_favorite programmiert den aktuellen Rollostand als Hardwaremittelposition, das ATTR time_down_to_favorite wird neu berechnet und gesetzt. <br>
|
set Siro1 set_favorite programmiert den aktuellen Rollostand als Hardwaremittelposition, das ATTR time_down_to_favorite wird neu berechnet und gesetzt. <br>
|
||||||
</ul>
|
</ul>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user