Index de l'article

Mise à jour

Après une mise à jour malencontreuse qui semblait avoir cassé des trucs dans mon serveur OpenHab, tout ça est quelque peu resté à l'abandon au profit des plaisirs de la procrastination la plus crasse qui soit.

Puis un jour, l'idée folle de m'y remettre m'a traversé l'esprit et je m'y suis mis.

Du coup, gros changements en vue !

Containerisation des serveurs

Comme j'ai commencé à jouer avec docker, autant continuer et tenter de l'utiliser aussi pour installer openhab.

Ca complexifie un peu la mise en route la première fois, mais sur le long terme, ça rendra la maintenance bien plus simple, puisqu'il suffira de relancer le fichier YML détaillant le déploiement des containers.

Du coup, mes serveurs OpenHab et PostgreSQL seront contenus dans des containers Docker.

OpenHab 3.X

Bah ouais, quitte à tout réinstaller, autant partir sur la dernière version en date. Donc au revoir 2.5.X et bonjour 3.X (version milestone et pas stable parce que je suis un taré, un ouf, un déglingo !).

Pas mal de choses ont bougés pour cette nouvelle version :

  • Nouvelle infrastructure débarrassées des vieux restes de 1.X.
  • Disparition de Paper UI au profit de l'UI par défaut qui a le bénéfice supplémentaire de combiner interface utilisateur et interface administrateur (planquée derrière un login/mdp).
    Restent basic UI, HabPanel, CometVisu et HABot comme UI "plugin".
  • Blockly est maintenant pleinement intégré pour générer facilement de la logique d'automatisation.
  • La possibilité de faire du remote binding. En résumé, faire tourner plusieurs serveurs openhab qui s'échangent les données. Ce qui permet, par exemple, de mettre de petits serveur équipé d'un stick z-wave/zigbee/rfxcom au plus près des périphériques utilisant ce protocole de communication. Il est d'ailleurs possible, dans un serveur 3.X, de récupérer les bindings d'un serveur sous 2.5.X!

J'en oublie plus que certainement, mais j'ai listé avant tout ce qui semble essentiel pour mon utilisation personnelle.

Docker-compose

Du coup, j'ai regardé comment les autres faisaient et j'ai repompé sans aucune vergogne les code docker-compose. Faut dire qu'ayant juste deux containers à déployer pour faire tourner, ça va assez vite.

version: '3.7'

services:
  openhab:
    image: "openhab/openhab:milestone"
    container_name: "openhab"
    restart: always
    networks:
      openhabnet:
        aliases:
          - openhab
    ports:
      - "8080:8080"
      - "8443:8443"
      - "8101:8101"
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "/home/pi/docker/openhab/conf:/openhab/conf"
      - "/home/pi/docker/openhab/userdata:/openhab/userdata"
      - "/home/pi/docker/openhab/addons:/openhab/addons"
      - "/home/pi/docker/openhab/.java:/openhab/.java"
    environment:
      OPENHAB_HTTP_PORT: "8080"
      OPENHAB_HTTPS_PORT: "8443"
      EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Paris"
      USER_ID: "${OH_UID}"
      GROUP_ID: "${OH_GID}"
    devices:
      - "/dev/USBzwave:/dev/USBzwave:rwm"
      - "/dev/USBzigbee:/dev/USBzigbee:rwm"
      - "/dev/USBrfxcom:/dev/USBrfxcom:rwm"

  postgres:
    image: postgres
    container_name: "postgres"
    restart: always
    networks:
      openhabnet:
        aliases:
          - postgres
    ports:
      - "5432:5432"
    volumes:
       - "/home/pi/docker/postgres/data:/data/postgres"
       - "/home/pi/docker/postgres/conf/postgresql.conf:/etc/postgresql/postgresql.conf"
    environment:
      POSTGRES_USER: "${POSTGRES_USER:-Admin}"
      POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:-changeme}"
      PGDATA: "/data/postgres"

networks:
  openhabnet:
    driver: bridge
    ipam:
      config:
      - subnet: [yourIPrange]/24

Et lancer la ligne de commande avec les bons arguments :

CURRENT_UID=$(id -u) CURRENT_GID=$(id -g) OH_UID=$(id -u openhab) OH_GID=$(id -g openhab) docker-compose up -d

Bien entendu ça a été précédé par la création et l'attribution de divers droits au nouvel user openhab, ainsi que l'ajout de règles pour attribuer aux différents sticks usb des noms tty stables et facile d'usage.

Post install

L'interface post installation d'OpenHab m'a demandé de créer un compte administrateur et proposé quelques options de config et l'installation de plugins (binding, ui et autres).

Une fois ces formalités réglées, il était temps de commencer à apprivoiser la nouvelle interface. Heureusement, elle conserve de nombreux points communs avec les anciennes interfaces ce qui permet de ne pas être trop perdu. J'ai facilement pu ajouter les Things pour mes sticks usb et récupérer les capteurs et actionneurs de mon installation.

Le plus surprenant est la nouveau "modèle sémantique" qui remplace complètement l'ancien sitemap (même pour l'UI basic). Je n'ai fait qu'effleurer les possibilités offertes par ce système, mais il semble permettre de générer une interface sympa pour gérer ses appareils domotiques.

 

Etat actuel de l'installation

A l'heure actuelle, le stick zigbee refuse de fonctionner, mais l'appel de la procrastination se faisant sentir, je vais temporairement m'en passer. Et plutôt me concentrer sur le reste avant d'être repris de flemmingite aigüe.

Avec le RFXcom et le Z-Wave, je couvre déjà 80% des appareils installés. Le RFXcom pour les volets et des capteurs t°/humidité, le Z-Wave pour des capteurs divers et des micro modules planqués dans les interrupteurs. Le zigbee capricieux fait qu'il manque deux capteurs de t°/humidité et deux rubans de leds d'ambiance.

J'en ai profité pour mettre à jour le firmware du stick Z-Wave, les deux autres étant encore à jour.