
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!
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]#<script type='text/javascript'>
# self.close();
#</script>[/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…
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…
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!