diff --git a/host_vars/warpsrvint b/host_vars/warpsrvint
index 9299a68b525300c09a0f61b281695bea2e84437a..fe244c2ad4b1ff0ecf02da0b0d52845753d64b32 100644
--- a/host_vars/warpsrvint
+++ b/host_vars/warpsrvint
@@ -6,11 +6,10 @@ motd_lines:
   - "Haupt-IP @ eth1: {{ansible_eth1.ipv4.address}}"
 
 debian_sources: 
-  - "deb http://ftp2.de.debian.org/debian/ jessie main non-free contrib"
-  - "deb http://security.debian.org/ jessie/updates main contrib non-free"
-  - "deb https://apt.dockerproject.org/repo debian-jessie main"
-  - "deb https://download.docker.com/linux/debian jessie stable"
-  - "deb https://repos.influxdata.com/debian stretch stable"
+  - "deb http://ftp2.de.debian.org/debian/ stretch main non-free contrib"
+  - "deb http://security.debian.org/ stretch/updates main contrib non-free"
+  - "deb https://apt.dockerproject.org/repo debian-stretch main"
+  - "deb https://download.docker.com/linux/debian stretch stable"
 
 debian_keys_id:
 
@@ -34,6 +33,7 @@ webserver_ssl: false
 # Liste der gehosteten Domänen
 webserver_domains: 
   - "infra.warpzone"
+  - "esphome.warpzone"
   - "ldap.warpzone"
 
 administratorenteam:
diff --git a/site.yml b/site.yml
index a2ad711136c42a902410264e46c04226d6eaa7ca..8cb7a6f550da4245a315425d118b1ada6a92d45c 100644
--- a/site.yml
+++ b/site.yml
@@ -37,6 +37,7 @@
       }
     - { role: common/docker_ldap, tags: ldap }
     - { role: common/nginx, tags: nginx }
+    - { role: warpsrvint/docker_esphome, tags: esphome, basedir: /srv/esphome }
     - { role: warpsrvint/docker_grafana, tags: grafana }
     - { role: warpsrvint/docker_l4z0r, tags: l4z0r }
     - { role: warpsrvint/docker_matestatdb, tags: matestatdb }
diff --git a/warpsrvint/docker_esphome/tasks/main.yml b/warpsrvint/docker_esphome/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..fb03158bbe04fb64a745e21bedda519d4281a092
--- /dev/null
+++ b/warpsrvint/docker_esphome/tasks/main.yml
@@ -0,0 +1,43 @@
+---
+
+- include_tasks: ../functions/get_secret.yml
+  with_items:
+  - { path: "{{ basedir }}/wlan_pass", length: -1 }
+
+- name: "create folder struct for {{ servicename }}"
+  file: 
+    path: "{{ item }}"
+    state: "directory"
+  with_items:
+    - "{{ basedir }}/"
+    - "{{ basedir }}/config/"
+
+- name: "create config files for {{ servicename }}"
+  template: 
+    src: "{{ item }}" 
+    dest: "{{ basedir }}/{{ item }}"
+  with_items: 
+    - docker-compose.yml
+    - compile.sh
+    - config/hauptraum.yaml
+  register: config
+
+- name: download config includes files 
+  get_url:
+    url: "https://raw.githubusercontent.com/esphome/esphome-docs/current/_static/{{ item }}" 
+    dest: "{{ basedir }}/config/{{ item }}"
+  with_items:
+    - webserver-v1.min.css
+    - webserver-v1.min.js
+
+
+- name: "stop {{ servicename }} docker"
+  docker_compose:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config.changed
+
+- name: "start {{ servicename }} docker"
+  docker_compose:
+    project_src: "{{ basedir }}"
+    state: present
diff --git a/warpsrvint/docker_esphome/templates/compile.sh b/warpsrvint/docker_esphome/templates/compile.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a06b87d4078ba241b00e7bad363fef036db319d9
--- /dev/null
+++ b/warpsrvint/docker_esphome/templates/compile.sh
@@ -0,0 +1,5 @@
+#!/bin/sh 
+
+# Compile Image manual 
+# Usage: ./compile.sh <config.yml>
+docker run --rm -v "{{ basedir }}/config:/config" -it esphome/esphome $1 compile
diff --git a/warpsrvint/docker_esphome/templates/config/common.inc.yaml b/warpsrvint/docker_esphome/templates/config/common.inc.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e18316a2a311fa93b102910280a8c092430ee7c3
--- /dev/null
+++ b/warpsrvint/docker_esphome/templates/config/common.inc.yaml
@@ -0,0 +1,36 @@
+
+# WiFi settings 
+wifi:
+  ssid: "warpzone"
+  password: "{{ wlan_pass }}"
+
+  # Enable fallback hotspot (captive portal) in case wifi connection fails
+  ap:
+    ssid: "ESPHomeFallback-{{ devicename }}"
+
+# WLAN selection in fallback mode
+captive_portal:
+
+# Enable OTA
+ota:
+
+# Enable logging
+logger:
+  level: DEBUG 
+
+# Enable integrated WebServer 
+web_server:
+  port: 80
+  css_include: "webserver-v1.min.css"
+  css_url: ""
+  js_include: "webserver-v1.min.js"
+  js_url: ""
+  
+# Activates prometheus /metrics endpoint
+prometheus:
+
+# MQTT config 
+mqtt:
+  broker: 192.168.0.201
+  discovery: false 
+  topic_prefix: "ESPHome/{{ devicename }}"
\ No newline at end of file
diff --git a/warpsrvint/docker_esphome/templates/config/device.d1_mini.inc.yaml b/warpsrvint/docker_esphome/templates/config/device.d1_mini.inc.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..37380ec38924886e7c01c988cb81cd78bb6ef934
--- /dev/null
+++ b/warpsrvint/docker_esphome/templates/config/device.d1_mini.inc.yaml
@@ -0,0 +1,5 @@
+
+esphome:
+  name: "{{ devicename }}"
+  platform: ESP8266
+  board: d1_mini
diff --git a/warpsrvint/docker_esphome/templates/config/hauptraum.yaml b/warpsrvint/docker_esphome/templates/config/hauptraum.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..7c1690d9411c8e72aee59c7165de8de294a5690a
--- /dev/null
+++ b/warpsrvint/docker_esphome/templates/config/hauptraum.yaml
@@ -0,0 +1,47 @@
+
+{% set devicename = "hauptraum"  %}
+
+{% include "/config/device.d1_mini.inc.yaml" %}
+
+{% include "/config/common.inc.yaml" %}
+
+  
+# Sensor configs 
+i2c:
+  sda: D2
+  scl: D1
+  scan: True
+
+sensor:
+  - platform: bme280
+    temperature:
+      name: "Temp"
+      oversampling: 16x
+      filters:
+      - offset: 0.635
+      - sliding_window_moving_average:
+          window_size: 3
+          send_every: 3
+          send_first_at: 3
+    pressure:
+      name: "Pressure"
+      oversampling: 16x
+      accuracy_decimals: 2
+      filters:
+      - sliding_window_moving_average:
+          window_size: 3
+          send_every: 3
+          send_first_at: 3
+    humidity:
+      name: "Humidity"
+      oversampling: 16x
+      accuracy_decimals: 2
+      filters:
+      - sliding_window_moving_average:
+          window_size: 3
+          send_every: 3
+          send_first_at: 3
+    address: 0x76
+    update_interval: 10s
+    iir_filter: 16x
+  
\ No newline at end of file
diff --git a/warpsrvint/docker_esphome/templates/docker-compose.yml b/warpsrvint/docker_esphome/templates/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b9f71249e74dc26e01b59d6b7a45cc5e789650b2
--- /dev/null
+++ b/warpsrvint/docker_esphome/templates/docker-compose.yml
@@ -0,0 +1,11 @@
+version: "3"
+
+services:
+
+  app:
+
+    image: esphome/esphome:1.19.0
+    restart: always
+    network_mode: "host"
+    volumes:
+      - "{{ basedir }}/config/:/config"