Nueva portada de la web

Como ya he hecho en otros 3 de marzo he aprovechado que es la fecha en la que publiqué mi web (hoy se cumplen 13 años de aquello).

Y como hacía casi 5 años que no mejoraba la portada de CoyáN.es he aprovechado y la he modernizado. Ahora tiene todo lo que ha de cumplir en los estándares actuales: sencilla y adaptada para móviles. Como se puede apreciar el cambio es notable:

Versiones 2 y 3 de la portada.
Versiones 2 y 3 de la portada.

También hace 3 años que cambié el diseño del blog (en el 10º aniversario) y hoy ha sido el día del cambio al nuevo diseño que se puede ver en el blog.

Actualización 18 diciembre: Añadido enlace a Telegram y actualizado el theme, ahora carga más rápido y la sección de contacto se ve mucho mejor. El diseño es igual.

Nueva portada de la web Leer más »

Enviando apps de FirefoxOS desde el ordenador

Ya existen manuales muy buenos de cómo instalar:

Pero aquí explicaré caso concreto de Linux (extraído de los enlaces anteriores) pero orientado para “novatos” de Linux, que posiblemente utilicemos Ubuntu, Fedora o Linux Mint y seguro que no funciona a la primera siguiendo los pasos de los enlaces anteriores. Al final está la solución y podremos pasar nuestras aplicaciones a nuestro dispositivo FirefoxOS (en mi caso un Geeksphone Peak).

Primero hay que instalar el Android Debug Bridge (sí, FirefoxOS utiliza heramientas de Android):

sudo apt-get install android-tools-adb

Pegando dentro de ese fichero (recuerda que para pegar cosas en la consola de Linux hay que hacerlo con Control+Mayúsculas+V):

sudo nano /etc/udev/rules.d/51-android.rules

Ahora saldremos de “nano” pulsando Control+X, y decimos que “Sí” queremos guardar los cambios. Para que el cambio tenga efecto, ejecutaremos:

sudo service udev restart

Pero no funcionan en Ubuntu y similares por culpa de los permisos, concretamente al ejecutar:

adb services

Nos da el siguiente error (es decir, que no hay suficientes permisos):

List of devices attached
????????????    no permissions

Para solucionarlo, la forma más cómoda (encontrada aquí) es escribir el siguiente comando:

sudo adb kill-server && wait && sudo adb start-server

El único problema es que hay que ejecutarlo cada vez que se reinicie el ordenador. La ventaja es que al no ser un cambio permanente no comprometemos la seguridad de nuestro ordenador.

Para enviar las aplicaciones desde el simulador de FirefoxOS al teléfono móvil recomiendo ojear el manual que puse al inicio de este artículo pues contienen capturas de pantalla. Pero resumiendo, simplemente hay que instalar el plugin, ejecutar el anterior comando y pulsar sobre el botón “Push” del simulador. Si quieres ser un experto desarrollador de FirefoxOS 🙂 te recomiendo empezar por estos 2 enlaces:

Enviando apps de FirefoxOS desde el ordenador Leer más »

SmartHome: Hasta el más mínimo detalle

Una casa inteligente (SmartHome, siguiendo el mismo juego de palabras que se utilizó con los SmartPhone) no es más que una casa con automatizaciones que toma decisiones por el usuario, desde un simple termostato que regula la temperatura de la calefacción/aire acondicionado hasta llevar el control de la fecha de caducidad de los yogures de la nevera.

Pero hay cientos de factores a tener en cuenta, por ejemplo las ventanas: Hay 2 cosas que son muy evidentes a la hora de hacerlas “inteligentes”: subir/bajar la persiana y que apertura/cierre de la ventana. Veamos hasta qué punto pueden ser inteligentes:

Persianas

Lo primero que se nos viene a la cabeza es que la persiana se abra justo en el mismo momento que suene el despertador y se cierre cuando haya anochecido , bien eso no es excesivamente complicado sería colocar un motor a la persiana y un temporizador.

Pero hagamos a nuestra ventana más avispada: ¿por qué íbamos a querer la persiana subida todo el día? Este punto es importante y ya empieza a depender de más factores, por ejemplo no es lo mismo si vivimos en el sur de España y estamos en verano (que nos interesará mantener la persiana bajada durante la horas con radiación solar) a si vivimos en el norte de España y estamos en otoño (donde nos interesará que entre la mayor cantidad de luz solar para calentar “gratis” la casa). Por ejemplo para el segundo caso una habitación con buena orientación que recibe sol durante la mayor parte del día se puede mantener con una temperatura agradable de una forma mucho más barata que con placas termosolares (calientan agua, no generan energía eléctrica).

Ventana

Otro lugar donde se puede actuar es en la apertura/cierre de la ventana, principalmente para renovar el aire del interior de la casa, pero ¿qué horas son mejores? Pues como antes, si se quiere hilar muy fino podríamos irnos a la normativa del ayuntamiento correspondiente y podríamos ver qué horas no son las apropiadas. Por ejemplo para en el Ayuntamiento de Gijón:

No se permite bajo ningún concepto sacudir prendas o alfombras en la vía pública, ni desde ventanas, balcones o terrazas, fuera del horario comprendido entre las 6,30 y 8,30 de la mañana. En todo caso, se realizarán estas operaciones en forma que no causen daño o molestias a las personas o cosas.
Ordenanza Municipal de Limpieza, Ayto. Gijón (web)

Aunque siempre habrá vecinos que sacudan las alfombras fuera del horario legal, nuestra SmartHome sabe cuáles son las horas en las que no debería de ventilarse.

Y volviendo al ahorro energético, la casa no debería de abrir la ventana un 15 de agosto a las 14h de la tarde, ni a las 21h de un 15 de enero.

Otro punto de cambio también puede ser el propio cristal, ahora los cristales son pasivos, y si no queremos que nos vean desde el edificio de enfrente ponemos unos “trapos” llamados cortinas, pero ¿por qué no utilizar un cristal que se oscurezca cuando detecte alguien en la habitación?

Cuando escuchamos hablar de SmartHome, SmartPhone o SmartGrid (redes eléctricas) parece que nos quieren vender humo pero si lo pensamos aún queda mucho por mejorar lo que utilizamos a diario, según dijo Martin Cooper (“padre del teléfono móvil”, wikipedia) cuando estuvo en Gijón cuando hizo la primera llamada nadie se imaginaba, ni por asomo, un “androide” (la dobladora que nos tocó sufrir durante su conferencia traducía Android por Androide ya que aún no era un SO tan conocido como lo es hoy), ni mucho menos el poder recibir un email (que aún se estaba “inventando”) en un teléfono móvil.

Eso mismo nos sucederá dentro de unos años cuando la persiana se suba a la vez que suena el despertador, la ventana se cierre durante las horas a las que nuestro vecino de encima sacude el mantel o la nevera nos diga que comamos el yogurt de piña porque es el que más pronto caducará ¿y si hoy quiero el de fresa que compré ayer?.

SmartHome: Hasta el más mínimo detalle Leer más »

Raspberry Pi girando

Unboxing y primeros pasos de un Raspberry Pi

Ante todo, disculpas pues pretendía utilizar 2 cámaras y la otra cámara (que enfocaba a la pantalla) salió borrosa y no he incluido ese ángulo. Afortunadamente se puede seguir sin problemas pues todo lo que se muestra está en la parte inferior de la pantalla TFT.

Momentos destacados

01:32 => Arranque de un rasPi de 256MB
01:46 => Unboxing de un Pi-View
02:57 => Entorno gráfico en un rasPi de 256MB
04:40 => Apagado de un rasPi de 256MB
04:44 => Unboxing de una fuente de alimentación
06:39 => Conectando un Pi-View
06:58 => Unboxing de un rasPi de 512MB
08:02 => Enchufado de cables al rasPi
08:42 => Primer arranque, raspi-config
18:06 => Reinicio por consola: sudo reboot (saltar hasta 19:04)
19:16 => Segundo inicio, comienza cuando la pantalla muestra unos colores
20:32 => Entorno gráfico en un rasPi de 512MB
22:10 => Navegando por internet
24:24 => Inicio normal de un rasPi de 512MB
25:07 => Fin del inicio (total: 43 segundos en una tarjeta microSD de clase 4)

Enlaces más importantes

Productos vistos en el vídeo

Comandos de la consola útiles

Apagar:

sudo shutdown -h now

Reiniciar:

sudo reboot

Configurar un proxy:

export http_proxy=http://proxy.uniovi.es:8888/

Actualizar (son 2 comandos diferentes):

sudo apt-get update
sudo apt-get upgrade

Instalar un programa:

sudo apt-get install NOMBREdelPROGRAMA

Este vídeo fue hecho con el material del IEEEsb-UniOvi.es (concretamente un resumen de esta charla que hice en diciembre de 2012).

Unboxing y primeros pasos de un Raspberry Pi Leer más »

Logotipo de Raspberry Pi

Servidor web con Raspberry Pi

Raspberry Pi girando

Antes de empezar recomiendo tener instalado y configurado la versión de Debian oficial de la web de Raspberry Pi. En la web del IEEEsb-UniOvi he escrito un artículo explicando los pasos para instalar y configurar adecuadamente el sistema.

Servidor Web

Hay que instalar/configurar 6 tipos de programas: Acceso SSH (para administrar remotamente), Apache (servidor), PHP (para las páginas dinámicas), MySQL (base de datos), phpMyAdmin (para administrar fácilmente las bases de datos) y Cliente de DDNS (para mantener actualizada la IP de casa).

Para ello usaré el manual publicado en: , y pondré aquí un resumen (recomiendo visitar la web original, pues viene todo explicado paso a paso).

Habilitar SSH

Nos permitirá ejecutar los comandos de la consola desde otro ordenador y de paso podremos acceder a los ficheros del Raspberry Pi usando un cliente de sFTP (recomiendo utilizar FileZilla).

Comandos a ejecutar (en el Raspberry Pi):

sudo service ssh start

Para iniciar el servicio ssh.

sudo insserv ssh

Para que se inicie siempre que encendamos el Raspberry Pi se pueda utilizar el SSH. Desde que ejecutamos ésto, los siguientes comandos que hay en este manual se pueden ejecutar desde el propio Raspberry Pi o desde otro ordenador (conectándonos al Raspberry Pi usando SSH).

Servidor Web – Apache

[Texto original, en inglés] Para que todo funcione se necesita instalar el propio servidor, el más común es Apache. Antes de empezar hay que prepararse para que todo funcione. Primero crearemos el grupo de usuarios para el servidor:

sudo groupadd www-data
sudo usermod -a -G www-data www-data

Y después actualizamos los repositorios para evitar fallos en la instalación:

sudo apt-get update

Llegados a este punto, y antes de empezar la instalación también recomiendo actualizar los posibles programas que tengamos sin actualizar, mediante el comando:

sudo apt-get upgrade

Ahora ya podremos instalar el Apache:

apt-get install apache2

Si todo ha ido bien, podremos visitar desde el navegador la página web de prueba, se titulará “It works!” y un par de frases más. Si no funcionara nos daría un error de no encontrado. Para poder visitar la web desde otro ordenador de nuestra habrá que conocer la IP del Raspberry Pi (en la web de las instrucciones hay capturas de pantalla más esclarecedoras) y para saber la IP se ejecutará el comando:

ifconfig

En el que el apartado “inet add:” veremos la IP (de la red eth0). Habitualmente será algo del tipo 192.168.10.xx
NOTA: La IP 127.0.0.1 es una IP reservada que se usa para conectarse al propio ordenador o para comprobar que funciona la Red, más información en la Wikipedia: Localhost.

Accedemos con el navegador a la IP del Raspberry Pi desde nuestro ordenador: http://192.168.2.105 (en tu caso será otra IP diferente). Si queremos añadir más ficheros, carpetas y similar se encontrarán en el directorio /var/www/ del Raspberry Pi. Hagamos un Hola mundo:

sudo nano /var/www/holamundo.htm

Y escribimos lo siguiente en el fichero:

<html>
<head>
<title>Titulo de la web</title>
</head>
<body>
<h1>Hola mundo</h1>
<p>Acabo de escribir mi primera web en mi Raspberry Pi.<br />&iquest;Mola, no?</p>
</body>
</html>

Para cerrarlo, como siempre, Control+X, nos preguntará si quieres guardar el búfer (pulsando la S, para decir que sí) y luego ENTER para guardar el fichero con el nombre que pusimos antes. Ahora si visitamos: http://192.168.2.105/holamundo.htm veremos nuestra página web.

SERVIDOR WEB – PHP

[WEB original, en inglés] Con Apache se pueden mostrar páginas con HTML, pero para hacer webs “de verdad” será necesario poder ejecutar contenido dinámico, y en esto el PHP es el rey. Procedamos a su instalación:

sudo apt-get install php5

Tras terminar, instalemos los demás paquetes que podríamos necesitar (en la web original ponen más paquetes, así que pongo lo que a mi me funcionó):

sudo apt-get install libapache2-mod-php5 libapache2-mod-perl2 php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-imap php5-ldap php5-mhash php5-mysql php5-odbc

Tras esta segunda instalación, reiniciar (sudo reboot).
Y para comprobar que funciona, haremos la web de pruebas de PHP, que consiste en una única función (son los mismos pasos que para crear la web en html):

sudo nano /var/www/phpinfo.php

Y luego rellenar el fichero con lo siguiente:

<?php
  phpinfo();
?>

Si al entrar en http://192.168.2.105/phpinfo.php (usar la IP que corresponda) vemos una web con mucha información es que todo ha funcionado correctamente.

SERVIDOR WEB – MySQL

[WEB original, en inglés] Con Apache y PHP ya podremos hacer webs dinámicas y muy chulas, pero en cuanto nos demos cuenta, necesitaremos una base de datos, lo más normal es utilizar MySQL, instalémoslo:

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

Tras la instalación, reiniciar. Y al terminar de reiniciar iniciaremos el servidor de MySQL:

sudo service mysql start

Para comprobar que funciona ejecutaremos el siguiente comando (siendo CONTRASEÑA la contraseña que hayamos puesto antes, ¡ojo, que delante de nuestra contraseña hay que poner una “p”):

mysql -uroot -pCONTRASEÑA

Si aparece “mysql>” en la pantalla es que todo ha funcionado. Para poder volver a ejecutar comandos de Linux normales pulsaremos Control+C y desaparecerá el “mysql>” para mostrar el habitual “pi@raspberrypi:~$“.

Durante la instalación preguntará por la contraseña del administrador de la base de datos, recomiendo utilizar una contraseña segura y diferente de la que usemos en el Raspberry Pi.

SERVIDOR WEB – phpMyAdmin

[WEB original, en inglés] Para administrar una base de datos MySQL lo más sencillo es utilizar phpMyAdmin, pues tiene una interfaz web con mucha ayuda y fácil de utilizar.

sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

Durante la instalación nos preguntará qué tipo de servidor tenemos, seleccionaremos Apache (aparece un * en los corchetes, se marca/desmarca con el espacio y se acepta con el ENTER). Después preguntará si se quiere configurar la base de datos, diremos que sí. Y nos preguntará por la contraseña de MySQL (la que pusimos antes) y a continuación por una contraseña para phpMyAdmin (recomendable que sea diferente, pero si es para pruebas podemos usar la misma). Al finalizar editaremos el siguiente fichero:

sudo nano /etc/php5/apache2/php.ini

El siguiente código se puede escribir en cualquier sitio, pero para ser coherentes bajaremos unos dos tercios de la web hasta encontrar la sección “Dynamic Extensions” y escribiremos en una nueva línea (es decir, que la línea no empiece por “;”), yo lo hice justo después del título:

extension=mysql.so

Guardamos el fichero con los cambios efectuados y visitamos la siguiente web (usando la IP que tenga nuestro rasPi): http://192.168.2.105/phpmyadmin/ En este punto es muy posible que no funcione, ejecutaremos los 2 siguiente comandos:

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
sudo /etc/init.d/apache2 reload

Tras ejecutarlos actualizar en el navegador (en lugar de pulsar F5 pulsar Control+F5). Si pese a todo no funcionase, reiniciar el Raspberry Pi.

En la web del phpMyAdmin el usuario será root y la contraseña la que hayamos elegido cuando lo instalamos.

SERVIDOR WEB – IP dinámica

Con casi total seguridad en nuestra casa tendremos una IP dinámica (esto significa que cambiará de vez en cuando). Para que nuestra web esté siempre visible necesitaremos algo estable y permanente en el tiempo. Para eso existen servicios como DynDNS ó No-IP, además de crear una cuenta en esos servicios necesitaremos instalar un programa en el Raspberry Pi que mantenga actualizada nuestra IP actual [Web original]:

sudo apt-get install ddclient

Durante la instalación preguntará los datos de registro. Y si queremos ejecutar el cliente cuando establezca una conexión PPP, diremos que no, para que se ejecute como demonio, y ejecutaremos la comprobación según las veces que reiniciemos el módem ¿cada día? = comprobar cada 1h. ¿Cada mes? = comprobar cada 6h.

Si fuese necesario volver a cambiarlos podemos utilizar el siguiente comando:

sudo dpkg-reconfigure ddclient

SERVIDOR WEB – ¡FIN!

Y eso es todo, ahora tendremos un servidor web completo, no podremos tener miles de visitas, pero para hacer pruebas y publicar nuestra primera web es lo más barato que puede existir, ya que con el coste de la electricidad actual, tener el Raspberry Pi encendido las 24h durante todo el mes, nos costará un poco menos de 1,10€ mientras que cualquier hosting con características similares costará algo más del doble, entre 2 y 3€ mensuales.

Además podemos desconectar todo lo que tengamos al Raspberry Pi, pues con alimentar con un cargador de móvil (mínimo de 700mA) y poner el cable de red ya funcionará. Como tenemos el SSH no precisamos de ratón y teclado, ni mucho menos de una pantalla externa.

ERRORES ENCONTRADOS

Error – ServerName

Al iniciarse el Raspberry Pi dará un error con el siguiente texto:

“Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName”

Una manera de solucionarlo es escribiendo una nueva línea que contenga “ServerName nombre.servidordns.org” en los 2 ficheros diferentes:

  • Una nueva línea en el siguiente fichero:
sudo nano /etc/apache2/httpd.conf
  • Una línea para cada <VirtualHost …> que tengamos en:
sudo nano /etc/apache2/sites-enabled/000-default

Será necesario reiniciar Apache para que se apliquen los cambios.

REINICIO DE LOS SERVICIOS

Reinicio de Apache:

sudo /etc/init.d/apache2 restart

Reinicio de MySQL:

sudo /etc/init.d/mysql restart

Si se reemplaza “restart” por ‘stop‘ parará el servidor correspondiente (para arrancarlo sería necesario escribir ‘start‘).

Logotipo de Raspberry Pi

Servidor web con Raspberry Pi Leer más »