Si aprecias ser dueño de su propia vida y de tu casa inteligente, valorarás montar tu hub domótico, optando por aquellos dispositivo que más te convengan, desligándote de las barreras que, históricamente, han impuesto los fabricantes y conformando un ecosistema flexible con el que te sientas cómodo.
Nos ponemos en marcha con esta idea de montar nuestro propio hub domótico y, para ello, empezamos con el hardware necesario. ¿Arrancamos?
¿Qué vamos a hacer?
Para montar nuestro propio hub domótico basado en Zigbee (puedes aprender más sobre _Zigbee_ en este artículo), y antes de poner en funcionamiento ningún software, nos va a hacer falta cierto material hardware donde instalar ese software y que quede conectado a nuestra red (LAN) de casa. Además vamos a tener que configurar algunas cosillas relativas al hardware.
¡ATENCIÓN!: Lo que vamos a hacer tiene cierto nivel de complejidad. Si bien vas a poder seguir fácilmente, o eso espero, las instrucciones, algo de conocimiento de uso de la terminal Linux te va a hacer falta.
Los pasos que vamos a dar serán:
- Instalar sistema operativo, dedicado, basado en Linux en un PC.
- Asignar una IP fija al PC.
- Conectar el PC a nuestra red.
- Instalar un coordinador Zigbee.
¿Qué material necesito?
- Un PC básico tipo NUC (mini PC) o una placa tipo SBC (como una Raspberry) . Puede ser un PC con solera que puedas reaprovechar (como te dije, va a ser dedicado). Yo uso un mini PC NiPoGi AK1 PRO con un Intel N5105 con 8GB RAM aunque con 4GB de RAM va a ser suficiente (no te recoiendo menos).
- Sistema operartivo Linux (recomendado). Yo uso Ubuntu Server (sin interfaz gráfico).
- Coordinador Zigbee. Yo uso el SONOFF Zigbee 3.0 Dongle Plus.
- Cable alargador USB.
- Cable Ethernet.
- Switch / Router.
- Un segundo PC o tablet para poder acceder por SSH a tu hub domótico.
Instalar el sistema operativo
¡ATENCIÓN!: Lo que vamos a hacer va a dejar el disco de tu PC limpio y perderás todos tus datos. Hazte una copia de aquellos datos que necesites preservar.
Si bien podemos optar por montarnos un Proxmox (se instala directamente en el PC, como un sistema operativo) y usar el PC para distintos propósitos mediante el uso de máquinas virtuales, este tipo de soluciones de virtualización requieren de un hardware superior al que te he aconsejado. Mi opción ha sido un Ubuntu Server sin interfaz gráfica (no tiene sentido una interfaz gráfica cuando no vas a usar el PC como si fuese una máquina de escritorio).
Lo que debemos hacer es:
- Comprobar en la BIOs/UEFI del PC que va a hacer de hub que tienes activado el arranque por USB.
- Descargar y planchar la imagen de Ubuntu Server (última versión LTS) en un pendrive.
- Conectar el PC a la red mediante cable Ethernet, y conectarle un teclado y monitor.
- Arrancar el PC con ese pendrive y hacer la instalación, siguiendo las instrucciones.
Es imporatnte que no te olvides del usuario y la contraseña de administrador que has tenido que crear durante la instalación del sistema operativo.
Supondremos, en este ejercicio, que el usuario es hubadmin
y que la IP de tu PC es 192.168.0.2
Asignar una IP fija al PC
¡ATENCIÓN!: Me estoy basando en Ububtu Server. Si usas otro sistema operativo basado en Linux pueden cambiar algunas cosas.
Ubuntu Server ya trae SSH instalado y activo, pero antes de acceder a él mediante SSH te recomiendo darle la IP fija. Para ello deberemos:
- Determinar cuál es la interfaz de red, y la MAC address del equipo
sudo ip a
En mi caso, el resultado es el siguiente, y vemos que la interfaz de red local ethenet es enp1s0
y que la MAC es 1d:ef:2b:7c:de
:
1: lo: <LOOPBACK, UP ,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
1ink/1oopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host 10
valid_Ift forever preferred_Ift forever
inet6 ::1/128 scope host
valid_Ift forever preferred_Ift forever
2: enp1s0: <BROADCAST, MULTICAST, UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
1ink/ether 68:1d:ef:2b:7c:de brd ff:ff:ff:ff:ff:ff
inet 192.168.0.127/24 metric 100 brd 192.168.0.255 scope global dynamic enp1s0
valid_1ft 86220sec preferred_1ft 86220sec
inet6 fe80::6a1d:efff:fe2b:7cde/64 scope link
valid_ift forever preferred_Ift forever
3: w1p2s0: <BROADCAST, MULTICAST› mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 24:67:2a:28:78:95 brd ff:ff:ffeff:ff:ff
4: docker0: <NO-CARRIER, BROADCAST, MULTICAST , UP> mu 1500 qdisc noqueue state DONN group default
link/ether 02:42:a0:7c:95:41 brd ff:ffeffeffeffeft inet 172.17.0.1/16 brd 172.17.255.255 scope global dockero
valid_Ift forever preferred_Ift forever
- Desactivar el archivo de netplan que viene por defecto en la instalación limpia:
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
- Crear un nuevo plan de red con la configuración que necesitamos. Para ello escribiremos:
sudo nano `/etc/netplan/10-ethernet-config.yaml`
En este archivo escribiremos lo siguiente:
network:
version: 2
renderer: networkd
ethernets:
enp1s0: # Sustituye 'enp1s0' por el valor obtenido al hacer 'sudo ip a'
dhcp4: no
addresses:
- 192.168.0.2/24 # Sustituye '192.168.0.2' por la IP fija que quieras darle a este equipo
routes:
- to: default
via: 192.168.0.1 # Sustituye '192.168.0.1' por la IP de tu router
nameservers:
addresses: [192.168.0.2, 1.1.1.1, 1.0.0.1] # Lista de IPs de los servidores de DNS a usar, por orden de prioridad de uso. He añadido los de Cloudflare. He usado '192.168.0.2' porque esta máquina es mi servidor DNS, también
- Testear la corrección del archivo
sudo netplan try
- Si el paso anterior ha ido bien, aplicar el nuevo plan de red:
sudo netplan apply
Ahora puedes resetear el PC. Éste debería iniciarse con la IP que has establecido. Puedes comprobarlo volviendo a hacer sudo ip a
.
NOTA: el número que precede a cada archivo YAML dentro de /etc/netplan/
tiene una utilidad muy importante: define el orden de precedencia y aplicación de las configuraciones de red. Una instalación limpia y por defecto de Ubuntu Server generalmente viene con un solo archivo de Netplan en el directorio /etc/netplan/
, con lo que tras el renombrado y la creación del nuevo archivo, seguirás teniendo un solo archivo de configuración de la red.
Conectar PC a la red
Si todo ha ido bien, apaga el equipo mediante el comando sudo shutdown -h now
, desconéctale teclado, monitor y cable de red y colócalo allí donde vaya a ser su ubicación final.
Ponle el cable Ethernet nuevamente y reconecta el cable al router o a un switch. Si lo conectas a un switch, verifica que éste está, a su vez, conectado al router directamente, directa o indirectamente, pues te hará falta salida a Internet.
Vuelve a encender el PC y verifica que en el puerto del router o del switch se enciende el led que indica que en ese puerto hay un dispositivo conectado y activo.
Instalar el coordinador Zigbee
Es momento de «pinchar» el coordinador Zigbbe. Hazlo mediante un cable alargador para ubicarlo en un lugar conveniente (que no quede encerrado en un mueble y alejado de tu punto de acceso WiFi).
¡ATENCIÓN!: La información que te proporciono en este apartado es relativa a un coordinador SONOFF Zigbee 3.0 Dongle Plus. Con otros coordinadores, si bien el proceso es el mismo, la información obtenida al ejecutar comandos va ser distinta.
Conéctate por SSH a tu PC (ssh hubadmin@192.168.0.2
) y ejecuta:
ls -l /dev/serial/by-id/
Observamos el resultado:
«lrwxrwxrwx 1 root root 13 de des. 24 10:41 usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0 -> ../../ttyUSB0
En el caso del pincho Sonoff ZDongle-P podemos ver su identificador:
– Físico = usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0
– Lógico = ttyUSB0
Así pues, los puntos de montaje del coordinador son:
– Identificador físico: /dev/serial/by-id/usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0
. Usaremos este identificador a ser posible.
– Identificador lógico: /dev/ttyUSB0
Quédate con la copla de lo de los puntos de montaje, porque nos harán falta a la hora de poner en marcha el software en un próximo artículo.
Haz la siguiente comprobación: test -w /dev/ttyUSB0 && echo success || echo failure
. Si el resultado que obtienes es failure
, entonces ejecuta sudo usermod -a -G dialout $USER
y reinicia con sudo reboot
y vuelve a ejecutar test -w /dev/ttyUSB0 && echo success || echo failure
. Ahora deberías obtener el resultado success
.
Si has llegado hasta aquí satisfactoriamente, estás preparado para empezar a instalar el software necesario para tu hub domótico. La parte de hardware está finalizada. ¡Enhorabuena!