Controlando la Raspberry Pi desde el móvil

Print Friendly, PDF & Email

Hoy os voy a poner un post de los que me gustan, son sencillísimos y quedan chulísimos! Bueno, si tenemos alguna Raspberry Pi y tenemos algún comando que queremos que se pueda ejecutar fácilmente desde el móvil como encender alguna luz de casa, o cambiar un canal de TV de nuestro Kodi, este es tu post! Facil, sencillo y para toda la familia!

 

Manejar-Raspberry-por-Web-00-bujarra

Lo dicho, si tenemos algún script por ahí y queremos poder ejecutarlo desde cualquier dispositivo móvil (iOS, Android…) o desde cualquier navegador… lo primero será tener instalado Apache2 y crear un archivo PHP, un JS y subir una imagen PNG para el icono. Al pulsar desde el navegador el botón ON que saldrá en la web ejecutará el archivo .sh que digamos, lo que haremos será ‘añadir a la pantalla de inicio’ dicho acceso directo a esa URL y el móvil bien el iPhone/iPad/Androide nos creará una app con el icono, que al pulsarlo ejecutará nuestro programa en la Pi.

 

Os dejo unos pantallazos de mi móvil de cómo se puede controlar cualquier canal de TV, cualquier dispositivo que tengamos, como encender/apagar la calefacción, subir/bajar las persianas, encender/apagar/regular las luces de la casa, encender/apagar la alarma…

 

Lo dicho, primero instalaremos los requisitos:

[sourcecode]sudo apt-get install apache2 php5 libapache2-mod-php5[/sourcecode]

 

Cambiaremos el usuario que ejecutará apache2 (opcional, creo recordar que lo hice para los comandos que llevan audio), editamos el fichero ‘/etc/apache2/envvars’, corrigiendo el usuario:

[sourcecode]export APACHE_RUN_USER=pi
export APACHE_RUN_GROUP=pi[/sourcecode]

 

Y reiniciamos Apache:

[sourcecode]sudo /etc/init.d/apache2 restart[/sourcecode]

 

Os paso un par de archivos, un PHP y un JS, ahora que los documento también veo lineas que sobran, si queréis las corregís 😉 si no, da igual que os funcionará también! Este archivo PHP es un formulario que al pulsar el boton “On” ejecutará el script ‘/home/pi/la6_enciende.sh’ que veréis más adelante que pone La Sexta en mi TV. Todo ello, obviamente en ‘/var/www/’:

la6.php

[sourcecode]
<html>
<head>
<title>Domotica casa</title>
<link rel="stylesheet" type="text/css" href="./css/style.css" />
<link rel="apple-touch-icon" href="la6.png">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="./amcharts/amcharts.js" type="text/javascript"></script>
<script type="text/javascript" src="./js/common.js"></script>
<script type="text/javascript" src="la6.js"></script>
</head>
<body>
<form id="relay" action="remote_relay.php" method="GET">
<input type="hidden" name="total" id="total" value="">
<input type="button" id="La6submitOn" style="border:1px solid #000; font-size:40px;" value="On" onClick="La6relayOn()"/>
</form>
<?php

$state = $_GET["total"];

if ($state == "La6on"){
exec("/home/pi/la6_enciende.sh");
}
?>
<script type=’text/javascript’>
self.close();
</script>
</body>
</html>
[/sourcecode]

la6.js

[sourcecode]window.onload = function(){
buttonOff = document.getElementById(‘La6submitOn’);
buttonOff.onClick = La6relayOn;
}

function La6relayOn(){

hidden = document.getElementById("total");
hidden.value = "La6on";

form = document.getElementById("relay");
form.method = "GET";
form.action = "la6.php";
form.submit();
}[/sourcecode]

Bien, con esto ya tenemos la posibilidad de ejecutar cualquier script de nuestras Raspberrys desde cualquier móvil de una forma agradable para el resto de la familia 😉 Acordaros de poner el archivo PNG con el icono que queréis que se vea!

Una cosa, la web PHP tiene 3 lineas que deberéis comentar la primera vez! Ya que la idea de la web PHP es que al pulsar desde el móvil y abrirse, ejecute el comando y luego la web se cierre automáticamente para no quedarse residual en el navegador del móvil. Y si no la comentamos, no podremos la primera vez agregarla como app al ‘Escritorio’ del móvil ya que se cerrará y no nos dará tiempo! Por lo que: Comentamos > La anclamos en pantalla de Inicio > Descomentamos. Líneas en cuestión:

[sourcecode]#&lt;script type=’text/javascript’&gt;
#     self.close();
#&lt;/script&gt;[/sourcecode]

 

Que nos queda? Algo interesante, si tenemos Kodi y tenemos el acceso remoto habilitado, sabremos que podemos manejarlo con aplicaciones tipo: Kodi Remote, Yatse, Kore… podemos con JSON administrarlo igual forma desde la shell de nuestra Pi, y crearnos un script que ejecute lo que queramos como es cambiar a un canal de TV, cambiar el idioma de la TV, grabar la TV…

 

Manejar-Raspberry-por-Web-01-bujarra

Lo primero será saber qué está mandando nuestra app de iOS/Android al Kodi, para ello, desde un PC escucharemos el puerto 9090 de Kodi, para ver qué le manda nuestro Yatse, Kodi Remote… así que ejecutamos:

[sourcecode]nc DIRECCION_IP_RASPBERRY 9090[/sourcecode]

Y esperamos…

 

Manejar-Raspberry-por-Web-02-bujarra

Teniendo netcat a la escucha, ya podremos pulsar el canal que querramos desde nuestra app del móvil y en pantalla, el nc nos sacará el comando que necesitaremos ejecutar posteriormente, o al menos una ayuda para saber el ID de cada canal de TV!

En mi caso pues, para poner La Sexta tendré que ejecutar el siguiente comando:

[sourcecode]echo ‘{"id":1,"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"channelid":93}}}’ | nc 192.168.1.200 9090[/sourcecode]

 

Ejemplo de parar TV:

[sourcecode]echo ‘{ "id": 1, "jsonrpc": "2.0", "method": "Player.Stop", "params": { "playerid": 1 } }’ | nc 192.168.1.200 9090[/sourcecode]

Ejemplo para cambiar el audio de la TV para que practiquemos el inglés!

[sourcecode]echo ‘{"jsonrpc": "2.0", "method": "Player.SetAudioStream", "params": { "playerid": 1, "stream": "next"}, "id": 1}’ | nc 192.168.1.200 9090[/sourcecode]

 

Etc, etc… guardamos dicho comando en un archivo .sh que podremos ejecutar al abrir la web PHP desde nuestro móvil! A disfrutarlo!

 

Posts recomendados

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir ;) . Disfrutar de los documentos!!!