fix same crashed then set commands

This commit is contained in:
Marko Oldenburg 2017-02-16 00:35:35 +01:00
parent 4592622e65
commit 913b8329c4

View File

@ -51,7 +51,7 @@ use Encode qw(encode_utf8);
my $version = "0.0.69"; my $version = "0.0.73";
@ -118,8 +118,7 @@ my %lgCommands = (
"closeApp" => ["ssap://system.launcher/close"], "closeApp" => ["ssap://system.launcher/close"],
"openApp" => ["ssap://system.launcher/open"], "openApp" => ["ssap://system.launcher/open"],
"closeWebApp" => ["ssap://webapp/closeWebApp"], "closeWebApp" => ["ssap://webapp/closeWebApp"],
"openChannel" => ["ssap://tv/openChannel", "channelNumber"], "openChannel" => ["ssap://tv/openChannel", "channelId"],
"openApp" => ["ssap://system.launcher/open"],
"launchApp" => ["ssap://system.launcher/launch", "id"], "launchApp" => ["ssap://system.launcher/launch", "id"],
"screenMsg" => ["ssap://system.notifications/createToast", "message"], "screenMsg" => ["ssap://system.notifications/createToast", "message"],
"mute" => ["ssap://audio/setMute", "mute"], "mute" => ["ssap://audio/setMute", "mute"],
@ -211,13 +210,14 @@ sub LGTV_WebOS_Define($$) {
my $name = $a[0]; my $name = $a[0];
my $host = $a[2]; my $host = $a[2];
$hash->{HOST} = $host; $hash->{HOST} = $host;
$hash->{VERSION} = $version; $hash->{VERSION} = $version;
$hash->{helper}{channelguide}{counter} = 0; $hash->{helper}{device}{channelguide}{counter} = 0;
$hash->{helper}{device}{registered} = 0; $hash->{helper}{device}{registered} = 0;
$hash->{helper}{device}{runsetcmd} = 0;
Log3 $name, 3, "LGTV_WebOS ($name) - defined with host $host"; Log3 $name, 3, "LGTV_WebOS ($name) - defined with host $host";
@ -312,7 +312,7 @@ sub LGTV_WebOS_TimerStatusRequest($) {
readingsBulkUpdate($hash, 'state', 'on'); readingsBulkUpdate($hash, 'state', 'on');
readingsBulkUpdate($hash, 'presence', 'present'); readingsBulkUpdate($hash, 'presence', 'present');
if($hash->{helper}{channelguide}{counter} > 5 and AttrVal($name,'channelGuide', 0) == 1 and ReadingsVal($name,'launchApp', 'TV') eq 'TV' ) { if($hash->{helper}{channelguide}{counter} > 2 and AttrVal($name,'channelGuide', 0) == 1 and ReadingsVal($name,'launchApp', 'TV') eq 'TV' ) {
LGTV_WebOS_GetChannelProgramInfo($hash); LGTV_WebOS_GetChannelProgramInfo($hash);
$hash->{helper}{channelguide}{counter} = 0; $hash->{helper}{channelguide}{counter} = 0;
@ -432,8 +432,6 @@ sub LGTV_WebOS_Set($@) {
$payload{$lgCommands{$cmd}->[1]} = 'true'; $payload{$lgCommands{$cmd}->[1]} = 'true';
$uri = $lgCommands{$cmd}->[0]; $uri = $lgCommands{$cmd}->[0];
} }
} elsif($cmd eq 'volume') { } elsif($cmd eq 'volume') {
return "usage: volume" if( @args != 1 ); return "usage: volume" if( @args != 1 );
@ -531,6 +529,7 @@ sub LGTV_WebOS_Set($@) {
return "Unknown argument $cmd, choose one of $list"; return "Unknown argument $cmd, choose one of $list";
} }
$hash->{helper}{device}{runsetcmd} = $hash->{helper}{device}{runsetcmd} + 1;
LGTV_WebOS_CreateSendCommand($hash,$uri,\%payload); LGTV_WebOS_CreateSendCommand($hash,$uri,\%payload);
} }
@ -633,17 +632,19 @@ sub LGTV_WebOS_Read($) {
Log3 $name, 5, "LGTV_WebOS ($name) - received correct JSON string, start response processing: $buf"; Log3 $name, 5, "LGTV_WebOS ($name) - received correct JSON string, start response processing: $buf";
LGTV_WebOS_ResponseProcessing($hash,$buf); LGTV_WebOS_ResponseProcessing($hash,$buf);
return; #return;
} elsif( $buf =~ /HTTP\/1.1 101 Switching Protocols/ ) { } elsif( $buf =~ /HTTP\/1.1 101 Switching Protocols/ ) {
Log3 $name, 5, "LGTV_WebOS ($name) - received HTTP data string, start response processing: $buf"; Log3 $name, 5, "LGTV_WebOS ($name) - received HTTP data string, start response processing: $buf";
LGTV_WebOS_ResponseProcessing($hash,$buf); LGTV_WebOS_ResponseProcessing($hash,$buf);
return; #return;
}
} else {
Log3 $name, 5, "LGTV_WebOS ($name) - coruppted data found, run LGTV_WebOS_ProcessRead: $buf"; Log3 $name, 5, "LGTV_WebOS ($name) - coruppted data found, run LGTV_WebOS_ProcessRead: $buf";
LGTV_WebOS_ProcessRead($hash,$buf); LGTV_WebOS_ProcessRead($hash,$buf);
}
} }
sub LGTV_WebOS_ProcessRead($$) { sub LGTV_WebOS_ProcessRead($$) {
@ -911,6 +912,7 @@ sub LGTV_WebOS_WriteReadings($$) {
$response = 'ok'; $response = 'ok';
readingsBulkUpdate($hash,'pairing','paired'); readingsBulkUpdate($hash,'pairing','paired');
$hash->{helper}{device}{runsetcmd} = $hash->{helper}{device}{runsetcmd} - 1 if($hash->{helper}{device}{runsetcmd} > 0);
} elsif( $decode_json->{type} eq 'error' ) { } elsif( $decode_json->{type} eq 'error' ) {
@ -920,6 +922,8 @@ sub LGTV_WebOS_WriteReadings($$) {
readingsBulkUpdate($hash,'pairing','unpaired'); readingsBulkUpdate($hash,'pairing','unpaired');
} }
$hash->{helper}{device}{runsetcmd} = $hash->{helper}{device}{runsetcmd} - 1 if($hash->{helper}{device}{runsetcmd} > 0);
} }
} }
@ -1169,7 +1173,8 @@ sub LGTV_WebOS_GetAudioStatus($) {
RemoveInternalTimer($hash,'LGTV_WebOS_GetAudioStatus'); RemoveInternalTimer($hash,'LGTV_WebOS_GetAudioStatus');
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{getAudioStatus},undef); Log3 $name, 4, "LGTV_WebOS ($name) - LGTV_WebOS_GetAudioStatus: " . $hash->{helper}{device}{runsetcmd};
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{getAudioStatus},undef) if($hash->{helper}{device}{runsetcmd} == 0);
} }
sub LGTV_WebOS_GetCurrentChannel($) { sub LGTV_WebOS_GetCurrentChannel($) {
@ -1179,7 +1184,8 @@ sub LGTV_WebOS_GetCurrentChannel($) {
RemoveInternalTimer($hash,'LGTV_WebOS_GetCurrentChannel'); RemoveInternalTimer($hash,'LGTV_WebOS_GetCurrentChannel');
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{getCurrentChannel},undef); Log3 $name, 4, "LGTV_WebOS ($name) - LGTV_WebOS_GetCurrentChannel: " . $hash->{helper}{device}{runsetcmd};
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{getCurrentChannel},undef) if($hash->{helper}{device}{runsetcmd} == 0);
} }
sub LGTV_WebOS_GetForgroundAppInfo($) { sub LGTV_WebOS_GetForgroundAppInfo($) {
@ -1189,7 +1195,8 @@ sub LGTV_WebOS_GetForgroundAppInfo($) {
RemoveInternalTimer($hash,'LGTV_WebOS_GetForgroundAppInfo'); RemoveInternalTimer($hash,'LGTV_WebOS_GetForgroundAppInfo');
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{getForegroundAppInfo},undef); Log3 $name, 4, "LGTV_WebOS ($name) - LGTV_WebOS_GetForgroundAppInfo: " . $hash->{helper}{device}{runsetcmd};
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{getForegroundAppInfo},undef) if($hash->{helper}{device}{runsetcmd} == 0);
} }
sub LGTV_WebOS_GetExternalInputList($) { sub LGTV_WebOS_GetExternalInputList($) {
@ -1199,7 +1206,8 @@ sub LGTV_WebOS_GetExternalInputList($) {
RemoveInternalTimer($hash,'LGTV_WebOS_GetExternalInputList'); RemoveInternalTimer($hash,'LGTV_WebOS_GetExternalInputList');
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{getExternalInputList},undef); Log3 $name, 4, "LGTV_WebOS ($name) - LGTV_WebOS_GetExternalInputList: " . $hash->{helper}{device}{runsetcmd};
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{getExternalInputList},undef) if($hash->{helper}{device}{runsetcmd} == 0);
} }
sub LGTV_WebOS_Get3DStatus($) { sub LGTV_WebOS_Get3DStatus($) {
@ -1209,7 +1217,8 @@ sub LGTV_WebOS_Get3DStatus($) {
RemoveInternalTimer($hash,'LGTV_WebOS_Get3DStatus'); RemoveInternalTimer($hash,'LGTV_WebOS_Get3DStatus');
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{get3DStatus},undef); Log3 $name, 4, "LGTV_WebOS ($name) - LGTV_WebOS_Get3DStatus: " . $hash->{helper}{device}{runsetcmd};
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{get3DStatus},undef) if($hash->{helper}{device}{runsetcmd} == 0);
} }
sub LGTV_WebOS_GetChannelProgramInfo($) { sub LGTV_WebOS_GetChannelProgramInfo($) {
@ -1219,7 +1228,8 @@ sub LGTV_WebOS_GetChannelProgramInfo($) {
RemoveInternalTimer($hash,'LGTV_WebOS_GetChannelProgramInfo'); RemoveInternalTimer($hash,'LGTV_WebOS_GetChannelProgramInfo');
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{getChannelProgramInfo},undef); Log3 $name, 4, "LGTV_WebOS ($name) - LGTV_WebOS_GetChannelProgramInfo: " . $hash->{helper}{device}{runsetcmd};
LGTV_WebOS_CreateSendCommand($hash,$lgCommands{getChannelProgramInfo},undef) if($hash->{helper}{device}{runsetcmd} == 0);
} }