diff --git a/group_vars/prod b/group_vars/prod
index 0ca2e837ee437938b4e3f641e366aa1195e52d28..696e1f71ae953ed3d97a984f80c6fcab0ffd3917 100644
--- a/group_vars/prod
+++ b/group_vars/prod
@@ -113,3 +113,9 @@ esphome_devices:
   - { id: "lounge",        name: "Lounge",        groups: "gLounge",        sensors: [ "Temp", "pressure", "humidity" ] }
   - { id: "status",        name: "Status/Strom",  groups: "gHauptraum",     sensors: [ "stromverbrauch", "warpzone_status" ] }
   - { id: "vortragsraum",  name: "Vortragsraum",  groups: "gVortragsraum",  sensors: [ "Temp", "pressure", "humidity" ] }
+
+#Global Homematic configuration 
+homematic:
+  ccu2_host: 192.168.0.15
+  devices_heizung:
+    - { name: "HeizungKlo", id: "OEQ0663079" }
diff --git a/intern/docker_homeassistant/templates/config/configuration.yaml b/intern/docker_homeassistant/templates/config/configuration.yaml
index 47b826aade369d1a3c3b66bf45e6d10741583a60..12a9e438b49a0642e82e7ff5f62149cb2cd9bd68 100644
--- a/intern/docker_homeassistant/templates/config/configuration.yaml
+++ b/intern/docker_homeassistant/templates/config/configuration.yaml
@@ -60,17 +60,17 @@ homematic:
   local_port: {{ homematic_callback_port }}
   interfaces:
     rf:
-      host: 192.168.0.15
+      host: {{ homematic.ccu2_host }}
       resolvenames: json
       callback_ip: {{ int_ip4 }}
       callback_port: {{ homematic_callback_port }}
     ip:
-      host: 192.168.0.15
+      host: {{ homematic.ccu2_host }}
       port: 2010
       callback_ip: {{ int_ip4 }}
       callback_port: {{ homematic_callback_port }}
     groups:
-      host: 192.168.0.15
+      host: {{ homematic.ccu2_host }}
       port: 9292
       resolvenames: json
       path: /groups
@@ -78,7 +78,7 @@ homematic:
       callback_port: {{ homematic_callback_port }}
   hosts:
     ccu2:
-      host: 192.168.0.15
+      host: {{ homematic.ccu2_host }}
 
 
 # zonenstatus wird vom hauptschalter gesteuert, switch02 ping ist nicht mehr notwendig
diff --git a/intern/docker_homematic/tasks/main.yml b/intern/docker_homematic/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..af0b0c291ae9b38cb254fc59902d38f9c354ec61
--- /dev/null
+++ b/intern/docker_homematic/tasks/main.yml
@@ -0,0 +1,37 @@
+---
+
+- include: ../functions/get_secret.yml
+  with_items:
+   - { path: "{{ basedir }}/influxdb_password",            length: 12 }
+   - { path: "{{ basedir }}/influxdb_token",               length: 32 }
+
+
+- name: "create folder struct for {{ basedir }}"
+  file: 
+    path: "{{ item }}"
+    state: "directory"
+  with_items:
+    - "{{ basedir }}"
+
+
+- name: "copy config files for {{ basedir }}"
+  template:
+    src: "{{ item }}"
+    dest: "{{ basedir }}/{{ item }}"
+  with_items:
+    - docker-compose.yml
+    - telegraf.conf
+  register: config_files
+
+
+- name: "stop {{ servicename }} docker"
+  docker_compose:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+
+- name: "start {{ servicename }} docker"
+  docker_compose:
+    project_src: "{{ basedir }}"
+    state: present
diff --git a/intern/docker_homematic/templates/docker-compose.yml b/intern/docker_homematic/templates/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..70faec0a02cbfaa2b59e0683700d4998af651254
--- /dev/null
+++ b/intern/docker_homematic/templates/docker-compose.yml
@@ -0,0 +1,44 @@
+
+version: "3"
+
+services:
+  
+  app:
+
+    image: sfudeus/homematic_exporter:2023-05-21
+    restart: always
+    command: "--ccu_host {{ homematic.ccu2_host }} --ccu_port 2001 --port {{ homematic_metrics_port }}"
+    ports:
+      - "{{ int_ip4 }}:{{ homematic_metrics_port }}:{{ homematic_metrics_port }}"
+    networks:
+      - default
+
+  
+  influxdb:
+
+    image: influxdb:2.6.1
+    restart: always
+    ports:
+      - "{{ int_ip4 }}:{{ influxdb_port }}:8086"
+    volumes:
+      - "{{ basedir }}/influxdb:/var/lib/influxdb2"
+    environment:
+      DOCKER_INFLUXDB_INIT_MODE: setup
+      DOCKER_INFLUXDB_INIT_USERNAME: homematic
+      DOCKER_INFLUXDB_INIT_PASSWORD: {{ influxdb_password }}
+      DOCKER_INFLUXDB_INIT_ORG: homematic
+      DOCKER_INFLUXDB_INIT_BUCKET: homematic
+      DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: {{ influxdb_token }}
+    networks:
+      - default
+
+
+  telegraf:
+
+    image: telegraf:1.25.3
+    restart: always
+    depends_on: 
+      - app
+      - influxdb
+    volumes:
+      - "{{ basedir }}/telegraf.conf:/etc/telegraf/telegraf.conf:ro"
diff --git a/intern/docker_homematic/templates/telegraf.conf b/intern/docker_homematic/templates/telegraf.conf
new file mode 100644
index 0000000000000000000000000000000000000000..44d51b32480fdd047931d6da2a90ddc8ff4853fa
--- /dev/null
+++ b/intern/docker_homematic/templates/telegraf.conf
@@ -0,0 +1,178 @@
+# Telegraf Configuration
+#
+# Telegraf is entirely plugin driven. All metrics are gathered from the
+# declared inputs, and sent to the declared outputs.
+#
+# Plugins must be declared in here to be active.
+# To deactivate a plugin, comment out the name and any variables.
+#
+# Use 'telegraf -config telegraf.conf -test' to see what metrics a config
+# file would generate.
+#
+# Environment variables can be used anywhere in this config file, simply surround
+# them with ${}. For strings the variable must be within quotes (ie, "${STR_VAR}"),
+# for numbers and booleans they should be plain (ie, ${INT_VAR}, ${BOOL_VAR})
+
+
+# Global tags can be specified here in key="value" format.
+[global_tags]
+  # dc = "us-east-1" # will tag all metrics with dc=us-east-1
+  # rack = "1a"
+  ## Environment variables can be used as tags, and throughout the config file
+  # user = "$USER"
+
+# Configuration for telegraf agent
+[agent]
+  ## Default data collection interval for all inputs
+  interval = "5s"
+  ## Rounds collection interval to 'interval'
+  ## ie, if interval="10s" then always collect on :00, :10, :20, etc.
+  round_interval = true
+
+  ## Telegraf will send metrics to outputs in batches of at most
+  ## metric_batch_size metrics.
+  ## This controls the size of writes that Telegraf sends to output plugins.
+  metric_batch_size = 100
+
+  ## Maximum number of unwritten metrics per output.  Increasing this value
+  ## allows for longer periods of output downtime without dropping metrics at the
+  ## cost of higher maximum memory usage.
+  metric_buffer_limit = 10000
+
+  ## Collection jitter is used to jitter the collection by a random amount.
+  ## Each plugin will sleep for a random time within jitter before collecting.
+  ## This can be used to avoid many plugins querying things like sysfs at the
+  ## same time, which can have a measurable effect on the system.
+  collection_jitter = "0s"
+
+  ## Default flushing interval for all outputs. Maximum flush_interval will be
+  ## flush_interval + flush_jitter
+  flush_interval = "10s"
+  ## Jitter the flush interval by a random amount. This is primarily to avoid
+  ## large write spikes for users running a large number of telegraf instances.
+  ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s
+  flush_jitter = "0s"
+
+  ## By default or when set to "0s", precision will be set to the same
+  ## timestamp order as the collection interval, with the maximum being 1s.
+  ##   ie, when interval = "10s", precision will be "1s"
+  ##       when interval = "250ms", precision will be "1ms"
+  ## Precision will NOT be used for service inputs. It is up to each individual
+  ## service input to set the timestamp at the appropriate precision.
+  ## Valid time units are "ns", "us" (or "µs"), "ms", "s".
+  precision = ""
+
+  ## Log at debug level.
+  # debug = false
+  ## Log only error level messages.
+  # quiet = false
+
+  ## Log target controls the destination for logs and can be one of "file",
+  ## "stderr" or, on Windows, "eventlog".  When set to "file", the output file
+  ## is determined by the "logfile" setting.
+  # logtarget = "file"
+
+  ## Name of the file to be logged to when using the "file" logtarget.  If set to
+  ## the empty string then logs are written to stderr.
+  # logfile = ""
+
+  ## The logfile will be rotated after the time interval specified.  When set
+  ## to 0 no time based rotation is performed.  Logs are rotated only when
+  ## written to, if there is no log activity rotation may be delayed.
+  # logfile_rotation_interval = "0d"
+
+  ## The logfile will be rotated when it becomes larger than the specified
+  ## size.  When set to 0 no size based rotation is performed.
+  # logfile_rotation_max_size = "0MB"
+
+  ## Maximum number of rotated archives to keep, any older logs are deleted.
+  ## If set to -1, no archives are removed.
+  # logfile_rotation_max_archives = 5
+
+  ## Pick a timezone to use when logging or type 'local' for local time.
+  ## Example: America/Chicago
+  # log_with_timezone = ""
+
+  ## Override default hostname, if empty use os.Hostname()
+  hostname = ""
+  ## If set to true, do no set the "host" tag in the telegraf agent.
+  omit_hostname = false
+
+###############################################################################
+#                            OUTPUT PLUGINS                                   #
+###############################################################################
+
+# Configuration for sending metrics to InfluxDB 2.0
+[[outputs.influxdb_v2]]
+  ## The URLs of the InfluxDB cluster nodes.
+  ##
+  ## Multiple URLs can be specified for a single cluster, only ONE of the
+  ## urls will be written to each interval.
+  ##   ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
+  urls = ["http://influxdb:8086"]
+
+  ## Token for authentication.
+  token = "{{ influxdb_token }}"
+
+  ## Organization is the name of the organization you wish to write to.
+  organization = "homematic"
+
+  ## Destination bucket to write into.
+  bucket = "homematic"
+
+  ## The value of this tag will be used to determine the bucket.  If this
+  ## tag is not set the 'bucket' option is used as the default.
+  # bucket_tag = ""
+
+  ## If true, the bucket tag will not be added to the metric.
+  # exclude_bucket_tag = false
+
+  ## Timeout for HTTP messages.
+  # timeout = "5s"
+
+  ## Additional HTTP headers
+  # http_headers = {"X-Special-Header" = "Special-Value"}
+
+  ## HTTP Proxy override, if unset values the standard proxy environment
+  ## variables are consulted to determine which proxy, if any, should be used.
+  # http_proxy = "http://corporate.proxy:3128"
+
+  ## HTTP User-Agent
+  # user_agent = "telegraf"
+
+  ## Content-Encoding for write request body, can be set to "gzip" to
+  ## compress body or "identity" to apply no encoding.
+  # content_encoding = "gzip"
+
+  ## Enable or disable uint support for writing uints influxdb 2.0.
+  # influx_uint_support = false
+
+  ## Optional TLS Config for use on HTTP connections.
+  # tls_ca = "/etc/telegraf/ca.pem"
+  # tls_cert = "/etc/telegraf/cert.pem"
+  # tls_key = "/etc/telegraf/key.pem"
+  ## Use TLS but skip chain & host verification
+  # insecure_skip_verify = false
+
+
+###############################################################################
+#                            INPUT PLUGINS                                    #
+###############################################################################
+
+# Read metrics from one or many prometheus clients
+[[inputs.prometheus]]
+  ## An array of urls to scrape metrics from.
+  urls = ["http://app:{{ homematic_metrics_port }}/metrics"]
+
+  ## Metric version controls the mapping from Prometheus metrics into Telegraf metrics.
+  ## See "Metric Format Configuration" in plugins/inputs/prometheus/README.md for details.
+  ## Valid options: 1, 2
+  # metric_version = 1
+
+  ## Url tag name (tag containing scrapped url. optional, default is "url")
+  # url_tag = "url"
+
+  ## Whether the timestamp of the scraped metrics will be ignored.
+  ## If set to true, the gather time will be used.
+  # ignore_timestamp = false
+
diff --git a/site.yml b/site.yml
index 065db8aa565108bd6f89a02aafc9fc192f26c38b..6be96f02eb2f25cdb6316bdbe4266f8020ca967f 100644
--- a/site.yml
+++ b/site.yml
@@ -95,6 +95,13 @@
         homematic_callback_port: 8060,
         influxdb_port: 38086       
       }
+    - { 
+        role: intern/docker_homematic, tags: homematic, 
+        servicename: homematic, 
+        basedir: /srv/homematic,
+        homematic_metrics_port: 8010,
+        influxdb_port: 48086       
+      }
     - { 
         role: intern/docker_mqtt, tags: mqtt, 
         servicename: mqtt,
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 fbac38f79f3657f634b486f48d2ab62a782e180b..b0812786abae64bd3a5031c88b6d8b6d1b13ccb1 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
@@ -77,7 +77,7 @@ object Host "wz-ap-werkstatt" {
 object Host "homematic-ccu2" {
   import "generic-host"
 
-  address = "192.168.0.15"
+  address = "{{ homematic.ccu2_host }}"
 
   groups = [ "network" ]
 }