21.07.2016, 19:41
(This post was last modified: 21.07.2016, 20:29 by Erwin van der Zwart.)
Hi Phongvucba.
Here is a script example for controlling Chromecast:
BR,
Erwin
Here is a script example for controlling Chromecast:
Code:
-- ****** Control Chromecast with 1 byte object version 1.0 created by Erwin van der Zwart ******* --
-- **************************************** SET PARAMETERS *************************************** --
-- Chromecast IP address
ip_chromecast = '192.168.10.23'
-- Additional info from browser about
-- http://192.168.10.23:8008/ssdp/device-desc.xml
-- http://192.168.10.23:8008/setup/scan_results
-- http://192.168.10.23:8008/setup/eureka_info?options=detail
-- http://192.168.10.23:8008/setup/supported_timezones
-- http://geeknizer.com/how-chromecast-works-chromecast-protocol-explained/
value = event.getvalue()
require 'socket.http'
function control_chromecast(uri, request)
local request_body = request
local response_body = { }
local res, code, response_headers = socket.http.request
{
url = "http://" .. ip_chromecast .. ":8008/" .. uri;
method = "POST";
headers =
{
["Content-Type"] = "application/x-www-form-urlencoded";
["Content-Length"] = #request_body;
};
source = ltn12.source.string(request_body);
sink = ltn12.sink.table(response_body);
}
return res, code, response_headers
end
-- Action on value 1
if value == 1 then
-- Start Youtube video
res, code, response_headers = control_chromecast('apps/YouTube', [[v=_iuBO1lkch8]])
end
-- Action on value 2
if value == 2 then
-- Stop Youtube video
res, code, response_headers = control_chromecast('apps/YouTube', [[DELETE]])
end
-- Action on value 3
if value == 3 then
-- Start Chromecast Homescreen
res, code, response_headers = control_chromecast('apps/ChromeCast', [[]])
end
-- Log results
resulthandling = false
if resulthandling == true then
-- Handler for results
log("Status:", res and "OK" or "FAILED")
log("HTTP code:", code)
log("Response headers:")
if type(response_headers) == "table" then
for k, v in pairs(response_headers) do
log(k, ":", v)
end
else
-- Would be nil, if there is an error
log("Not a table:", type(response_headers))
end
log("Response body:")
if type(response_body) == "table" then
log(table.concat(response_body))
else
end
end
Erwin