1
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-05-07 22:29:19 +00:00

98_MSwitch.pm:fix timer & setmagic

git-svn-id: https://svn.fhem.de/fhem/trunk@17417 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Byte09 2018-09-28 03:52:31 +00:00
parent 64d44e3e35
commit ccb1477ade

View File

@ -3413,7 +3413,16 @@ sub MSwitch_fhemwebFn($$$$) {
$triggercondition =~ s/#\[ti\]/~/g; $triggercondition =~ s/#\[ti\]/~/g;
$triggercondition =~ s/#\[sp\]/ /g; $triggercondition =~ s/#\[sp\]/ /g;
my @triggertimes = split( /~/, ReadingsVal( $Name, '.Trigger_time', '' ) );
#MSwitch_LOG( $name, 5, "$name: aufruf on/off -> $cmd" );
my $triggertime = ReadingsVal( $Name, '.Trigger_time', '' );
$triggertime =~ s/#\[dp\]/:/g;
my @triggertimes = split( /~/, $triggertime );
my $condition = ReadingsVal( $Name, '.Trigger_time', '' ); my $condition = ReadingsVal( $Name, '.Trigger_time', '' );
my $lenght = length($condition); my $lenght = length($condition);
my $timeon = ''; my $timeon = '';
@ -3421,6 +3430,11 @@ sub MSwitch_fhemwebFn($$$$) {
my $timeononly = ''; my $timeononly = '';
my $timeoffonly = ''; my $timeoffonly = '';
if ( $lenght != 0 ) { if ( $lenght != 0 ) {
$timeon = substr( $triggertimes[0], 2 ); $timeon = substr( $triggertimes[0], 2 );
$timeoff = substr( $triggertimes[1], 3 ); $timeoff = substr( $triggertimes[1], 3 );
@ -4552,12 +4566,19 @@ if ( ReadingsVal( $Name, '.change', 'undef') ne "undef")
\$(\"#aw_trig\").click(function(){ \$(\"#aw_trig\").click(function(){
var nm = \$(t).attr(\"nm\"); var nm = \$(t).attr(\"nm\");
trigdev = \$(\"[name=trigdev]\").val(); trigdev = \$(\"[name=trigdev]\").val();
timeon = \$(\"[name=timeon]\").val()+':'; //trigdev = trigdev.replace(/\:/g,'#[dp]');
timeoff = \$(\"[name=timeoff]\").val()+':'; //alert(trigdev);
timeononly = \$(\"[name=timeononly]\").val()+':';
timeoffonly = \$(\"[name=timeoffonly]\").val()+':';
timeon = \$(\"[name=timeon]\").val();
timeoff = \$(\"[name=timeoff]\").val();
timeononly = \$(\"[name=timeononly]\").val();
timeoffonly = \$(\"[name=timeoffonly]\").val();
trigdevcond = \$(\"[name=triggercondition]\").val(); trigdevcond = \$(\"[name=triggercondition]\").val();
//trigdevcond = trigdevcond.replace(/:/g,'.');
//trigdevcond = trigdevcond.replace(/:/g,'#[dp]');
trigdevcond = trigdevcond.replace(/\\./g,'#[pt]'); trigdevcond = trigdevcond.replace(/\\./g,'#[pt]');
trigdevcond = trigdevcond.replace(/:/g,'#[dp]'); trigdevcond = trigdevcond.replace(/:/g,'#[dp]');
@ -4566,12 +4587,32 @@ if ( ReadingsVal( $Name, '.change', 'undef') ne "undef")
trigdevcond = trigdevcond.replace(/ /g,'#[sp]'); trigdevcond = trigdevcond.replace(/ /g,'#[sp]');
trigdevcond = trigdevcond+':'; trigdevcond = trigdevcond+':';
timeon = timeon.replace(/ /g, ''); timeon = timeon.replace(/ /g, '');
timeoff = timeoff.replace(/ /g, ''); timeoff = timeoff.replace(/ /g, '');
timeoff = timeoff.replace(/ /g, ''); timeononly = timeononly.replace(/ /g, '');
timeoffonly = timeoffonly.replace(/ /g, ''); timeoffonly = timeoffonly.replace(/ /g, '');
timeon = timeon.replace(/:/g, '#[dp]');
timeoff = timeoff.replace(/:/g, '#[dp]');
timeononly = timeononly.replace(/:/g, '#[dp]');
timeoffonly = timeoffonly.replace(/:/g, '#[dp]');
timeon = timeon+':';
timeoff = timeoff+':';
timeononly = timeononly+':';
timeoffonly = timeoffonly+':';
//alert(timeon);
trigwhite = \$(\"[name=triggerwhitelist]\").val(); trigwhite = \$(\"[name=triggerwhitelist]\").val();
var def = nm+\" set_trigger \"+trigdev+\" \"+timeon+\" \"+timeoff+\" \"+timeononly+\" \"+timeoffonly+\" \"+trigdevcond+\" \"+trigwhite+\" \" ; var def = nm+\" set_trigger \"+trigdev+\" \"+timeon+\" \"+timeoff+\" \"+timeononly+\" \"+timeoffonly+\" \"+trigdevcond+\" \"+trigwhite+\" \" ;
//alert(def);
def = encodeURIComponent(def); def = encodeURIComponent(def);
location = location.pathname+\"?detail=" . $Name . "&cmd=set \"+addcsrf(def); location = location.pathname+\"?detail=" . $Name . "&cmd=set \"+addcsrf(def);
}); });
@ -5813,8 +5854,25 @@ sub MSwitch_Createtimer($) {
my ($hash) = @_; my ($hash) = @_;
my $Name = $hash->{NAME}; my $Name = $hash->{NAME};
MSwitch_LOG( $Name, 5,"crete timer");
# keine timer vorhenden # keine timer vorhenden
my $condition = ReadingsVal( $Name, '.Trigger_time', '' ); my $condition = ReadingsVal( $Name, '.Trigger_time', '' );
$condition =~ s/#\[dp\]/:/g;
my $x =0;
while ( $condition =~ m/(.*)\[(.*[^0-9]{2})\:(.*[^0-9]{2})\](.*)/ )
{
$x++; # notausstieg notausstieg
last if $x > 20; # notausstieg notausstieg
my $setmagic = ReadingsVal( $2, $3, 0 );
$condition = $1.'['.$setmagic.']'.$4;
}
my $lenght = length($condition); my $lenght = length($condition);
#remove all timers #remove all timers
@ -5855,6 +5913,12 @@ sub MSwitch_Createtimer($) {
$timer[2] = '' if ( !defined $timer[2] ); $timer[2] = '' if ( !defined $timer[2] );
$timer[3] = '' if ( !defined $timer[3] ); $timer[3] = '' if ( !defined $timer[3] );
MSwitch_LOG( $Name, 5,"timer0 $timer[0]");
MSwitch_LOG( $Name, 5,"timer1 $timer[1]");
MSwitch_LOG( $Name, 5,"timer2 $timer[2]");
MSwitch_LOG( $Name, 5,"timer3 $timer[3]");
# lösche bei notify und toggle # lösche bei notify und toggle
if ( AttrVal( $Name, 'MSwitch_Mode', 'Full' ) eq "Notify" ) if ( AttrVal( $Name, 'MSwitch_Mode', 'Full' ) eq "Notify" )
{ {
@ -7218,7 +7282,7 @@ $todec =~ s/#\[wa\]/|/g;
# setmagic ersetzun # setmagic ersetzun
my $x =0; $x =0;
while ( $todec =~ m/(.*)\[(.*)\:(.*)\](.*)/ ) while ( $todec =~ m/(.*)\[(.*)\:(.*)\](.*)/ )
{ {
$x++; # notausstieg notausstieg $x++; # notausstieg notausstieg
@ -7339,7 +7403,7 @@ Log3( $name, 0, "vor change: ".$tochange2 );
#Log3( $name, 0, "navh change: ".$tochange2 ); #Log3( $name, 0, "navh change: ".$tochange2 );
my $x = 0; $x = 0;
while ( $tochange2 =~ m/(.*?)($names[0])(.*)?/) while ( $tochange2 =~ m/(.*?)($names[0])(.*)?/)
{ {
my $firstpart = $1; my $firstpart = $1;