bclose

Crear un servidor en la Raspberry Pi

Subir valores a una base de datos

Objetivos

 

 

    • Instalar un servidor Web en la Raspberry Pi.
    • Crear una base de datos Mysql.
    • Aprender a usar PHPMyAdmin.
    • Crear una página para subir los datos con PHP.
    • Aprender cómo se suben los datos a la tabla.
 

Material requerido.

Vista lateral Una Raspberry Pi 3, aunque valen la 2 y la 1

 


vista frontal
Una micro SD de al menos 4Gb y preferiblemente de 8Gb16 Gb o 32 Gb.

 

Vista lateralUna fuente de alimentación externa tipo teléfono móvil con micro USB
video para raspberry pi Un cable HDMI

 

Preparando la Raspi

 

Para montar un servidor en la Raspberry necesitaremos tener instalado Raspbian, una conexión a Internet y tener asignada una IP estática.  Si habéis seguido los tutoriales de Prometec seguro que ya lo habéis hecho, pero si alguien que no la tiene configurada no tiene más que ir a los tutoriales que hay disponibles: http://www.prometec.net/indice-raspberry-pi/

A modo de resumen, para conectaros a Internet y tener una IP estática tenéis que editar el archivo interfaces:

sudo nano /etc/network/interfaces

Y dejarlo tal que así, pero con vuestros parámetros. En nuestro caso está conectada mediante Wifi:

auto lo
iface lo inet loopback

iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0

iface wlan0 inet static
 address 192.168.0.100
 netmask 255.255.255.0
 gateway 192.168.0.1
 wpa-ssid "Euskaltel-cs7A"
 wpa-psk "PX9BK7rA"
 
  • Podéis mirar vuestos parámetros con la instrucción Route -ne.  

configurar internet raspi

 

Instalar el servidor Web

 

Una vez hayamos configurado la IP estática podemos empezar a instalar el sevidor Web. El tipo de servidor que vamos utilizar se denomina LAMP, que es un acrónimo de las herramientas que vamos a usar. No os asustéis si no conocéis alguna de ellas, o incluso ninguna, no nos va hacer falta profundizar mucho. De hecho yo nunca había usado Apache ni PHP

 
  • Linux como el sistema operativo. En nuestro caso Raspbian.
  • Apache como servidor web.
  • MySQL para gestionar la base de datos.
  • PHP como lenguaje de programación. 

Lo primero que vamos a hacer es actualizar los repositorios y los programas de nuestra Raspi, si es que no lo habéis hecho antes. Tardará un ratillo…

sudo apt-get update
sudo apt-get upgrade

A continuación instalaremos Apache:

sudo apt-get install apache2

Vamos a comprobar que funciona todo hasta el momento escribiendo la IP que hemos otorgado a la Raspberry, en nuestro caso es 192.168.0.100. Deberíais ver una página como esta:

Página de inicio apache2

Ahora que sabemos que estamos en el buen camino vamos a instalar PHP, un lenguaje de programación diseñado para crear sitios web dinámicos:

sudo apt-get install php5 libapache2-mod-php5

Cuando termine reiniciamos la Raspi:

sudo reboot

Cuando vuelva a arrancar, vamos a comprobar que efectivamente funciona correctamente PHP creando este archivo:

sudo nano /var/www/html/info.php

Tenemos que dejarlo así:

<?php
      phpinfo();
?>

Volvemos a abrir el navegador e introducimos la IP de la raspberry seguido de /info.php.

servidor raspberry pi

 

Instalación y configuración de MySQL y PHPMyAdmin

 

En este punto vamos a instala MySQL, un sistema de gestión de bases de datos muy potente. Durante la instalación os pedirá una contraseña, aseguraros de recordarla. Cuando termine reiniciamos de nuevo la Raspberry.

sudo apt-get install mysql-server mysql-client php5-mysql

Una vez hayamos arrancado de nuevo vamos a instalar PHPMyAdmin. Esta herramienta escrita en PHP nos permite manejar la administración de MySQL a través de Internet de una forma relativamente sencilla.

sudo apt-get install php5-mysql phpmyadmin

Durante la instalación nos preguntará qué tipo de servidor estamos usando. Como ya imaginaréis marcaremos Apache. A continuación le diremos que sí queremos configurar una base de datos y nos pedirá que introduzcamos la contraseña que pusimos al instalar MySQL. Además tendremos que elegir una contraseña para acceder a PHPMyAdmin. Nuestro consejo es que pongáis la misma a todo y os dejéis de líos.

Cuando haya terminado el proceso tenemos que editar el siguiente fichero para añadir al final del mismo Include /etc/phpmyadmin/apache.conf

sudo nano /etc/apache2/apache2.conf
servidor raspberry

Si todo ha ido bien y escribís en el navegador la dirección IP de la Raspi seguida de /phpmyadmin veréis una pantalla en la que os pedirá las credenciales. El usuario es root y la contraseña la que hayáis elegido. En caso de que no os funcione, reiniciad la Raspberry,

servidor raspberry

Ahora vamos a crear una base de datos. Para ello pulsamos donde pone “Nueva”. En la siguiente pantalla pondremos el nombre que elijamos, como nosotros la vamos a usar para subir los datos de un sensor de temperatura DHT11 (ya veremos en otra sesión como hacerlo) le llamaremos de esa de esa forma. En cotejamiento seleccionamos “utf8_general_ci” y pulsamos “Crear”.

servidor raspberry base de datos

Si ahora seleccionamos en el menú desplegable de la izquierda la base de datos que hemos creado nos dará la opción de crear una tabla. Nosotros vamos a crear una tabla llamada valores y que tendrá 4 campos.

servidor raspberry tabla mysql

Los 4 campos serán:

 
  • ID: identificador del registro. Será la clave primaria y marcaremos la casilla de auto incremento.
  • Tiempo: este campo almacenará la fecha y la hora en que se ha tomado la muestra. El tipo sera TIMESTAMP y su valor por defecto CURRENT_TIMESTAMP.
  • Temperatura: en este campo se almacenará el valor de la temperatura del sensor. Será de tipo INT.
  • Humedad: este campo almacenará el valor de la humedad del sensor. Será de tipo INT. 
servidor raspberry base de datos

 

Crear la página para subir valores a la base de datos

 

Para poder subir datos al servidor tenemos que crear una página con PHP. Para ello necesitamos crear dos archivos. Al primero de ellos lo llamaremos config.php y tendrá la la información necesaria para establecer la conexión con la base de datos que hemos creado. El segundo , dht11.php, es la página que usaremos para subir los datos. Los creamos y los editamos para dejarlo como estos, pero cambiando Prometec por la contraseña que hayáis elegido.

sudo nano /var/www/html/config.php
sudo nano /var/www/html/dht11.php
<?php
 // config.php
 // Credenciales
 $dbhost = "localhost";
 $dbuser = "root";
 $dbpass = "Prometec";
 $dbname = "DHT11";
 //Conexion con la base de datos
 $con = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
?>
<?php
 // dht11.php
 //Importamos la configuracion
 require("config.php");
 // Leemos los valores que nos llegan por GET
 $Temperatura = mysqli_real_escape_string($con, $_GET['Temperatura']);
 $Humedad = mysqli_real_escape_string($con, $_GET['Humedad']);
 // EInsertamos los valores en la tabla
 $query = "INSERT INTO Valores(Temperatura, Humedad) VALUES('$Temperatura','$Humedad')";
 // Ejecutamos la instruccion
 mysqli_query($con, $query);
 mysqli_close($con);
 echo "Pagina para subir los datos<br />";
 echo "<br />Temperatura = $Temperatura ºC<br />";
 echo "<br />Humedad = $Humedad %<br />";
?>

Y ahora sólo nos queda probar que funciona. Para ello vamos a subir un par de datos de temperatura y humedad a mano desde el navegador, por ejemplo 25ºC y 50% de humedad. La forma de hacerlo es poniendo la IP de la Raspberry, seguido de /dht11.php?Temperatura=25&Humedad=50

Si todo ha va como debería, veréis una página como esta:

página para datos servidor raspberry

Y por supuesto estos datos deberían reflejarse en la tabla “Valores” que hemos creado dentro de la base de datos “DHT11”. Para comprobarlo abrimos PHPMyAdmin y en el menú desplegable de la izquierda abrimos “DHT11” y seleccionamos “Valores”. Veréis como tendremos nuestros primeros datos en la tabla, que son ,ni más ni menos, los que hemos subido nosotros hace un momentillo.

servidor raspberry phpmyadmin

 

Resumen de la sesión

 

En esta sesión hemos aprendido varias cosas importantes:

 
    • Hemos montado un servidor en la Raspberry usando Apache.
    • Instalamos PHP para poder crear contenido dinámico.
    • Creamos una base de datos usando MySQL.
    • Instalamos PHPMyAdmin para poder administrar la base de datos desde Internet de forma sencilla.
    • Creamos una base de datos nueva y una tabla para subir valores.
    • Hemos creado una página usando PHP para subir los valores a la tabla.

(7) Comments

  • El comando
    sudo nano /var/www/htm/info.php
    lo he sustituido por sudo nano /var/www/html/info.php, ya que la carpeta htm no existe.

    Creo que he hecho lo correcto, pero me gustaría que me indicaseis si es así.

    • Hola Antonio, efectivamente nos habíamos dejado esa lpor ahí. Ya está corregido, gracias por el aviso.

  • Me alegro que hayáis retomado el curso de Raspberry. Me parece de lo más interesante y agradezco el esfuerzo que hacéis con vuestra publicación.

    En esta última publicación, he tenido problemas con el comando
    sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
    Me da error, indicando que no se encuentra el paquete libapache2-mod-auth-mysql.

    El aviso exacto es:
    Package libapache2-mod-auth-mysql is not available, but is referred to by another package.
    This may mean that the package is missing, has been obsoleted, or is only available from another source.

    ¿Podéis indicarme si el paquete a instalar es otro, o por el contrario tengo algún otro problema?

    • Hola Antonio, parece que no es necesario, así que no lo instales y listo. Un saludo.

      • Buenas tardes Ivan, muchas gracias por tu respuesta tan rápida, pero no he conseguido avanzar con el ejemplo propuesto.

        Una vez añadida la linea
        include /etc/phpmyadmin/apache.conf
        en el fichero /etc/apache2/apache2.conf he intentado acceder con el navegador a 192.168.1.200/phpmyadmin, siendo 192.168.1.200 la IP de la raspi, pero aparece el mensaje de que la página no se encuentra en el servidor.

        ¿El problema podría venir del aviso que daba al ejecutar el comando sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin que indicaba anteriormente?. En tu comentario me indicas que crees que no es necesario, pero el mensaje que se indica al intentar ejecutar el comando yo no lo entiendo así.

        Gracias por tu atención.

      • Buenas noches Ivan,
        He revisado todos los pasos. Todo está conforme a las indicaciones que aparecen en la publicación.
        Después de varios reinicios he conseguido que funcione el acceso a la base de datos mySQL.

        Muchas gracias.

        • Hola Antonio, parece que quizás haya que hacer un reboot tras incluir la línea de Include en el fichero. Lo vamos a dejar anotado en la sesión por si acaso. un saludo.

Give a Reply

WordPress Anti-Spam by WP-SpamShield

¡Oferta!

Promoción especial de abril.

Tu robot educativo por

49,95

Ir al producto