From dd8f0ecae6ea8605f4a50903e15ef48d68a20ef8 Mon Sep 17 00:00:00 2001 From: bentele <> Date: Wed, 28 Jan 2015 09:45:43 +0000 Subject: [PATCH] 70_STV: new commands powerCmdOn and powerCmdOff git-svn-id: https://svn.fhem.de/fhem/trunk@7753 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/70_STV.pm | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/fhem/FHEM/70_STV.pm b/fhem/FHEM/70_STV.pm index 52c13f338..0a5096d53 100644 --- a/fhem/FHEM/70_STV.pm +++ b/fhem/FHEM/70_STV.pm @@ -49,7 +49,7 @@ STV_Initialize($) $hash->{AttrFn} = "STV_Attr"; $hash->{ReadFn} = "STV_Read"; $hash->{ReadyFn} = "STV_Ready"; - $hash->{AttrList} = "MAC fork:enable,disable setWhenOffline:execute,ignore " . $readingFnAttributes;; + $hash->{AttrList} = "MAC fork:enable,disable setWhenOffline:execute,ignore powerCmdOn powerCmdOff " . $readingFnAttributes;; } sub STV_Undefine($$) @@ -208,7 +208,8 @@ sub STV_Define($$) "POWEROFF POWERON PRECH PRINT PROGRAM QUICK_REPLAY REC RED REPEAT RESERVED1 RETURN REWIND REWIND_ RIGHT RSS ". "RSURF SCALE SEFFECT SETUP_CLOCK_TIMER SLEEP SOUND_MODE SOURCE SRS STANDARD STB_MODE STILL_PICTURE STOP ". "SUB_TITLE SVIDEO1 SVIDEO2 SVIDEO3 TOOLS TOPMENU TTX_MIX TTX_SUBFACE TURBO TV TV_MODE UP VCHIP VCR_MODE ". -"VOLDOWN VOLUP WHEEL_LEFT WHEEL_RIGHT W_LINK YELLOW ZOOM1 ZOOM2 ZOOM_IN ZOOM_MOVE ZOOM_OUT connect"; +"VOLDOWN VOLUP WHEEL_LEFT WHEEL_RIGHT W_LINK YELLOW ZOOM1 ZOOM2 ZOOM_IN ZOOM_MOVE ZOOM_OUT connect ". +"powerCmdOn powerCmdOff"; my $system = $^O; my $result = ""; if($system =~ m/Win/) { @@ -590,6 +591,21 @@ sub STV_52235($@) } } +sub STV_PowerCmd($$) +{ + my ($hash, $power) = @_; + + my $attrName = $power ? "powerCmdOn" : "powerCmdOff"; + my $cmdToExec = AttrVal($hash->{NAME}, $attrName, ''); + + return "Error: Attribute $attrName not set!" if (length($cmdToExec) == 0); + + # execute the power command + fhem($cmdToExec); + + return "Executed command: $cmdToExec"; +} + sub STV_Set($@) { my ($hash, @a) = @_; @@ -602,13 +618,23 @@ sub STV_Set($@) return $hash->{".validcommands"}; } if ($hash->{".validcommands"} =~ /$cmd/) { - if ($cmd eq "connect") { - return STV_Connect($hash); + if ($cmd eq "powerCmdOn") { + return STV_PowerCmd($hash, 1); } - - if ((AttrVal($name, "setWhenOffline", "execute") eq "ignore") and ($hash->{STATE} ne "opened")) { - Log3 $name, 3, "[STV] Device seems offline. Set command ignored: $cmd"; - return; + elsif ($cmd eq "powerCmdOff") { + return STV_PowerCmd($hash, 0); + } + + if ($hash->{STATE} ne "opened") { + if ($cmd eq "connect") { + return STV_Connect($hash); + } + elsif ((AttrVal($name, "setWhenOffline", "execute") eq "ignore") and ()) { + # problem was that FHEM blocks for about 3 seconds if setting commands when TV is offline + # so people might want to block commands when TV is off + Log3 $name, 3, "[STV] Device seems offline. Set command ignored: $cmd"; + return; + } } if ($Port eq 55000 ){