Controlar los puertos de la RPi remotamente (sin configurar nada)

Estándar

Buscando información he encontrado algún proyectos muy parecidos a este mismo, pero con una gran diferencia. Lo que he encontrado son diferentes maneras de controlar los puertos de la RPi des de un navegador que este en la misma red local.

El proyectos más interesante que he encontrado, es un Framework para hacer una aplicación web que te permite controlar el puerto de la RPi, y una aplicación para android que usa el mismo framework.

Que seguramente se podría aprovechar el mismo Framework, configurando el router y con un DNS Dinamico, pero deja de ser un sistema pug-and-play.

EXPLICACIÓN DEL PROYECTO

Mi proyecto consiste en enviar comandos a la RPi des de un servidor (fuera de la red local), solo configurando la RPi i el servidor, sín configurar el routter.

– A grandes trazos: la RPi se comunica con una base de datos del servidor, mira el último comando de este y lo ejecuta. Por otro lado, rellenamos la base de datos desde un archivo php. No es una comunicación directa, pero es efectiva y simple para usarlo, eso si, debemos tener un servidor con mySQL.

Haciendo que sea la RPi la que inicie la comunicación, tiene la ventaja que no tenemos que abrir ningún puerto del router, y ya de paso podemos usar la base de datos a modo de historial.

REALIZACIÓN DEL PROYECTO

– Paso 1: [servidor] crear una base de datos, escribir este código en mySQL >> Insert SQL

CREATE TABLE `tab_1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`v1` char(15) COLLATE utf8_bin NOT NULL DEFAULT '0',
`l1` char(15) COLLATE utf8_bin NOT NULL DEFAULT '0',
`DateReading` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
)

– Paso 2: [servidor] crear archivo php, con el código: (debes modificar las lineas 7 y 9)

<?php //raspigame.wordpress.com

 $v1= $_GET['c']; //'c'
 $l1= $_GET['s']; //'s'
 $date = date('Y-m-d H:i:s');

 $conexion = mysql_connect('**IP_SERVIDOR**', '**USUARIO**', '**CONTRASEÑA**') or die(mysqli_error($this-&amp;gt;db_link));
 mysql_query(&amp;quot;SET NAMES 'utf8'&amp;quot;);
 mysql_select_db(&amp;quot;**USUARIO**&amp;quot;, $conexion) or die(&amp;quot;No se puede seleccionar la base de datos&amp;quot;);

 if($l1!=null){

 if($l1=="mira"){ // cuando recibe un mensaje con la palabra "mira", mira la base de datos, y si ve que
 // el ultimo mensaje insertado era "ON" o "OFF" lo envia como respuesta
 $Qry2="SELECT * FROM tab_1" ;
 $result=mysql_query($Qry2);
 $num=mysql_numrows($result);

 $i=$num-1;
 $id=mysql_result($result,$i,"id");
 $l1=mysql_result($result,$i,"l1");
 $v1=mysql_result($result,$i,"v1");
 //echo("Respuesta: variable1 = ".$v1." variable2 = ".$l1." date = ".$date);
 if($l1 =="ON"){
 echo("llum");
 }
 if($l1 == "OFF"){
 echo("sense");
 }

 }else{ // si el mensaje recibido no es "mira", introduce este en la base de datos

 $Qry="INSERT INTO tab_1 (l1,v1,DateReading) VALUES ( "."'$l1',"."'$v1',"."'$date')";
 mysql_query($Qry);
 echo("Insetado a la base : $l1 , $v1 , $date");
 }
 }
?>

– Paso 3: [RPi] descarga e instala la aplicación mono en la RPi:
-> debes poner todos los archivos de la carpeta “aplicación mono RPi\bin\Debug” a la Raspberry.
-> debes cambiar la configuración del archivo “httpdSharp.exe.config” y poner t URL
-> puedes probar la aplicación desde windows

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s