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/
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.
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
Pantalla con una configuración de ejemplo.
Un demo donde interactuar para controladores de temperatura y domótica para un supuesto primer piso de una casa.