From 84d7b391c497daeb0b7773abd91b574054d4738f Mon Sep 17 00:00:00 2001 From: betateilchen Date: Sat, 3 Aug 2013 11:56:15 +0000 Subject: [PATCH] fixed: error messages from ReplaceEventMap git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@3591 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/71_LISTENLIVE.pm | 69 +++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/fhem/FHEM/71_LISTENLIVE.pm b/fhem/FHEM/71_LISTENLIVE.pm index dd9632db7..211360b46 100644 --- a/fhem/FHEM/71_LISTENLIVE.pm +++ b/fhem/FHEM/71_LISTENLIVE.pm @@ -130,8 +130,7 @@ LISTENLIVE_Set($@) my %powerGroup = (on => "POWER", off => "POWER"); my %muteGroup = (on => "MUTE", off => "MUTE"); - my %cursorGroup = (left => "LEFT", right => "RIGHT", up => "UP", down => "DOWN", - home => "HOME", enter => "OK", ok => "OK", "exit" => "RETURN"); + my %cursorGroup = (left => "LEFT", right => "RIGHT", up => "UP", down => "DOWN", home => "HOME", enter => "OK", ok => "OK", "exit" => "RETURN"); my %audioGroup = (mute => "MUTE", unmute => "MUTE", volp => "VOLp", volm => "VOLm"); my $pstat = $hash->{READINGS}{power}{VAL}; @@ -313,6 +312,8 @@ LISTENLIVE_Set($@) when("weather"){ Log $loglevel, "LISTENLIVE $name input: $cmdGroup $cmd"; + $result = LISTENLIVE_SendCommand($hash, "POWER"); + select(undef, undef, undef, 1.0); $result = LISTENLIVE_SendCommand($hash, "HOME"); select(undef, undef, undef, 0.2); $result = LISTENLIVE_SendCommand($hash, "DOWN"); @@ -381,22 +382,21 @@ LISTENLIVE_GetStatus($;$){ $local = 0 unless(defined($local)); if($hash->{helper}{ADDRESS} ne "none") - { - $presence = ReadingsVal("pres_".$name,"state","noPresence"); - } + { $presence = ReadingsVal("pres_".$name,"state","absent"); } else - { - $presence = "present"; - } + { $presence = "present"; } + + if($presence eq "absent") { $presence = "offline";} + else { $presence = "online"; } - $presence = ReplaceEventMap($name, $presence, 1); - readingsBeginUpdate($hash); readingsBulkUpdate($hash, "state", $presence); readingsEndUpdate($hash, 1); + $hash->{STATE} = $presence; + InternalTimer(gettimeofday()+$hash->{helper}{INTERVAL}, "LISTENLIVE_GetStatus", $hash, 0) unless($local == 1); - return $hash->{STATE}; + return 1; } ############################# @@ -405,6 +405,7 @@ LISTENLIVE_Define($$){ my ($hash, $def) = @_; my @a = split("[ \t][ \t]*", $def); my $name = $hash->{NAME}; + my $presence; if(! @a >= 4){ my $msg = "wrong syntax: define LISTENLIVE [:] []"; @@ -412,9 +413,6 @@ LISTENLIVE_Define($$){ return $msg; } -# Attribut eventMap festlegen (schönere Optik im Frontend) - $attr{$name}{"eventMap"} = "absent:offline present:online"; - # Adresse in IP und Port zerlegen my @address = split(":", $a[2]); $hash->{helper}{ADDRESS} = $address[0]; @@ -430,7 +428,7 @@ LISTENLIVE_Define($$){ if($address[0] ne "none"){ # PRESENCE aus device pres_+NAME lesen - my $presence = ReadingsVal("pres_".$name,"state","noPresence"); + $presence = ReadingsVal("pres_".$name,"state","noPresence"); if($presence eq "noPresence"){ $cmd = "pres_$name PRESENCE lan-ping $address[0]"; @@ -443,27 +441,30 @@ LISTENLIVE_Define($$){ } else { Log 3, "LISTENLIVE $name PRESENCE pres_$name found."; } + $presence = "absent"; } else { # Gerät ist als dummy definiert $presence = "present"; # dummy immer als online melden } - $presence = ReplaceEventMap($name, $presence, 1); + + if($presence eq "absent") { + $presence = "offline"; + } else { + $presence = "online"; + } # Readings anlegen und füllen readingsBeginUpdate($hash); -# readingsBulkUpdate($hash, "currentMedia",""); readingsBulkUpdate($hash, "lastCmd",""); readingsBulkUpdate($hash, "lastResult",""); -# readingsBulkUpdate($hash, "menuPos","11"); readingsBulkUpdate($hash, "mute","???"); -# readingsBulkUpdate($hash, "playStatus",""); readingsBulkUpdate($hash, "power","???"); -# readingsBulkUpdate($hash, "presence",$presence); readingsBulkUpdate($hash, "state",$presence); readingsEndUpdate($hash, 1); $hash->{helper}{AVAILABLE} = 1; + $hash->{STATE} = $presence; InternalTimer(gettimeofday()+$hash->{helper}{INTERVAL}, "LISTENLIVE_GetStatus", $hash, 0); return; @@ -488,17 +489,19 @@ LISTENLIVE_SendCommand($$;$){ given($modus) { when("online") { - $socket = new IO::Socket::INET ( - PeerHost => $address, - PeerPort => $port, - Proto => 'tcp', - ) or die "ERROR in Socket Creation : $!\n"; - $socket->send($command); - usleep(30000); - $socket->recv($response, 2); - if($response !~ m/OK/) { Log 2, "LISTENLIVE $name error: $response"; } - else { Log $loglevel, "LISTENLIVE $name response: $response"; } - $socket->close(); + eval { + $socket = new IO::Socket::INET ( + PeerHost => $address, + PeerPort => $port, + Proto => 'tcp', + ) or die "ERROR in Socket Creation : $!\n"; + $socket->send($command); + usleep(30000); + $socket->recv($response, 2); + if($response !~ m/OK/) { Log 2, "LISTENLIVE $name error: $response"; } + else { Log $loglevel, "LISTENLIVE $name response: $response"; } + $socket->close(); + }; warn $@ if $@; $hash->{helper}{AVAILABLE} = (defined($response) ? 1 : 0); } @@ -741,8 +744,6 @@ statusRequest
  • loglevel
  • do_not_notify
  • readingFnAttributes
  • -
  • eventMap - The attribute eventMap absent:offline present:online is created automagically.


  • Generated Readings/Events:
    @@ -865,8 +866,6 @@ statusRequest
  • loglevel
  • do_not_notify
  • readingFnAttributes
  • -
  • eventMap - Die eventMap absent:offline present:online wird bei der Definition des Gerätes automatisch angelegt.


  • Generierte Readings/Events: