/ HOWTO

Contenedor con OpenHab.


Corriendo OPENHAB en un contenedor Docker.

Hoy presentamos un contenedor para hacer funcionar “OpenHab” sobre Docker, para los que no lo conocen, OpenHAb (open Home Automation Bus) es una solución para automatización casera independiente del hardware usado, OpenHAb funciona en diferentes hardware, desde Raspberry PI, Linux, Windows, OSX y otros tipos.

Hay una descripción bastante buena en este link.

https://www.openhab.org/docs/#getting-started

Y documentación aqui.

https://www.openhab.org/docs/

openhab1

El hardware que parece ser mas utilizado es justamente una RaspberryPI con “openhabian”.

https://www.openhab.org/docs/installation/openhabian.html

Imágen de la plataforma de OpenHab. openhab3

En nuestro caso el ejercicio será hacer funcionar OpenHab en Docker, esto permitirá varias ventajas. No tener que preparar una maquina virtual. (evitar excesivo consumo de recursos) No tener que usar una Raspberry PI. (evitar hardware) Poder tener varias configuraciones al mismo tiempo (con distintos Contenedores). Facilidad de mapear puertos OH a otros puertos. Orquestación, un término muy de moda para indicar automatización fácil.

Openhab se instalará en la carpeta /openhab y usará la versión openhab 2.

Puesta en marcha.

Agregar un usuario y grupo a nuestro servidor que será la cuenta que usará “openhab”.

# /etc/init.d/docker start
# sudo useradd -r -s /sbin/nologin openhab
# usermod -a -G openhab dac

En nuestro equipo real, definir las carpetas que usará el nuevo contenedor.

# mkdir /opt/openhab
# mkdir /opt/openhab/conf
# mkdir /opt/openhab/userdata
# mkdir /opt/openhab/addons
# chown -R openhab:openhab /opt/openhab

Finalmente bajar la imágen y crear un nuevo contenedor.

# docker run \
        --name openhab \
        --net=host \
        -v /etc/localtime:/etc/localtime:ro \
        -v /etc/timezone:/etc/timezone:ro \
        -v /opt/openhab/conf:/openhab/conf \
        -v /opt/openhab/userdata:/openhab/userdata \
        -v /opt/openhab/addons:/openhab/addons\
        -d \
        -e USER_ID=1000 \
        -e GROUP_ID=998 \
        --restart=always \
        openhab/openhab:2.4.0-amd64-debian

Los parámetros para este contenedor son.

  • Nombre del contenedor.
  • Tipo de red (Host)
  • Montar varios volúmenes reales de nuestro servidor en el contenedor. (5) Las unidades que montará el contenedor son las carpetas que definimos anteriormente.
  • Indicar los UID y GID para usuario y grupo los anteriormente definidos. (en mi caso 1000 y 998)
  • La arquitectura será amd64 sobre Debian usando la versión 2.4.0 de openhab.
2.4.0-amd64-debian: Pulling from openhab/openhab
e3b57c9babc3: Pull complete 
ae00a2abba03: Pull complete 
0627f0a0d367: Pull complete 
05910a06fefa: Pull complete 
82006d302eb8: Pull complete 
be29ca3f08df: Pull complete 
Digest: sha256:20efe896ebbb9d1c9b1ff14e4fe4f46db6e8e8dd6792ea2f8f57532aba1ea6f8
Status: Downloaded newer image for openhab/openhab:2.4.0-amd64-debian
af7a809c342af413fab5e8a07dfe4a57c90ffa12fc1f32bf76bfef125e590211
# docker ps
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS              PORTS                                                                NAMES
af7a809c342a        openhab/openhab:2.4.0-amd64-debian   "/entrypoint.sh gosu…"   22 seconds ago      Up 21 seconds                                                                            openhab

Luego acceder a la interfaz web y comenzar con la configuración de cada dispositivo:

https://127.0.0.1:8443/start/index

openhab2

Pantalla con una configuración de ejemplo.

openhab4

Un demo donde interactuar para controladores de temperatura y domótica para un supuesto primer piso de una casa.

openhab5

Subscríbete y recibirás los últimos artículos semanalmente en tu email.