Ankündigung

Einklappen
Keine Ankündigung bisher.

OpenKNX ShutterController: Jalousiensteuerung - Schatten, du machen sollst!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #46
    Zitat von SteffenRi Beitrag anzeigen
    Es war mehr ein Feature-Wunsch um eine externe Logik oder Benutzerformel zu umgehen und das bereits in der Applikation abgebildet zu bekommen.
    Wenn ich gedanklich nicht gerade komplett falsch abgebogen bin, dann ist das alles in dem Gerät vorhanden. Von "extern" benötigst du rein gar nichts.

    Kommentar


      #47
      Zitat von Fidelis Beitrag anzeigen
      Wenn ich gedanklich nicht gerade komplett falsch abgebogen bin, dann ist das alles in dem Gerät vorhanden. Von "extern" benötigst du rein gar nichts.
      Dann bin ich evtl falsch abgebogen und habe etwas übersehen.Hab gerade nochmal die Applikationsbeschreibung gelesen und für mich klingt es so als wäre das nur ein Wert und nicht mehrere Werte. Vielleicht kann mich jemand aufklären. Ich wäre euch sehr dankbar.

      image.png

      Kommentar


        #48
        Zitat von SteffenRi Beitrag anzeigen
        Himmelsrichtung Azimut-Bereich
        Osten 30° – 150°
        Südosten 75° – 195°
        Süden 120° – 140°
        Südwesten 165° – 285°
        Westen 210° – 330°
        Da passt was grob nicht zueinander. S ist bei mir aufn Kompass bei 180°
        ----------------------------------------------------------------------------------
        "Der Hauptgrund für Stress ist der tägliche Kontakt mit Idioten."
        Albert Einstein

        Kommentar


          #49
          Zitat von gbglace Beitrag anzeigen

          Da passt was grob nicht zueinander. S ist bei mir aufn Kompass bei 180°
          Ich geb dir recht.... ich habe die Himmelsausrichtungen blind aus der Applikationsbeschreibung des ShutterController auf GitHub übernommen. Siehe GitHub im Kapitel Beschattungsmodus N unter Himmelsrichtung (Azimut).

          Kann ja problemlos angepasst werden aber ändert an der Berechnung wenig.
          Zuletzt geändert von SteffenRi; 30.01.2026, 17:41.

          Kommentar


            #50
            Zitat von SteffenRi Beitrag anzeigen
            Ich geb dir recht.... ich habe die Himmelsausrichtungen blind aus der Applikationsbeschreibung des ShutterController auf GitHub übernommen. Siehe GitHub im Kapitel Beschattungsmodus N unter Himmelsrichtung (Azimut).
            Du kannst auch direkt auf Abschnitt verlinken, wenn Du mit der Maus links neben der Überschrift auf der Kette das Ziel übers Kontextmenü kopierst.

            Zitat von gbglace Beitrag anzeigen
            Da passt was grob nicht zueinander. S ist bei mir aufn Kompass bei 180°
            Ich gehe davon es sollte 120°-240° (Himmelsrichtung +/- 60°) heißen mgeramb ?

            OpenKNX www.openknx.de | StateEngine: Universelle Zustandsautomaten in KNX | OpenKNX Konfigurationstransfer

            Kommentar


              #51
              Zitat von coko Beitrag anzeigen
              Du kannst auch direkt auf Abschnitt verlinken, wenn Du mit der Maus links neben der Überschrift auf der Kette das Ziel übers Kontextmenü kopierst.
              Danke für den Hinweis.

              Kommentar


                #52
                Zitat von gbglace Beitrag anzeigen
                Da passt was grob nicht zueinander. S ist bei mir aufn Kompass bei 180°
                Ja, sorry sollte so aussehen:

                - Osten von 30° bis 150°
                - Südosten von 75° bis 195°
                - Süden von 120° bis 240°
                - Südwesten von 165° bis 285°
                - Westen von 210° bis 330°

                Zitat von coko Beitrag anzeigen
                ch gehe davon es sollte 120°-240° (Himmelsrichtung +/- 60°) heißen

                Ja, genau

                Kommentar


                  #53
                  Du musst ja sowieso pro Fassade einen Beschattungskanal parametrieren. Für die Helligkeit nimmst Du die Richtung der Fassade.
                  Ich habe in der Dokumentation nichts zu Fassaden gefunden.
                  Hab ich was übersehen?


                  Kommentar


                    #54
                    Zitat von henfri Beitrag anzeigen
                    Ich habe in der Dokumentation nichts zu Fassaden gefunden.
                    Hab ich was übersehen?
                    Ich hatte mir gestern auch mal den Aufbau des OFM per VS Code angeschaut und scheinbar wird tatsächlich nur ein globales KO für die Helligkeit herangezogen und verschiedene Fassaden sind nicht vorgesehen. Ist hier für die Zukunft etwas geplant mgeramb ?

                    Kommentar


                      #55
                      Zitat von SteffenRi Beitrag anzeigen
                      Ist hier für die Zukunft etwas geplan
                      Was würde es brauchen? 4 global KO von denen man im Kanal eines auswählen kann oder müsste es wirklich pro Kanal ein eigenes KO für die Helligkeit sein?

                      Kommentar


                        #56
                        Ich hatte mich die letzten Tage mit der OAM-ShutterController näher beschäftigt und mir die Beschattung näher angeschaut. Kurzum habe ich mich dann am Wochenende entschlossen das OAM um meine gewünschte Funktion zu erweitern. Was dabei raus gekommen ist, seht selbst :-) Die Beta-Version der .knxprod habe ich auf Github hochgeladen. Jegliche Anmerkungen, Verbesserungen und auch Kritik ist willkommen.
                        Leider habe ich es noch nicht geschafft ein FW-Build (da merkt man das ich eigentlich doch kein Software Entwickler bin
                        😏) zu erstellen. Evtl. kann mir einer aus dem OpenKNX Team einen kleinen Crashkurs dazu geben dann würde ich nach release das build für alle zur Verfügung stellen. Natürlich nur mit dem Einverständnis des eigentlichen Entwicklers mgeramb.

                        Was dann noch fehlt ist eigentlich nur die Hardware aus meiner Bestellung bei Ing-Dom und dann kann es auch schon ans testen gehen.

                        Damit ihr einen Überblick bekommt was ich umgesetzt habe findet ihr hier in einer kleinen Beschreibung.

                        # Multi-Sensor Helligkeitssteuerung mit Himmelsrichtungen - ShutterController 1.5.0 BETA


                        ### Ausgangssituation
                        Die bisherige Implementierung der Jalousiesteuerung unterstützt nur einen einzigen Helligkeitssensor für die Beschattungsautomatik. In der Praxis hatte das für mich folgende Nachteile:

                        - Ein Sensor an der Wetterstation misst zwar mehrere Werte, aber diese müssten über eine externe Logik zu einem globalen Wert zusammengefasst werden.
                        - Fenster mit unterschiedlichen Ausrichtungen (Nord, Ost, Süd, West) benötigen unterschiedliche Helligkeitsschwellen
                        - Ein Sensor kann nicht die tatsächliche Sonneneinstrahlung pro Fenster abbilden

                        ### Anforderungen
                        Mein Konzept sollte folgende Punkte abdecken:

                        1. Bis zu 4 Helligkeitssensoren unterstützen (Hauptsensor + 3 zusätzliche)
                        2. Jedem Sensor eine Himmelsrichtung zuordnen (Nord, Ost, Süd, West)
                        3. Pro Kanal die Behangausrichtung konfigurierbar machen (N, NO, O, SO, S, SW, W, NW)
                        4. Automatisch den passenden Sensor basierend auf der Behangausrichtung auswählen
                        5. Bei Zwischenrichtungen (NO, SO, SW, NW) den Maximalwert der beiden benachbarten Sensoren verwenden

                        ### Anwendungsbeispiel:
                        Ein Haus mit 4 Helligkeitssensoren:
                        - Sensor 1 (KO 404): Wetterstation Dach → Nord (Referenz)
                        - Sensor 2 (KO 409): Ostfassade → Ost
                        - Sensor 3 (KO 410): Südfassade → Süd
                        - Sensor 4 (KO 411): Westfassade → West

                        Ein Fenster mit Ausrichtung Südwestprüft automatisch die Sensoren Süd und West und verwendet den höheren Wertfür die Beschattungsentscheidung.

                        ## Konfiguration in der ETS
                        ### 1. Globale Sensor-Konfiguration

                        ETS_1.jpg

                        Im Bereich Allgemein wird zunächst die Anzahl der zusätzlichen Sensoren festgelegt:
                        - 0 = nur Hauptsensor (KO 404) - bisheriges Verhalten
                        - 1 = Hauptsensor + 1 zusätzlicher Sensor (KO 409)
                        - 2 = Hauptsensor + 2 zusätzliche Sensoren (KO 409, 410)
                        - 3 = Hauptsensor + 3 zusätzliche Sensoren (KO 409, 410, 411)

                        ### 2. Himmelsrichtung pro Sensor

                        ETS_2.jpg

                        Für jeden aktiven Sensor wird die Himmelsrichtung festgelegt:
                        - Nord (0°)
                        - Ost (90°)
                        - Süd (180°)
                        - West (270°)

                        Diese Zuordnung ermöglicht die automatische Sensorauswahl basierend auf der Fensterausrichtung.

                        ### 3. Fenster-/Behangausrichtung pro Kanal

                        ETS_3.jpg
                        In jedem Kanal wird die Ausrichtung des Fensters/Behangs konfiguriert:
                        - **N** (Nord) = 0°
                        - **NO** (Nordost) = 45°
                        - **O** (Ost) = 90°
                        - **SO** (Südost) = 135°
                        - **S** (Süd) = 180°
                        - **SW** (Südwest) = 225°
                        - **W** (West) = 270°
                        - **NW** (Nordwest) = 315°

                        Dieser Parameter ist nur sichtbar, wenn:
                        - Die Auswertung „Helligkeit“ aktiv ist UND
                        - Mindestens 2 Helligkeitssensoren konfiguriert sind

                        ## Ergänzte Kommunikationsobjekte

                        | KO-Nr. | Name | DPT | Funktion |
                        |--------|------|-----|----------|
                        | 404 | Helligkeitseingang 1 | 9.004 | Hauptsensor|
                        | 409 | Helligkeitseingang 2 | 9.004 | Zusatzsensor 1 (optional) |
                        | 410 | Helligkeitseingang 3 | 9.004 | Zusatzsensor 2 (optional) |
                        | 411 | Helligkeitseingang 4 | 9.004 | Zusatzsensor 3 (optional) |

                        Die KOs 409-411 werden nur angezeigt,wenn die entsprechende Anzahl Sensoren konfiguriert ist.

                        ## Technische Umsetzung
                        ### 1. XML-Definition (ETS-Applikation)
                        **ShutterControllerModule.share.xml**
                        - Neue ParameterTypes: `BrightnessSensorCount`, `BrightnessSensorDirection`, `WindowOrientation`
                        - Neue ComObjects: KO 409, 410, 411 (Typ: 2 Bytes Float, DPT 9.004)
                        - Konditionale UI-Logik mit `<choose>/<when>`-Konstrukten

                        **ShutterControllerModule.templ.xml**
                        - Kanalparameter `WindowOrientation` mit konditionaler Sichtbarkeit
                        - Nur angezeigt, wenn: Beschattung aktiv UND ≥2 Sensoren konfiguriert

                        ### 2. C++-Implementierung
                        **ShutterControllerModule.h**
                        ```cpp
                        protected:
                        MeasurementWatchdog _measurementBrightness[4] = {
                        MeasurementWatchdog(),
                        MeasurementWatchdog(),
                        MeasurementWatchdog(),
                        MeasurementWatchdog()
                        };

                        private:
                        float getBrightnessForOrientation(uint8_t orientation);
                        ```

                        **ShutterControllerModule.cpp - setup()**
                        ```cpp
                        // Konditionale Sensor-Initialisierung
                        if (ParamSHC_HasBrightnessInput && ParamSHC_BrightnessSensorCount >= 0) {
                        _measurementBrightness[0].begin(/* Sensor 1 */);
                        }
                        if (ParamSHC_BrightnessSensorCount >= 1) {
                        _measurementBrightness[1].begin(/* Sensor 2 */);
                        }
                        // ... analog für Sensor 3 und 4
                        ```

                        **ShutterControllerModule.cpp - getBrightnessForOrientation()**
                        ```cpp
                        float ShutterControllerModule::getBrightnessForOrientati on(uint8_t orientation) {
                        // Lade Sensorrichtungen
                        uint8_t dir1 = ParamSHC_BrightnessSensor1Direction;
                        uint8_t dir2 = ParamSHC_BrightnessSensor2Direction;
                        // ...

                        // Prüfe exakte Übereinstimmung
                        if (orientation == dir1) return _measurementBrightness[0].getValue();
                        if (orientation == dir2) return _measurementBrightness[1].getValue();
                        // ...

                        // Zwischenrichtungen: Maximum der beiden benachbarten
                        if (orientation == 1) { // NO
                        return max(brightnessDirN, brightnessDirO);
                        }
                        // ...
                        }
                        ```

                        **ModeShading.cpp**
                        ```cpp
                        // Helligkeitsprüfung in der Beschattungslogik
                        uint8_t windowOrientation = ParamSHC_CWindowOrientation;
                        float brightness = /* Berechnung analog zu getBrightnessForOrientation() */;

                        // Hysterese-Logik
                        double threshold = max(0., 1000. * ((double) ParamSHC_CShading1BrightnessMin) -
                        (previousAllowed ? ((double) ParamSHC_CShading1BrightnessHyst) * 1000. : 0));

                        if (brightness >= threshold) {
                        // Beschattung erlaubt
                        }
                        ```
                        ### Logik für Zwischenrichtungen
                        Die Implementierung berücksichtigt, dass bei Zwischenrichtungen (NO, SO, SW, NW) die Sonne von beiden benachbarten Richtungen einstrahlen kann:

                        | Fenster | Verwendete Sensoren | Wert |
                        |---------|-------------------|------|
                        | N | Nord | Sensor Nord |
                        | NO | Nord + Ost | max(Nord, Ost) |
                        | O | Ost | Sensor Ost |
                        | SO | Süd + Ost | max(Süd, Ost) |
                        | S | Süd | Sensor Süd |
                        | SW | Süd + West | max(Süd, West) |
                        | W | West | Sensor West |
                        | NW | Nord + West | max(Nord, West) |

                        Diese Logik stellt sicher, dass die Beschattung aktiviert wird, sobald einerder beiden relevanten Sensoren die Helligkeitsschwelle überschreitet.

                        ### Beispiel:
                        Konfiguration:
                        - Sensor 1 (Nord): 10.000 lux
                        - Sensor 2 (Ost): 15.000 lux
                        - Sensor 3 (Süd): 70.000 lux
                        - Sensor 4 (West): 25.000 lux

                        Fenster Südwest:
                        - Schwellwert: 35.000 lux
                        - Verwendete Sensoren: Süd (70k) + West (25k)
                        - Effektiver Wert: max(70.000, 25.000) = 70.000 lux
                        - Ergebnis: Schwelle überschritten → Beschattung aktiv

                        ## Geänderte Dateien
                        ### XML (ETS-Applikation)
                        - `lib/OFM-ShutterControllerModule/src/ShutterControllerModule.share.xml`
                        - `lib/OFM-ShutterControllerModule/src/ShutterControllerModule.templ.xml`
                        ### C++ (Firmware)
                        - `lib/OFM-ShutterControllerModule/src/ShutterControllerModule.h`
                        - `lib/OFM-ShutterControllerModule/src/ShutterControllerModule.cpp`
                        - `lib/OFM-ShutterControllerModule/src/CallContext.h`
                        - `lib/OFM-ShutterControllerModule/src/ModeShading.cpp`
                        - `lib/OFM-ShutterControllerModule/src/ModuleVersionCheck.h` (neu)
                        ### Hilfetexte (Deutsch)
                        - `src/Baggages/Help_de/SHC-Helligkeitssensoren.md`
                        - `src/Baggages/Help_de/SHC-Sensor-1-KO-404-Himmelsrichtung.md`
                        - `src/Baggages/Help_de/SHC-Sensor-2-KO-409-Himmelsrichtung.md`
                        - `src/Baggages/Help_de/SHC-Sensor-3-KO-410-Himmelsrichtung.md`
                        - `src/Baggages/Help_de/SHC-Sensor-4-KO-411-Himmelsrichtung.md`
                        - `src/Baggages/Help_de/SHC-Fenster-Behangausrichtung.md`

                        ## Zusammenfassung
                        Die Multi-Sensor Helligkeitssteuerung erweitert die Jalousiesteuerung um eine himmelsrichtungsbasierte Beschattungslogik. Durch die Zuordnung von bis zu 4 Sensoren zu den Himmelsrichtungen und die kanalspezifische Fensterausrichtung kann die Beschattung deutlich präziser auf die tatsächliche Sonneneinstrahlung reagieren.

                        Die Implementierung ist abwärtskompatibel: Bei nur einem Sensor verhält sich die Steuerung wie bisher. Die zusätzlichen Funktionen werden nur bei ≥2 Sensoren aktiviert und in der ETS sichtbar.

                        Status: Implementierung vollständig, KNXPROD produktionsreif, Firmware-Build ausstehend


                        P.S.: Bitte steinigt mich nicht falls ich irgendwelche groben Fehler in der ETS Apllikation habe die nicht dem Standard von OpenKNX entsprechen. Ist mein erstes "Projekt" dieser Art. Aber ich werde weiter dran bleiben und evtl. weitere Module entwickeln. Dann hoffentlich mit mehr Erfahrung und Know-How anstatt Try and Error 😀
                        Zuletzt geändert von SteffenRi; Gestern, 21:34.

                        Kommentar


                          #57
                          Zitat von mgeramb Beitrag anzeigen
                          Was würde es brauchen? 4 global KO von denen man im Kanal eines auswählen kann oder müsste es wirklich pro Kanal ein eigenes KO für die Helligkeit sein?
                          Du warst zu spät 😀 Siehe Post #56

                          Kommentar


                            #58
                            SteffenRi
                            Das ging ja flott.
                            Hast du die Firmware mittlerweile kompiliert und funktioniert es?

                            Warum hast du dich für das Maximum entschieden und nicht für den Mittelwert?

                            Hast du KI zu Hilfe genommen?

                            Kommentar


                              #59
                              Hi SteffenRi,

                              Deine Änderungen sehen auf den ersten Blick vernünftig aus - tolle Arbeit, vor allem für jemanden, der bisher nichts für OpenKNX entwickelt hat. Wir können gerne einen Crashkurs machen, bei dem ich Dir erkläre, wie Du das auch korrekt bauen kannst. Machen wir per PN aus.
                              Eine Anmerkung bzw. Bitte habe ich allerdings: Bitte keine .knxprod veröffentlichen. Du wirst sonst den Leuten Probleme mit Updates bereiten und potentiell Versionen veröffentlichen, die mit weiteren Versionen von Michael (mgeramb) kollidieren. Es ist schon volle Absicht bei unserer Infrastruktur, dass man sich die knxprod lokal baut und wir sie nicht ausliefern. Wild kursierende knxprod-Files hinterlassen in der ETS und in der ETS-Projekten Spuren, die der normale ETS-User nicht durchschaut und nicht so einfach wegbekommt.

                              Gruß, Waldemar

                              P.S.: Kannst Du bei Dir PN freischalten, damit ich Dich wegen einem Termin kontaktieren kann?
                              OpenKNX www.openknx.de

                              Kommentar


                                #60
                                Zitat von henfri Beitrag anzeigen
                                Hast du die Firmware mittlerweile kompiliert und funktioniert es?
                                Nein. Habe leider noch mit keinem OpenKNX Entwickler Kontakt gehabt damit ich den Workflow verstehe um die FW zu kompilieren😀

                                Warum hast du dich für das Maximum entschieden und nicht für den Mittelwert?
                                Meine Überlegung war wie folgt. Der Mittelwert würde nicht den realen Wert am Fenster wiederspiegeln und wäre evtl. auch träge. Der Max-Wert spiegelt ja die realistische Helligkeit wieder die für das jeweilige Fenster relevant ist. Der Ansatz kann natürlich falsch sein oder es gibt einen besseren aber für den Moment war es der für mich Schlüssigste.

                                Hast du KI zu Hilfe genommen?
                                Ja, hauptsächlich zum debuggen.
                                Zuletzt geändert von SteffenRi; Heute, 08:12.

                                Kommentar

                                Lädt...
                                X