Translate

miércoles, marzo 30, 2016

Raspberry Pi – Sencillo Servidor VPN con PPTP

En este documento veremos de una forma muy sencilla cómo montar un servidor VPN en nuestra Raspberry Pi, será un servidor PPTP que será algo básico para conectarnos desde internet a nuestras casas/pequeños negocios, bastante útil sobre todo si disponemos de servicios a los que queremos acceder y no queremos dar un acceso público. Si no tenemos una IP pública fija, sería ideal combinarlo con el cliente NO-IP en nuestra Raspberry!!!

raspberry-vpn-bujarra
Así que siguiendo estos pocos pasos podremos acceder a nuestra casa o pequeño negocio, recordar que PPTP no es que sea lo más seguro, ya os mostraré en otro documento cómo montarlo con OpenVPN! Por ahora será suficiente para conectarnos a los recursos necesarios y no tener que exponerlos a internet, obviamente podremos configurar el cliente VPN en nuestros smartphones con Android, iPhone o iPad, así como en equipos con Windows, Linux, Mac…
sudo modprobe ppp-compress-18
Asi comprobamos si nuestro kernel soporta ppp-compress, si despues de ejecutarlo no hace nada
lo soporta.

install the PPTP server
sudo apt-get install pptpd
Lo primero de todo, necesitaremos habilitar el soporte MPPE, posteriormente instalamos el servidor de VPN para Raspbian, basado en PPTP.

sudo vim /etc/pptpd.conf
localip 192.168.1.100
remoteip 192.168.1.120-130
Editaremos el fichero de configuración ‘/etc/pptpd.conf’ e indicaremos en ‘localip’ la dirección IP local de la Raspberry Pi, en ‘remoteip’ el rango IP que dará a los clientes que se conecten a la VPN.

sudo vim /etc/ppp/pptpd-options
ms-dns 192.168.1.1
nobsdcomp
noipx
mtu 1490
mru 1490
Editamos el fichero ‘/etc/ppp/pptpd-options’ y añadimos el texto anterior, deberemos configurar el servidor DNS correcto, podría ser mismamente la IP del router, qeu hace de srv. dns pero también las de google( 8.8.8.8, 8.8.4.4) dependerá del escenario.

sudo vim /etc/ppp/chap-secrets
usuario[TAB]*[TAB]contraseña[TAB]*
Ahora creamos el usuario para acceder a la VPN, deberemos generar el contenido del fichero con el formato correcto y las tabulaciones apropiadas.

sudo service pptpd restart
Reiniciamos el servicio para que surtan efecto los cambios!

sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1
Deberemos permitir si es que nos interesa el redireccionamiento desde la Raspberry a otros equipos de la red, ya que si no, al conectarnos desde el exterior sólo podremos acceder a la Raspberry y no a los demás dispositivos de casa, descomentamos la línea anterior en el fichero ‘/etc/sysctl.conf’.

sudo sysctl -p

Para lanzar el servicio vpn PPTPD en el reinicio de nuestra raspi hay que lanzarlo en locar:
 sudo vim /etc/rc.local

Añadir debajo de los comentarios:
sudo service pptpd start

Guardar y reiniciar y listo! ya sólo nos quedaría abrir el puerto 1723 tcp en nuestro router hacía la IP que tenga nuestra querída Raspberry Pi.


Apuntes:


Si queremos usarlo poniendo con una  IP privada fija en nuestra Rasp:

 sudo vim  /etc/network/interfaces


#Configuramos la ip privada para ponerla fija 192.168.1.102

auto eth0 
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1 8.8.8.8 8.8.4.4
allow-hotplug eth0
iface eth0 inet manual


Salvamos y paramos el servicio de dhcp
sudo service dhcpcd stop
systemctl disable dhcpcd
sudo update-rc.d dhcpcd disable
sudo service NetworkManager start






Lanzamos el servicio PPTPD para que se lance en el arranque

sudo update-rc.d  pptpd defaults

Reiniciamos:
sudo reboot

Y comprobamos que tenemos pptpd lanzado:








Fácilmente podremos configurar por ejemplo el cliente de la VPN en iOS, desde “Ajustes” > “General” > “VPN” > “Añadir configuración VPN…” > Seleccionamos ‘PPTP’, en ‘Servidor’ pondremos la IP pública de nuestra casa o el nombre de NO-IP que tengamos, en ‘Cuenta’ el usuario creado para la VPN, en ‘Contraseña’ su password, y por defecto dejamos lo demás como está y debería conectarnos sin problemas!!!

domingo, marzo 06, 2016

Iniciarse en domotica casera, Raspberry Pi y Z-WAVE, Parte IV: ImperiHome, App para controlar DomoticZ en nuestros Smartphones

ImperiHome


Imperihome es una aplicación de teléfono inteligente que integra de forma nativa con varios sistemas domoticz. Una API genérica se ha hecho disponible para otros sistemas que se integran con él.
Los procedimientos siguientes se hacen para proporcionar una puerta de enlace que permita a un usuario utilizar la aplicación de teléfono inteligente con Domoticz.
La puerta de enlace actuará como una interfaz entre domoticz y Imperihome, de modo que Imperihome puede interactuar con la puerta de enlace, que a cambio interactuar con Domoticz.
Habrá un cliente (ImperiHome), una puerta de enlace protocolar (La puerta de enlace a continuación) y el servidor (Domoticz). La puerta de entrada será un servidor REST / Web con su propia IP: puerto para ser elegido y sea diferente de Domoticz si se ejecuta en el mismo servidor.

Imperihome screen 1

Imperihome screen 2

Caracteristicas

  • todos los interruptores (pero no el brazo, sin ACK como no disponibles en DZ)
  • todos los sensores de temperatura / humedad / tiempo / UV / presión
  • todos los servicios públicos
  • todas las escenas
  • las habitaciones han sido asignadas a las pestañas DZ para más claridad
  • punto de ajuste del termostato básica como en DZ

Qué hacer

  • curvas de uso completo de Imperihome
  • La gestión de varias cámaras
  • RGB

Solución de problemas generales

*Recordar que que las secuencias de comandos de Unix necesitan el derecho de ejecución y lectura.
*Recordar que un script se inicia en el primer lugar con el camino intérprete, línea sin ningún espacio que debería ser para Perl: #!/usr /bin/perl
Si ejecuta la puerta de enlace en un servidor diferente que domoticz, añadirlo en la configuraciónde modo que  no requerirá de usuario / contraseña.


Arquitectura

Imperihome.png

Descargando el código

cd ~/domoticz/
git clone https://github.com/empierre/MyDomoAtHome MyDomoAtHome
cd MyDomoAtHome
cp config.yml.def config.yml

Configurando la app

La url 
The La url debe ser configurada para su sistema domoticz dirección/puerto (sustituye 192.168.0.24 por su IP and 8080 por su puerto):
  • config.yml
También editar  MyDomoAtHome.sh y cambia la linea 20 del path de tu instalación, y despues ejecutar este script para instalar dependencias e instalar el servicio en el arranque del sistema operativo. Este paso no es necesario en una instalación de Raspberry 
sh ./run-once.sh
Si queremos cambiar el puerto predeterminado (3001) hacerlo en MyDomoAtHome.sh
.

Lanzando el servicio

Para lanzar el servicio:
   sudo service MyDomoAtHome.sh start
Parar el servicio :
   sudo service MyDomoAtHome.sh stop
Reiniciar el servicio :
   sudo service MyDomoAtHome.sh reload

Como comprobar que la instalación es correcta

Ir a la siguiente url:
http://gateway_ip:gateway_port/devices
Si el resultado no muestra los dispositivos, por favor recuerde que debe permitir el acceso sin contraseña a la puerta de enlace IP dentro de los ajustes Domoticz.:
http://domoticz_ip:domoticz_port/json.htm?type=devices&filter=all&used=true&order=Name  
http://domoticz_ip:domoticz_port/json.htm?type=scenes
http://domoticz_ip:domoticz_port/json.htm?type=cameras    (for this one, please change login/pass if any... don't post it as it on public forum...)

En la primera url obtendrá lo que verá, en el segundo los que proporciona Domoticz. 

 Ahora podemos configurar la App ImperiHome

Podemos añadir un dispositivo con la aplicación ImperiHome :
  • Ir a parameters / My Systems / Add a system
  • selecionar Imperihome Standard System
  • Escribir en "your gateway base url tu_ip:port  después next y ya está !

Actualizar la verson

Ejecutar desde el directorio de MyDomoAtHome :
 sh ./update-mdah.sh  

 Acceder desde fuera de nuestra red (nternet)

La mejor forma de hacerlo es configurar nginx entre domoticz y la puerta de enlace: http://www.domoticz.com/wiki/Secure_Remote_Access
En la configuración domoticz añadir una sección para redirigir a la puerta de enlace como este (cambiar su ip a continuación), y crear un Htpasswd para ambos (usando htpasswd del paquete apache2-utils = & gt; htpasswd -c .htaccess yourusername YourPassword)
      location /iss/ {
       proxy_pass http://192.168.0.28:3001/;
       auth_basic            "Access Restricted";
       auth_basic_user_file  "/etc/nginx/.htpasswd";
       access_log /var/log/nginx/domoticz.access.log;
       error_log /var/log/nginx/domoticz.error.log;
      }



jueves, marzo 03, 2016

Iniciarse en domotica casera, Raspberry Pi y Z-WAVE, Parte III: Instalar Domoticz con tarjeta GPIO RaZberry y empezar a controlar dispositivos



Tras recibir los materiales tocaba empezar desde 0 con la configuración del software para administrar de forma remota los dispositivos que voy a instalar para controlar la energía de mi casa. Parto de conocimientos 0 en el mundo de la domótica  así que manos a la obra.

Materiales:

-Rasberry Pi B+ (vale también la 2), con una MicroSD de no menos de 4GB
-Tarjeta GPIO RaZberry
Con esto ya tenemos el hardware principal para preparar un controlador doméstico z-Wave
-Software open source empleado será Domoticz

Los dos dispositivos que voy a usar son los siguientes:
-Termostato Netatmo: Controlo la caldera:
        temperatura, consumos, eficiencia energética, administración remota desde el smartphone incluso fuera de casa, etc ...
-Enchufe ON/OFF con controlador de Consumo GREENWAVE N310:
           Primer dispositivo Z-WAVE, orientado a poner en marcha un enchufe interruptor con control desglosado de consumo. Mi intención es ir aumentando estos dispositivos, como
             el modelo de aenon labs HEM3.


Empezamos:


-Preparrar la MicroSD con una imagen del Sistema Operativo de la Rasperry PI (Raspian), doy por echo que este proceso ya está completado así que paso directamente al resto del proceso.Al tener nuestra RasPi conectada por cable a nutestro router, recibirá la IP  automáticamente. Podemos saber que IP a recibido con apps para nuestro smartphone como FING o, mejor todavía, entrando en la configuración del router y así podemos, ademas de ver la ip donada, asignarsela a la RasPI mediante la MAC de su tarjeta (podremos cambiar siempre de MicroSD con diferentes configuraciones y tener siempre la IP para nuestra RasPI).
 Una vez completado el paso, apagar la RasPI.

-Instalar físicamente la tarjeta RaZberry en el bus GPIO exactamente como muestra la imagen:


Una vez colocada procedemos a arrancar nuestra RasPI. 

-Entrar por Putty a nuestra Raspi: login con usuario pi/raspberry
sudo apt-get update
sudo apt-get upgrade
sudo reboot

Entrar de nuevo con el usuario pi


sudo rpi-update
sudo reboot

Es necesario ejecutar los pasos anteriores para disponer de los máximos recursos de hardware disponibles (memoria)

-Instalando DomoticZ

Entrar con el usuario pi y ejecutar los comandos siguientes:

mkdir ~/domoticz
cd ~/domoticz
wget http://www.domoticz.com/releases/release/domoticz_linux_armv7l.tgz
tar xvfz domoticz_linux_armv7l.tgz
rm domoticz_linux_armv7l.tgz


-Hacer que domoticz se ejecute en cada arranque del Sistema operativo:

sudo cp domoticz.sh /etc/init.d
sudo chmod +x /etc/init.d/domoticz.sh
sudo update-rc.d domoticz.sh defaults

Hay que editar el script de arranque para asegurarnos que el usuario y varios argumentos sean correctos:

sudo vi /etc/init.d/domoticz.sh

USERNAME=pi
DAEMON=/home/$USERNAME/domoticz/$NAME
DAEMON_ARGS="-daemon -www 8080"

Si queremos otros puertos (8080 y seguro 443) modificar:

DAEMON_ARGS="-daemon -www 8080" DAEMON_ARGS="-daemon -sslwww 443"


Pruebas de domoticz, importante para aplicar los permisos correctos:

cd domoticz
sudo ./domoticz
Con control + C podemos cerrarlo

Iniciar Domoticz como servicio (o reiniciar la RasPI para que lo carge en el inicio)
sudo service domoticz.sh start
Podemos entrar en nuestro navegador  y comprobar que ya esta funcionado
Http://IPraspberry:8080



Configurando domoticz:

-Instalamos el software de RaZberry para dejarlo correctamente reconocido por nuestra rasberry:

wget -q -O - http://razberry.z-wave.me/install | sudo bash

Aceptanos licencia, etc..


-Tenemos que desactivar las consolas, servicios y puertos que usa las instalación de z-wave:

sudo update-rc.d z-way-server remove
sudo update-rc.d zbw_connect remove
sudo update-rc.d mongoose remove


-Reiniciamos nuestra raspi 

-Entramos en http://IPRAPSBERRY:8080

 Ir a setup---> Hardware
En Type Aunque en el listado de dispositivos aparezca una tarjeta RaZberry no hay que seleccionarla ya que dejó de estar soportada y no va a funcionar, en su lugar  buscamos openZWave USB
y en "serial port" aparecerá "/dev/ttyAMA0"

En "name" ponemos un nombre, por ejemplo RaZberry, y seleccionada la casilla "enabled"
Vemos que a parecido el servicio open Z wave y un boton "setup" entrar en el y deberíamos ver nuestra tarjeta, en caso contrario darle al botón refresh, si no termina de aparecer reiniciar la Raspi y entrar otra vez para verla.

Ahora tenemos nuestra tarjeta RaZberry funcionado, es hora de ir agregando los nodos:















Para instalar Netatmo, hay que ir a setup ---> Hardware y agregar el dispositivo "Netatmo" de la lista de dispositivos. Nos pide un usuario y password que se corresponden con el registro de nuestro dispositivo (termostato, estación meteorilógica de la marca Netatmo). Una vez introducidos estos datos el dispositivo será agregado a domoticz.

En mi caso he incorporado el Termostato netatmo a domoticz, el log de domoticz dice lo siguiente:

2016-03-02 23:12:01.822 Netatmo: Worker started...
2016-03-02 23:12:35.155 Netatmo: No Weather Station devices found...
2016-03-02 23:12:35.613 (Termostato Netatmo) Temp (Termostato)
2016-03-02 23:12:35.622 (Termostato Netatmo) Thermostat (SetPoint Termostato)
2016-03-02 23:12:35.627 (Termostato Netatmo) Lighting 2 (Away Termostato)

En setup --> devices ya aparece el termostato y podemos visualizar sus monitorizaciones.

Este es mi escritorio actual domoticz

Notas:
1-Si queremos activar el log:

-editar /etc/init.d/domoticz.sh
-desnombrar:

DAEMON_ARGS="$DAEMON_ARGS -log /tmp/domoticz.txt"

-reiniciar servicio: sudo service domoticz.sh restart

2-En vesiones anteriores de domoticz no estaba soportado el puerto GPIO donde está conectada la tarjera RaZberry (/dev/ttyAMA0 por lo que era necesario hacerle creer a este que RaZberry es un dispositivo USB (/dev/ttyUSB20), no es necesario hacerlo pero por si acaso usais versiones anteriores de domoticz os dejo como hacerlo:

3-En setup--> settings configuramos el idioma si nos interesa poner la interfaz en castellano. Tener cuidado con el apartado de contraseña y password, verificar que esas casillas están bacías si no queréis que se bloquee la entrada a domoticz con usuario y password.



///////////////////////////// Estos pasos finalmente no han sido necesario hacer////////////////////////////
-Ahora vamos a incluir nuestra tarjeta RaZberry, antes de nada tengo que deciros que la tarjeta RaZberry no está directamente soportada por domoticz, es necesário hacerle creer a este que es una tarjeta USB, para esto tecleamos los siguiente:

-Creamos el siguiente fichero editándolo:

sudo nano /etc/udev/rules.d/09-tty.rules        

-Incluir el siguiente texto:

KERNEL=="ttyAMA0", SYMLINK+="ttyUSB20"

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////