View difference between Paste ID: wQJPKLbU and wq8q08AA
SHOW: | | - or go back to the newest paste.
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
);