![]() |
|
Reboot Chromecast - Printable Version +- LogicMachine Forum (https://forum.logicmachine.net) +-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1) +--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8) +--- Thread: Reboot Chromecast (/showthread.php?tid=955) |
Reboot Chromecast - BjornHBrudeli - 23.08.2017 Hi, I'm struggling with controlling a Chromecast from LM. I'm using this script provided by Erwin: 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
endFrom my windows command line I can reboot the chromecast by doing this: curl -Lv -H Content-Type:application/json http://192.168.22.99:8008/setup/reboot -d "{""params"":""now""}" and start youtube with this: curl -Lv -H Content-Type:application/json http://192.168.22.99:8008/apps/YouTube -d v=_iuBO1lkch8 I would like to do a reboot and get the homescreen/screensaver running from the LM. I've added: Code: -- Action on value 4
if value == 4 then
-- Reboot Chromecast
res, code, response_headers = control_chromecast('setup/reboot', [[{params=now}]] )
endBut the response is 400 bad request (from Wireshark). I've tried changing the parameters to "{""params"":""now""}", [["{""params"":""now""}" ]] and all possible variations in between. I'm out of clue. Would anyone help me? Best regards Bjorn RE: Reboot Chromecast - BjornHBrudeli - 23.08.2017 I just needed to post here before I saw what I had to do: This script reboots the Chromecast: Code: require'socket.http'
response_body = {}
request_body = [[{"params":"now"}]]
socket.http.request{
url = "http://192.168.22.99:8008/setup/reboot";
method = "POST";
headers = {
["Content-Type"] = "application/json";
["Content-Length"] = string.len(request_body)
};
source = ltn12.source.string(request_body);
sink = ltn12.sink.table(response_body);
}I still cant force the screensaver back though. |