mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-09 14:47:00 +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.
|
||||
# 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: 74_GardenaSmartDevice.pm: fix little Commandref bug's
|
||||
- new: 73_GardenaSmartBridge/74_GardenaSmartDevice control your Gardena
|
||||
|
@ -26,13 +26,14 @@ FHEM2FHEM_Initialize($)
|
||||
$hash->{WriteFn} = "FHEM2FHEM_Write";
|
||||
$hash->{ReadyFn} = "FHEM2FHEM_Ready";
|
||||
$hash->{SetFn} = "FHEM2FHEM_Set";
|
||||
$hash->{AttrFn} = "FHEM2FHEM_Attr";
|
||||
$hash->{noRawInform} = 1;
|
||||
|
||||
# Normal devices
|
||||
$hash->{DefFn} = "FHEM2FHEM_Define";
|
||||
$hash->{UndefFn} = "FHEM2FHEM_Undef";
|
||||
$hash->{AttrList}= "dummy:1,0 disable:0,1 ".
|
||||
"disabledForIntervals excludeEvents eventOnly:1,0";
|
||||
$hash->{AttrList}= "addStateEvent:1,0 dummy:1,0 disable:0,1 ".
|
||||
"disabledForIntervals eventOnly:1,0 excludeEvents";
|
||||
}
|
||||
|
||||
#####################################
|
||||
@ -266,8 +267,9 @@ FHEM2FHEM_OpenDev($$)
|
||||
DoTrigger($name, "CONNECTED") if($reopen);
|
||||
syswrite($hash->{TCPDev}, $hash->{portpassword} . "\n")
|
||||
if($hash->{portpassword});
|
||||
my $type = AttrVal($hash->{NAME},"addStateEvent",0) ? "onWithState" : "on";
|
||||
my $msg = $hash->{informType} eq "LOG" ?
|
||||
"inform on $hash->{regexp}" : "inform raw";
|
||||
"inform $type $hash->{regexp}" : "inform raw";
|
||||
syswrite($hash->{TCPDev}, $msg . "\n");
|
||||
};
|
||||
|
||||
@ -329,6 +331,19 @@ FHEM2FHEM_Set($@)
|
||||
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;
|
||||
|
||||
=pod
|
||||
@ -428,6 +443,12 @@ FHEM2FHEM_Set($@)
|
||||
if set, generate only events, do not set corresponding readings.
|
||||
This is a compatibility feature, available only for LOG-Mode.
|
||||
</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>
|
||||
do not publish events matching <regexp>
|
||||
</li>
|
||||
@ -530,16 +551,22 @@ FHEM2FHEM_Set($@)
|
||||
<b>Attribute</b>
|
||||
<ul>
|
||||
<li><a href="#dummy">dummy</a></li>
|
||||
<li><a href="#disable">disable</a></li>
|
||||
<li><a href="#disabledForIntervals">disabledForIntervals</a></li>
|
||||
<li><a name="#eventOnly">eventOnly</a><br>
|
||||
falls gesetzt, werden nur die Events generiert, und es wird kein
|
||||
Reading aktualisiert. Ist nur im LOG-Mode aktiv.
|
||||
</li>
|
||||
<li><a name="#excludeEvents">excludeEvents <regexp></a>
|
||||
die auf das <regexp> zutreffende Events werden nicht
|
||||
bereitgestellt.
|
||||
</li>
|
||||
<li><a href="#disable">disable</a></li>
|
||||
<li><a href="#disabledForIntervals">disabledForIntervals</a></li>
|
||||
<li><a name="#eventOnly">eventOnly</a><br>
|
||||
falls gesetzt, werden nur die Events generiert, und es wird kein
|
||||
Reading aktualisiert. Ist nur im LOG-Mode aktiv.
|
||||
</li>
|
||||
<li><a name="#addStateEvent">addStateEvent</a><br>
|
||||
falls gesetzt, werden state Events als solche uebertragen. Zu beachten:
|
||||
das Attribut ist nur für LOG-Mode relevant, beim Setzen wird eine
|
||||
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>
|
||||
|
@ -33,7 +33,8 @@ telnet_Initialize($)
|
||||
|
||||
$cmds{inform} = { Fn=>"CommandTelnetInform",
|
||||
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
|
||||
@ -376,8 +377,8 @@ CommandTelnetInform($$)
|
||||
return if(!$cl);
|
||||
my $name = $cl->{NAME};
|
||||
|
||||
return "Usage: inform {on|off|raw|timer|log|status} [regexp]"
|
||||
if($param !~ m/^(on|off|raw|timer|log|status)/);
|
||||
return "Usage: inform {on|onWithState|off|raw|timer|log|status} [regexp]"
|
||||
if($param !~ m/^(on|onWithState|off|raw|timer|log|status)/);
|
||||
|
||||
if($param eq "status") {
|
||||
my $i = $inform{$name};
|
||||
|
@ -3378,7 +3378,6 @@ DoTrigger($$@)
|
||||
################
|
||||
# Inform
|
||||
if($hash->{CHANGED}) { # It gets deleted sometimes (?)
|
||||
$max = int(@{$hash->{CHANGED}}); # can be enriched in the notifies
|
||||
foreach my $c (keys %inform) {
|
||||
my $dc = $defs{$c};
|
||||
if(!$dc || $dc->{NR} != $inform{$c}{NR}) {
|
||||
@ -3392,11 +3391,13 @@ DoTrigger($$@)
|
||||
$tn .= sprintf(".%03d", $microseconds/1000);
|
||||
}
|
||||
my $re = $inform{$c}{regexp};
|
||||
my $events = deviceEvents($hash, $inform{$c}{type} =~ m/WithState/);
|
||||
$max = int(@{$events});
|
||||
for(my $i = 0; $i < $max; $i++) {
|
||||
my $state = $hash->{CHANGED}[$i];
|
||||
next if($re && !($dev =~ m/$re/ || "$dev:$state" =~ m/$re/));
|
||||
my $event = $events->[$i];
|
||||
next if($re && !($dev =~ m/$re/ || "$dev:$event" =~ m/$re/));
|
||||
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