Panasonic Viera plasma: IP control...?!?

It looked like the wireless nic was a USB module that comes pre installed via a screw on the back. However, the TV is mounted on the wall now so I can't investigate.

Hotel mode (see above) and service mode (hold vol- on the TV while pressing info on the remote three times) had nothing to help.
 
Here's a link with some IR codes that are needed for the Viera plasmas. Most codes seem to work on the ST50. I just pasted the CCF codes directly into Premise Builder. You'll still need to learn IR codes for the transport commands as these have changed since the 2007 model.

ftp://ftp.panasonic....toCCFformat.pdf
 
Hi etc6849,
I just registred to post here because I have also been searching for the IP control protocol for Panasonic TV's with no success, and I just recently managed to reverse engineer the protocol. Could perhaps save you a bit of work :)

I was using the iPhone VIERA remote and captured the packets it sent to the TV, and it is using SOAP (looks to be using some proprietary Panasonic extensions to the DLNA protocol, but I don't know much about that so I'm not sure)

This is an example of a request send for the MUTE key: http://pastebin.com/h2DQMRxs
10.0.1.155 is the IP of the television I am using, and the code for the key is NRC_MUTE-ONOFF

The application only seems to be capable of sending commands that the (normal) remote control can also send. Unfortunately this looks to mean that it is not possible for instance to switch to a specific input.
All key send actions begin with NRC_ followed by the command, and either -ON, -OFF, or -ONOFF at the end. ONOFF does the same as clicking the key would usually do. ON makes the key "stuck" until an OFF command is sent. For instance, if "NRC_VOLDOWN_ON" is sent, the volume will turn all the way down by itself.

I have created a PHP class for sending the commands. You probably can't use this, but it should clarify the syntax necessary. It also contains a list of commands that I captured from the iPhone application, as well as a few that I extracted from disassembling the application itself. Most of these didn't have any effect on my television, but a few of them did. This may mean that there are other commands that can be used but which we do not know about - since I have't been able to find any description of this protocol elsewhere though, it may be difficult to find them.

PHP class link: http://pastebin.com/wQJPKLbU


The sending of remote control keys that I described above (the SOAP action) is called X_SendKey. There also exists a function called X_String which can send a string to the TV - this only does anything if you are in a place where text can be input, like the Youtube application.

Additionally the TV also supports a subset of the normal DNLA protocol which could be usefull for control - you are able to read the volume level and set it to a specific number, as well as mute the TV.

My TV is a TX-P46G30Y. It doesn't support the newest functions of the iPhone control app (web browser, cursor control, gamepad control) so I was not able to look at the syntax for those.


If you have any questions just ask - I'm pretty sure I haven't discovered everything there is to know about this protocol, but seeing as there doesn't appear to be any information out there regaring it I was hoping it might come in handy for you.

I'm looking to replace my current professional series Panny plasma with either a GT50 or ST50, and I need to control it. Right now, I control my plasma using RS232, but I see that the GT and ST series plasmas don't have RS232. Then I came across this thread about IP control, which sounds promising. Did anyone get this to work? It's not clear to me. What I'd like is very simple - power on, power off, and for extra credit - to be able to receive a packet when the power is turned on or off. Is that doable? I'd rather not order one and set it up - just to find out I can't control it after all!

Thanks.

- Dave
 
I was able to get the IP control to work; however, I need the command for the dash/space/pound button. I was hoping someone that has done the captures could try using the app and capturing the command for this button.
 
Hi all, first post just to thank all on this thread for sending me in the right direction re controlling my Panny XT50 series over IP (even though I have the ios app you just can't stop a fiddler)

I thought I'd share the php page that I am running on my soap enabled linux server as it may serve as a help to someone. I currently just pass the required button press in the URL for example http://192.168.0.10/pan.php?action=NRC_MUTE-ONOFF and this works great.

Now for the 'bit of help please' part; What my aim all along has been to achieve is to push a web page to the panasonic. I know that this can be done as the ipad app lets you do it.I need to push a page from my server that will display the caller id of an incoming call. I previously had this set up with my rasperrypi pushing the page to a NeTV box (see bunnie at kosagi.com if you want more info) but want to get the same thing working with one less box so if anyone can provide me with some help on the pushing of a webpage to the XT50 (I'm sure I read about sending a string somewhere) then your help will be appreciated.

This is my pan.php

Code:
<?php
$action = $_GET['action'];
$input = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$input .= "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n";
$input .= "<s:Body>\n";
$input .= "<u:X_SendKey xmlns:u=\"urn:panasonic-com:service:p00NetworkControl:1\">\n";
$input .= "<X_KeyEvent>";
$input .= $action;
$input .= "</X_KeyEvent>\n";
$input .= "</u:X_SendKey>\n";
$input .= "</s:Body>\n";
$input .= "</s:Envelope>\n\n";
$header = array(
"Content-type: text/xml;charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPACTION: \"urn:panasonic-com:service:p00NetworkControl:1#X_SendKey\"",
"Content-Length: ".strlen($input),
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://192.168.0.100:55000/nrc/control_0');
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $input);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  if(curl_exec($curl) === false) {
    $err = 'Curl error: ' . curl_error($curl);
    curl_close($curl);
    print $err;
  } else {
    curl_close($curl);
    print 'Operation completed without any errors';
  }
?>
 
Just bought a ST60.  Do not receive for 1 week.  I have been using iMasterControl app with iPhone.  It can send HTTP control by POST or GET,  This appears to be the answer for me to control via HTTP vs IR via global cache.   This would probably work with iRule.  I am on a trial of this iPhone app and I believe one can use HTTP/POST messaging with this app also.  I will follow up when TV is working and whether this will work with these "programmable" iPhone apps vs the company's app limited to their product.
 
I haven't received my Pani yet.  But the manual states there is a 1/8" jack that can take RS232 control via a RS232 to 1/8" convertor.  This is on a new 2013 ST60.  I downloaded the codes for this as a service manual/input of codes found on the remote.
 
Got my Pany.  Yeah.  Took me awhile to use the php scipt with iMasterControl.  This program allows one to use a prolog and epilog so you only need to add the body (command) to each command button.  It took awhile to translate the differences in this program.  It asked for an absolute path,  this ended up being /nrc/control_0.  It also requires a hard return and line feed.  I mistakenly put an exta one so it didn't work at first.
 
I would be interested in the on command.  The TV iPhone app does not support this as documented above.  
 
Thanks for the help, never could have done this without this post.
 
My remote works well.  I have not been able to figure out the dash codes.  Looked all over for on command.  As stated above it is probably a software code that is only included on VT/GT/ZT models.
 
If someone finds the dash or other codes, please add them to this forum.
 
I'm very interested, and subbed.

I'm waiting for truly smart TVs where it will give feedback/status on current source, volume etc, and one command to swap sources. IE HDMI 2, not send a source switch command similar to pushing input.
 
Hi Folks,
 
I have a problem with HTTP Request. I'm trying test this in REST Client, extension for chrome browser, so I translated this php code into plain text
 
my URL
http://COM-MID1:55000/nrc/control_0/
 
Header:
Accept: text/xml
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/xml;charset="utf-8"
SOAPACTION: "urn:panasonic-com:service:p00NetworkControl:1#X_SendKey\"
 
METHOD: POST
 
Payload Data (Raw):
<?xml version"1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:X_SendKey xmlns:u="urn:panasonic-com:service:p00NetworkControl:1">
<X_KeyEvent>NRC_MUTE-ONOFF</X_KeyEvent>
</u:X_SendKey>
</s:Body>
</s:Envelope>
 
Every time I get response error 400 - Bad Request.
 
Can You please tell me what I did wrong? I also try to add/remove some header element, encode payload, but I always got the same error.
Thank You!
 
Filip
 
 
installer69 said:
Hi all, first post just to thank all on this thread for sending me in the right direction re controlling my Panny XT50 series over IP (even though I have the ios app you just can't stop a fiddler)

I thought I'd share the php page that I am running on my soap enabled linux server as it may serve as a help to someone. I currently just pass the required button press in the URL for example http://192.168.0.10/pan.php?action=NRC_MUTE-ONOFF and this works great.

Now for the 'bit of help please' part; What my aim all along has been to achieve is to push a web page to the panasonic. I know that this can be done as the ipad app lets you do it.I need to push a page from my server that will display the caller id of an incoming call. I previously had this set up with my rasperrypi pushing the page to a NeTV box (see bunnie at kosagi.com if you want more info) but want to get the same thing working with one less box so if anyone can provide me with some help on the pushing of a webpage to the XT50 (I'm sure I read about sending a string somewhere) then your help will be appreciated.

This is my pan.php


Code:
<?php
$action = $_GET['action'];
$input = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$input .= "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n";
$input .= "<s:Body>\n";
$input .= "<u:X_SendKey xmlns:u=\"urn:panasonic-com:service:p00NetworkControl:1\">\n";
$input .= "<X_KeyEvent>";
$input .= $action;
$input .= "</X_KeyEvent>\n";
$input .= "</u:X_SendKey>\n";
$input .= "</s:Body>\n";
$input .= "</s:Envelope>\n\n";
$header = array(
"Content-type: text/xml;charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPACTION: \"urn:panasonic-com:service:p00NetworkControl:1#X_SendKey\"",
"Content-Length: ".strlen($input),
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://192.168.0.100:55000/nrc/control_0');
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $input);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  if(curl_exec($curl) === false) {
    $err = 'Curl error: ' . curl_error($curl);
    curl_close($curl);
    print $err;
  } else {
    curl_close($curl);
    print 'Operation completed without any errors';
  }
?>
 
Wondering if there discrete http controls for the inputs 1,2,3 and component?  Still have not found dash.  Tried hypen and tried hash, no luck.  Any ideas and I will try inputing and give results.
 
N49atv said:
I'm very interested, and subbed.

I'm waiting for truly smart TVs where it will give feedback/status on current source, volume etc, and one command to swap sources. IE HDMI 2, not send a source switch command similar to pushing input.
Most of this already can be done.

The GT50 model supports UPnP eventing for volume, mute, and perhaps current source I haven't really look that deeply. What this means is that you need to create a listener and suscribe to the UPnP event with a callback pointing to your listener.

Also, you can change sources directly with one command. The only one i haven't figured out is TV.
 
Rokujuuyon -
I'm trying to just send some basic command (on/off, volume, input select) to my viera. 
I have a dedicated windows 7 PC to runt he commands.  Can you explain how I would use your protocol?  I'm a newbie, so more details the better - eg. special software or program??
 
Thanks!
 
Back
Top