add channelTime

This commit is contained in:
Marko Oldenburg 2017-02-15 09:53:26 +01:00
parent ed3e803a6b
commit 45ad84ad77

View File

@ -51,7 +51,7 @@ use Encode qw(encode_utf8);
my $version = "0.0.66"; my $version = "0.0.67";
@ -73,7 +73,6 @@ sub LGTV_WebOS_Header2Hash($);
sub LGTV_WebOS_Pairing($); sub LGTV_WebOS_Pairing($);
sub LGTV_WebOS_CreateSendCommand($$$;$); sub LGTV_WebOS_CreateSendCommand($$$;$);
sub LGTV_WebOS_Hybi10Encode($;$$); sub LGTV_WebOS_Hybi10Encode($;$$);
sub LGTV_WebOS_PreResponseProsessing($$);
sub LGTV_WebOS_WriteReadings($$); sub LGTV_WebOS_WriteReadings($$);
sub LGTV_WebOS_GetCurrentChannel($); sub LGTV_WebOS_GetCurrentChannel($);
sub LGTV_WebOS_GetForgroundAppInfo($); sub LGTV_WebOS_GetForgroundAppInfo($);
@ -754,8 +753,7 @@ sub LGTV_WebOS_ResponseProcessing($$) {
elsif( $response =~ m/^{"type":".+}}$/ ) { elsif( $response =~ m/^{"type":".+}}$/ ) {
Log3 $name, 4, "LGTV_WebOS ($name) - JSON detected, run LGTV_WebOS_WriteReadings"; Log3 $name, 4, "LGTV_WebOS ($name) - JSON detected, run LGTV_WebOS_WriteReadings";
#my $json = LGTV_WebOS_PreResponseProsessing($hash,$response);
#my $json = LGTV_WebOS_ProcessRead($hash,$response);
my $json = $response; my $json = $response;
Log3 $name, 4, "LGTV_WebOS ($name) - Corrected JSON String: $json" if($json); Log3 $name, 4, "LGTV_WebOS ($name) - Corrected JSON String: $json" if($json);
@ -820,8 +818,17 @@ sub LGTV_WebOS_WriteReadings($$) {
my $count = 0; my $count = 0;
foreach my $programList ( @{$decode_json->{payload}{programList}} ) { foreach my $programList ( @{$decode_json->{payload}{programList}} ) {
readingsBulkUpdate($hash,'channelCurrentTitle',$programList->{programName}) if($count < 1); if($count < 1) {
readingsBulkUpdate($hash,'channelNextTitle',$programList->{programName}) if($count < 2); readingsBulkUpdate($hash,'channelCurrentTitle',$programList->{programName});
readingsBulkUpdate($hash,'channelCurrentStartTime',LGTV_WebOS_FormartStartEndTime($programList->{localStartTime}));
readingsBulkUpdate($hash,'channelCurrentEndTime',LGTV_WebOS_FormartStartEndTime($programList->{localEndTime}));
} elsif($count < 2) {
readingsBulkUpdate($hash,'channelNextTitle',$programList->{programName});
readingsBulkUpdate($hash,'channelNextStartTime',LGTV_WebOS_FormartStartEndTime($programList->{localStartTime}));
readingsBulkUpdate($hash,'channelNextEndTime',LGTV_WebOS_FormartStartEndTime($programList->{localEndTime}));
}
$count++; $count++;
return if($count > 1); return if($count > 1);
@ -1244,7 +1251,7 @@ sub LGTV_WebOS_ParseMsg($$) {
sub LGTV_WebOS_Header2Hash($) { sub LGTV_WebOS_Header2Hash($) {
my ( $string ) = @_; my $string = shift;
my %hash = (); my %hash = ();
foreach my $line (split("\r\n", $string)) { foreach my $line (split("\r\n", $string)) {
@ -1258,42 +1265,14 @@ sub LGTV_WebOS_Header2Hash($) {
return \%hash; return \%hash;
} }
sub LGTV_WebOS_PreResponseProsessing($$) { sub LGTV_WebOS_FormartStartEndTime($) {
my ($hash,$json) = @_; my $string = shift;
my $name = $hash->{NAME};
Log3 $name, 4, "LGTV_WebOS ($name) - pre processing response data"; my @timeArray = split(',', $string);
my $len = length($json); return "$timeArray[0]-$timeArray[1]-$timeArray[2] $timeArray[3]:$timeArray[4]:$timeArray[5]";
my @letterArray = split("",$json);
my $letter = "";
my $count = 0;
my $marker = 0;
my $corrected_json;
for(my $i = 0; $i < $len; $i++) {
$marker = 1 if($count > 0);
$letter = $letterArray[0];
$count++ if($letter eq '{');
$count-- if($letter eq '}');
$corrected_json .= $letter if($count > 0);
if( $count == 0 and $marker == 1 ) {
$marker = 0;
$corrected_json .= '}';
return $corrected_json;
}
shift(@letterArray);
}
} }