Subversion Repositories HomeAutomation

Rev

Rev 1954 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1954 Rev 2294
Line -... Line 1...
-
 
1
/*
-
 
2
 
-
 
3
Enable TCP interface (normally port 9090):
-
 
4
in System/Settings/Network/Services activate
-
 
5
Allow programs on this system to control XBMC for localhost access only
-
 
6
and Allow programs on other systems to control XBMC for access from other computers as well
-
 
7
 
-
 
8
http://wiki.xbmc.org/?title=JSON-RPC_API
-
 
9
 
-
 
10
 
-
 
11
https://groups.google.com/forum/#!msg/commandfusion/eYMgfNSfTuE/sdBuLO5TdeAJ
-
 
12
Quit        jsonrpc?{"jsonrpc":"2.0","method":"Application.Quit","id":1}
-
 
13
Home        jsonrpc?{"jsonrpc":"2.0","method":"Input.Home","id":1}
-
 
14
Update Vid      jsonrpc?{"jsonrpc":"2.0","method":"VideoLibrary.Scan","id":1}
-
 
15
Clean Vid       jsonrpc?{"jsonrpc":"2.0","method":"VideoLibrary.Clean","id":1}
-
 
16
Hibernate       jsonrpc?{"jsonrpc":"2.0","method":"System.Hibernate","id":1}
-
 
17
Reboot      jsonrpc?{"jsonrpc":"2.0","method":"System.Reboot","id":1}
-
 
18
30Sec Forward       jsonrpc?{"jsonrpc":"2.0","id":1,"method":"Player.Seek","params":{"playerid":1,"value":"smallforward"}}
-
 
19
30Sec Back      jsonrpc?{"jsonrpc":"2.0","id":1,"method":"Player.Seek","params":{"playerid":1,"value":"smallbackward"}}
-
 
20
10Min Forward       jsonrpc?{"jsonrpc":"2.0","id":1,"method":"Player.Seek","params":{"playerid":1,"value":"bigforward"}}
-
 
21
10Min Back      jsonrpc?{"jsonrpc":"2.0","id":1,"method":"Player.Seek","params":{"playerid":1,"value":"bigbackward"}}
-
 
22
Play/Pause      jsonrpc?{"jsonrpc":"2.0","id":1,"method":"Player.PlayPause","params":{"playerid":1}}
-
 
23
Stop        jsonrpc?{"jsonrpc":"2.0","id":1,"method":"Player.Stop","params":{"playerid":1}}
-
 
24
FF      jsonrpc?{"jsonrpc":"2.0","id":1,"method":"Player.SetSpeed","params":{"playerid":1,"speed":"increment"}}
-
 
25
Rew         jsonrpc?{"jsonrpc":"2.0","id":1,"method":"Player.SetSpeed","params":{"playerid":1,"speed":"decrement"}}
-
 
26
Enter       jsonrpc?{"jsonrpc":"2.0","method":"Input.Select","id":1}
-
 
27
Up      jsonrpc?{"jsonrpc":"2.0","method":"Input.Up","id":1}
-
 
28
Down        jsonrpc?{"jsonrpc":"2.0","method":"Input.Down","id":1}
-
 
29
Left        jsonrpc?{"jsonrpc":"2.0","method":"Input.Left","id":1}
-
 
30
Right       jsonrpc?{"jsonrpc":"2.0","method":"Input.Right","id":1}
-
 
31
Back        jsonrpc?{"jsonrpc":"2.0","method":"Input.Back","id":1}
-
 
32
Subtitle Off         jsonrpc?{"jsonrpc":"2.0","id":1,"method":"Player.SetSubtitle","params":{"playerid":1,"subtitle":"off"}}
-
 
33
Subtitle On      jsonrpc?{"jsonrpc":"2.0","id":1,"method":"Player.SetSubtitle","params":{"playerid":1,"subtitle":"on"}}
-
 
34
Select      jsonrpc?{"jsonrpc":"2.0","method":"Input.Select","id":1}
-
 
35
Suspend      jsonrpc?{"jsonrpc":"2.0","method":"System.Suspend","id":1}
-
 
36
Menu        jsonrpc?{"jsonrpc":"2.0","method":"Input.ContextMenu","id":1}
-
 
37
Info         jsonrpc?{"jsonrpc":"2.0","method":"Input.Info","id":1}
-
 
38
Show        OSD jsonrpc?{"jsonrpc":"2.0","method":"Input.ShowOSD","id":1}
-
 
39
 
-
 
40
*/
1
 
41
 
2
var Xbmc_Socket_Id = null;
42
var Xbmc_Socket_Id = null;
3
var Xbmc_Susbscribers = [];
43
var Xbmc_Susbscribers = [];
4
var Xbmc_Sessions = {};
44
var Xbmc_Sessions = {};
-
 
45
Xmbc_SeekValues      = function() { return [ "30sec", "10min" ]; };
5
 
46
 
6
function Xbmc_SendCommand(command_name, params, callback)
47
function Xbmc_SendCommand(command_name, params, callback)
7
{
48
{
8
  var new_id = 1;
49
  var new_id = 1;
9
 
50
 
Line 39... Line 80...
39
function Xbmc_Connect(host, port)
80
function Xbmc_Connect(host, port)
40
{
81
{
41
  if (Xbmc_IsConnected())
82
  if (Xbmc_IsConnected())
42
  {
83
  {
43
    Xbmc_Disconnect();
84
    Xbmc_Disconnect();
44
  }
85
  }
45
 
86
 
46
  Log("Connecting to XBMC at " + host + ":" + port + "...");
87
  Log("Connecting to XBMC at " + host + ":" + port + "...");
47
 
88
 
48
  Xbmc_Socket_Id = Socket_Connect(host, port, function(socket_id, data)
89
  Xbmc_Socket_Id = Socket_Connect(host, port, function(socket_id, data)
49
  {
90
  {
50
    var json_data_list = parse_json_rpc(data)
91
    var json_data_list = parse_json_rpc(data)
51
   
92
   
Line 85... Line 126...
85
      Log("Got connect on socket id " + socket_id);
126
      Log("Got connect on socket id " + socket_id);
86
     
127
     
87
      for (var n = 0; n < Xbmc_Susbscribers.length; n++)
128
      for (var n = 0; n < Xbmc_Susbscribers.length; n++)
88
      {
129
      {
89
        Xbmc_Susbscribers[n]("connected", socket_id);
130
        Xbmc_Susbscribers[n]("connected", socket_id);
90
      }
131
      }
91
    }
132
    }
92
    else if (state == 1) // Disconnected
133
    else if (state == 1) // Disconnected
93
    {
134
    {
94
      Log("Got disconnect on socket id " + socket_id);
135
      Log("Got disconnect on socket id " + socket_id);
95
     
136
     
96
      if (socket_id == Xbmc_Socket_Id)
137
      if (socket_id == Xbmc_Socket_Id)
97
      {
138
      {
98
        Xbmc_Socket_Id = null;
139
        Xbmc_Socket_Id = null;
99
      }
140
      }
100
     
141
     
101
      for (var n = 0; n < Mbb_Susbscribers.length; n++)
142
      for (var n = 0; n < Mbb_Susbscribers.length; n++)
102
      {
143
      {
103
        Xbmc_Susbscribers[n]("disconnected", socket_id);
144
        Xbmc_Susbscribers[n]("disconnected", socket_id);
104
      }
145
      }
105
    }
146
    }
106
  });
147
  });
107
 
148
 
108
  if (Xbmc_Socket_Id != 0)
149
  if (Xbmc_Socket_Id != 0)
109
  {
150
  {
110
    Log("Connected to XBMC at " + host + ":" + port + " successfully!");
151
    Log("Connected to XBMC at " + host + ":" + port + " successfully!");
111
    return true;
152
    return true;
112
  }
153
  }
113
 
154
 
114
  Log("Failed to connect to XBMC at " + host + ":" + port + "!");
155
  Log("Failed to connect to XBMC at " + host + ":" + port + "!");
115
 
156
 
116
  Xbmc_Socket_Id = null;
157
  Xbmc_Socket_Id = null;
117
  return false;
158
  return false;
118
}
159
}
119
Console_RegisterCommand(Xbmc_Connect);
160
Console_RegisterCommand(Xbmc_Connect);
Line 154... Line 195...
154
Console_RegisterCommand(Xbmc_Down);
195
Console_RegisterCommand(Xbmc_Down);
155
 
196
 
156
function Xbmc_Select()
197
function Xbmc_Select()
157
{
198
{
158
  return Xbmc_SendCommand("Input.Select", {});
199
  return Xbmc_SendCommand("Input.Select", {});
159
}
200
}
160
Console_RegisterCommand(Xbmc_Select);
201
Console_RegisterCommand(Xbmc_Select);
161
 
202
 
162
function Xbmc_Back()
203
function Xbmc_Back()
163
{
204
{
164
  return Xbmc_SendCommand("Input.Back", {});
205
  return Xbmc_SendCommand("Input.Back", {});
165
}
206
}
166
Console_RegisterCommand(Xbmc_Back);
207
Console_RegisterCommand(Xbmc_Back);
167
 
208
 
168
function Xbmc_PlayPause()
209
function Xbmc_PlayPause()
169
{
210
{
170
  //Xbmc_SendCommand("Player.GetActivePlayers", {});
211
  //Xbmc_SendCommand("Player.GetActivePlayers", {});
171
 
212
 
172
  return Xbmc_SendCommand("Player.PlayPause", { "playerid" : 1 });
213
  return Xbmc_SendCommand("Player.PlayPause", { "playerid" : 1 });
173
}
214
}
174
Console_RegisterCommand(Xbmc_PlayPause);
215
Console_RegisterCommand(Xbmc_PlayPause);
175
 
216
 
176
function Xbmc_Stop()
217
function Xbmc_Stop()
177
{
218
{
178
  return Xbmc_SendCommand("Player.Stop", { "playerid" : 1 });
219
  return Xbmc_SendCommand("Player.Stop", { "playerid" : 1 });
179
}
220
}
180
Console_RegisterCommand(Xbmc_Stop);
221
Console_RegisterCommand(Xbmc_Stop);
181
 
222
 
-
 
223
function Xbmc_Forward(value)
-
 
224
{
-
 
225
  seekValue = "smallforward";
-
 
226
 
-
 
227
  if (value == "30sec")
-
 
228
    seekValue = "smallforward";
-
 
229
  if (value == "10min")
-
 
230
    seekValue = "bigforward";
-
 
231
 
-
 
232
  return Xbmc_SendCommand("Player.Seek", { "playerid" : 1, "value" : seekValue });
-
 
233
}
-
 
234
Console_RegisterCommand(Xbmc_Forward, function(arg_index, args) { return Console_StandardAutocomplete( arg_index, args, Xmbc_SeekValues() ); } );
-
 
235
 
-
 
236
function Xbmc_Backward(value)
-
 
237
{
-
 
238
  seekValue = "smallforward";
-
 
239
 
-
 
240
  if (value == "30sec")
-
 
241
    seekValue = "smallforward";
-
 
242
  if (value == "10min")
-
 
243
    seekValue = "bigforward";
-
 
244
 
-
 
245
  return Xbmc_SendCommand("Player.Seek", { "playerid" : 1, "value" : seekValue });
-
 
246
}
-
 
247
Console_RegisterCommand(Xbmc_Backward, function(arg_index, args) { return Console_StandardAutocomplete( arg_index, args, Xmbc_SeekValues() ); } );