diff --git a/group_vars/prod b/group_vars/prod index 7f47694cea61da8830a0d98f0d66a0dc6c94135b..187b24ebc46f3be19e6f3620ed1d4c3071a2ed93 100644 --- a/group_vars/prod +++ b/group_vars/prod @@ -122,6 +122,10 @@ eq3max: - { name: "E-Werkstatt-Mitte", id: "MEQ1814738" } # - { name: "HeizungKlo", id: "OEQ0663079" } +# SLZB-06 Zigbee Adapter +slzb06: + host: 192.168.0.16 + # Globale OAuth Server Settings oauth_global: authorize_url: https://uffd.warpzone.ms/oauth2/authorize diff --git a/host_vars/ogg b/host_vars/ogg index 1520fe2a903bf94946696919698331b49b3496b7..90b4d20f2e4925373352760fd5c326ab569cfab7 100644 --- a/host_vars/ogg +++ b/host_vars/ogg @@ -69,6 +69,7 @@ alert: - { name: "tasmoadmin-app-1" } - { name: "traefik-app-1" } - { name: "watchtower-app-1" } + - { name: "zigbee2mqtt-app-1" } disks: - { mountpoint: "/", warn: "5 GB", crit: "1 GB" } - { mountpoint: "/srv", warn: "5 GB", crit: "1 GB" } diff --git a/intern/docker_zigbee2mqtt/tasks/main.yml b/intern/docker_zigbee2mqtt/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..17ea1582eecfcd9c5739277ff1498c92220e0545 --- /dev/null +++ b/intern/docker_zigbee2mqtt/tasks/main.yml @@ -0,0 +1,32 @@ +--- + +- name: "create folder struct for {{ basedir }}" + file: + path: "{{ item }}" + state: "directory" + with_items: + - "{{ basedir }}" + - "{{ basedir }}/data/" + + +- name: "copy config files for {{ basedir }}" + template: + src: "{{ item }}" + dest: "{{ basedir }}/{{ item }}" + with_items: + - docker-compose.yml + - data/configuration.yaml + register: config_files + + +- name: "stop {{ servicename }} docker" + community.docker.docker_compose_v2: + project_src: "{{ basedir }}" + state: absent + when: config_files.changed + + +- name: "start {{ servicename }} docker" + community.docker.docker_compose_v2: + project_src: "{{ basedir }}" + state: present diff --git a/intern/docker_zigbee2mqtt/templates/data/configuration.yaml b/intern/docker_zigbee2mqtt/templates/data/configuration.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5a516d9015e946787330e40b593f35f31c3b46a8 --- /dev/null +++ b/intern/docker_zigbee2mqtt/templates/data/configuration.yaml @@ -0,0 +1,36 @@ +# Home Assistant integration (MQTT discovery) +homeassistant: true + +# allow new devices to join +permit_join: true + +# MQTT settings +mqtt: + # MQTT base topic for zigbee2mqtt MQTT messages + base_topic: zigbee2mqtt + # MQTT server URL + server: mqtt://{{ int_ip4 }} + # MQTT server authentication, uncomment if required: + # user: my_user + # password: my_password + +# SLZB-06 Zigbee coordinator settings +serial: +# Location of SLZB-06M + port: tcp://{{ slzb06.host }}:6638 + baudrate: 115200 + rtscts: false + adapter: ember + +# Web Frontend +# https://www.zigbee2mqtt.io/guide/configuration/frontend.html +frontend: + # Optional, default 8080 + port: 8080 + +# Logging +# https://www.zigbee2mqtt.io/guide/configuration/logging.html +advanced: + log_level: info + log_namespaced_levels: + z2m:mqtt: warning diff --git a/intern/docker_zigbee2mqtt/templates/docker-compose.yml b/intern/docker_zigbee2mqtt/templates/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..4cd93aaaac8093df0dfcfe6ff3dcd8c798304f08 --- /dev/null +++ b/intern/docker_zigbee2mqtt/templates/docker-compose.yml @@ -0,0 +1,26 @@ + +services: + + # Zigbee USB Stick must be Mounted as /dev/ttyNabuCasaSkyConnect + # see https://gist.github.com/crundberg/a77b22de856e92a7e14c81f40e7a74bd?permalink_comment_id=4524937 + + app: + image: koenkk/zigbee2mqtt:latest + restart: always + volumes: + - "{{ basedir }}/data:/app/data" + - /run/udev:/run/udev:ro + environment: + - TZ=Europe/Berlin + labels: + - traefik.enable=true + - traefik.http.routers.{{ servicename }}.rule=Host(`{{ domain }}`) + - traefik.http.routers.{{ servicename }}.entrypoints=websecure + - traefik.http.services.{{ servicename }}.loadbalancer.server.port=8080 + networks: + - default + - web + +networks: + web: + external: true diff --git a/site.yml b/site.yml index c59279335d15a8cd91943746dff8b0077c7fca31..2ffbeac61ec808411d043f5d8e0dc4ec255206a7 100644 --- a/site.yml +++ b/site.yml @@ -235,6 +235,13 @@ basedir: /srv/fridgeserver, domain: "fridgeserver.warpzone.lan" } + - { + role: intern/docker_zigbee2mqtt, tags: [ zigbee2mqtt, docker_services ], + servicename: zigbee2mqtt, + basedir: /srv/zigbee2mqtt, + domain: "zigbee2mqtt.warpzone.lan" + } + - hosts: webserver remote_user: root diff --git a/webserver/docker_icinga/templates/etc/icinga/conf.d/hosts_manual.conf b/webserver/docker_icinga/templates/etc/icinga/conf.d/hosts_manual.conf index d1f7c2a8deb2ff0018286d160004e2afc6b88b25..c01c783afa8c304604c62a925f94882ed954edf2 100644 --- a/webserver/docker_icinga/templates/etc/icinga/conf.d/hosts_manual.conf +++ b/webserver/docker_icinga/templates/etc/icinga/conf.d/hosts_manual.conf @@ -81,3 +81,11 @@ object Host "eq3max-cube" { groups = [ "network" ] } + +object Host "slzb-06-zigbee" { + import "generic-host" + + address = "{{ slzb06.host }}" + + groups = [ "network" ] +}