From b42f38fe369067007fd1019f5479dc9e30f76149 Mon Sep 17 00:00:00 2001 From: Christian Elberfeld <christian.elberfeld@adesso.de> Date: Sat, 17 Jul 2021 22:17:21 +0200 Subject: [PATCH] esphome basisiconfig --- host_vars/warpsrvint | 10 ++-- site.yml | 1 + warpsrvint/docker_esphome/tasks/main.yml | 43 +++++++++++++++++ .../docker_esphome/templates/compile.sh | 5 ++ .../templates/config/common.inc.yaml | 36 ++++++++++++++ .../templates/config/device.d1_mini.inc.yaml | 5 ++ .../templates/config/hauptraum.yaml | 47 +++++++++++++++++++ .../templates/docker-compose.yml | 11 +++++ 8 files changed, 153 insertions(+), 5 deletions(-) create mode 100644 warpsrvint/docker_esphome/tasks/main.yml create mode 100644 warpsrvint/docker_esphome/templates/compile.sh create mode 100644 warpsrvint/docker_esphome/templates/config/common.inc.yaml create mode 100644 warpsrvint/docker_esphome/templates/config/device.d1_mini.inc.yaml create mode 100644 warpsrvint/docker_esphome/templates/config/hauptraum.yaml create mode 100644 warpsrvint/docker_esphome/templates/docker-compose.yml diff --git a/host_vars/warpsrvint b/host_vars/warpsrvint index 9299a68b..fe244c2a 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 a2ad7111..8cb7a6f5 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 00000000..fb03158b --- /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 00000000..a06b87d4 --- /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 00000000..e18316a2 --- /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 00000000..37380ec3 --- /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 00000000..7c1690d9 --- /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 00000000..b9f71249 --- /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" -- GitLab