Controlant la Raspberry Pi des del mòbil

Avui us vaig posar un post dels que m'agraden, són senzilles i queden xulíssims! Bo, si tenim alguna Raspberry Pi i tenim algun comandament que volem que es pugui executar fàcilment des del mòbil com encendre alguna llum de casa, o canviar un canal de TV del nostre Kodi, aquest és el teu post! Facil, senzill i per a tota la família!

 

Manejar-Raspberry-per-Web-00-bujarra

El que s'ha dit, si tenim algun script per aquí i volem poder executar-lo des de qualsevol dispositiu mòbil (iOS, Android…) o des de qualsevol navegador… el primer serà tenir instal·lat Apache2 i crear un arxiu PHP, un JS i pujar una imatge PNG per a la icona. En pulsar des del navegador el botó ON que sortirà al web executarà l'arxiu .sh que diguem, el que farem serà 'afegir a la pantalla d'inici’ aquest accés directe a aquesta URL i el mòbil bé l'iPhone/iPad/Androide ens crearà una app amb la icona, que en polsar-lo executarà el nostre programa a la Pi.

 

Us deixo unes pantalles del meu mòbil de com es pot controlar qualsevol canal de TV, qualsevol dispositiu que tinguem, com encendre/apagar la calefacció, pujar/abaixar les persianes, encendre/apagar/regular els llums de la casa, encendre/apagar l'alarma…

 

El que s'ha dit, primer instal·larem els requisits:

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

 

Canviarem l'usuari que executarà apatxe2 (opcional, crec recordar que ho faig per als comandaments que porten àudio), editem el fitxer '/etc/apache2/envvars', corregint l'usuari:

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

 

I reiniciem Apache:

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

 

Us passo un parell d'arxius, un PHP i un JS, ara que els document també veig línies que sobren, si voleu les corregís 😉 si no, dóna igual que us funcionarà també! Aquest arxiu PHP és un formulari que en polsar el boton “On” executarà el script '/home/pi/la6_enciende.sh’ que veureu més endavant que posa La Sexta a la meva TV. Tot això, òbviament a '/var/www/':

la6.php

[sourcecode]
<html>
<head>
<title>Domotica casa</title>
<link rel="stylesheet" type="text/css" href="./css/style.css" />
<link rel="icona-tàctil de poma" href="la6.png">
<meta http-equiv="Tipus de contingut" content="text/html;conjunt de caràcters = 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="ocult" nom="total" id="total" valor = "">
<input type="button" id="La6submitOn" style ="border:1px solid #000; font-size:40px;" value ="On" onClick="La6relayOn()"/>
</form>
<?php

$estat = _GET $["total"];

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

la6.js

[sourcecode]window.onload = funció(){
buttonOff = document.getElementById('La6submitOn');
buttonOff.onClick = La6relayOn;
}

funció La6relayOn(){

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

formulari = document.getElementById("relé");
form.method = "OBTENIR";
form.action = "la6.php";
formulari.enviar();
}[/sourcecode]

Bé, amb això ja tenim la possibilitat d'executar qualsevol script de les nostres Raspberrys des de qualsevol mòbil d'una forma agradable per a la resta de la família 😉 Acordaros de posar l'arxiu PNG amb la icona que voleu que es vegi!

Una cosa, la web PHP té 3 línies que haureu de comentar la primera vegada! Ja que la idea del web PHP és que en polsar des del mòbil i obrir-se, executi el comandament i després la web es tanqui automàticament per no quedar-se residual al navegador del mòbil. I si no la comentem, no podrem la primera vegada agregar-la com a app a l'Escriptori’ del mòbil ja que es tancarà i no ens donarà temps! Per la qual cosa: Comentem > L'ancorem en pantalla d'Inici > Descomentem. Línies en qüestió:

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

 

Que ens queda? Una cosa interessant, si tenim Kodi i tenim l'accés remot habilitat, sabrem que podem manejar-ho amb aplicacions tipus: Kodi Remote, Yatse, Kore… podem amb JSON administrar-ho igual forma des de la shell de la nostra Pi, i crear-nos un script que executi el que vulguem com és canviar a un canal de TV, canviar l'idioma de la TV, gravar la TV…

 

Manejar-Raspberry-per-Web-01-bujarra

El primer serà saber què està manant la nostra app d'iOS/Android al Kodi, per a això, des d'un PC escoltarem el port 9090 de Kodi, per veure què li mana el nostre Yatse, Kodi Remote… així que executem:

[sourcecode]nc DIRECCION_IP_RASPBERRY 9090[/sourcecode]

I esperem…

 

Manejar-Raspberry-per-Web-02-bujarra

Tenint l'escolta, ja podrem polsar el canal que volem des de la nostra app del mòbil i en pantalla, el nc ens traurà el comandament que necessitarem executar posteriorment, o almenys una ajuda per saber l'ID de cada canal de TV!

En el meu cas doncs, per posar La Sexta hauré d'executar el següent comandament:

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

 

Exemple de parar TV:

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

Exemple per canviar l'àudio de la TV perquè practiquem l'anglè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.… guardem aquest comandament en un arxiu .sh que podrem executar en obrir la web PHP des del nostre mòbil! A gaudir-lo!

 

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!