mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-01 20:20:10 +00:00
fix: changes for state
git-svn-id: https://svn.fhem.de/fhem/trunk@17282 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
25b5320119
commit
baa6fca3b3
@ -29,7 +29,7 @@ use warnings;
|
||||
|
||||
#my $DEBUG = 1;
|
||||
my $cvsid = '$Id$';
|
||||
my $VERSION = "version 0.9.4 by hexenmeister\n$cvsid";
|
||||
my $VERSION = "version 0.9.5 by hexenmeister\n$cvsid";
|
||||
|
||||
my %sets = (
|
||||
);
|
||||
@ -136,8 +136,12 @@ BEGIN {
|
||||
defs
|
||||
AttrVal
|
||||
ReadingsVal
|
||||
ReadingsTimestamp
|
||||
ReadingsAge
|
||||
deviceEvents
|
||||
AssignIoPort
|
||||
addToDevAttrList
|
||||
delFromDevAttrList
|
||||
devspec2array
|
||||
gettimeofday
|
||||
InternalTimer
|
||||
@ -1242,28 +1246,43 @@ sub Notify() {
|
||||
return "" unless ($size>0);
|
||||
}
|
||||
|
||||
foreach my $event (@{$dev->{CHANGED}}) {
|
||||
#Log3($hash->{NAME},5,"Notify for $dev->{NAME} event: $event STATE: $dev->{STATE}");
|
||||
#Log3($hash->{NAME},1,"Notify for $dev->{NAME}>>>>>>>> ".Dumper($dev)) if $dev->{NAME} eq 'sonoff_8';
|
||||
#Log3($hash->{NAME},1,"Notify for $dev->{NAME}>>>>>>>> ".Dumper(deviceEvents($dev,1))) if $dev->{NAME} eq 'sonoff_8';
|
||||
|
||||
#foreach my $event (@{$dev->{CHANGED}}) {
|
||||
foreach my $event (@{deviceEvents($dev,1)}) {
|
||||
#Log3($hash->{NAME},1,"Notify for $dev->{NAME} event: $event STATE: $dev->{STATE}");
|
||||
$event =~ /^([^:]+)(: )?(.*)$/;
|
||||
#Log3($hash->{NAME},1,"MQTT-GB:DEBUG:> event: $event, '".((defined $1) ? $1 : "-undef-")."', '".((defined $3) ? $3 : "-undef-")."'");
|
||||
my $devreading = undef;
|
||||
my $devval = undef;
|
||||
# pruefen, ob der neue Wert dem 'state' des Devices entspricht
|
||||
# {$defs{$dev}{STATE}}
|
||||
if ($dev->{STATE} ne $event) {
|
||||
#Log3($hash->{NAME},1,"Notify for $dev->{NAME} : state: ".ReadingsVal($dev->{NAME},'state','nö'));
|
||||
# Wenn Readings 'state' existiert. Nicht STATE! Wenn der Wert dem neuen 'change' gleich ist. Wenn der ReadingsTimestamp frisch ist => dann state annehmen.
|
||||
#my $vState = ReadingsVal($dev->{NAME},'state',undef);
|
||||
#my $tState = ReadingsTimestamp($dev->{NAME},'state',undef);
|
||||
#my $aState = ReadingsAge($dev->{NAME},'state',-1);
|
||||
#Log3($hash->{NAME},1,"Notify for $dev->{NAME}>>>>>>>> vState: $vState, tState: $tState, age: $aState ");# if $hash->{NAME} eq 'sonoff_8';
|
||||
#unless (defined ($vState) and ($vState eq $event) and ($aState <= 1)) {
|
||||
#if (!defined ($vState) or ($vState ne $event)) {
|
||||
#if ($dev->{STATE} ne $event) {
|
||||
#if (defined $3 and $3 ne "") {
|
||||
# $vState = 'undef' unless defined $vState;
|
||||
#Log3($hash->{NAME},1,"Notify recognise state change = no : event: $event, old_state: $vState, state age: $aState");
|
||||
#send reading=$1 value=$3
|
||||
#publishDeviceUpdate($hash, $dev, $1, $3);
|
||||
$devreading = $1;
|
||||
$devval = $3;
|
||||
} else {
|
||||
#send reading=state value=$1
|
||||
#publishDeviceUpdate($hash, $dev, 'state', $1);
|
||||
$devreading = 'state';
|
||||
#$devval = $1;
|
||||
$devval = $event;
|
||||
}
|
||||
#Log3($hash->{NAME},5,"Notify for $dev->{NAME} reading: $devreading, val: $devval");
|
||||
# } else {
|
||||
# #Log3($hash->{NAME},1,"Notify recognise state change = yes : event: $event, old_state: $vState, state age: $aState");
|
||||
# #send reading=state value=$1
|
||||
# #publishDeviceUpdate($hash, $dev, 'state', $1);
|
||||
# $devreading = 'state';
|
||||
# #$devval = $1;
|
||||
# $devval = $event;
|
||||
# }
|
||||
#Log3($hash->{NAME},1,"Notify for $dev->{NAME} reading: $devreading, val: $devval");
|
||||
if(defined $devreading and defined $devval) {
|
||||
# wenn ueberwachtes device and reading
|
||||
publishDeviceUpdate($hash, $dev, $devreading, $devval);
|
||||
|
Loading…
x
Reference in New Issue
Block a user