Settings
Light Theme
Dark Theme

88. Servidor web Low Cost con Raspberry Pi

88. Servidor web Low Cost con Raspberry Pi
Jul 26, 2016 · 33m 43s

Cualquier proyecto que se precie necesita tener un servidor por dos motivos básicos, almacenar datos y mostrar esos datos almacenados. Siempre que hablo de servidores debemos tener una parte hardware...

show more
Cualquier proyecto que se precie necesita tener un servidor por dos motivos básicos, almacenar datos y mostrar esos datos almacenados. Siempre que hablo de servidores debemos tener una parte hardware y otra parte software. En este capítulo voy a exponer las diferentes alternativas que tenemos para crear con Raspberry Pi proyectos DIY. Seremos capaces de almacenar y consultar la información a muy bajo coste y con un consumo mínimo.

Pero no todo vale, aunque Raspberry Pi es una buena opción, debemos ser conscientes de sus limitaciones en cuanto al rendimiento y al almacenamiento. Veremos diferentes alternativas cuando nuestros proyectos requieren de más pretaciones. Lo que si debemos tener claro es que una buena opción para crear con Raspberry Pi proyectos, es utilizar un servidor web. Da lo mismo del hardware que utilicemos.

Podemos utilizar Raspberry Pi en proyectos de diferente índole. Para un sistema de control de riego, controlando la humedad del suelo y la temperatura y así tomar decisiones para un regadío óptimo. Control de niveles de líquidos en recipientes. Consumos de energía. En definitiva, cualquier proyecto que requiera de un almacenamiento y análisis de datos.

Ya hemos visto algún ejemplo donde utilizábamos un servidor web. Con Arduino MKR1000 y la librería WiFi101 tenemos la opción de montar uno dentro de la propia placa. Esta configuración tiene dos grandes inconvenientes. Por un lado, es complicado almacenar datos. Se requiere de periféricos e incluso de algún servidor. Por otro lado el consumo, al configurar el Arduino MKR1000 como servidor web, necesita estar siempre conectado contestando las peticiones de los clientes. Esto supone que el módulo WiFi siempre deba estar conectado con el consiguiente consumo de batería. Sin embargo, es una manera muy sencilla para conocer los conceptos que hay detrás de los dispositivos del IoT.

También veremos como el Arduino MKR1000 puede funcionar como un cliente web. Esto nos permitirá ahorrar consumo en la batería y hacer peticiones al servidor. Gracias al método GET para enviar datos por HTTP, podremos pasar la información de Arduino a Raspberry Pi.

Crear con Raspberry Pi proyectos para almacenar datos

Sin duda alguna, mi elección con respecto al hardware es Raspberry Pi. Gracias a su bajo coste y a su bajo consumo, lo hacen el hardware ideal para crear proyectos DIY. Pero debemos de conocer otras opciones por si las necesidades del proyecto nos lo requieren.

Alternativas a Raspberry Pi

A continuación te voy a detallar diferentes alternativas divididas en dos grandes grupos, plataformas en la nube y servidores dedicados.

Plataformas en la nube

Una de las alternativas que más en auge están en estos momentos son los servicios en la nube (Cloud Computing). Las grandes empresas del sector ofrecen este tipo de servicio e incluso algunos específicos para las nuevas tendencias como el IoT. A continuación te enumero las más conocidas.

Azure (Microsoft)
AWS (Amazon)
Compute Engine (Google)
Además de las más comunes, existen plataformas como thinger.io o Xively especializadas en los objetos conectados.

Todas ellas requieren de conocimientos en diferentes áreas como los servicios web, manejo de APIs y algún lenguaje de programación ya sea JavaScript, Java o C#. El coste dependerá de nuestras necesidades pero por lo general, no son muy baratas. Debemos tener en cuenta la seguridad, se envían datos a través de Internet. Por el contrario, nos olvidamos del mantenimiento del servidor, la propia empresa se encarga, y tienen un alto rendimiento y disponibilidad.

Servidor dedicado

Es el escalón intermedio entre hacer con Raspberry Pi proyectos de bajo coste y las plataformas en la nube. Podemos utilizar diferentes sistemas operativos pero los más comunes son Linux y Windows. Al igual que los servicios en la nube, debemos tener conocimientos previos, y tenemos un coste añadido debido al propio hardware, debemos comprar un servidor. Si utilizamos Windows hay que añadir la licencia. Su consumo es más elevado que el de la Raspberry Pi y requiere de un mantenimiento por nuestra parte.

Puestos a elegir, si el proyecto requiere de ciertas funcionalidades que no nos puede aportar Raspberry Pi, yo me decantaría por las plataformas en la nube. Aunque el coste puede ser algo superior, nos olvidamos del mantenimiento del hardware y el software. Solo nos centramos en programar.

Raspberry Pi

Para sistemas pequeños, crear con Raspberry Pi proyectos DIY quizás sea la mejor opción. Pero no nos engañemos, tenemos que tener conocimientos previos y además debemos ser capaces de mantener un servidor Linux. Por el contrario vamos a abaratar costes y reducir el consumo.

Eligiendo el servidor web

Una vez que tenemos claro que Raspberry Pi es la mejor opción para nuestros proyectos, hay que elegir el software que nos permita almacenar y consultar los datos. Lo lógico y normal es que utilicemos un servidor web ya que tiene estas dos funcionalidades. Dentro del abanico que tenemos a nuestra disposición, debemos elegir aquel software que nos permita crear con Raspberry Pi proyectos de una manera sencilla y fácil. Ya te hablé en el capítulo 47 las diferentes opciones que tenemos. A continuación te las voy a detallar.

Apache + PHP
Tomcat + Java
NodeJS + JavaScript
.NET Core + ASP.NET
Pero existen otras alternativas muy válidas e igual de potentes. Un servidor web o "microframework" (como ellos mismos lo denominan) que está subiendo en popularidad en este último año es Flask. En concepto, es muy parecido a NodeJS y se sale de los estereotipos de los servidores más comunes como Apache.

Flask, servidor web con Python

Si tengo que elegir una virtud de este servidor, sin duda alguna destaca su sencillez. Es extremadamente sencillo comenzar y configurar un servidor de este tipo. Los creadores lo denominan "microframework". Esto es debido a que tiene un núcleo o core muy simple pero que es extensible. En la instalación inicial viene lo indispensable para que haga las funciones de un servidor web. Esto es muy importante para crear con Raspberry Pi proyectos. No olvidemos que una de las limitaciones es la capacidad de almacenamiento. Esto vendrá determinado por la tarjeta SD que utilicemos.

Gracias a su faceta extensible, podemos ir añadiendo módulos que doten de funcionalidades extra al servidor. Por ejemplo, podemos añadir validación de datos de formulario o acceso a datos.

Otro punto fuerte es que está escrito en Python. Para programar una aplicación debemos tener conocimientos de este lenguaje de programación. Requiere la versión 3. Esto no es ningún inconveniente ya que la versión Raspbian, el sistema operativo para Raspberry Pi basado en la distribución de Linux Debian, lo lleva incorporado.

Es un software de código abierto que lo podemos encontrar en GitHub. Lo puedes descargar y modificar a tu antojo.

Comunicación entre Arduino y Flask

No es necesario disponer de un Arduino MKR1000 para almacenar datos. Nos basta con cualquier Arduino con acceso a la red ya sea a través de un shield WiFi o Ethernet. El objetivo es que se comporte como un cliente y que haga peticiones al servidor. La cuestión es ¿cómo enviamos los datos al servidor? Hay dos métodos que permiten hacer esto, el POST y el GET. Se utiliza sobre todo para enviar datos de un formulario. La gran diferencia entre ellos es que el método POST lo envía oculto, no los vemos a simple vista, y el método GET los envía en la URL.

Lo más conveniente en este caso sería enviar los datos a través del método GET. Para que te hagas una idea, el resultado sería algo parecido a esto.

http://www.tudominio.com/grabar/?param1=valor1&param2=valor2&param3=valor3
Ejemplo sensor DHT11, Arduino MKR1000 y Raspberry Pi

Como ves es muy sencillo. Vamos a verlo con un simple ejemplo. Imagínate que tenemos un sistema donde tenemos conectado un Arduino MKR1000 a un sensor de temperatura y humedad, el DHT11. El esquema eléctrico sería el siguiente.
show less
Information
Author La tecnología para todos
Website -
Tags

Looks like you don't have any active episode

Browse Spreaker Catalogue to discover great new content

Current

Looks like you don't have any episodes in your queue

Browse Spreaker Catalogue to discover great new content

Next Up

Episode Cover Episode Cover

It's so quiet here...

Time to discover new episodes!

Discover
Your Library
Search