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"