From 81da34f6821f13aabe557c05d512556f1be9a4bd Mon Sep 17 00:00:00 2001 From: loredo Date: Tue, 17 Jan 2017 12:13:08 +0000 Subject: [PATCH] 75_MSG: improved absence detection for message gateway devices (forum topic,39983.msg562710.html#msg562710) git-svn-id: https://svn.fhem.de/fhem/trunk@13123 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/75_MSG.pm | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/fhem/FHEM/75_MSG.pm b/fhem/FHEM/75_MSG.pm index af9c14bab..ac85c8a72 100755 --- a/fhem/FHEM/75_MSG.pm +++ b/fhem/FHEM/75_MSG.pm @@ -1608,44 +1608,38 @@ m/^@?([A-Za-z0-9._]+):([A-Za-z0-9._\-\/@+]*):?([A-Za-z0-9._\-\/@+]*)$/ $routeStatus = "UNDEFINED"; } elsif ( $type[$i] ne "mail" - && AttrVal( $gatewayDev, "disable", "0" ) eq - "1" ) + && IsDisabled($gatewayDev) ) { $routeStatus = "DISABLED"; } elsif ( $type[$i] ne "mail" && ( - ReadingsVal( $gatewayDev, "power", "on" ) - eq "off" - || ReadingsVal( $gatewayDev, "presence", - "present" ) eq "absent" - || ReadingsVal( $gatewayDev, "presence", - "appeared" ) eq "disappeared" + ReadingsVal( $gatewayDev, "presence", + "present" ) =~ +m/^(0|absent|disappeared|unauthorized|disconnected|unreachable)$/i || ReadingsVal( $gatewayDev, "state", - "present" ) eq "absent" - || ReadingsVal( $gatewayDev, "state", - "connected" ) eq "unauthorized" - || ReadingsVal( $gatewayDev, "state", - "connected" ) eq "disconnected" - || ReadingsVal( $gatewayDev, "state", - "reachable" ) eq "unreachable" - || ReadingsVal( - $gatewayDev, "available", "1" - ) eq "0" + "present" ) =~ +m/^(absent|disappeared|unauthorized|disconnected|unreachable)$/i + || ( $defs{$gatewayDev}{STATE} + && $defs{$gatewayDev}{STATE} =~ +m/^(absent|disappeared|unauthorized|disconnected|unreachable)$/i + ) || ReadingsVal( $gatewayDev, "available", - "yes" ) eq "no" - || ReadingsVal( - $gatewayDev, "reachable", "1" - ) eq "0" + "yes" ) =~ m/^(0|no)$/i || ReadingsVal( $gatewayDev, "reachable", - "yes" ) eq "no" - + "yes" ) =~ m/^(0|no)$/i ) ) { $routeStatus = "UNAVAILABLE"; } + elsif ( $type[$i] eq "screen" + && ReadingsVal( $gatewayDev, "power", "on" ) =~ + m/^(0|off)$/i ) + { + $routeStatus = "OFF"; + } elsif ($type[$i] eq "audio" && $annState ne "long" && $annState ne "short" )