This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

VIERA control class

By: a guest on Apr 22nd, 2012  |  syntax: PHP  |  size: 5.50 KB  |  views: 2,467  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <?php
  2. class vieraControl
  3. {
  4.         public $host;
  5.        
  6.         function __construct($hostname = false)
  7.         {
  8.                 if ($hostname)
  9.                         $this->host = $hostname;
  10.         }
  11.        
  12.         function createRequest($url, $urn, $action, $option = array())
  13.         {
  14.  
  15. $input = '<?xml version="1.0" encoding="utf-8"?>
  16. <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  17. <s:Body>
  18.  <u:'.$action.' xmlns:u="urn:'.$urn.'">
  19.  '.$option['args'].'
  20.  </u:'.$action.'>
  21. </s:Body>
  22. </s:Envelope>';
  23.                 $curl = curl_init();
  24.                 curl_setopt($curl, CURLOPT_URL, 'http://'.$this->host.':55000/'.$url);
  25.                 curl_setopt($curl, CURLOPT_POST, 1);
  26.                 curl_setopt($curl, CURLOPT_HTTPHEADER, array('SOAPACTION: "urn:'.$urn.'#'.$action.'"'));  
  27.                 curl_setopt($curl, CURLOPT_POSTFIELDS, $input);
  28.                 //curl_setopt($curl, CURLOPT_HEADER, true);
  29.                 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  30.                 $data = curl_exec($curl);
  31.                
  32.                 if ($option['returnXml'])
  33.                         return $data;
  34.                 else
  35.                         return $this->getResponse($data);
  36.         }
  37.        
  38.         function getResponse($data)
  39.         {
  40.                 $xml = simplexml_load_string($data);
  41.                 if ($xml === false)
  42.                         return false;
  43.                 $ns = $xml->getNamespaces(true);
  44.                 $soap = $xml->children($ns['s']);
  45.                 $res = $soap->children($ns['u'])->children();
  46.                 return $res[0];
  47.         }
  48.        
  49.         function getVolume()
  50.         {
  51.                 return $this->createRequest(
  52.                         'dmr/control_0',
  53.                         'schemas-upnp-org:service:RenderingControl:1',
  54.                         'GetVolume',
  55.                         array('args' => '<InstanceID>0</InstanceID><Channel>Master</Channel>')
  56.                 );
  57.         }
  58.        
  59.         function sendKey($keyCode)
  60.         {
  61.                 return $this->createRequest(
  62.                         'nrc/control_0',
  63.                         'panasonic-com:service:p00NetworkControl:1',
  64.                         'X_SendKey',
  65.                         array(
  66.                                 'args' => '<X_KeyEvent>' . $keyCode . '</X_KeyEvent>',
  67.                                 'returnXml' => true
  68.                         )
  69.                 );
  70.         }
  71.        
  72.         function getMute()
  73.         {
  74.                 return $this->createRequest(
  75.                         'dmr/control_0',
  76.                         'schemas-upnp-org:service:RenderingControl:1',
  77.                         'GetMute',
  78.                         array('args' => '<InstanceID>0</InstanceID><Channel>Master</Channel>')
  79.                 );
  80.         }
  81.        
  82.         function setMute($enable = false)
  83.         {
  84.                 $data = ($enable) ? '1' : '0';
  85.                 return $this->createRequest(
  86.                         'dmr/control_0',
  87.                         'schemas-upnp-org:service:RenderingControl:1',
  88.                         'SetMute',
  89.                         array('args' => '<InstanceID>0</InstanceID><Channel>Master</Channel><DesiredMute>'.$data.'</DesiredMute>')
  90.                 );
  91.         }
  92.  
  93.         function setVolume($volume = '0')
  94.         {
  95.                 $volume = intval($volume);
  96.                 if ($volume > 100 || $volume < 0)
  97.                         throw new Exception('Bad request to volume control. Must be between 0 and 100');
  98.                        
  99.                 return $this->createRequest(
  100.                         'dmr/control_0',
  101.                         'schemas-upnp-org:service:RenderingControl:1',
  102.                         'SetVolume',
  103.                         array('args' => '<InstanceID>0</InstanceID><Channel>Master</Channel><DesiredVolume>'.$volume.'</DesiredVolume>', 'returnXml' => true)
  104.                 );
  105.         }
  106.        
  107.         function sendString($string)
  108.         {
  109.                 return $this->createRequest(
  110.                         'nrc/control_0',
  111.                         'panasonic-com:service:p00NetworkControl:1',
  112.                         'X_SendString',
  113.                         array(
  114.                                 'args' => '<X_String>' . $string . '</X_String>',
  115.                                 'returnXml' => true
  116.                         )
  117.                 );             
  118.         }
  119. }
  120.  
  121. $keys = array(
  122.         "NRC_CH_DOWN-ONOFF", // channel down
  123.         "NRC_CH_UP-ONOFF", // channel up
  124.         "NRC_VOLUP-ONOFF", // volume up
  125.         "NRC_VOLDOWN-ONOFF", // volume down
  126.         "NRC_MUTE-ONOFF", // mute
  127.         "NRC_TV-ONOFF", // TV
  128.         "NRC_CHG_INPUT-ONOFF", // AV,
  129.         "NRC_RED-ONOFF", // red
  130.         "NRC_GREEN-ONOFF", // green
  131.         "NRC_YELLOW-ONOFF", // yellow
  132.         "NRC_BLUE-ONOFF", // blue
  133.         "NRC_VTOOLS-ONOFF", // VIERA tools
  134.         "NRC_CANCEL-ONOFF", // Cancel / Exit
  135.         "NRC_SUBMENU-ONOFF", // Option
  136.         "NRC_RETURN-ONOFF", // Return
  137.         "NRC_ENTER-ONOFF", // Control Center click / enter
  138.         "NRC_RIGHT-ONOFF", // Control RIGHT
  139.         "NRC_LEFT-ONOFF", // Control LEFT
  140.         "NRC_UP-ONOFF", // Control UP
  141.         "NRC_DOWN-ONOFF", // Control DOWN
  142.         "NRC_3D-ONOFF", // 3D button
  143.         "NRC_SD_CARD-ONOFF", // SD-card
  144.         "NRC_DISP_MODE-ONOFF", // Display mode / Aspect ratio
  145.         "NRC_MENU-ONOFF", // Menu
  146.         "NRC_INTERNET-ONOFF", // VIERA connect
  147.         "NRC_VIERA_LINK-ONOFF", // VIERA link
  148.         "NRC_EPG-ONOFF", // Guide / EPG
  149.         "NRC_TEXT-ONOFF", // Text / TTV
  150.         "NRC_STTL-ONOFF", // STTL / Subtitles
  151.         "NRC_INFO-ONOFF", // info
  152.         "NRC_INDEX-ONOFF", // TTV index
  153.         "NRC_HOLD-ONOFF", // TTV hold / image freeze
  154.         "NRC_R_TUNE-ONOFF", // Last view
  155.         "NRC_POWER-ONOFF", // Power off
  156.        
  157.         "NRC_REW-ONOFF", // rewind
  158.         "NRC_PLAY-ONOFF", // play
  159.         "NRC_FF-ONOFF", // fast forward
  160.         "NRC_SKIP_PREV-ONOFF", // skip previous
  161.         "NRC_PAUSE-ONOFF", // pause
  162.         "NRC_SKIP_NEXT-ONOFF", // skip next
  163.         "NRC_STOP-ONOFF", // stop
  164.         "NRC_REC-ONOFF", // record
  165.        
  166.         // numeric buttons
  167.         "NRC_D1-ONOFF", "NRC_D2-ONOFF", "NRC_D3-ONOFF", "NRC_D4-ONOFF", "NRC_D5-ONOFF",
  168.         "NRC_D6-ONOFF", "NRC_D7-ONOFF", "NRC_D8-ONOFF", "NRC_D9-ONOFF", "NRC_D0-ONOFF",
  169.        
  170.         // The below commands were not avaliable in the iPhone app when using my
  171.         // VIERA G30 - they were pulled out from a disassembly instead
  172.         // only these top three did anything on my TV
  173.        
  174.         "NRC_P_NR-ONOFF", // P-NR (Noise reduction)
  175.         "NRC_OFFTIMER-ONOFF", // off timer
  176.         "NRC_R_TUNE-ONOFF", // Seems to do the same as INFO
  177.        
  178.         "NRC_CHG_NETWORK-ONOFF",
  179.         "NRC_CC-ONOFF",
  180.         "NRC_SAP-ONOFF",
  181.         "NRC_RECLIST-ONOFF",
  182.         "NRC_DRIVE-ONOFF",
  183.         "NRC_DATA-ONOFF",
  184.         "NRC_BD-ONOFF",
  185.         "NRC_FAVORITE-ONOFF",
  186.         "NRC_DIGA_CTL-ONOFF",
  187.         "NRC_VOD-ONOFF",
  188.         "NRC_ECO-ONOFF",
  189.         "NRC_GAME-ONOFF",
  190.         "NRC_EZ_SYNC-ONOFF",
  191.         "NRC_PICTAI-ONOFF",
  192.         "NRC_MPX-ONOFF",
  193.         "NRC_SPLIT-ONOFF",
  194.         "NRC_SWAP-ONOFF",
  195.         "NRC_R_SCREEN-ONOFF",
  196.         "NRC_30S_SKIP-ONOFF",
  197.         "NRC_PROG-ONOFF",
  198.         "NRC_TV_MUTE_ON-ONOFF",
  199.         "NRC_TV_MUTE_OFF-ONOFF",
  200.         "NRC_DMS_CH_UP-ONOFF",
  201.         "NRC_DMS_CH_DOWN-ONOFF"
  202.  
  203. );
clone this paste RAW Paste Data