Anfänger: wie Licht automatisch dimmen?

ChristianKnorr

New member
Hallo zusammen,
bei einer, wie ich dachte sehr einfachen, Sache bin ich überfordert.

Ich möchte ein bestimmtes Licht entgegen der Außenhelligkeit dimmen.

Ich habe die Außenhelligkeit in Prozent als Entität:
YAML:
# https://community.home-assistant.io/t/virtual-light-sensor/31975/36
sensor:
  - platform: template
    sensors:
      sunlight_pct:
        unique_id: sunlight_pct_sensor
        friendly_name: "Sonnenlicht in Prozent"
        entity_id:
          - sun.sun
           #- sensor.dark_sky_cloud_coverage
        value_template: >-
          {%- set elevation = state_attr('sun.sun','elevation') | float %}
          {%- set min_elevation = -2 %}
          {%- set max_elevation = 10 %}
          {%- set adjusted_elevation = elevation - min_elevation %}
          {%- set adjusted_elevation = [adjusted_elevation,0] | max %}
          {%- set adjusted_elevation = [adjusted_elevation,max_elevation - min_elevation] | min %}
          {%- set adjusted_elevation = adjusted_elevation / (max_elevation - min_elevation) %}
          {%- set adjusted_elevation = adjusted_elevation %}
          {%- set adjusted_elevation = adjusted_elevation * 100 %}
          {%- set brightness = adjusted_elevation %}
          {{ brightness | round(2) }}
        unit_of_measurement: '%'
        device_class: 'illuminance'

Nun bin ich baluäugig zu den Automatisierungen. Bei Aktionen/Gerät kann ich aber nur einen Fixwert angeben. Was ich aber brauche ist:
YAML:
{{ 100 - (int(states('sensor.sunlight_pct') | round)) }}
So wird die LED heller je dunkler es draußen ist.

Wie geht'n das?

Ich habe zwar diverse (vorallem von Simon42) Videos gesehen aber das nicht gefunden. Die offizielle Doku zu den Automationen verweist auf die Editierung der yaml Datei. Muss das oder geht das in Weboberfläche?

Sorry wenn die Frage zu dumm ist aber ich komme auf keinen grünen Zweig.
 
Außenhelligkeit in Prozent
Da wäre es wohl so, dass man eine Veränderung der Aussenhelligkeit als Trigger nehmen könnte. Ausgehend von "100%", müsste man dann eben einfach nur umrechnen: "100%" -"Aussenhelligkeit in %" = "%-Wert für das Licht". Wenn die Lichtstufen nicht prozentual, sondern dezimal angegeben werden, müsste man das halt einfach entsprechend nochmal in dezimal umrechnen (ausgehend von den min/max-Werten der Lichtquelle).

In einfacher Pseudo-Code ausgedrückt:

Code:
WENN
  Veränderung der Aussenhelligkeit
DANN
  Wert Licht = (100 - Aussenhelligkeit)

Irgendwie so in der Art, aber ich hoffe einfach mal, dass sich noch wer mit Ahnung meldet, dazu gehörige in Sachen HomeAssistant definitiv nicht 😅
 
Mal angenommen die Automatisierung soll immer ausgelöst werden wenn der Sensor sensor.sunlight_pct" sich ändert.

YAML:
alias: "Auto - Helligkeit "
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.sunlight_pct
condition: []
action:
  - service: light.turn_on
    data:
      brightness_pct: |
        {{ 100 - (int(states('sensor.sunlight_pct') | round)) }}
    target:
      entity_id: light.xyz
mode: single

Da Du mit Templates arbeiten musst, kommst Du nicht drum rum in die YAML Ansicht wechseln zu müssen.
Dabei verlässt Du aber nicht den visuellen Editor.

Einfach wie gewohnt die Automatisierung im visuellen Editor erstellen. Zuerst einen festen Wert für die Helligkeit eingeben.
Danach wechseln zu "als YAML bearbeiten" und das Template einfügen.

Automatisierung_yaml.gif
 
Die Anwesenheit kannst ja ganz gut über die Heimzone realisieren. Hast Du in Home Assistant Benutzer angelegt und jeder Benutzer hat auch einen Device Trecker zugeordnet. Kannst du zone.home als Auslöser und Bedingung verwenden.
Die Synchronisierung Helligkeit mit sensor.sunlight_pct erfolgt nur wenn zone.home > 0
Verlassen alle das Zuhause wird das Licht ausgeschaltet, wenn es den eingeschaltet ist.
Kommt der erste nach hause wird das Licht eingeschaltet mit der definierten Helligkeit (template)

zone.home = 0 -> Keiner Zuhause
zone.home > 0 -> Jemand ist zuhause.

YAML:
alias: "Auto - Helligkeit "
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.sunlight_pct
    id: synchron
  - platform: numeric_state
    entity_id:
      - zone.home
    above: 0
    id: einschalten
  - platform: numeric_state
    entity_id:
      - zone.home
    below: 1
    id: ausschalten
condition: []
action:
  - service: light.turn_on
    data:
      brightness_pct: |
        {{ 100 - (int(states('sensor.sunlight_pct') | round)) }}
    target:
      entity_id: light.xyz
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: zone.home
            above: 0
          - condition: trigger
            id:
              - synchron
        sequence: []
      - conditions:
          - condition: trigger
            id:
              - einschalten
          - condition: state
            entity_id: light.xyz
            state: "off"
        sequence:
          - service: light.turn_on
            data:
              brightness_pct: |
                {{ 100 - (int(states('sensor.sunlight_pct') | round)) }}
            target:
              entity_id: light.xyz
      - conditions:
          - condition: trigger
            id:
              - ausschalten
          - condition: state
            entity_id: light.xyz
            state: "on"
        sequence:
          - service: light.turn_off
            data: {}
            target:
              entity_id: light.xyz
mode: single
 
Einfach wäre nur die Bedingung, jemand ist Zuhause in die Erste Automatisierung einzufügen.

YAML:
      - conditions:
          - condition: numeric_state
            entity_id: zone.home
            above: 0

Dann wird aber Dein Licht beim verlassen des Hauses nicht ausgeschaltet, sondern bleibt einfach bei der letzten Helligkeit stehen.
Auch würde dann das Licht nicht automatisch eingeschaltet werden wenn jemand nach Hause kommt.
 

Zurzeit aktive Besucher

Neueste Beiträge

Letzte Anleitungen

Statistik des Forums

Themen
4.665
Beiträge
47.648
Mitglieder
4.312
Neuestes Mitglied
Harway2007
Zurück
Oben