ha-smoke-detection-notify/esphome/test_smoke_detector.yaml

183 lines
4.2 KiB
YAML

# ESP32 Test-Rauchmelder für Node-RED Smoke Detection Flow
#
# Funktionen:
# - Switch "Rauch erkannt setzen" -> steuert Binary Sensor
# - Switch "Sirene" -> steuert die onboard LED
# - Binary Sensor "Rauch erkannt" -> on/off basierend auf Switch
# - BOOT Button (GPIO0) -> Toggle für Rauch-Status
#
# Die meisten ESP32 Boards haben eine LED an GPIO2
# Der BOOT Button ist typischerweise an GPIO0
esphome:
name: test-rauchmelder
friendly_name: Test Rauchmelder
esp32:
board: esp32dev
framework:
type: arduino
# WLAN-Konfiguration
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Fallback Access Point falls WLAN nicht erreichbar
ap:
ssid: "Test-Rauchmelder"
password: "12345678"
captive_portal:
# Logging aktivieren
logger:
# Home Assistant API
api:
encryption:
key: !secret api_encryption_key
# OTA Updates
ota:
- platform: esphome
password: !secret ota_password
# Webserver für Debugging (optional)
web_server:
port: 80
# ============================================
# GPIO für Onboard LED (meist GPIO2 bei ESP32)
# ============================================
output:
- platform: gpio
pin: GPIO2
id: onboard_led_output
light:
- platform: binary
name: "Sirene LED"
id: sirene_led
output: onboard_led_output
# Wird intern gesteuert, nicht direkt exposed
# ============================================
# SWITCHES
# ============================================
# Globale Variable für Rauch-Status
globals:
- id: rauch_erkannt_status
type: bool
restore_value: no
initial_value: 'false'
switch:
# Switch 1: Rauch erkannt setzen
- platform: template
name: "Rauch erkannt setzen"
id: switch_rauch_setzen
icon: "mdi:fire"
optimistic: true
restore_mode: ALWAYS_OFF
on_turn_on:
- globals.set:
id: rauch_erkannt_status
value: 'true'
- binary_sensor.template.publish:
id: binary_rauch_erkannt
state: ON
- logger.log: "Rauch erkannt wurde aktiviert!"
on_turn_off:
- globals.set:
id: rauch_erkannt_status
value: 'false'
- binary_sensor.template.publish:
id: binary_rauch_erkannt
state: OFF
- logger.log: "Rauch erkannt wurde deaktiviert!"
# Switch 2: Sirene (steuert die Onboard LED)
- platform: template
name: "Sirene"
id: switch_sirene
icon: "mdi:alarm-light"
optimistic: true
restore_mode: ALWAYS_OFF
on_turn_on:
- light.turn_on: sirene_led
- logger.log: "Sirene AN - LED leuchtet!"
on_turn_off:
- light.turn_off: sirene_led
- logger.log: "Sirene AUS - LED aus!"
# ============================================
# BINARY SENSOR
# ============================================
binary_sensor:
# BOOT Button (GPIO0) als Toggle für Rauch-Status
- platform: gpio
pin:
number: GPIO0
mode: INPUT_PULLUP
inverted: true
name: "Boot Button"
id: boot_button
internal: true # Nicht in HA anzeigen
filters:
- delayed_on: 10ms # Entprellen
on_press:
then:
- switch.toggle: switch_rauch_setzen
- logger.log: "Boot Button gedrückt - Toggle Rauch-Status!"
# Binary Sensor: Rauch erkannt (gesteuert durch Switch)
- platform: template
name: "Rauch erkannt"
id: binary_rauch_erkannt
device_class: smoke
icon: "mdi:smoke-detector"
lambda: |-
return id(rauch_erkannt_status);
# Status-Sensor für Verbindung
- platform: status
name: "Status"
# ============================================
# ZUSÄTZLICHE SENSOREN (optional)
# ============================================
sensor:
# WLAN Signalstärke
- platform: wifi_signal
name: "WLAN Signal"
update_interval: 60s
# Uptime
- platform: uptime
name: "Laufzeit"
update_interval: 60s
# ============================================
# TEXT SENSOR
# ============================================
text_sensor:
# IP Adresse
- platform: wifi_info
ip_address:
name: "IP Adresse"
ssid:
name: "Verbundenes WLAN"
# ============================================
# BUTTON für Neustart
# ============================================
button:
- platform: restart
name: "Neustart"