mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 03:06:37 +00:00
FHEM2FHEM: addStateEvent attribute (Forum #76229)
git-svn-id: https://svn.fhem.de/fhem/trunk@15006 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
30c48809d5
commit
f4f07245e0
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- bugfix: FHEM2FHEM: addStateEvent attribute (Forum #76229)
|
||||||
- bugfix: HttpUtils: use urlDecode for password in URL (Forum #76230)
|
- bugfix: HttpUtils: use urlDecode for password in URL (Forum #76230)
|
||||||
- bugfix: 74_GardenaSmartDevice.pm: fix little Commandref bug's
|
- bugfix: 74_GardenaSmartDevice.pm: fix little Commandref bug's
|
||||||
- new: 73_GardenaSmartBridge/74_GardenaSmartDevice control your Gardena
|
- new: 73_GardenaSmartBridge/74_GardenaSmartDevice control your Gardena
|
||||||
|
@ -26,13 +26,14 @@ FHEM2FHEM_Initialize($)
|
|||||||
$hash->{WriteFn} = "FHEM2FHEM_Write";
|
$hash->{WriteFn} = "FHEM2FHEM_Write";
|
||||||
$hash->{ReadyFn} = "FHEM2FHEM_Ready";
|
$hash->{ReadyFn} = "FHEM2FHEM_Ready";
|
||||||
$hash->{SetFn} = "FHEM2FHEM_Set";
|
$hash->{SetFn} = "FHEM2FHEM_Set";
|
||||||
|
$hash->{AttrFn} = "FHEM2FHEM_Attr";
|
||||||
$hash->{noRawInform} = 1;
|
$hash->{noRawInform} = 1;
|
||||||
|
|
||||||
# Normal devices
|
# Normal devices
|
||||||
$hash->{DefFn} = "FHEM2FHEM_Define";
|
$hash->{DefFn} = "FHEM2FHEM_Define";
|
||||||
$hash->{UndefFn} = "FHEM2FHEM_Undef";
|
$hash->{UndefFn} = "FHEM2FHEM_Undef";
|
||||||
$hash->{AttrList}= "dummy:1,0 disable:0,1 ".
|
$hash->{AttrList}= "addStateEvent:1,0 dummy:1,0 disable:0,1 ".
|
||||||
"disabledForIntervals excludeEvents eventOnly:1,0";
|
"disabledForIntervals eventOnly:1,0 excludeEvents";
|
||||||
}
|
}
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
@ -266,8 +267,9 @@ FHEM2FHEM_OpenDev($$)
|
|||||||
DoTrigger($name, "CONNECTED") if($reopen);
|
DoTrigger($name, "CONNECTED") if($reopen);
|
||||||
syswrite($hash->{TCPDev}, $hash->{portpassword} . "\n")
|
syswrite($hash->{TCPDev}, $hash->{portpassword} . "\n")
|
||||||
if($hash->{portpassword});
|
if($hash->{portpassword});
|
||||||
|
my $type = AttrVal($hash->{NAME},"addStateEvent",0) ? "onWithState" : "on";
|
||||||
my $msg = $hash->{informType} eq "LOG" ?
|
my $msg = $hash->{informType} eq "LOG" ?
|
||||||
"inform on $hash->{regexp}" : "inform raw";
|
"inform $type $hash->{regexp}" : "inform raw";
|
||||||
syswrite($hash->{TCPDev}, $msg . "\n");
|
syswrite($hash->{TCPDev}, $msg . "\n");
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -329,6 +331,19 @@ FHEM2FHEM_Set($@)
|
|||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub
|
||||||
|
FHEM2FHEM_Attr(@)
|
||||||
|
{
|
||||||
|
my ($type, $devName, $attrName, @param) = @_;
|
||||||
|
my $hash = $defs{$devName};
|
||||||
|
|
||||||
|
return undef if($attrName ne "addStateEvent");
|
||||||
|
$attr{$devName}{$attrName} = 1;
|
||||||
|
FHEM2FHEM_CloseDev($hash);
|
||||||
|
FHEM2FHEM_OpenDev($hash, 1);
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
@ -428,6 +443,12 @@ FHEM2FHEM_Set($@)
|
|||||||
if set, generate only events, do not set corresponding readings.
|
if set, generate only events, do not set corresponding readings.
|
||||||
This is a compatibility feature, available only for LOG-Mode.
|
This is a compatibility feature, available only for LOG-Mode.
|
||||||
</li>
|
</li>
|
||||||
|
<li><a name="#addStateEvent">addStateEvent</a><br>
|
||||||
|
if set, state events are transmitted correctly. Notes: this is relevant
|
||||||
|
only with LOG mode, setting it will generate an additional "reappeared"
|
||||||
|
Log entry, and the remote FHEM must support inform onWithState (i.e. must
|
||||||
|
be up to date).
|
||||||
|
</li>
|
||||||
<li><a name="#excludeEvents">excludeEvents <regexp></a>
|
<li><a name="#excludeEvents">excludeEvents <regexp></a>
|
||||||
do not publish events matching <regexp>
|
do not publish events matching <regexp>
|
||||||
</li>
|
</li>
|
||||||
@ -530,16 +551,22 @@ FHEM2FHEM_Set($@)
|
|||||||
<b>Attribute</b>
|
<b>Attribute</b>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#dummy">dummy</a></li>
|
<li><a href="#dummy">dummy</a></li>
|
||||||
<li><a href="#disable">disable</a></li>
|
<li><a href="#disable">disable</a></li>
|
||||||
<li><a href="#disabledForIntervals">disabledForIntervals</a></li>
|
<li><a href="#disabledForIntervals">disabledForIntervals</a></li>
|
||||||
<li><a name="#eventOnly">eventOnly</a><br>
|
<li><a name="#eventOnly">eventOnly</a><br>
|
||||||
falls gesetzt, werden nur die Events generiert, und es wird kein
|
falls gesetzt, werden nur die Events generiert, und es wird kein
|
||||||
Reading aktualisiert. Ist nur im LOG-Mode aktiv.
|
Reading aktualisiert. Ist nur im LOG-Mode aktiv.
|
||||||
</li>
|
</li>
|
||||||
<li><a name="#excludeEvents">excludeEvents <regexp></a>
|
<li><a name="#addStateEvent">addStateEvent</a><br>
|
||||||
die auf das <regexp> zutreffende Events werden nicht
|
falls gesetzt, werden state Events als solche uebertragen. Zu beachten:
|
||||||
bereitgestellt.
|
das Attribut ist nur für LOG-Mode relevant, beim Setzen wird eine
|
||||||
</li>
|
zusätzliche reopened Logzeile generiert, und die andere Seite muss
|
||||||
|
aktuell sein.
|
||||||
|
</li>
|
||||||
|
<li><a name="#excludeEvents">excludeEvents <regexp></a>
|
||||||
|
die auf das <regexp> zutreffende Events werden nicht
|
||||||
|
bereitgestellt.
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -33,7 +33,8 @@ telnet_Initialize($)
|
|||||||
|
|
||||||
$cmds{inform} = { Fn=>"CommandTelnetInform",
|
$cmds{inform} = { Fn=>"CommandTelnetInform",
|
||||||
ClientFilter => "telnet",
|
ClientFilter => "telnet",
|
||||||
Hlp=>"{on|off|log|raw|timer|status},echo all events to this client" };
|
Hlp=>"{on|onWithState|off|log|raw|timer|status},".
|
||||||
|
"echo all events to this client" };
|
||||||
}
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
@ -376,8 +377,8 @@ CommandTelnetInform($$)
|
|||||||
return if(!$cl);
|
return if(!$cl);
|
||||||
my $name = $cl->{NAME};
|
my $name = $cl->{NAME};
|
||||||
|
|
||||||
return "Usage: inform {on|off|raw|timer|log|status} [regexp]"
|
return "Usage: inform {on|onWithState|off|raw|timer|log|status} [regexp]"
|
||||||
if($param !~ m/^(on|off|raw|timer|log|status)/);
|
if($param !~ m/^(on|onWithState|off|raw|timer|log|status)/);
|
||||||
|
|
||||||
if($param eq "status") {
|
if($param eq "status") {
|
||||||
my $i = $inform{$name};
|
my $i = $inform{$name};
|
||||||
|
@ -3378,7 +3378,6 @@ DoTrigger($$@)
|
|||||||
################
|
################
|
||||||
# Inform
|
# Inform
|
||||||
if($hash->{CHANGED}) { # It gets deleted sometimes (?)
|
if($hash->{CHANGED}) { # It gets deleted sometimes (?)
|
||||||
$max = int(@{$hash->{CHANGED}}); # can be enriched in the notifies
|
|
||||||
foreach my $c (keys %inform) {
|
foreach my $c (keys %inform) {
|
||||||
my $dc = $defs{$c};
|
my $dc = $defs{$c};
|
||||||
if(!$dc || $dc->{NR} != $inform{$c}{NR}) {
|
if(!$dc || $dc->{NR} != $inform{$c}{NR}) {
|
||||||
@ -3392,11 +3391,13 @@ DoTrigger($$@)
|
|||||||
$tn .= sprintf(".%03d", $microseconds/1000);
|
$tn .= sprintf(".%03d", $microseconds/1000);
|
||||||
}
|
}
|
||||||
my $re = $inform{$c}{regexp};
|
my $re = $inform{$c}{regexp};
|
||||||
|
my $events = deviceEvents($hash, $inform{$c}{type} =~ m/WithState/);
|
||||||
|
$max = int(@{$events});
|
||||||
for(my $i = 0; $i < $max; $i++) {
|
for(my $i = 0; $i < $max; $i++) {
|
||||||
my $state = $hash->{CHANGED}[$i];
|
my $event = $events->[$i];
|
||||||
next if($re && !($dev =~ m/$re/ || "$dev:$state" =~ m/$re/));
|
next if($re && !($dev =~ m/$re/ || "$dev:$event" =~ m/$re/));
|
||||||
addToWritebuffer($dc,($inform{$c}{type} eq "timer" ? "$tn " : "").
|
addToWritebuffer($dc,($inform{$c}{type} eq "timer" ? "$tn " : "").
|
||||||
"$hash->{TYPE} $dev $state\n");
|
"$hash->{TYPE} $dev $event\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user