{"id":29107482,"url":"https://github.com/starwarsfan/shadow-control","last_synced_at":"2026-05-16T21:14:13.345Z","repository":{"id":300281036,"uuid":"1000479285","full_name":"starwarsfan/shadow-control","owner":"starwarsfan","description":"A Home Assistant integration to fully automate movement and positioning of venetian blinds.","archived":false,"fork":false,"pushed_at":"2026-03-30T07:30:04.000Z","size":2819,"stargazers_count":21,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-30T09:33:00.672Z","etag":null,"topics":["automation","awnings","blinds","hacs","hacs-integration","home-assistant","home-assistant-integration","rolling-shutter","shutters"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/starwarsfan.png","metadata":{"files":{"readme":"README.de.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"starwarsfan","buy_me_a_coffee":"starwarsfan","custom":"https://paypal.me/ysswf"}},"created_at":"2025-06-11T21:12:34.000Z","updated_at":"2026-03-30T07:30:01.000Z","dependencies_parsed_at":"2026-02-20T14:06:15.782Z","dependency_job_id":null,"html_url":"https://github.com/starwarsfan/shadow-control","commit_stats":null,"previous_names":["starwarsfan/shadow-control"],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/starwarsfan/shadow-control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/starwarsfan%2Fshadow-control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/starwarsfan%2Fshadow-control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/starwarsfan%2Fshadow-control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/starwarsfan%2Fshadow-control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/starwarsfan","download_url":"https://codeload.github.com/starwarsfan/shadow-control/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/starwarsfan%2Fshadow-control/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","awnings","blinds","hacs","hacs-integration","home-assistant","home-assistant-integration","rolling-shutter","shutters"],"created_at":"2025-06-29T05:03:56.402Z","updated_at":"2026-05-16T21:14:13.330Z","avatar_url":"https://github.com/starwarsfan.png","language":"Python","funding_links":["https://github.com/sponsors/starwarsfan","https://buymeacoffee.com/starwarsfan","https://paypal.me/ysswf","https://www.buymeacoffee.com/starwarsfan"],"categories":[],"sub_categories":[],"readme":"![logo](/images/logo.svg#gh-light-mode-only)\n![logo](/images/dark_logo.svg#gh-dark-mode-only)\n\n# Shadow Control\n\n**Eine Home Assistant Integration zur vollständig automatischen Steuerung von Raffstoren und Jalousien.**\n\n![Version](https://img.shields.io/github/v/release/starwarsfan/shadow-control?style=for-the-badge)\n[![Tests][tests-badge]][tests]\n[![Coverage][coverage-badge]][coverage]\n[![hacs_badge][hacsbadge]][hacs]\n[![github][ghsbadge]][ghs]\n[![BuyMeCoffee][buymecoffeebadge]][buymecoffee]\n[![PayPal][paypalbadge]][paypal]\n[![hainstall][hainstallbadge]][hainstall]\n\nGo to the [English version](/README.md) version of the documentation.\n\n## Inhaltsverzeichnis\n\n* [Einführung](#einführung)\n  * [TL;DR – Kurzform](#tldr--kurzform)\n  * [Beschreibung – Langform](#beschreibung--langform)\n  * [Betriebsarten](#betriebsarten)\n  * [Entitäten-Vorrang](#entitäten-vorrang)\n  * [Adaptiver Helligkeitsschwellwert](#adaptiver-helligkeitsschwellwert)\n  * [Automatische Sperre](#automatische-sperre)\n* [Installation](#installation)\n* [Konfiguration](#konfiguration)\n  * [Initiale Instanzkonfiguration](#initiale-instanzkonfiguration)\n    * [Instanzname](#instanzname)\n    * [Behangtyp](#behangtyp)\n    * [Behang-Entitäten](#behang-entitäten)\n    * [Azimut der Fassade](#azimut-der-fassade)\n    * [Helligkeit](#helligkeit)\n    * [Höhe der Sonne](#höhe-der-sonne)\n    * [Azimut der Sonne](#azimut-der-sonne)\n  * [Optionale Konfiguration](#optionale-konfiguration)\n    * [Fassadenkonfiguration - Teil 1](#fassadenkonfiguration---teil-1)\n      * [Behang-Entitäten](#behang-entitäten-1)\n      * [Azimut der Fassade](#facade-azimuth)\n      * [Beschattungsbeginn](#beschattungsbeginn)\n      * [Beschattungsende](#beschattungsende)\n      * [Minimale Sonnenhöhe](#minimale-sonnenhöhe)\n      * [Maximale Sonnenhöhe](#maximale-sonnenhöhe)\n      * [Debugmodus](#debugmodus)\n      * [Eigene Logdatei schreiben](#eigene-logdatei-schreiben)\n    * [Fassadenkonfiguration - Teil 2](#fassadenkonfiguration---teil-2)\n      * [Neutralhöhe](#neutralhöhe)\n      * [Neutralwinkel](#neutralwinkel)\n      * [Lamellenbreite](#lamellenbreite)\n      * [Lamellenabstand](#lamellenabstand)\n      * [Lamellenwinkeloffset](#lamellenwinkeloffset)\n      * [Minimaler Lamellenwinkel](#minimaler-lamellenwinkel)\n      * [Höhenschrittweite](#höhenschrittweite)\n      * [Winkelschrittweite](#winkelschrittweite)\n      * [Lichtstreifenbreite](#lichtstreifenbreite)\n      * [Gesamthöhe](#gesamthöhe)\n      * [Maximale Verfahrdauer](#maximale-verfahrdauer)\n      * [Toleranz Höhenänderung](#toleranz-höhenänderung)\n      * [Toleranz Lamellenwinkeländerung](#toleranz-lamellenwinkeländerung)\n    * [Dynamische Eingänge](#dynamische-eingänge)\n      * [Helligkeit](#brightness)\n      * [Helligkeit Dawn](#brightness-Dawn)\n      * [Höhe der Sonne](#sun-elevation)\n      * [Azimut der Sonne](#sun-azimuth)\n      * [Integration sperren](#integration-sperren)\n      * [Integration sperren mit Zwangsposition](#integration-sperren-mit-zwangsposition)\n      * [Zwangsposition Höhe](#zwangsposition-höhe)\n      * [Zwangsposition Lamellenwinkel](#zwangsposition-lamellenwinkel)\n      * [Instanz entsperren](#instanz-entsperren)\n      * [Höhenveränderung einschränken](#höhenveränderung-einschränken)\n      * [Winkelveränderung einschränken](#winkelveränderung-einschränken)\n      * [Zwangspositionierung auslösen](#zwangspositionierung-auslösen)\n    * [Beschattungseinstellungen](#beschattungseinstellungen)\n      * [B01 Steuerung aktiv](#b01-steuerung-aktiv)\n      * [B02 Winter Helligkeitsschwellwert](#b02-winter-helligkeitsschwellwert)\n      * [B03 Sommer Helligkeitsschwellwert](#b03-sommer-helligkeitsschwellwert)\n      * [B04 Minimaler Helligkeitsschwellwert](#b04-minimaler-helligkeitsschwellwert)\n      * [B05 Schliessen nach x Sekunden](#b05-schliessen-nach-x-sekunden)\n      * [B06 Maximale Behanghöhe](#b06-maximale-behanghöhe)\n      * [B07 Maximaler Lamellenwinkel](#b07-maximaler-lamellenwinkel)\n      * [B08 Durchsicht nach x Sekunden](#b08-durchsicht-nach-x-sekunden)\n      * [B09 Durchsichtwinkel](#b09-durchsichtwinkel)\n      * [B10 Öffnen nach x Sekunden](#b10-öffnen-nach-x-sekunden)\n      * [B11 Höhe nach Beschattung](#b11-höhe-nach-beschattung)\n      * [B12 Winkel nach Beschattung](#b12-winkel-nach-beschattung)\n    * [Dämmerungseinstellungen](#dämmerungseinstellungen)\n      * [D01 Steuerung aktiv](#d01-steuerung-aktiv)\n      * [D02 Dämmerungsschwellwert](#d02-dämmerungsschwellwert)\n      * [D03 Schliessen nach x Sekunden](#d03-schliessen-nach-x-sekunden)\n      * [D04 Maximale Behanghöhe](#d04-maximale-behanghöhe)\n      * [D05 Maximaler Lamellenwinkel](#d05-maximaler-lamellenwinkel)\n      * [D06 Durchsicht nach x Sekunden](#d06-durchsicht-nach-x-sekunden)\n      * [D07 Durchsichtwinkel](#d07-durchsichtwinkel)\n      * [D08 Öffnen nach x Sekunden](#d08-öffnen-nach-x-sekunden)\n      * [D09 Höhe nach Dämmerung](#d09-höhe-nach-dämmerung)\n      * [D10 Winkel nach Dämmerung](#d10-winkel-nach-dämmerung)\n      * [D11 Frühestens öffnen um (Uhrzeit)](#d11-frühestens-öffnen-um-uhrzeit)\n      * [D12 Spätestens schließen um (Uhrzeit)](#d12-spätestens-schließen-um-uhrzeit)\n  * [Konfiguration via yaml](#konfiguration-via-yaml)\n    * [yaml Beispielkonfiguration](#yaml-beispielkonfiguration)\n* [Status, Rückgabewerte und direkte Optionen](#status-rückgabewerte-und-direkte-optionen)\n  * [Status-Werte](#status-werte)\n    * [Zielhöhe](#zielhöhe)\n    * [Zielwinkel](#zielwinkel)\n    * [Zielwinkel in Grad](#zielwinkel-in-grad)\n    * [Kalkulatorische Zielhöhe](#kalkulatorische-zielhöhe)\n    * [Kalkulatorischer Zielwinkel](#kalkulatorischer-zielwinkel)\n    * [Aktueller Status](#aktueller-status)\n    * [Sperr-Status](#sperr-status)\n    * [Nächste Behangmodifikation](#nächste-behangmodifikation)\n    * [In der Sonne](#in-der-sonne)\n    * [Aktiver Helligkeitsschwellwert](#aktiver-helligkeitsschwellwert)\n  * [Direkte Optionen](#direkte-optionen)\n* [Konfiguration-Export](#konfiguration-export)\n  * [Vorarbeiten](#vorarbeiten)\n  * [Anwendung des Service](#anwendung-des-service)\n  * [UI-Modus](#ui-modus)\n  * [YAML-Modus](#yaml-modus)\n\n# Einführung\n\n**Shadow Control** ist die Portierung des Edomi-LBS \"Beschattungssteuerung-NG\" für Home Assistant. Da Edomi [zum Tode verurteilt wurde](https://knx-user-forum.de/forum/projektforen/edomi/1956975-quo-vadis-edomi) und ich mit den bestehenden Beschattungslösungen nicht wirklich zufrieden war, habe ich mich dazu entschlossen, meinen LBS (Edomi-Bezeichnung für **L**ogic**B**au**S**tein) in eine Home Assistant Integration zu portieren. Das war ein sehr interessanter \"Tauchgang\" in die Hintergründe von Homa Assistant, der Idee dahinter und wie das Ganze im Detail funktioniert. Viel Spass mit der Integration.\n\n\n\n## TL;DR – Kurzform\n\n* Raffstoren- und Jalousie-Steuerung basierend auf Helligkeitsschwellwerten und verschiedenen Timern\n* Adaptiver Helligkeitsschwellwert\n* Höhe und Lamellenwinkel für Beschattung und Dämmerung separat konfigurierbar\n  * Beschattungs- resp. Dämmerungsposition nach Helligkeitsschwellwert und Zeit X\n  * Durchsicht-Position nach Helligkeitsschwellwert und Zeit Y\n  * Offen-Position nach Zeit Z\n* Besonnungsbereich einschränkbar\n* Positionierung sperrbar\n* Bewegungsrichtung des Behangs einschränkbar\n* Unbeschatteter Bereich konfigurierbar\n* Schrittweite konfigurierbar\n* Separater Helligkeitseingang für Dämmerungssteuerung möglich\n* Konfiguration via ConfigFlow und YAML möglich\n\n## Beschreibung – Langform\n\nBasierend auf verschiedenen Eingangswerten wird die Integration die Positionierung des Behangs übernehmen. Damit das funktioniert, muss die jeweilige Instanz mit dem Azimut der Fassade, dem Sonnenstand sowie der dortigen Helligkeit konfiguriert werden. Zusätzlich sind viele weitere Details konfigurierbar, um den Beschattungsvorgang resp. den entsprechenden Bereich unter direkter Sonneneinstrahlung zu definieren und somit direktes Sonnenlicht im Raum zu verhindern oder einzuschränken.\n\nDie berechnete Behanghöhe sowie der Lamellenwinkel hängen von der momentanen Helligkeit, den konfigurierten Schwellwerten, der Abmessung der Lamellen, Timern und weiteren Einstellungen ab. Die verschiedenen Timer werden je nach momentanem Zustand der Integration gestartet.\n\n\n\n## Betriebsarten\n\nGrundsätzlich gibt es zwei Betriebsarten: _Beschattung_ und _Dämmerung_, welche unabhängig voneinander eingerichtet werden.\n\nDie Berechnung der Position wird durch die Aktualisierung der folgenden Eingänge ausgelöst:\n\n* [Helligkeit](#helligkeit)\n* [Helligkeit (Dämmerung)](#helligkeit-dämmerung)\n* [Höhe der Sonne](#höhe-der-sonne)\n* [Azimut der Sonne](#azimut-der-sonne)\n* [Integration sperren](#integration-sperren)\n* [Integration sperren mit Zwangsposition](#integration-sperren-mit-zwangsposition)\n* [Beschattungssteuerung ein/aus](#b01-steuerung-aktiv)\n* [B06 Maximale Behanghöhe](#b06-maximale-behanghöhe)\n* [B07 Maximaler Lamellenwinkel](#b07-maximaler-lamellenwinkel)\n* [Dämmerungssteuerung ein/aus](#d01-steuerung-aktiv)\n* [D04 Maximale Behanghöhe](#d04-maximale-behanghöhe)\n* [D05 Maximaler Lamellenwinkel](#d05-maximaler-lamellenwinkel)\n* [Zwangspositionierung auslösen](#zwangspositionierung-auslösen)\n\nDer konfigurierte Behang wird nur dann neu positioniert, wenn sich die berechneten Werte seit dem letzten Lauf der Integration geändert haben. Damit wird die unnötige Neupositionierung der Raffstorenlamellen verhindert.\n\n\n\n## Entitäten-Vorrang\nAchtung: Bei allen Optionen hat die Entity-Verknüpfung Vorrang! Das bedeutet, dass sobald eine Entität konfiguriert wird, wird deren Wert verwendet. Ausserdem werden die internen Entitäten aus dem System entfernt. Um die internen Entitäten wiederzuverwenden, muss die Entity-Verknüpfung gelöscht werden.\n\n\n\n## Adaptiver Helligkeitsschwellwert\n\n_Hinweis: Die Funktionalität des adaptiven Helligkeitsschwellwertes basiert auf dem Edomi-LBS 19001445 von Hardy Köpf (harry7922). Vielen Dank!_\n\nZwischen dem Sonnenaufgang und Sonnenuntergang wird eine Helligkeitsschwelle über eine Sinus-Kurve mit einem Tageshöchstwert berechnet. Der Tageshöchstwert wird dabei über eine lineare Formel ermittelt. Dies dient dazu, die Varianz der Helligkeit zwischen Winter und Sommer auszugleichen.\n\n![Schemaskizze adaptive Helligkeitssteuerung](/images/adaptive_brightness_diagram.svg)\n\nZur Sommersonnenwende steht die Sonne am höchsten. Das ist auf der Nordhalbkugel jährlich am 21.06. bzw. auf der Südhalbkugel am 21.12. der Fall. **Shadow Control** ermittelt aus den Geo-Koordinaten der Home Assistant-Instanz, ob sich diese auf der Nord- oder der Südhalbkugel befindet. Ausgehend von der verwendeten Sommersonnenwende wird über eine lineare Formel für den heutigen Tag ein maximaler Helligkeits-Schwellwert zwischen dem Winter- und dem Sommerschwellwert ermittelt. Im Hochsommer ist erst ab einem höheren LUX-Wert der Himmel klar und Sonnenschein, im Winter ist das bei bereits deutlich weniger LUX der Fall. Die Winter- und Sommerschwellwert definieren dabei die Varianz zwischen Winter und Sommer. Somit wird benutzerspezifisch definiert, welche maximale Helligkeit im Hochsommer und welche maximale Helligkeit im Winter benötigt wird, um die Beschattung auszulösen. \n\nIm nächsten Schritt wird zwischen Sonnenaufgang und Sonnenuntergang eine Sinus-Kurve berechnet, welche am ermittelten Tageshöchstwert ihren höchsten Punkt erreicht. Als niedrigster Punkt der Sinuskurve und damit als niedrigster Schwellwert der Beschattung, wird der konfigurierte minimale Helligkeitsschwellwert verwendet. Dieser Wert kann nicht kleiner als der [D02 Dämmerungsschwellwert](#d02-dämmerungsschwellwert) sein.\n\nDie Konfigurationsoptionen dazu sind [B02 Winter Helligkeitsschwellwert](#b02-winter-helligkeitsschwellwert), [B03 Sommer Helligkeitsschwellwert](#b03-sommer-helligkeitsschwellwert) und [B04 Schwellwertpuffer Sommer/Winter](#b04-schwellwertpuffer-sommerwinter).\n\n\n\n## Automatische Sperre\n\nWird der Behang manuell verfahren, sperrt sich die jeweilige **Shadow Control** Instanz automatisch. Dies verhindert, dass ein manuelles Positionieren durch die Integration überschrieben wird. Damit das sauber funktioniert ist es wichtig, dass die Verfahrzeit der Behang-Entitäten korrekt konfiguriert ist. Siehe dazu den Abschnitt [Maximale Verfahrdauer](#maximale-verfahrdauer).\n\nDer Sperrstatus wird im Sensor `sensor.\u003cinstanzname\u003e_lock_status` angezeigt, Details siehe [Sensor Sperr-Status](#sperr-status).\n\nDer Status der automatischen Sperre wird nach einem Home Assistant Neustart wiederhergestellt.\n\n\n\n# Installation\n\n**Shadow Control** ist eine Default-Integration in HACS. Zur Installation genügt es also, in HACS danach zu suchen, die Integration hinzuzufügen und Home-Assistant neu zu starten. Im Anschluss kann die Integration unter _Einstellungen \u003e Geräte und Dienste_ hinzugefügt werden.\n\nIn den folgenden Abschnitten gilt Folgendes:\n\n* Das Wort \"Fassade\" ist gleichbedeutend mit \"Fenster\" oder \"Tür\", da es hier lediglich den Bezug zum Azimut eines Objektes in Blickrichtung von innen nach aussen darstellt.\n* Das Wort \"Behang\" bezieht sich auf Raffstoren. In der Home Assistant Terminologie ist das ein \"cover\", was aus Sicht dieser Integration das Gleiche ist.\n* Die gesamte interne Logik wurde ursprünglich für die Interaktion mit KNX-Systemen entwickelt. Der Hauptunterschied ist daher die Handhabung von Prozentwerten. **Shadow Control** wird mit Home Assistant korrekt interagieren aber die Konfiguration sowie die Logausgaben verwenden 0 % als geöffnet und 100 % als geschlossen.\n* Fast alle Einstellungen\n  * stellen eigene Steuerelemente bereit, welche auf der Instanz-Ansicht direkt modifiziert werden können. Damit können die Werte der Optionen einfach verändert und angepasst werden.\n  * können bei Bedarf mit eigenen Entitäten verknüpft werden. Sobald davon Gebrauch gemacht wird, wird kein Steuerelement sondern ein Sensor erstellt, welcher den aktuellen Wert der verknüpften Entität zeigt. Damit können die Werte der Optionen dynamisch angepasst werden, bspw. durch vorgelagerte Automationen.\n\n\n\n# Konfiguration\n\nDie Konfiguration ist unterteilt in die minimalistische Initialkonfiguration sowie in eine separate Detailkonfiguration. Die Initialkonfiguration führt bereits zu einer vollständig funktionierenden Behangautomatisierung, welche über die Detailkonfiguration bei Bedarf jederzeit angepasst werden kann.\n\n\n\n## Initiale Instanzkonfiguration\n\nDie initiale Instanzkonfiguration ist sehr minimalistisch und benötigt nur die folgenden Konfigurationswerte. Alle anderen Einstellungen werden mit Standardwerten vorbelegt, welche im Nachhinein an die persönlichen Wünsche angepasst werden können. Siehe dazu den Abschnitt [Optionale Konfiguration](#optionale-konfiguration).\n\n### Instanzname\n(yaml: `name`)\n\nEin beschreibender und eindeutiger Name für diese **Shadow Control** Instanz. Eine bereinigte Version dieses Namens wird zur Kennzeichnung der Log-Einträge in der Home Assistant Logdatei sowie als Präfix für die von der Integration erstellten Status- und Options-Entitäten verwendet.\n\nBeispiel: \n1. Die Instanz wird \"Essbereich Tür\" genannt\n2. Der bereinigte Name ist daraufhin \"essbereich_tr\"\n3. Log-Einträge beginnen mit `[essbereich_tr]`\n4. Status-Entitäten heissen bspw. `sensor.essbereich_tr_target_height`\n\n#### Behangtyp\n(yaml: `facade_shutter_type_static`)\n\nDer verwendete Behangtyp. Standardeinstellung ist der 90°-Behangtyp (yaml: `mode1`). Bei diesem Typ sind die Lamellen bei 0% waagerecht, also offen und bei 100% (i.d.R. nach aussen) vollständig geschlossen.\n\nWeitere unterstützte Typen:\n\n* Der zweite mögliche Behangtyp hat einen Schwenkbereich von ca. 180° (yaml: `mode2`), also bei 0% (i.d.R. nach aussen) geschlossen, bei 50% waagerecht offen und bei 100% (i.d.R. nach innen) wiederum geschlossen.\n* Der dritte Behangtyp sind Jalousien bzw. Rollos (yaml: `mode3`). Bei diesem Typ werden sämtliche Winkeleinstellungen ausgeblendet.\n\nDer Behangtyp kann im Nachhinein nicht geändert werden. Um ihn zu ändern, muss die jeweilige **Shutter Control** Instanz gelöscht und neu angelegt werden.\n\n### Behang-Entitäten\n(yaml: `target_cover_entity`)\n\nHier werden die zu steuernden Behang-Entitäten verbunden. Es können beliebig viele davon gleichzeitig gesteuert werden. Allerdings empfiehlt es sich, nur die Storen zu steuern, welche sich auf der gleichen Fassade befinden, also das gleiche Azimut haben. Für die weiteren internen Berechnungen wird der erste konfigurierte Behang herangezogen. Alle anderen Storen werden identisch positioniert.\n\nIm yaml ist die Listen-Syntax zu verwenden:\n```yaml\n    target_cover_entity:\n      - cover.fenster_buro_1\n      - cover.fenster_buro_2\n```\n\n### Azimut der Fassade\n(yaml: `facade_azimuth_static`)\n\nAzimut der Fassade in Grad, also die Blickrichtung von innen nach aussen. Eine perfekt nach Norden ausgerichtete Fassade hat ein Azimut von 0°, eine nach Süden ausgerichtete Fassade demzufolge 180°. Der Sonnenbereich dieser Fassade ist der Bereich, in dem die Beschattungssteuerung via **Shadow Control** erfolgen soll. Das ist maximal ein Bereich von 180°, also [Azimut der Fassade](#azimut-der-fassade) + [Beschattungsbeginn](#beschattungsbeginn) bis [Azimut der Fassade](#azimut-der-fassade) + [Beschattungsende](#beschattungsende).\n\nrdeckard hat damals für den Edomi-Baustein eine Zeichnung beigesteuert, welche unverändert auch hier gültig ist:\n\n![Erklärung zum Azimut](/images/azimut.png)\n\n### Helligkeit\n(yaml: `brightness_entity`)\n\nAktuelle Helligkeit auf der Fassade. Im Regelfall kommt dieser Wert von einer Wetterstation und sollte der tatsächlichen Helligkeit auf dieser Fassade möglichst nah kommen.\n\n### Höhe der Sonne\n(yaml: `sun_elevation_entity`)\n\nHier wird die aktuelle Höhe (Elevation) der Sonne konfiguriert. Dieser Wert kommt ebenfalls von einer Wetterstation oder direkt von der Home Assistant Sonne-Entität. Gültig ist dabei der Bereich von 0° (horizontal) bis 90° (vertikal).\n\n### Azimut der Sonne\n(yaml: `sun_azimuth_entity`)\n\nHier wird der aktuelle Winkel (Azimut) der Sonne konfiguriert. Dieser Wert kommt ebenfalls von einer Wetterstation oder direkt von der Home Assistant Sonne-Entität. Gültig ist dabei der Bereich von 0° bis 359°.\n\nsunrise_entity\nsunset_entity\n\n\n\n## Optionale Konfiguration\n\nDie folgenden Optionen sind über den separaten ConfigFlow verfügbar, welcher mit einem Klick auf das Zahnrad-Symbol der jeweiligen Instanz unter Einstellungen \u003e Geräte und Dienste \u003e **Shadow Control** geöffnet wird..\n\n### Fassadenkonfiguration - Teil 1\n\n#### Behang-Entitäten\n\nSiehe Beschreibung unter [Behang-Entitäten](#behang-entitäten).\n\n#### Azimut der Fassade\n\nSiehe Beschreibung unter [Azimut der Fassade](#azimut-der-fassade).\n\n#### Beschattungsbeginn\n(yaml: `facade_offset_sun_in_static`)\n\nNegativoffset zum [Azimut der Fassade](#azimut-der-fassade), ab welchem die Beschattung erfolgen soll. Wenn das Azimut der Sonne kleiner ist als [Azimut der Fassade](#azimut-der-fassade) + [Beschattungsbeginn](#beschattungsbeginn), wird keine Beschattungsberechnung ausgelöst. Gültiger Wertebereich: -90–0, Standardwert: -90\n\n#### Beschattungsende\n(yaml: `facade_offset_sun_out_static`)\n\nPositivoffset zum [Azimut der Fassade](#azimut-der-fassade), bis zu welchem die Beschattung erfolgen soll. Wenn das Azimut der Sonne grösser ist als [Azimut der Fassade](#azimut-der-fassade) + [Beschattungsende](#beschattungsende), wird keine Beschattungsberechnung ausgelöst. Gültiger Wertebereich: 0-90, Standardwert: 90\n\n#### Minimale Sonnenhöhe\n(yaml: `facade_elevation_sun_min_static`)\n\nMinimale Höhe der Sonne in Grad. Ist die effektive Höhe kleiner als dieser Wert, wird keine Beschattungsberechnung ausgelöst. Ein Anwendungsfall dafür ist bspw. wenn sich vor der Fassade ein anderes Gebäude befindet, welches Schatten auf die Fassade wirft, während die Wetterstation auf dem Dach noch voll in der Sonne ist. Wertebereich: 0-90, Standardwert: 0\n\nHinweis bzgl. \"effektiver Höhe\": Um den korrekten Lamellenwinkel zu berechnen, muss die Höhe der Sonne im rechten Winkel zur Fassade errechnet werden. Das ist die sog. \"effektive Höhe\", welche so auch im Log zu finden ist. Wenn die Beschattungssteuerung insbesondere im Grenzbereich der beiden Beginn- und Ende-Offsets nicht wie erwartet arbeitet, muss dieser Wert genauer betrachtet werden.\n\n#### Maximale Sonnenhöhe\n(yaml: `facade_elevation_sun_max_static`)\n\nMaximale Höhe der Sonne in Grad. Ist die effektive Höhe grösser als dieser Wert, wird keine Beschattungsberechnung ausgelöst. Ein Anwendungsfall dafür ist bspw. wenn sich über der Fassade resp. dem Fenster ein Balkon befindet, welcher Schatten auf die Fassade wirft, während die Wetterstation auf dem Dach noch voll in der Sonne ist. Wertebereich: 0-90, Standardwert: 90\n\n#### Debugmodus\n(yaml: `debug_enabled`)\n\nMit diesem Schalter kann der Debugmodus aktiviert werden. Damit werden erheblich mehr Informationen zum Verhalten und der Berechnung für diese Fassade ins Log geschrieben.\n\n#### Eigene Logdatei schreiben\n(yaml: `own_logfile_enabled`)\n\nMit diesem Schalter schreibt Shadow Control alle Log-Ausgaben dieser Instanz zusätzlich in eine eigene Logdatei im Home Assistant Konfigurationsverzeichnis. Die Datei wird nach dem Schema `shadow_control_\u003cbereinigter-instanzname\u003e.log` benannt und automatisch rotiert (max. 5 MB pro Datei, 3 Backups). Dies ist besonders nützlich, wenn Logs einer bestimmten Instanz über einen längeren Zeitraum gesammelt werden sollen, ohne das Haupt-Log von Home Assistant durchsuchen zu müssen.\n\nBeispielpfad: `\u003cconfig_dir\u003e/shadow_control_esszimmer_tuer.log`\n\n\n### Fassadenkonfiguration - Teil 2\n\n#### Neutralhöhe\n(yaml: `facade_neutral_pos_height_manual`)\n\nBehanghöhe in % in Neutralposition. Die Integration wird in die Neutralposition fahren, wenn mindestens eine der folgenden Bedingungen erfüllt ist: \n\n* Die Sonne befindet sich im Beschattungsbereich und die Beschattungsregelung wird deaktiviert\n* Die Dämmerungsregelung wird deaktiviert\n* Die Sonne verlässt den Beschattungsbereich\n\nStandardwert: 0\n\n#### Neutralwinkel\n(yaml: `facade_neutral_pos_angle_manual`)\n\nLamellenwinkel in % in Neutralposition. Alles andere identisch zu [Neutralhöhe](#neutralhöhe). Standardwert: 0\n\n#### Lamellenbreite\n(yaml: `facade_slat_width_static`)\n\nDie Breite der Lamellen in mm. Breite und Abstand werden benötigt, um den Lamellenwinkel zu berechnen, der benötigt wird, die Lamellen gerade so schräg zu stellen, dass kein direktes Sonnenlicht in den Raum fällt. Die Lamellenbreite muss zwingend grösser als der Lamellenabstand sein, anderenfalls ist es nicht möglich, eine korrekte Beschattungsposition anzufahren. Standardwert: 95\n\n#### Lamellenabstand\n(yaml: `facade_slat_distance_static`)\n\nDer Abstand der Lamellen in mm. Alles andere siehe [Lamellenbreite](#lamellenbreite). Standardwert: 67\n\n#### Lamellenwinkeloffset\n(yaml: `facade_slat_angle_offset_static`)\n\nLamellenwinkeloffset in %. Dieser Wert wird zum berechneten Lamellenwinkel addiert. Er kann somit verwendet werden, um allfällige Ungenauigkeiten im Grenzbereich der Beschattung zu korrigieren. Das ist bspw. der Fall, wenn der Behang in Beschattungsposition ist aber dennoch ein schmaler Lichtstrahl hindurchfällt. Standardwert: 0\n\n#### Minimaler Lamellenwinkel\n(yaml: `facade_slat_min_angle_static`)\n\nMinimaler Lamellenwinkel in %. Die Lamellen werden im Bereich von diesem Wert bis 100% positioniert. Damit kann diese Option dazu verwendet werden, den Öffnungsbereich zu begrenzen. Standardwert: 0\n\n#### Höhenschrittweite\n(yaml: `facade_shutter_stepping_height_static`)\n\nSchrittweite der Höhenpositionierung. Die meissten Rollläden sind nicht in der Lage, sehr kleine Positionierungsschritte anzufahren. Um dem zu begegnen, kann hier die Schrittweite eingestellt werden, in welcher der Behang positioniert werden soll. Dabei wird berücksichtigt, ob die Sonne steigt oder fällt. Standardwert: 5\n\n#### Winkelschrittweite\n(yaml: `facade_shutter_stepping_angle_static`)\n\nSchrittweite der Lamellenwinkelpositionierung. Details siehe [Höhenschrittweite](#höhenschrittweite). Standardwert: 5\n\n#### Lichtstreifenbreite\n(yaml: `facade_light_strip_width_static`)\n\nBreite eines nicht zu beschattenden Lichtstreifens am Boden. Mit dieser Einstellung wird festgelegt, wie tief oder weit die Sonne in den Raum hinein scheinen soll. Dementsprechend wird der Behang in der Höhe nicht 100% geschlossen, sondern auf die Höhe gefahren, welche in den hier definierten Lichtstreifen resultiert. Standardwert: 0\n\n#### Gesamthöhe\n(yaml: `facade_shutter_height_static`)\n\nUm den Lichtstreifen aus [Lichtstreifenbreite](#lichtstreifenbreite) zu berechnen, wird die Gesamthöhe des Behangs resp. des Fensters benötigt. Damit muss die gleiche Einheit verwendet werden, also bspw. beide Werte in mm. Standardwert: 1000\n\n#### Maximale Verfahrdauer\n(yaml: `facade_max_movement_duration_static`)\n\nGibt die Dauer der Bewegung von vollständig geschlossen (unten) bis vollständig offen (oben) in Sekunden an. Dieser Wert wird benötigt, um die automatische Instanzsperre korrekt durchzuführen, wenn der Behang manuell bewegt wird.\n\nBei der Konfiguration der verwendeten KNX-Cover-Instanzen ist zu beachten, dass die `travelling_time_up`- und `travelling_time_down`-Werte korrekt angegeben werden müssen! Diese Werte werden von Home Assistant zum Animieren der Slider auf dem UI verwendet und somit wird beim Bewegen des Behangs über die konfigurierte Zeit hinweg stetig hoch bzw. runter gezählt. Das kann unter `Entwicklerwerkzeuge \u003e Zustände` auf der jeweiligen Cover-Entität beobachtet werden. Damit ist das aber auch der Positionswert, welcher als Rückmeldung bei der **Shadow Control** Instanz ankommt. Diese Werte dürfen auf keinen Fall grösser als `facade_max_movement_duration_static` sein! Es empfiehlt sich, die beiden Travelling-Time-Werte auf die gemessene Verfahrzeit des Behangs und `facade_max_movement_duration_static` jeweils zwei bis drei Sekunden länger zu konfigurieren.\n\nBeispiel aus der **Shadow Control** Instanz-Konfiguration:\n```yaml\n  facade_max_movement_duration_static: 35\n```\n\nBeispiel der KNX-Cover-Konfiguration:\n```yaml\n- name: \"Fenster Büro West\"\n  move_long_address: \"1/0/17\"\n  move_short_address: \"1/0/17\"\n  stop_address: \"1/1/17\"\n  position_address: \"1/2/17\"\n  position_state_address: \"1/3/17\"\n  travelling_time_down: 32\n  travelling_time_up: 32\n  angle_address: \"1/2/117\"\n  angle_state_address: \"1/3/117\"\n```\n\n#### Toleranz Höhenänderung\n(yaml: `facade_modification_tolerance_height_static`)\n\nToleranzbereich für externe Höhenmodifikation. Weicht die kalkulierte Höhe von der tatsächlichen Höhe +/- der hier angegebenem Toleranz ab, sperrt sich die Integration nicht selbst. Standardwert: 8\n\n#### Toleranz Lamellenwinkeländerung\n(yaml: `facade_modification_tolerance_angle_static`)\n\nToleranzbereich für externe Lamellenwinkelmodifikation, alles Weitere siehe [Toleranz Höhenänderung](#toleranz-höhenänderung). Standardwert: 5\n\n\n\n\n\n### Dynamische Eingänge\n\nDieser Abschnitt konfiguriert die dynamischen Eingänge. Damit werden die Werte eingerichtet, welche sich im täglichen Betrieb ändern können wie bspw. der Sonnenstand oder andere Verhaltenseinstellungen der Integration.\n\n#### Helligkeit\n\nSiehe Beschreibung unter [Helligkeit](#brightness).\n\n#### Helligkeit (Dämmerung)\n(yaml: `brightness_dawn_entity`)\n\nHier kann eine separate Helligkeit für die Dämmerungssteuerung eingestellt werden. Das ist insbesondere dann sinnvoll, wenn für die einzelnen **Shadow Control** Instanzen resp. Fassaden unterschiedliche Helligkeitssensoren verwendet werden, der Behang aber im gesamten Gebäude zur Dämmerung gleichzeitig geschlossen werden soll. \n\nIn diesem Fall sollte über eine separate Automation bspw. der Mittelwert aus allen Helligkeiten berechnet und hier verknüpft werden. Damit werden alle Raffstoren gleichzeitig in die Dämmerungsposition gefahren.\n\nWenn nur eine Helligkeit für das gesamte Gebäude vorhanden ist, kann dieser Eingang leer bleiben.\n\n#### Höhe der Sonne\n\nSiehe Beschreibung unter [Höhe der Sonne](#sun-elevation).\n\n#### Azimut der Sonne\n\nSiehe Beschreibung unter [Azimut der Sonne](#sun-azimuth).\n\n#### Integration sperren\n(yaml: `lock_integration_manual: true|false` u/o `lock_integration_entity: \u003centity\u003e`)\n\nMit diesem Eingang kann die Instanz gesperrt werden. Wird der Eingang aktiviert, also auf 'on' gesetzt, arbeitet die Instanz intern normal weiter, aktualisiert aber den verbundenen Behang nicht. Damit wird erreicht, dass beim Entsperren direkt die nun gültige Position angefahren werden kann.\n\nWird der Eingang auf 'off' gesetzt, arbeitet die Instanz normal weiter, solange nicht [Integration sperren mit Zwangsposition](#integration-sperren-mit-zwangsposition) aktiv ist.\n\nAchtung, siehe Hinweis unter [Entitäten-Vorrang](#entitäten-vorrang).\n\n#### Integration sperren mit Zwangsposition\n(yaml: `lock_integration_with_position_manual: true|false` u/o `lock_integration_with_position_entity: \u003centity\u003e`)\n\nMit diesem Eingang kann die Instanz gesperrt und eine Zwangsposition angefahren werden. Wird der Eingang aktiviert, also auf 'on' gesetzt, arbeitet die Instanz intern normal weiter, fährt aber den Behang auf die via [Zwangsposition Höhe](#zwangsposition-höhe)/[Zwangsposition Lamellenwinkel](#zwangsposition-lamellenwinkel) konfigurierte Position. Damit wird erreicht, dass beim Entsperren direkt die nun gültige Position angefahren werden kann.\n\nWird der Eingang auf 'off' gesetzt, arbeitet die Instanz normal weiter, solange nicht [Integration sperren](#integration-sperren) aktiv ist.\n\nDieser Eingang hat Vorrang vor [Integration sperren](#integration-sperren). Werden beide Sperren auf 'on' gesetzt, wird die Zwangsposition angefahren.\n\nAchtung, siehe Hinweis unter [Entitäten-Vorrang](#entitäten-vorrang).\n\n#### Zwangsposition Höhe\n(yaml: `lock_height_manual: \u003cWert\u003e` u/o `lock_height_entity: \u003centity\u003e`)\n\nAnzufahrende Höhe in %, wenn die Integration via [Integration sperren mit Zwangsposition](#integration-sperren-mit-zwangsposition) gesperrt wird.\n\nAchtung, siehe Hinweis unter [Entitäten-Vorrang](#entitäten-vorrang).\n\n#### Zwangsposition Lamellenwinkel\n(yaml: `lock_angle_manual: \u003cWert\u003e` u/o `lock_angle_entity: \u003centity\u003e`)\n\nAnzufahrender Lamellenwinkel in %, wenn die Integration via [Integration sperren mit Zwangsposition](#integration-sperren-mit-zwangsposition) gesperrt wird.\n\nAchtung, siehe Hinweis unter [Entitäten-Vorrang](#entitäten-vorrang).\n\n#### Instanz entsperren\n(yaml: `unlock_integration_manual: true|false` u/o `unlock_integration_entity: \u003centity\u003e`)\n\nMit diesem Eingang kann die Instanz entsperrt werden. Wird der Eingang aktiviert, also auf 'on' gesetzt, werden sämtliche Sperrzustände deaktiviert.\n\n#### Höhenveränderung einschränken\n(yaml: `movement_restriction_height_manual: \u003csiehe-unten\u003e` u/o `movement_restriction_height_entity: \u003centity\u003e`)\n\nMit diesem Setting kann die Bewegungsrichtung der Höhenpositionierung wie folgt eingeschränkt werden\n\n* \"Keine Einschränkung\" (Standardwert):\n  Keine Einschränkung der Höhenpositionierung. Die Integration wird den Behang öffnen oder schliessen.\n* \"Nur schließen\":\n  Im Vergleich zur letzten (vorherigen) Positionierung werden nur weiter schließende Positionen angefahren.\n* \"Nur öffnen\":\n  Im Vergleich zur letzten (vorherigen) Positionierung werden nur weiter öffnende Positionen angefahren.\n\nDas kann dafür verwendet werden, dass der Behang nach der Beschattung nicht zunächst geöffnet und kurze Zeit später durch schnell einsetzende Dämmerung wieder geschlossen wird. Durch eine separate, bspw. tageszeitabhängige Automation, kann dieser Eingang entsprechend modifiziert werden.\n\nAchtung, siehe Hinweis unter [Entitäten-Vorrang](#entitäten-vorrang).\n\n#### Winkelveränderung einschränken\n(yaml: `movement_restriction_angle_manual: \u003csiehe-unten\u003e` u/o `movement_restriction_angle_entity: \u003centity\u003e`)\n\nSiehe [Höhenveränderung einschränken](#höhenveränderung-einschränken), hier nur für den Lamellenwinkel.\n\nAchtung, siehe Hinweis unter [Entitäten-Vorrang](#entitäten-vorrang).\n\n#### Zwangspositionierung auslösen\n(yaml: `enforce_positioning_entity: \u003centity\u003e`)\n\nDieser Eingang kann mit einer Boolean-Entität verknüpft werden. Wird diese Entität auf 'on' gestellt, wird die unmittelbare positionierung erzwungen. Das ist hilfreich, wenn die tatsächliche Behangposition nicht mehr mit der von der Integration angenommenen Position übereinstimmt, sollte aber im Normalfall deaktiviert bleiben. Anderenfalls werden die Lamellen mglw. ständig nur geschlossen und wieder geöffnet, weil Raffstoren technisch immer erst die Höhe und danach den Lamellenwinkel anfahren.\n\nZusätzlich zur vorherigen Entitätskonfiguration kann diese Push-Button-Entität auf Detailseite der Instanz verwendet werden, um die Behangpositionierung einmalig zu erzwingen. Wenn dieser Knopf gedrückt wird, wird der Behang entsprechend der berechneten Werte positioniert.\n\n\n\n\n\n### Beschattungseinstellungen\n\nDie Beschattungseinstellungen verwenden den Präfix **B\u0026lt;nummer\u0026gt;**, um eine logische Gruppierung resp. Reihenfolge der Optionen zu erreichen. Damit werden die konfigurierten Werte in der Instanz-Ansicht auch in dieser Reihenfolge dargestellt. Zu beachten ist, dass eine Option nur dann unter **Steuerelemente** zu sehen ist, wenn _keine_ Entität darauf konfiguriert wurde. Anderenfalls ist sie unter **Sensoren** zu finden und zeigt den Wert der konfigurierten Entität. Hier beispielhaft der Anfang der Steuerelemente:\n\n![Steuerelemente](/images/controls.png)\n\n\n\n#### B01 Steuerung aktiv\n(yaml: `shadow_control_enabled_manual: true|false` u/o `shadow_control_enabled_entity: \u003centity\u003e`)\n\nMit dieser Option wird die Beschattungssteuerung ein- oder ausgeschaltet. Standardwert: ein\n\n#### B02 Winter Helligkeitsschwellwert\n(yaml: `shadow_brightness_threshold_winter_manual: \u003cWert\u003e` u/o `shadow_brightness_threshold_winter_entity: \u003centity\u003e`)\n\n##### Konstante Beschattungssteuerung\nHier wird der Helligkeitsschwellwert in Lux konfiguriert. Wird dieser Wert überschritten, startet der Timer [B05 Schliessen nach x Sekunden](#b05-schliessen-nach-x-sekunden). Standardwert: 30000 \n\n##### Adaptive Beschattungssteuerung\nIn Verbindung mit dem Parameter [B03 Sommer Helligkeitsschwellwert](#b03-sommer-helligkeitsschwellwert) and [B04 Minimaler Helligkeitsschwellwert](#b04-minimaler-helligkeitsschwellwert) kann der Helligkeitsunterschied zwischen Sommer und Winter ausgeglichen werden. Um diese Funktionalität zu aktivieren, muss der [B03 Sommer Helligkeitsschwellwert](#b03-sommer-helligkeitsschwellwert) auf einen grösseren Wert als der Winterschwellwert konfiguriert werden. \n\nBeschreibung der Funktionalität siehe [Adaptiver Helligkeitsschwellwert](#adaptiver-helligkeitsschwellwert).\n\n#### B03 Sommer Helligkeitsschwellwert\n(yaml: `shadow_brightness_threshold_summer_manual: \u003cWert\u003e` u/o `shadow_brightness_threshold_summer_entity: \u003centity\u003e`)\n\nZweiter Wert für die Adaptive Beschattungssteuerung. Beschreibung der Funktionalität siehe [Adaptiver Helligkeitsschwellwert](#adaptiver-helligkeitsschwellwert). Default: 50000\n\n#### B04 Minimaler Helligkeitsschwellwert\n(yaml: `shadow_brightness_threshold_minimal_manual: \u003cWert\u003e` u/o `shadow_brightness_threshold_minimal_entity: \u003centity\u003e`)\n\nDieser Wert definiert den tiefsten Punkt der Sinuskurve, der Adaptiven Beschattungssteuerung, welcher am Sonnenaufgang und Sonnenuntergang erreicht wird. Der Wert darf nicht kleiner als der Dämmerungsschwellwert sein und wird daher ggf. entsprechend korrigiert.\n\nBeschreibung der Funktionalität siehe [Adaptiver Helligkeitsschwellwert](#adaptiver-helligkeitsschwellwert). Default: 20000\n\n#### B05 Schliessen nach x Sekunden\n(yaml: `shadow_after_seconds_manual: \u003cWert\u003e` u/o `shadow_after_seconds_entity: \u003centity\u003e`)\n\nHier wird der Zeitraum in Sekunden konfiguriert, nachdem der Behang nach Überschreiten des [Helligkeitsschwellwertes](#b02-winter-helligkeitsschwellwert) geschlossen werden soll. Standardwert: 120\n\n#### B06 Maximale Behanghöhe\n(yaml: `shadow_shutter_max_height_manual: \u003cWert\u003e` u/o `shadow_shutter_max_height_entity: \u003centity\u003e`)\n\nHier kann die maximale Behanghöhe angegeben werden. Das wird bspw. verwendet, um den Behang nicht bis ganz auf den Boden zu fahren, damit ein festfrieren im Winter vermieden wird. Standardwert: 100 \n\n#### B07 Maximaler Lamellenwinkel\n(yaml: `shadow_shutter_max_angle_manual: \u003cWert\u003e` u/o `shadow_shutter_max_angle_entity: \u003centity\u003e`)\n\nHier kann der maximale Lamellenwinkel angegeben werden. Das wird bspw. verwendet, um den Behang nicht ganz zu schliessen, damit ein zusammenfrieren der Lamellen im Winter vermieden wird. Standardwert: 100\n\n#### B08 Durchsicht nach x Sekunden\n(yaml: `shadow_shutter_look_through_seconds_manual: \u003cWert\u003e` u/o `shadow_shutter_look_through_seconds_entity: \u003centity\u003e`)\n\nFällt die Helligkeit unter den Schwellwert von [B02 Winter Helligkeitsschwellwert](#b02-winter-helligkeitsschwellwert), wird der Behang nach der hier angegeben Zeit auf Durchsichtsposition gefahren. Standardwert: 900\n\n#### B09 Durchsichtwinkel\n(yaml: `shadow_shutter_look_through_angle_manual: \u003cWert\u003e` u/o `shadow_shutter_look_through_angle_entity: \u003centity\u003e`)\n\nHier wird der Lamellenwinkel der Durchsichtsposition in % konfiguriert. Standardwert: 0\n\n#### B10 Öffnen nach x Sekunden\n(yaml: `shadow_shutter_open_seconds_manual: \u003cWert\u003e` u/o `shadow_shutter_open_seconds_entity: \u003centity\u003e`)\n\nNachdem der Behang auf Durchsichtsposition gefahren wurde, wird er nach der hier konfigurierten Zeit ganz geöffnet. Standardwert: 3600\n\n#### B11 Höhe nach Beschattung\n(yaml: `shadow_height_after_sun_manual: \u003cWert\u003e` u/o `shadow_height_after_sun_entity: \u003centity\u003e`)\n\nWenn keine Beschattungssituation mehr vorliegt, wird der Behang auf die hier in % konfigurierte Höhe gefahren. Standardwert: 0\n\n#### B12 Winkel nach Beschattung\n(yaml: `shadow_angle_after_sun_manual: \u003cWert\u003e` u/o `shadow_angle_after_sun_entity: \u003centity\u003e`)\n\nWenn keine Beschattungssituation mehr vorliegt, wird der Behang auf den hier in % konfigurierten Lamellenwinkel gefahren. Standardwert: 0\n\n\n\n\n\n### Dämmerungseinstellungen\n\nDie Dämmerungseinstellungen verwenden den Präfix **D\u0026lt;nummer\u0026gt;**, um eine logische Gruppierung resp. Reihenfolge der Optionen zu erreichen. Damit werden die konfigurierten Werte in der Instanz-Ansicht auch in dieser Reihenfolge dargestellt. Zu beachten ist, dass eine Option nur dann unter **Steuerelemente** zu sehen ist, wenn _keine_ Entität darauf konfiguriert wurde. Anderenfalls ist sie unter **Sensoren** zu finden und zeigt den Wert der konfigurierten Entität. Hier beispielhaft der Anfang der Steuerelemente:\n\n![Steuerelemente](/images/controls.png)\n\n\n\n#### D01 Steuerung aktiv\n(yaml: `dawn_control_enabled_manual: true|false` u/o `dawn_control_enabled_entity: \u003centity\u003e`)\n\nMit dieser Option wird die Dämmerungssteuerung ein- oder ausgeschaltet. Standardwert: ein\n\n#### D02 Dämmerungsschwellwert\n(yaml: `dawn_brightness_threshold_manual: \u003cWert\u003e` u/o `dawn_brightness_threshold_entity: \u003centity\u003e`)\n\nHier wird der Helligkeitsschwellwert in Lux konfiguriert. Wird dieser Wert unterschritten, startet der Timer [D03 Schliessen nach x Sekunden](#d03-schliessen-nach-x-sekunden). Standardwert: 500\n\n#### D03 Schliessen nach x Sekunden\n(yaml: `dawn_after_seconds_manual: \u003cWert\u003e` u/o `dawn_after_seconds_entity: \u003centity\u003e`)\n\nHier wird der Zeitraum in Sekunden konfiguriert, nachdem der Behang nach Unterschreiten des [Helligkeitsschwellwertes](#d02-dämmerungsschwellwert) geschlossen werden soll. Standardwert: 120\n\n#### D04 Maximale Behanghöhe\n(yaml: `dawn_shutter_max_height_manual: \u003cWert\u003e` u/o `dawn_shutter_max_height_entity: \u003centity\u003e`)\n\nHier kann die maximale Behanghöhe angegeben werden. Das wird bspw. verwendet, um den Behang nicht bis ganz auf den Boden zu fahren, damit ein festfrieren im Winter vermieden wird. Standardwert: 100\n\n#### D05 Maximaler Lamellenwinkel\n(yaml: `dawn_shutter_max_angle_manual: \u003cWert\u003e` u/o `dawn_shutter_max_angle_entity: \u003centity\u003e`)\n\nHier kann der maximale Lamellenwinkel angegeben werden. Das wird bspw. verwendet, um den Behang nicht ganz zu schliessen, damit ein zusammenfrieren der Lamellen im Winter vermieden wird. Standardwert: 100\n\n#### D06 Durchsicht nach x Sekunden\n(yaml: `dawn_shutter_look_through_seconds_manual: \u003cWert\u003e` u/o `dawn_shutter_look_through_seconds_entity: \u003centity\u003e`)\n\nSteigt die Helligkeit über den Schwellwert von [D02 Dämmerungsschwellwert](#d02-dämmerungsschwellwert), wird der Behang nach der hier angegeben Zeit auf Durchsichtposition gefahren. Standardwert: 120\n\n#### D07 Durchsichtwinkel\n(yaml: `dawn_shutter_look_through_angle_manual: \u003cWert\u003e` u/o `dawn_shutter_look_through_angle_entity: \u003centity\u003e`)\n\nHier wird der Lamellenwinkel der Durchsichtsposition in % konfiguriert. Standardwert: 0\n\n#### D08 Öffnen nach x Sekunden\n(yaml: `dawn_shutter_open_seconds_manual: \u003cWert\u003e` u/o `dawn_shutter_open_seconds_entity: \u003centity\u003e`)\n\nNachdem der Behang auf Durchsichtsposition gefahren wurde, wird er nach der hier konfigurierten Zeit ganz geöffnet. Standardwert: 3600\n\n#### D09 Höhe nach Dämmerung\n(yaml: `dawn_height_after_dawn_manual: \u003cWert\u003e` u/o `dawn_height_after_dawn_entity: \u003centity\u003e`)\n\nWenn keine Dämmerungssituation mehr vorliegt, wird der Behang auf die hier in % konfigurierte Höhe gefahren. Standardwert: 0\n\n#### D10 Winkel nach Dämmerung\n(yaml: `dawn_angle_after_dawn_manual: \u003cWert\u003e` u/o `dawn_angle_after_dawn_entity: \u003centity\u003e`)\n\nWenn keine Dämmerungssituation mehr vorliegt, wird der Behang auf den hier in % konfigurierten Lamellenwinkel gefahren. Standardwert: 0\n\n#### D11 Frühestens öffnen um (Uhrzeit)\n(yaml: `dawn_open_not_before_entity: \u003centity\u003e` u/o `dawn_open_not_before_manual: \"HH:MM\"`)\n\nDiese optionale Zeitbeschränkung verhindert, dass der Behang vor der angegebenen Uhrzeit am Morgen öffnet, selbst wenn der Helligkeitsschwellwert überschritten wird. Dies ist nützlich, um zu frühes Öffnen im Sommer zu verhindern, wenn es sehr früh hell wird.\n\n**Logik:** Der Behang öffnet nur, wenn **beide** Bedingungen erfüllt sind:\n1. Helligkeit ≥ [D02 Dämmerungsschwellwert](#d02-dämmerungsschwellwert)\n2. Aktuelle Uhrzeit ≥ Frühestens-öffnen-Zeit\n\n**Anwendungsbeispiele:**\n- **Wochentage:** Auf `06:00` setzen, um Öffnen vor 6 Uhr morgens an Arbeitstagen zu verhindern\n- **Wochenende:** Eine Entität (`input_datetime`) verwenden, die via Automation automatisch angepasst wird (z.B. `06:00` Mo-Fr, `08:00` Sa-So)\n- **Sommer-Szenario:** Im Sommer wird der Helligkeitsschwellwert bereits um 5 Uhr erreicht, aber der Behang soll erst um 6 Uhr öffnen\n\n**Konfiguration:**\n- **Entitäts-Variante:** Referenziert eine `input_datetime`-Entität, die die Uhrzeit liefert. Dies ermöglicht dynamische Anpassung (z.B. via Automationen für Wochentag/Wochenende-Unterschiede)\n- **Manuelle Variante:** Feste Uhrzeit im Format `HH:MM` eingeben (z.B. `06:00` für 6 Uhr morgens)\n- **Standardwert:** None (Feature deaktiviert - nur Helligkeitsschwellwert gilt)\n- Deaktivieren der Funktionalität durch Löschen der konfigurierten Uhrzeit bzw. durch Setzen auf den Wert `00:00`.\n\n**Format:** `HH:MM` (24-Stunden-Format, z.B. `06:00`, `08:30`, `23:45`)\n\n#### D12 Spätestens schließen um (Uhrzeit)\n(yaml: `dawn_close_not_later_than_entity: \u003centity\u003e` u/o `dawn_close_not_later_than_manual: \"HH:MM\"`)\n\nDiese optionale Zeitbeschränkung stellt sicher, dass der Behang zur angegebenen Uhrzeit am Abend schließt, unabhängig von der Helligkeit. Dies garantiert Privatsphäre oder Sicherheit auch wenn es draußen noch hell ist (z.B. im Sommer).\n\n**Logik:** Der Behang schließt, wenn **eine** der Bedingungen erfüllt ist:\n1. Helligkeit \u003c [D02 Dämmerungsschwellwert](#d02-dämmerungsschwellwert) **ODER**\n2. Aktuelle Uhrzeit ≥ Spätestens-schließen-Zeit\n\n**Anwendungsbeispiele:**\n- **Privatsphäre:** Behang um 20 Uhr schließen, auch an hellen Sommerabenden\n- **Sicherheit:** Sicherstellen, dass Behänge zu einer bestimmten Zeit geschlossen sind, z.B. im Urlaub\n- **Winter-Szenario:** Im Winter wird es gegen 17 Uhr dunkel, der Behang schließt früh aufgrund der Helligkeit. Die Zeitbeschränkung hat keine Wirkung.\n- **Sommer-Szenario:** Im Sommer ist es um 20 Uhr noch hell, aber die Zeitbeschränkung löst trotzdem das Schließen aus.\n\n**Konfiguration:**\n- **Entitäts-Variante:** Referenziert eine `input_datetime`-Entität, die die Uhrzeit liefert. Dies ermöglicht dynamische Anpassung (z.B. unterschiedliche Zeiten für verschiedene Jahreszeiten)\n- **Manuelle Variante:** Feste Uhrzeit im Format `HH:MM` eingeben (z.B. `20:00` für 20 Uhr)\n- **Standardwert:** None (Feature deaktiviert - nur Helligkeitsschwellwert gilt)\n- Deaktivieren der Funktionalität durch Löschen der konfigurierten Uhrzeit bzw. durch Setzen auf den Wert `00:00`.\n\n**Format:** `HH:MM` (24-Stunden-Format, z.B. `20:00`, `21:30`, `22:00`)\n\n**Kombiniertes Beispiel:**\n* Winter (hell um 8 Uhr, dunkel um 17 Uhr):\n* Morgens: Helligkeitsschwellwert um 8 Uhr erreicht → Öffnet um 8 Uhr (Helligkeitsbedingung aktiv)\n* Abends: Helligkeitsschwellwert um 17 Uhr unterschritten → Schließt um 17 Uhr (Helligkeitsbedingung aktiv)\n\n```yaml\ndawn_open_not_before_manual: \"06:00\"\ndawn_close_not_later_than_manual: \"20:00\"\n```\n\n* Sommer (hell um 5 Uhr, dunkel um 22 Uhr):\n* Morgens: Helligkeitsschwellwert um 5 Uhr erreicht → Öffnet um 6 Uhr (Zeitbedingung aktiv)\n* Abends: Helligkeitsschwellwert um 22 Uhr unterschritten → Schließt um 20 Uhr (Zeitbedingung aktiv)\n\n```yaml\ndawn_open_not_before_manual: \"06:00\"\ndawn_close_not_later_than_manual: \"20:00\"\n```\n\n\n\n## Konfiguration via yaml\n\nEs ist möglich, die **Shadow Control** Instanzen via yaml zu konfigurieren. Dazu müssen die entsprechenden Konfigurationen im `configuration.yaml` einmalig eingetragen und Home Assistant neu gestartet werden. **Shadow Control** wird die yaml-Konfiguration einlesen und entsprechende Instanzen anlegen. Diese Instanzen können im Anschluss via ConfigFlow bearbeitet werden. Änderungen an der yaml-Konfiguration werden nicht übernommen, da die gesamte Konfiguration via Home Assistant ConfigFlow abgebildet wird. Sollen die yaml-Konfigurationen dennoch neu eingelesen werden, müssen die entsprechenden **Shadow Control** Instanzen zunächst gelöscht und dann Home Assistant neu gestartet werden.\n\n### yaml Beispielkonfiguration\n\nDie Einträge der Konfiguration folgen den oben in der Dokumentation jeweils genannten Schlüsselwörtern. Nicht verwendete Schlüsselwörter müssen auskommentiert oder entfernt werden.\n\n```yaml\nshadow_control:\n  - name: \"Büro West\"\n    #\n    # Configure shutter mode by entering 'mode1', 'mode2' or 'mode3'\n    # All *_angle_* settings will be ignored on mode3\n    facade_shutter_type_static: mode1\n    #\n    # List of cover entities to handle by this Shadow Control instance\n    target_cover_entity:\n      - cover.fenster_buro_west\n    #\n    # Enable debug mode for way more log output\n    debug_enabled: false\n    #\n    # Alle Log-Ausgaben dieser Instanz zusätzlich in eine eigene Logdatei im\n    # HA-Konfigurationsverzeichnis schreiben (shadow_control_\u003cname\u003e.log, max 5 MB x 3 Backups)\n    own_logfile_enabled: false\n    #\n    # =======================================================================\n    # Dynamic configuration inputs\n    #\n    # Entity which holds the current brightness\n    brightness_entity: input_number.d01_brightness\n    # Entity which holds the current dawn brightness. See the description above.\n    #brightness_dawn_entity: input_number.d02_brightness_dawn\n    #\n    # Entities holding the current sun position\n    #sun_elevation_entity: sun.sun\n    #sun_azimuth_entity: sun.sun\n    #\n    # Entities with next sunrise/sunset for adaptive brightness calculation\n    #sunrise_entity: sensor.sun_next_rising\n    #sunset_entity: sensor.sun_next_setting\n    #\n    # Entities to lock the integration\n    lock_integration_manual: false\n    lock_integration_with_position_manual: false\n    #lock_integration_entity: input_boolean.d07_lock_integration\n    #lock_integration_with_position_entity: input_boolean.d08_lock_integration_with_position\n    #\n    # Lock with position height and angle values if lock_integration_with_position is used\n    # Range from 0-100 as percent values\n    lock_height_manual: 0\n    lock_angle_manual: 0\n    #\n    # Lock with position height and angle entities if lock_integration_with_position is used\n    #lock_height_entity: input_number.lock_height_entity\n    #lock_angle_entity: input_number.lock_angle_entity\n    #\n    # One of 'no_restriction', 'only_open' or 'only_close' must be given, if this option is used.\n    # But in fact it makes no sense to configure something here as the shutter will not be moved \n    # anymore as soon as the final position is reached. This option is mainly used at the\n    # maintenance page of a configured instance, to temporarily restrict the movement manually.\n    movement_restriction_height_manual: no_restriction\n    movement_restriction_angle_manual: no_restriction\n    #\n    # Entities to restrict the movement direction\n    #movement_restriction_height_entity:\n    #movement_restriction_angle_entity:\n    #\n    # Entity to enforce the shutter positioning\n    #enforce_positioning_entity: input_button.d13_enforce_positioning\n    #\n    # =======================================================================\n    # General facade configuration\n    facade_azimuth_static: 180\n    facade_offset_sun_in_static: -90\n    facade_offset_sun_out_static: 90\n    facade_elevation_sun_min_static: 0\n    facade_elevation_sun_max_static: 90\n    facade_slat_width_static: 95\n    facade_slat_distance_static: 67\n    facade_slat_angle_offset_static: 0\n    facade_slat_min_angle_static: 0\n    facade_shutter_stepping_height_static: 5\n    facade_shutter_stepping_angle_static: 5\n    facade_light_strip_width_static: 0\n    facade_shutter_height_static: 1000\n    facade_neutral_pos_height_manual: 0\n    facade_neutral_pos_angle_manual: 0\n    #facade_neutral_pos_height_entity: input_number.facade_neutral_pos_height_entity\n    #facade_neutral_pos_angle_entity: input_number.facade_neutral_pos_angle_entity\n    facade_max_movement_duration_static: 35\n    facade_modification_tolerance_height_static: 8\n    facade_modification_tolerance_angle_static: 5\n    #\n    # =======================================================================\n    # Shadow configuration\n    #shadow_control_enabled_entity:\n    shadow_control_enabled_manual: true\n    #shadow_brightness_threshold_winter_entity:\n    #shadow_brightness_threshold_winter_manual: 30000\n    #shadow_brightness_threshold_summer_entity:\n    #shadow_brightness_threshold_summer_manual: 50000\n    #shadow_brightness_threshold_minimal_entity:\n    #shadow_brightness_threshold_minimal_manual: 20000\n    #shadow_after_seconds_entity:\n    shadow_after_seconds_manual: 15\n    #shadow_shutter_max_height_entity:\n    shadow_shutter_max_height_manual: 100\n    #shadow_shutter_max_angle_entity:\n    shadow_shutter_max_angle_manual: 100\n    #shadow_shutter_look_through_seconds_entity:\n    shadow_shutter_look_through_seconds_manual: 15\n    #shadow_shutter_open_seconds_entity:\n    shadow_shutter_open_seconds_manual: 15\n    #shadow_shutter_look_through_angle_entity:\n    shadow_shutter_look_through_angle_manual: 0\n    #shadow_height_after_sun_entity:\n    shadow_height_after_sun_manual: 0\n    #shadow_angle_after_sun_entity:\n    shadow_angle_after_sun_manual: 0\n    #\n    # =======================================================================\n    # Dawn configuration\n    #dawn_control_enabled_entity:\n    dawn_control_enabled_manual: true\n    #dawn_brightness_threshold_entity:\n    dawn_brightness_threshold_manual: 500\n    #dawn_after_seconds_entity:\n    dawn_after_seconds_manual: 15\n    #dawn_shutter_max_height_entity:\n    dawn_shutter_max_height_manual: 100\n    #dawn_shutter_max_angle_entity:\n    dawn_shutter_max_angle_manual: 100\n    #dawn_shutter_look_through_seconds_entity:\n    dawn_shutter_look_through_seconds_manual: 15\n    #dawn_shutter_open_seconds_entity:\n    dawn_shutter_open_seconds_manual: 15\n    #dawn_shutter_look_through_angle_entity:\n    dawn_shutter_look_through_angle_manual: 50\n    #dawn_height_after_dawn_entity:\n    dawn_height_after_dawn_manual: 0\n    #dawn_angle_after_dawn_entity:\n    dawn_angle_after_dawn_manual: 0\n    #dawn_open_not_before_entity: \n    #dawn_open_not_before_manual: \"06:00\"\n    #dawn_close_not_later_than_entity:\n    #dawn_close_not_later_than_manual: \"20:00\"\n```\n# Status, Rückgabewerte und direkte Optionen\n\nJede Instanz von **Shadow Control** legt in Home Assistant ein Gerät an, unter dem diverse Entitäten zur weiteren Verwendung zur Verfügung stehen. Hier ein Beispiel, wie das aussieht:\n\n![Sensoren](/images/sensors.png)\n\n## Status-Werte\n\n### Zielhöhe\n`target_height`\nHier ist die verwendete Höhe des Behangs zu finden.\n\n### Zielwinkel\n`target_angle`\nHier ist der verwendete Lamellenwinkel des Behangs zu finden. Diese Entität ist nur bei Behangtyp `mode1` und `mode2` verfügbar.\n\n### Zielwinkel in Grad\n`target_angle_degrees`\nHier ist der verwendete Lamellenwinkel des Behangs in Grad (°) zu finden. Diese Entität ist nur bei Behangtyp `mode1` und `mode2` verfügbar.\n\n### Kalkulatorische Zielhöhe\n`computed_height`\nHier ist die errechnete Höhe des Behangs zu finden. Dieser Wert kann sich von der tatsächlich angefahrenen Höhe unterscheiden, wenn bspw. eine Bewegungseinschränkung aktiv ist.\n\n### Kalkulatorischer Zielwinkel\n`computed_angle`\nHier ist der errechnete Lamellenwinkel des Behangs zu finden. Dieser Wert kann sich von dem tatsächlich angefahrenen Lamellenwinkel unterscheiden, wenn bspw. eine Bewegungseinschränkung aktiv ist. Diese Entität ist nur bei Behangtyp `mode1` und `mode2` verfügbar.\n\n### Aktueller Status\n`current_state` / `current_state_text`\nDer aktuelle interne Status von **Shadow Control** wird unter `current_state` als numerischer Wert ausgegeben. Dabei sind die folgenden Status resp. Werte möglich, welche für weitere eigenen Automatisierungen verwendet werden können:\n\n* SHADOW_FULL_CLOSE_TIMER_RUNNING = 6\n* SHADOW_FULL_CLOSED = 5\n* SHADOW_HORIZONTAL_NEUTRAL_TIMER_RUNNING = 4\n* SHADOW_HORIZONTAL_NEUTRAL = 3\n* SHADOW_NEUTRAL_TIMER_RUNNING = 2\n* SHADOW_NEUTRAL = 1\n* NEUTRAL = 0\n* DAWN_NEUTRAL = -1\n* DAWN_NEUTRAL_TIMER_RUNNING = -2\n* DAWN_HORIZONTAL_NEUTRAL = -3\n* DAWN_HORIZONTAL_NEUTRAL_TIMER_RUNNING = -4\n* DAWN_FULL_CLOSED = -5\n* DAWN_FULL_CLOSE_TIMER_RUNNING = -6\n\nParallel zu `current_state` wird in der Entität `current_state_text` die Textform des aktuellen Status ausgegeben. Diese Zeichenkette kann direkt auf dem UI verwendet werden, um den momentanen Status einer **Shadow Control** Instanz anzuzeigen.\n\n### Sperr-Status\n`lock_state`\nDieser Sensor bildet numerisch den aktuellen Sperrstatus der Instanz ab. Dabei gelten die folgenden Werte:\n\n* 0: entsperrt\n* 1: manuell gesperrt\n* 2: manuell gesperrt mit Zwangsposition\n* 3: gesperrt durch externe Modifikation\n\n### Nächste Behangmodifikation\n`next_shutter_modification`\nAuf dieser Entität steht der Zeitpunkt der nächsten Behang-Positionierung zur Verfügung, sofern gerade ein entsprechender Timer läuft.\n\n### In der Sonne\n`is_in_sun`\nDer Wert ist `True`, wenn sich die Sonne im min-max-Offsetbereich und min-max-Höhenbereich befindet. Anderenfalls `False`.\n\n### Aktiver Helligkeitsschwellwert\n`brightness_threshold_active`\n\nGibt den aktiven Helligkeitsschwellwert an, welcher für die Beschattungssteuerung verwendet wird. Das kann entweder der konstante Winterschwellwert oder der adaptive Schwellwert sein, je nachdem wie die Konfiguration eingestellt ist.\n\n\n\n## Direkte Optionen\n\nSämtliche Optionen, welche im ConfigFlow mit einer eigenen Entität konfiguriert werden können, sind auch direkt auf der Geräteseite der jeweiligen Instanz schaltbar. Das bedeutet, dass die Konfiguration nicht zwingend über den ConfigFlow erfolgen muss, sondern auch direkt über die Geräteseite angepasst werden kann. Alle Optionen sind als eigene, interne Entitäten verfügbar und können somit in eigenen Automationen verwendet werden. Sie sind direkt unter den Steuerelementen schaltbar. Das ermöglicht eine sehr flexible und schnelle Anpassung der Konfiguration im laufenden Betrieb.\n\nSobald jedoch eine Option explizit mit einer eigenen Entität konfiguriert wurde, ist diese Option nicht mehr unter den Steuerelementen zu finden, sondern als Sensor mit dem Wert der verknüpften Entität. \n\n![Steuerelemente](/images/controls.png)\n\n\n\n# Konfiguration-Export\n\nDa die **Shadow Control** Konfiguration sehr umfangreich ist, gibt es einen speziellen Service, um die aktuelle Konfiguration im YAML-Format im Log auszugeben. \n\n## Vorarbeiten\n\nDamit das funktioniert, muss der Log-Modus von Home Assistant mindestens auf `info` stehen. In `configuration.yaml` muss dazu der folgende Eintrag vorhanden sein:\n\n```yaml\nlogger:\n  default: info\n```\n\nAm einfachsten kommt man an die Log-Ausgabe via `Einstellungen -\u003e System -\u003e Protokolle`, dort dann oben rechts das 3-Punkt-Menü und Klick auf `unveränderte Protokolle anzeigen`. \n\n## Anwendung des Service\n\nIn einem zweiten Browser-Tab zu `Einstellungen -\u003e Entwicklerwerkzeuge -\u003e Aktionen` navigieren und dort mit der Suche nach `dump_sc_config` den Dump-Service aufrufen. Wird der Service ohne weitere Konfiguration ausgeführt, wird die Konfiguration der ersten **Shadow Control** Instanz im Log ausgegeben. Das sieht (gekürzt) in etwa wie folgt aus:\n\n```\n2025-07-06 21:12:57.136 INFO (MainThread) [custom_components.shadow_control] [SC Dummy] === DUMPING INSTANCE CONFIGURATION - START ===\n2025-07-06 21:12:57.136 INFO (MainThread) [custom_components.shadow_control] [SC Dummy] Full configuration:\n--- YAML dump start ---\nbrightness_entity: input_number.d01_brightness\ndawn_after_seconds_manual: 10.0\ndawn_angle_after_dawn_manual: 80.0\n...\nname: SC Dummy\n...\nsun_azimuth_entity: input_number.d04_sun_azimuth\nsun_elevation_entity: input_number.d03_sun_elevation\ntarget_cover_entity:\n- cover.sc_dummy\n--- YAML dump end ---\n2025-07-06 21:12:57.137 INFO (MainThread) [custom_components.shadow_control] [SC Dummy] Associated Device: SC Dummy (id: 8d9324...\n2025-07-06 21:12:57.137 INFO (MainThread) [custom_components.shadow_control] [SC Dummy] Associated Entities:\n2025-07-06 21:12:57.137 INFO (MainThread) [custom_components.shadow_control] [SC Dummy] - sensor.sc_dummy_hohe: State='80.0', A...\n2025-07-06 21:12:57.137 INFO (MainThread) [custom_components.shadow_control] [SC Dummy] - sensor.sc_dummy_lamellenwinkel: State...\n...\n2025-07-06 21:12:57.139 INFO (MainThread) [custom_components.shadow_control] [SC Dummy] === DUMPING INSTANCE CONFIGURATION - END ===\n```\n\nZwischen den beiden Marker-Zeilen `--- YAML dump start ---` und `--- YAML dump end ---` befindet sich die gesamte Konfiguration der Instanz im YAML-Format. Diese kann kopiert und gesichert oder auch als Basis für weitere Instanzen verwendet werden.\n\nDie auszugebende Konfiguration kann durch Angabe des entsprechenden Namens wie folgt angegeben werden:\n\n## UI-Modus\n\n```\nname: SC Dummy 3\n```\n\n## Yaml-Modus\n\n```yaml\naction: shadow_control.dump_sc_configuration\ndata:\n  name: SC Dummy 3\n```\n\n\n[hacs]: https://hacs.xyz\n[hacsbadge]: https://img.shields.io/badge/HACS-Default-blue?style=for-the-badge\u0026logo=homeassistantcommunitystore\u0026logoColor=ccc\n\n[ghs]: https://github.com/sponsors/starwarsfan\n[ghsbadge]: https://img.shields.io/github/sponsors/starwarsfan?style=for-the-badge\u0026logo=github\u0026logoColor=ccc\u0026link=https%3A%2F%2Fgithub.com%2Fsponsors%2Fstarwarsfan\u0026label=Sponsors\n\n[buymecoffee]: https://www.buymeacoffee.com/starwarsfan\n[buymecoffeebadge]: https://img.shields.io/badge/buy%20me%20a-coffee-blue.svg?style=for-the-badge\u0026logo=buymeacoffee\u0026logoColor=ccc\n\n[paypal]: https://paypal.me/ysswf\n[paypalbadge]: https://img.shields.io/badge/paypal-me-blue.svg?style=for-the-badge\u0026logo=paypal\u0026logoColor=ccc\n\n[hainstall]: https://my.home-assistant.io/redirect/config_flow_start/?domain=shadow_control\n[hainstallbadge]: https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026logo=home-assistant\u0026logoColor=ccc\u0026label=usage\u0026suffix=%20installs\u0026cacheSeconds=15600\u0026url=https://analytics.home-assistant.io/custom_integrations.json\u0026query=$.shadow_control.total\n\n[tests]: https://github.com/starwarsfan/shadow-control/actions/workflows/unittest.yml\n[tests-badge]: https://img.shields.io/github/actions/workflow/status/starwarsfan/shadow-control/unittest.yml?style=for-the-badge\u0026logo=github\u0026logoColor=ccc\u0026label=Tests\n\n[coverage]: https://app.codecov.io/github/starwarsfan/shadow-control\n[coverage-badge]: https://img.shields.io/codecov/c/github/starwarsfan/shadow-control?style=for-the-badge\u0026logo=codecov\u0026logoColor=ccc\u0026label=Coverage\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstarwarsfan%2Fshadow-control","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstarwarsfan%2Fshadow-control","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstarwarsfan%2Fshadow-control/lists"}