LED-Farbänderung je nach Temperatur

Hallo Zusammen,
ich habe mir ein neues Projekt “ausgedacht” und bin gerade bei der Lösungsfindung. Vielleicht könnt ihr mir helfen.

Idee:
Im Vorgarten steht eine Figur und diese möchte ich mit RGB-LED’s beleuchten. Ich würde gerne die Farbe der LED’s über die Aussentemperatur bestimmen. Z.B.:

  • unter 5° blau
  • 5-12° cyan
  • 12-21° grün
  • 21-24° orange
  • über 24° rot

Die Aussentemperatur ist im HA vorhanden. Die Frage die sich mir stellt ist: Wie steuere ich die LED’s? Da fällt mir als erstes WLED ein. Damit kann man zwar coole Muster machen, aber was temperaturabhängiges habe ich noch nicht gefunden. Oder habe ich da was übersehen?

Vielleicht hat ja jemand eine Idee für mich. Ich bin da völlig offen was LED’s und Ansteuerung an geht. Ich habe auch schon an eine autarke Steuerung über einen ESP nachgedacht. Aber ich würde das gerne von HA aus steuern wollen. Damit ich einfach ein anderes Beleuchtungsprogramm, bei besonderen Gelegenheiten (z.B. Party), laufen lassen kann.

Du bist also quasi auf der Suche nach den richtige LEDs?

Die Automation willst du ja in HA umsetzen (das sollte kein Problem darstellen). WLED wäre eine Möglichkeit, alternativ gibt es auch einen shelly RGBW2 oder andere Zigbee fähige LED Stripes oder Leuchten.

Ich mache genau sowas über ESP Home einem ESP 32 Super mini und einen WS2812b LED Streifen inkl. Automation in HA.

Funktioniert super

alias: Temperatur LED Indikator
description: LED-Farbe basierend auf Außentemperatur (korrigierte Version)
triggers:
  - trigger: state
    entity_id:
      - sensor.thermometer_drausen_temperature
actions:
  - choose:
      - conditions:
          - condition: template
            value_template: >-
              {{ (states('sensor.thermometer_drausen_temperature') |
              replace(',', '.') | float) >= 20 }}
        sequence:
          - target:
              entity_id: light.statusanzeige_light_4
            data:
              rgb_color:
                - 255
                - 0
                - 0
              brightness_pct: 30
            action: light.turn_on
      - conditions:
          - condition: template
            value_template: >-
              {{ (states('sensor.thermometer_drausen_temperature') |
              replace(',', '.') | float) >= 10 }}
          - condition: template
            value_template: >-
              {{ (states('sensor.thermometer_drausen_temperature') |
              replace(',', '.') | float) < 20 }}
        sequence:
          - target:
              entity_id: light.statusanzeige_light_4
            data:
              rgb_color:
                - 255
                - 165
                - 0
              brightness_pct: 30
            action: light.turn_on
      - conditions:
          - condition: template
            value_template: >-
              {{ (states('sensor.thermometer_drausen_temperature') |
              replace(',', '.') | float) >= 0 }}
          - condition: template
            value_template: >-
              {{ (states('sensor.thermometer_drausen_temperature') |
              replace(',', '.') | float) < 10 }}
        sequence:
          - target:
              entity_id: light.statusanzeige_light_4
            data:
              rgb_color:
                - 0
                - 0
                - 255
              brightness_pct: 30
            action: light.turn_on
      - conditions:
          - condition: template
            value_template: >-
              {{ (states('sensor.thermometer_drausen_temperature') |
              replace(',', '.') | float) < 0 }}
        sequence:
          - target:
              entity_id: light.statusanzeige_light_4
            data:
              rgb_color:
                - 185
                - 185
                - 249
              brightness_pct: 30
            action: light.turn_on
mode: single

Genau, das Shelly Modul hatte ich völlig bei meinen Überlegungen vergessen. Das muss ich mir mal genauer anschauen. Zigbee habe ich nicht. Danke für den Denkanstoß.

Das sieht schon mal ganz nett aus. Kleines Luxus-Problem: Ich kann die tollen Effekte von WLED nicht nutzen. Zur Not wird das mein Einstieg. Vielen Dank dafür.

Nur kurz zum Verständnis: statusanzeige_light_4 so hast du dein ESP-Modul benannt, oder?

Das ist bei mir ein ws2815b Streifen mit 4 Led’s.
Led 1= Türe aufgeschlossen grün / abgeschlossen rot

Led 2= noch nicht verwendet
Led 3= noch nicht verwendet

Led 4= Temperatur außen

ESP Home code kann ich heute abend reinstellen wenn benötigt.

Gerne. Dann kann ich was lernen.

esphome:
  name: statusanzeige
  friendly_name: Statusanzeige

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: 

ota:
  - platform: esphome
    password:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  reboot_timeout: 5min
  fast_connect: true
  
  

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Statusanzeige Fallback Hotspot"
    password: "QZw3eFBEesUR"


web_server:
  port: 80
  version: 3
  local: true
#  auth:
#    username: !secret web_server_username
#    password: !secret web_server_password

captive_portal:

# IP Infos
text_sensor:
  - platform: wifi_info
    ip_address:
      name: ESP IP Address
    ssid:
      name: ESP Connected SSID
    bssid:
      name: ESP Connected BSSID
    mac_address:
      name: ESP Mac Wifi Address
    scan_results:
      name: ESP Latest Scan Results
    dns_address:
      name: ESP DNS Address
#Restart Knopf
button:
  - platform: restart
    name: "Neustart"
#Status
binary_sensor:
  - platform: status
    name: "Verbunden?"

sensor:
#Wlan Empfang dB
  - platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"
#Wlan Empfang %
  - platform: copy # Reports the WiFi signal strength in %
    source_id: wifi_signal_db
    name: "WiFi Signal %"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "% Signal "
    entity_category: "diagnostic"
    device_class: ""
#Betriebszeit
  - platform: uptime
    type: seconds
    name: Uptime Sensor


light:
  - platform: neopixelbus
    type: GRB
    variant: WS2812
    id: light1
    pin: GPIO2
    num_leds: 8
    name: "Statusanzeige"
    internal: true
    default_transition_length: 0.5s
    effects:
    - random:
        name: Zufällige Farbe 3sec
        transition_length: 1s
        update_interval: 3s
    - strobe:
    - pulse:
    - pulse:
        name: "Fast Pulse"
        transition_length: 0.5s
        update_interval: 0.5s
        min_brightness: 0%
        max_brightness: 80%
    - pulse:
        name: "Slow Pulse"
        transition_length: 500ms
        update_interval: 2s
        min_brightness: 0%
        max_brightness: 80%
    - pulse:
        name: "Asymmetrical Pulse"
        transition_length:
          on_length: 1s
          off_length: 500ms
        update_interval: 1.5s


  - platform: partition
    name: "Light 1"
    segments:
      # Use first 5 LEDs from the light with ID light1
      - id: light1
        from: 0
        to: 1
    default_transition_length: 0.5s
    effects:
    - random:
        name: Zufällige Farbe 3sec
        transition_length: 1s
        update_interval: 3s
    - pulse:
    - pulse:
        name: "Fast Pulse"
        transition_length: 0.5s
        update_interval: 0.5s
        min_brightness: 0%
        max_brightness: 80%
    - pulse:
        name: "Slow Pulse"
        transition_length: 500ms
        update_interval: 2s
        min_brightness: 0%
        max_brightness: 80%
    - pulse:
        name: "Asymmetrical Pulse"
        transition_length:
          on_length: 1s
          off_length: 500ms
        update_interval: 1.5s



  - platform: partition
    name: "Light 2"
    segments:
      # Use LEDs 6-10 from the light with ID light1
      - id: light1
        from: 2
        to: 3
    default_transition_length: 0.5s
    effects:
    - random:
        name: Zufällige Farbe 3sec
        transition_length: 1s
        update_interval: 3s 
    - strobe:
    - pulse:
    - pulse:
        name: "Fast Pulse"
        transition_length: 0.5s
        update_interval: 0.5s
        min_brightness: 0%
        max_brightness: 80%
    - pulse:
        name: "Slow Pulse"
        transition_length: 500ms
        update_interval: 2s
        min_brightness: 0%
        max_brightness: 80%
    - pulse:
        name: "Asymmetrical Pulse"
        transition_length:
          on_length: 1s
          off_length: 500ms
        update_interval: 1.5s



  - platform: partition
    name: "Light 3"
    segments:
      # Use LEDs 6-10 from the light with ID light1
      - id: light1
        from: 4
        to: 5
    default_transition_length: 0.5s
    effects:
    - random:
        name: Zufällige Farbe 3sec
        transition_length: 1s
        update_interval: 3s
    - strobe:
    - pulse:
    - pulse:
        name: "Fast Pulse"
        transition_length: 0.5s
        update_interval: 0.5s
        min_brightness: 0%
        max_brightness: 80%
    - pulse:
        name: "Slow Pulse"
        transition_length: 500ms
        update_interval: 2s
        min_brightness: 0%
        max_brightness: 80%
    - pulse:
        name: "Asymmetrical Pulse"
        transition_length:
          on_length: 1s
          off_length: 500ms
        update_interval: 1.5s



  - platform: partition
    name: "Light 4"
    segments:
      # Use LEDs 6-10 from the light with ID light1
      - id: light1
        from: 6
        to: 7
    default_transition_length: 0.5s
    effects:
    - random:
        name: Zufällige Farbe 3sec
        transition_length: 1s
        update_interval: 3s
    - strobe:
    - pulse:
    - pulse:
        name: "Fast Pulse"
        transition_length: 0.5s
        update_interval: 0.5s
        min_brightness: 0%
        max_brightness: 80%
    - pulse:
        name: "Slow Pulse"
        transition_length: 500ms
        update_interval: 2s
        min_brightness: 0%
        max_brightness: 80%
    - pulse:
        name: "Asymmetrical Pulse"
        transition_length:
          on_length: 1s
          off_length: 500ms
        update_interval: 1.5s
1 „Gefällt mir“