mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 12:49:34 +00:00
EIB: send command to other channels (by g<index>)
git-svn-id: https://svn.fhem.de/fhem/trunk@1269 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
d3d5278133
commit
a8c8739115
@ -164,61 +164,67 @@ EIB_Set($@)
|
|||||||
return "Readonly value $a[1]" if(defined($readonly{$a[1]}));
|
return "Readonly value $a[1]" if(defined($readonly{$a[1]}));
|
||||||
return "No $a[1] for dummies" if(IsDummy($hash->{NAME}));
|
return "No $a[1] for dummies" if(IsDummy($hash->{NAME}));
|
||||||
|
|
||||||
my $c = $eib_c2b{$a[1]};
|
my $name = $a[0];
|
||||||
|
my $value = $a[1];
|
||||||
|
my $arg1 = undef;
|
||||||
|
my $arg2 = undef;
|
||||||
|
|
||||||
|
$arg1 = $a[2] if($na>2);
|
||||||
|
$arg2 = $a[3] if($na>3);
|
||||||
|
|
||||||
|
my $c = $eib_c2b{$value};
|
||||||
if(!defined($c)) {
|
if(!defined($c)) {
|
||||||
return "Unknown argument $a[1], choose one of " .
|
return "Unknown argument $value, choose one of " .
|
||||||
join(" ", sort keys %eib_c2b);
|
join(" ", sort keys %eib_c2b);
|
||||||
}
|
}
|
||||||
|
|
||||||
# the command can be send to any of the defined groups indexed starting by 1
|
# the command can be send to any of the defined groups indexed starting by 1
|
||||||
|
# optional last argument starting with g indicates the group
|
||||||
my $groupnr = 1;
|
my $groupnr = 1;
|
||||||
if($a[1] eq "value" && $na > 3){$groupnr=$a[3]}
|
$groupnr = $1 if($na>2 && $a[$na-1]=~ m/g([0-9]*)/);
|
||||||
elsif ($na>2){$groupnr=$a[2]}
|
|
||||||
return "groupnr argument $groupnr must be numeric." if( $groupnr !~ m/[0-9]*/i);
|
|
||||||
return "groupnr $groupnr not known." if(!$hash->{CODE}{$groupnr});
|
return "groupnr $groupnr not known." if(!$hash->{CODE}{$groupnr});
|
||||||
|
|
||||||
my $v = join(" ", @a);
|
my $v = join(" ", @a);
|
||||||
Log GetLogLevel($a[0],2), "EIB set $v";
|
Log GetLogLevel($name,2), "EIB set $v";
|
||||||
(undef, $v) = split(" ", $v, 2); # Not interested in the name...
|
(undef, $v) = split(" ", $v, 2); # Not interested in the name...
|
||||||
|
|
||||||
if($a[1] eq "value" && $na > 2) {
|
if($value eq "value" && defined($arg1)) {
|
||||||
# complex value command.
|
# complex value command.
|
||||||
# the additional argument is transfered alone.
|
# the additional argument is transfered alone.
|
||||||
$c = $a[2];
|
$c = $arg1;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $groupcode = $hash->{CODE}{$groupnr};
|
my $groupcode = $hash->{CODE}{$groupnr};
|
||||||
|
|
||||||
IOWrite($hash, "B", "w" . $groupcode . $c);
|
IOWrite($hash, "B", "w" . $groupcode . $c);
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
# Delete any timer for on-for_timer
|
# Delete any timer for on-for_timer
|
||||||
if($modules{EIB}{ldata}{$a[0]}) {
|
if($modules{EIB}{ldata}{$name}) {
|
||||||
CommandDelete(undef, $a[0] . "_timer");
|
CommandDelete(undef, $name . "_timer");
|
||||||
delete $modules{EIB}{ldata}{$a[0]};
|
delete $modules{EIB}{ldata}{$name};
|
||||||
}
|
}
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
# Add a timer if any for-timer command has been chosen
|
# Add a timer if any for-timer command has been chosen
|
||||||
if($a[1] =~ m/for-timer/ && $na == 3) {
|
if($value =~ m/for-timer/ && defined($arg1)) {
|
||||||
my $dur = $a[2];
|
my $dur = $arg1;
|
||||||
my $to = sprintf("%02d:%02d:%02d", $dur/3600, ($dur%3600)/60, $dur%60);
|
my $to = sprintf("%02d:%02d:%02d", $dur/3600, ($dur%3600)/60, $dur%60);
|
||||||
$modules{EIB}{ldata}{$a[0]} = $to;
|
$modules{EIB}{ldata}{$name} = $to;
|
||||||
Log 4, "Follow: +$to set $a[0] off";
|
Log 4, "Follow: +$to set $name off g$groupnr";
|
||||||
CommandDefine(undef, $a[0] . "_timer at +$to set $a[0] off");
|
CommandDefine(undef, $name . "_timer at +$to set $name off g$groupnr");
|
||||||
}
|
}
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
# Delete any timer for on-till
|
# Delete any timer for on-till
|
||||||
if($modules{EIB}{till}{$a[0]}) {
|
if($modules{EIB}{till}{$name}) {
|
||||||
CommandDelete(undef, $a[0] . "_till");
|
CommandDelete(undef, $name . "_till");
|
||||||
delete $modules{EIB}{till}{$a[0]};
|
delete $modules{EIB}{till}{$name};
|
||||||
}
|
}
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
# Add a timer if on-till command has been chosen
|
# Add a timer if on-till command has been chosen
|
||||||
if($a[1] =~ m/on-till/ && $na == 3) {
|
if($value =~ m/on-till/ && defined($arg1)) {
|
||||||
my ($err, $hr, $min, $sec, $fn) = GetTimeSpec($a[2]);
|
my ($err, $hr, $min, $sec, $fn) = GetTimeSpec($arg1);
|
||||||
if($err) {
|
if($err) {
|
||||||
Log(2,"Error trying to parse timespec for $a[0] $a[1] $a[2] : $err");
|
Log(2,"Error trying to parse timespec for $a[0] $a[1] $a[2] : $err");
|
||||||
}
|
}
|
||||||
@ -230,9 +236,9 @@ EIB_Set($@)
|
|||||||
Log 4, "on-till: won't switch as now ($hms_now) is later than $hms_till";
|
Log 4, "on-till: won't switch as now ($hms_now) is later than $hms_till";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$modules{EIB}{till}{$a[0]} = $hms_till;
|
$modules{EIB}{till}{$name} = $hms_till;
|
||||||
Log 4, "Follow: $hms_till set $a[0] off";
|
Log 4, "Follow: $hms_till set $name off g$groupnr";
|
||||||
CommandDefine(undef, $a[0] . "_till at $hms_till set $a[0] off");
|
CommandDefine(undef, $name . "_till at $hms_till set $name off g$groupnr");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3269,7 +3269,7 @@ A line ending with \ will be concatenated with the next one, so long lines
|
|||||||
<a name="EIBset"></a>
|
<a name="EIBset"></a>
|
||||||
<b>Set</b>
|
<b>Set</b>
|
||||||
<ul>
|
<ul>
|
||||||
<code>set <name> <value> [<time>]</code><br>
|
<code>set <name> <value> [<time> g<groupnr>]</code><br>
|
||||||
where value one of:
|
where value one of:
|
||||||
<li><b>on</b> switch on device
|
<li><b>on</b> switch on device
|
||||||
<li><b>off</b> switch off device
|
<li><b>off</b> switch off device
|
||||||
@ -3287,7 +3287,14 @@ A line ending with \ will be concatenated with the next one, so long lines
|
|||||||
</code></ul>
|
</code></ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
</ul>
|
When as last argument a g<groupnr> is present, the command will be sent
|
||||||
|
to the EIB group indexed by the groupnr (starting by 1, in the order as given in Define).
|
||||||
|
<br>Example:
|
||||||
|
<ul><code>
|
||||||
|
define lamp1 EIB 0/10/01 0/10/02<br>
|
||||||
|
set lamp1 on g2 (will send "on" to 0/10/02)
|
||||||
|
</code></ul>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
@ -22,8 +22,10 @@ attr LightSens model brightness
|
|||||||
define LightSensLog FileLog test/LightSens_%Y.log LightSens
|
define LightSensLog FileLog test/LightSens_%Y.log LightSens
|
||||||
define Lampe1Log FileLog test/Lampe1_%Y.log (Lampe1|Lampe2|Lampe3)
|
define Lampe1Log FileLog test/Lampe1_%Y.log (Lampe1|Lampe2|Lampe3)
|
||||||
|
|
||||||
|
attr Lampe2 eventMap /on g2:stepUp/off g2:stepDwn/
|
||||||
|
|
||||||
attr Lampe1 webCmd on:off:on-for-timer 10
|
attr Lampe1 webCmd on:off:on-for-timer 10
|
||||||
|
attr Lampe2 webCmd on:off:stepUp:stepDwn
|
||||||
|
|
||||||
get Lampe3 value
|
get Lampe3 value
|
||||||
get Lampe1 value
|
get Lampe1 value
|
||||||
|
Loading…
Reference in New Issue
Block a user