INSTAR Deutschland GmbHINSTAR Deutschland GmbH

OpenHAB 3 Home Automation in Docker



Ziehen des Docker-Images

Das OpenHAB 3-Image ist im Docker Hub verfügbar:

docker pull openhab/openhab:3.1.0-snapshot-alpine

Vorbereiten des Systems

groupadd -g 9001 openhab
useradd -g 9001 openhab
usermod -a -G openhab myownuser
mkdir -p /opt/openhab/{openhab_addons,openhab_conf,openhab_userdata}
chmod -R 775 /opt/openhab

Betrieb des Containers

Von Ihrer Befehlszeile aus:

docker run \
        --name openhab \
        --net=host \
        --privileged \
         --rm \
        -v /etc/localtime:/etc/localtime:ro \
        -v /opt/openhab/openhab_addons:/openhab/addons \
        -v /opt/openhab/openhab_conf:/openhab/conf \
        -v /opt/openhab/openhab_userdata:/openhab/userdata \
        -d \
        openhab/openhab:3.1.0-snapshot-alpine

In docker-compose:

version: "3.8"

services:
  openhab:
    image: "openhab/openhab:3.1.0-snapshot-alpine"
    restart: always
    network_mode: host
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "/opt/openhab/openhab_addons:/openhab/addons"
      - "/opt/openhab/openhab_conf:/openhab/conf"
      - "/opt/openhab/openhab_userdata:/openhab/userdata"
    environment:
      OPENHAB_HTTP_PORT: "8181"
      OPENHAB_HTTPS_PORT: "8443"
      EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin"

Ich habe den HTTP-Port von 8080 auf 8181 geändert - da ich bereits den Standard-Port 8080 für einen anderen Dienst verwende. Stellen Sie sicher, dass der Port von Ihrem LAN aus erreichbar ist: z.B. ufw allow 8181/tcp.

Automatisieren der OpenHAB-Einrichtung mit Ansible

Sie können es testen, indem Sie das folgende Playbook ausführen:

ansible-playbook -i mycontainerhost, -t openhab run-containers.yml
- name: OpenHAB v3 Container
  hosts: test
  gather_facts: no
  
  tasks:

  - name: Run OpenHab Container
    tags: openhab
    docker_container:
      name: openhab
      image: openhab/openhab:3.1.0-snapshot-alpine
      state: started
      detach: yes
      interactive: yes
      tty: yes
      ports:
        - 8181:8080
        - 8101:8101
        - 5007:5007
      volumes:
        - /etc/localtime:/etc/localtime:ro
        - /etc/timezone:/etc/timezone:ro
        - /opt/openhab/addons:/openhab/addons
        - /opt/openhab/conf:/openhab/conf
        - /opt/openhab/userdata:/openhab/userdata
      keep_volumes: yes
      hostname: openhab.localnet
      memory: 512m
      pull: true
      restart_policy: unless-stopped
      env:
        EXTRA_JAVA_OPTS="-Duser.timezone=Europe/Berlin"

Führen Sie das Playbook aus und besuchen Sie die IP-Adresse Ihres Servers auf Port 8181:

Trying out OpenHAB 3 in Docker

Wählen Sie die Bindings aus, die installieren möchten:

Trying out OpenHAB 3 in Docker

Wartung der Installation

Aufräumen, wenn etwas schief geht

Löschen Sie den Inhalt von /opt/openhab/userdata/cache und /opt/openhab/userdata/tmp.

rm -rf /opt/openhab/userdata/cache
rm -rf /opt/openhab/userdata/tmp

OpenHAB CLI

Greifen Sie von Ihrem Hostsystem aus auf das OpenHAB-Befehlszeile innerhalb des Docker-Containers zu:

docker exec -it openhab /openhab/runtime/bin/client

Logging in as openhab
Password:  PASSWORD IS habopen

                           _   _     _     ____  
   ___   ___   ___   ___  | | | |   / \   | __ ) 
  / _ \ / _ \ / _ \ / _ \ | |_| |  / _ \  |  _ \ 
 | (_) | (_) |  __/| | | ||  _  | / ___ \ | |_) )
  \___/|  __/ \___/|_| |_||_| |_|/_/   \_\|____/ 
       |_|       3.1.0-SNAPSHOT - Build #2099

Use '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
To exit, use '<ctrl-d>' or 'logout'.

openhab> 

Zugriff auf die OpenHab-Protokolle über die CLI:

openhab> log:tail