0Alarm Clock LogoPHP / JavaScript to wake a PC remotely

I have an HTPC and a net­work serv­er on my net­work.  My serv­er is always on, but the HTPC sleeps when it is not in use.  If I want to sched­ule record­ings remotely I need a way to wake the HTPC.  The solu­tion I came up with is to provide a webpage on my serv­er (pass­word pro­tec­ted) that wakes the HTPC and then redir­ects to the web inter­face of the remote con­trol app of the HTPC.  Below is the code for any­one interested…

[php language=“htmlscript”]<html>
<meta http-equiv=‘refresh’ content=’11;url=address of htpc here’ />
<script type=“text/javascript”>
// time is the num­ber of seconds left
// name is the text part of the con­tain­er to insert count­down in
// num is the unique id of the con­tain­er. Allows for more than 1 per page
func­tion countdown(time, name, num)
// grab the ele­ment object of the count­down container
count­down­Div = document.getElementById(name + num);
// cal­cu­late num­ber of minutes from the seconds
minutes = Math.floor(time / 60);
// remainder is num­ber of seconds
seconds = time % 60;
// add the cur­rent count­down dis­play to the con­tain­er specified
countdownDiv.innerHTML = ‘after ’ + seconds + ’ seconds, please wait’;
if(time == 1)countdownDiv.innerHTML = ‘after ’ + seconds + ’ second, please wait’;
// if time is up remove the edit div, oth­er­wise repeat every second
if(time <= 0) countdownDiv.innerHTML = ‘now…’;
else setTimeout(‘countdown(‘ + –time + ‘,“ ‘ + name + ’ ”,“ ‘ + num + ‘”);’, 1000);
<body bgcolor=‘#000022’ style=‘text-align: cen­ter; col­or: white; pad­ding-top: 30px;’>
The TV inter­face will auto­mat­ic­ally load <div id=“div_name1” style=“display:inline;”></div>
<script type=“text/javascript”>countdown(12, “div_name”, 1)</script>
$addr_byte = explode(‘:’, “MAC Address of htpc here”);
$hw_addr = ”;
for ($a=0; $a <6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a]));
$msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
for ($a = 1; $a <= 16; $a++) $msg .= $hw_addr;
$s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$opt_ret = socket_set_option($s, 1, 6, TRUE);
if(socket_sendto($s, $msg, strlen($msg), 0, “loc­al sub­net address here”, “7”)) {socket_close($s);return TRUE;}else {return FALSE;}

Think we've missed something? Let us know by commenting below. If you would like to subscribe please use the subscribe link on the menu at the top right. You can also share this with your friends by using the social links below. Cheers.

Leave a Reply