22 octubre 2017

Pimatic. Acceso desde Internet. SSL

pimatic-logo

Tal vez necesitemos acceder a nuestro sistema domótico cuando estemos fuera de casa, para ello es recomendable, casi obligatorio, hacerlo a través de una conexión segura (https), ya que no querremos que nuestro sistema domótico se vea expuesto a peligros innecesarios.

Lo primero que debemos hacer es cumplir un par de requisitos:
  • Necesitaremos un servicio de DNS Dinámico para nuestra dirección IP. Como sabemos, nuestra dirección IP suele cambiar cada vez que reiniciamos el router, por lo que estos servicios lo que hacen es asignarnos un dirección del tipo "xxxxx.no-ip.com" y mediante una aplicación o si nuestro router trae esa opción, se le envía nuestra IP actual a ese servicio que la mantiene actualizada, por lo que da igual que cambie ya que nosotros accedemos a la dirección anterior que nos redirige a nuestra IP. Si tenemos IP fija no es necesario hacer nada de esto.
  • Es necesario redirigir el puerto https (443 por defecto) en nuestro router a la dirección dentro de nuestra red de la Raspberry Pi.
Sabiendo los requisitos ya nos podemos poner manos a la obra. Para usar https necesitamos crear un certificado auto-firmado. Para ello es necesario crear una Autoridad Certificadora (CA). Pimatic nos simplifica este proceso con un script, tecleamos:
sudo apt-get install wget
cd pimatic-app
wget https://raw.githubusercontent.com/pimatic/pimatic/master/install/ssl-setup
chmod +x ./ssl-setup
./ssl-setup
Automáticamente nos crea todos los certificados necesarios donde debemos indicar una contraseña para el certificado privado y la dirección dinámica que hayamos configurado en el servicio DNS.

Para configurar la conexión https y que todas nuestras conexiones a Pimatic se hagan con el protocolo SSL debemos editar el archivo de configuración config.json que deberia quedar así:
"httpsServer": {
"enabled": true,
"port": 443,
"hostname": "",
"keyFile": "ca/pimatic-ssl/private/privkey.pem",
"certFile": "ca/pimatic-ssl/public/cert.pem",
"rootCertFile": "ca/certs/cacert.crt"
},
El último paso es importar el certificado de la Autoridad Certificadora (CA) que hemos creado en todos los dispositivos que vayamos a usar para gestionar Pimatic, tecleando en el navegador la siguiente dirección: http://tu-ddns/root-ca-cert.crt. Si no hacemos esto es posible que nos dé algún error cuando accedamos a Pimatic con el protocolo https.

Pimatic. Configuración de inicio

pimatic-logo

Una vez instalado Pimatic vamos a ver como iniciar, parar o reiniciar el sistema.
Para iniciarlo basta con teclear:
sudo node_modules/pimatic/pimatic.js
Y para hacerlo correr como demonio:
sudo node_modules/pimatic/pimatic.js start
Donde podremos usar los comandos status, stop o restart.

Al intentar iniciar Pimatic por primera vez es posible que nos de un error relacionado con sqlite3, para tratar de solucionarlo primero vamos a borrar la carpeta donde debería estar instalado sqlite3:
sudo rm -rf /home/pi/pimatic-app/node_modules/sqlite3
Y vamos a instalar el módulo a mano:
cd pimatic-app
sudo npm install sqlite3
Todo esto es debido a que en el inicio de Pimatic no encuentra la versión correcta para descargar del módulo sqlite3 para arm. Al instalarlo después nosotros a mano el módulo sqlite se compila en la Raspberry Pi, por lo que este proceso es bastante largo (20/30 minutos).

Continuamos. Para poder iniciar Pimatic globalmente lo hacemos con:
cd ./node_modules/pimatic
sudo npm link
Una vez hecho esto ya podemos iniciar Pimatic de un modo más sencillo con los siguientes comando:
sudo pimatic.js [start|stop|status|restart]
De esta forma, para ejecutar Pimatic, lo debemos hacer en modo manual con alguno de los comandos, para simplificarlo, vamos a hacer que Pimatic se ejecute automáticamente al iniciar la Raspberry Pi, para ello debemos instalar el script init.d:
wget https://raw.githubusercontent.com/pimatic/pimatic/v0.9.x/install/pimatic-init-d
sudo cp pimatic-init-d /etc/init.d/pimatic
sudo chmod +x /etc/init.d/pimatic
sudo chown root:root /etc/init.d/pimatic
sudo update-rc.d pimatic defaults
Ahora ya podemos iniciar Pimatic como servicio con :
sudo service pimatic start
Para finalizar reiniciamos la Raspberry Pi, al arrancar de nuevo y al cabo de un par de minutos Pimatic ya debería estar corriendo y listo para acceder.

Pimatic. Control domótico en casa. Instalación

pimatic-logo

Vamos a instalar un sistema domótico en casa. Queremos controlar temperaturas, persianas, puertas de garaje y tenerlo todo más o menos automatizado y controlado desde el PC y/o móvil. Para la Raspberry Pi existen multitud de sistemas domóticos, después de buscar y buscar nos hemos decidido por éste en concreto, Pimatic, por su sencillez de uso, instalación y configuración.

"Pimatic es un framework de automatización del hogar que corre bajo node.js. Proporciona una plataforma extensible común para el control del hogar y las tareas de automatización", esa es la descripción de este sistema en su web y tras algunas pruebas con él nos ha sorprendido gratamente, la cantidad de plugins que incorpora, y como hemos dicho antes, la sencillez en su instalación y configuración, nos han hecho decidirnos por este sistema en concreto.

Lo primero es instalar Raspbian, para eso nos dirigimos a la página de descargas de Raspbian y nos descargamos la imagen que grabaremos en la SD. En este caso usaremos Raspbian Stretch Lite ya que no necesitamos la imagen completa, con esta versión nos sirve. Para instalar Raspbian en la SD seguiremos los pasos ya explicados anteriormente en esta entrada.

¡¡IMPORTANTE!!, en esta versión de Raspbian, Stretch, el acceso por SSH viene desactivado por defecto, para activarlo, una vez hayamos copiado la imagen a la SD, basta con crear un archivo en blanco con el nombre ssh y colocarlo en la raíz de la partición boot. También aprovechamos y hacemos que la Raspberry nada más encenderse se conecte a nuestra red WIFI, para ellos creamos un archivo con el nombre wpa_supplicant.conf , con el siguiente contenido e igualmente lo colocamos en la raíz de la partición boot de la SD:
country=ES
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="nombre_de_nuestra_red"
psk="contraseña_de_nuestra_red"

}
Pues ya estamos listos para instalar Pimatic. Lo primero es actualizar el sistema para ello tecleamos:
sudo apt-get update
Y después:
sudo apt-get upgrade
Comenzamos la instalación de node.js con los siguientes comandos:
Para la Raspberry Pi modelo A, B, B+ o Zero;
wget https://nodejs.org/dist/v4.8.4/node-v4.8.4-linux-armv6l.tar.gz -P /tmp
cd /usr/local
sudo tar xzvf /tmp/node-v4.8.4-linux-armv6l.tar.gz --strip=1
Y para la Raspberry Pi B o Pi 3 modelo B;
wget https://nodejs.org/dist/v4.8.4/node-v4.8.4-linux-armv7l.tar.gz -P /tmp
cd /usr/local
sudo tar xzvf /tmp/node-v4.8.4-linux-armv7l.tar.gz --strip=1
Comprobamos si Node.js se ha instalado correctamente con:
/usr/bin/env node --version
Seguimos ya con la instalación de Pimatic. Instalamos los compiladores necesarios:
sudo apt-get install build-essential git
Una vez que node.js y npm ya están correctamente instalados seguimos para instalar el framework de Pimatic con:
cd /home/pi
mkdir pimatic-app
npm install pimatic --prefix pimatic-app --production
Copiamos el archivo de configuración por defecto con:
cd pimatic-app
cp ./node_modules/pimatic/config_default.json ./config.json
Ahora solamente nos queda establecer la contraseña por defecto para el usuario administrador editando el siguiente archivo:
sudo nano config.json
Una vez abierto buscamos "users" y ahí ya cambiamos el valor del "password" para el usuario "admin" poniendo la contraseña que nosotros deseemos.
 

©2011 Trasteando con Raspberry Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.
Creado a partir de la obra en Trasteando con Raspberry. | FuuTheme diseñado por Fuutec | Ir arriba ↑