feat/addmultiplebrightnesssensorsdegree#6
Conversation
…ing standby status -Updated ETS/UI parameters for window orientation and azimuth selection; added compass/degree labels, clearer visibility rules, and azimuth sensor formatting. -Added ETS help text clarifying when aggregation is relevant versus interpolation. -Added diagnostic logging for ETS window orientation and azimuth target usage. -Introduced global per-channel Status Beschattung Bereit KO; removed per-mode readiness KO and adjusted KO offsets for shading/window-open modes. -Readiness logic now reflects user-influence factors: shading control enabled, no channel lock, no window-open handler, not in manual mode, and no shading lock/break lock active. -Implemented window open/tilt restore to previous shutter/slat position once the window closes. -Kept docs/scripts aligned (path fixes, generated docs)
mgeramb
left a comment
There was a problem hiding this comment.
Ein paar erste Kommentare von mir.
| virtual bool isChanged() const = 0; | ||
| }; | ||
|
|
||
| class MeasurementWatchdog : public MeasurementSource |
There was a problem hiding this comment.
Wozu dient die Aufsplitterung zwischen Source und Watchdog? Jedes KNX Gruppenobjekt das einen Messwert liefert, sollte den Watchdog support haben
There was a problem hiding this comment.
Die Aufsplitterung erfolgte für BrightnessMeasurement, das mehrere Sensoren vereint:
• MeasurementSource: Interface für alle Messquellen (KOs, berechnete/aggregierte Werte)
• MeasurementWatchdog: KO mit Watchdog-Funktionalität
• BrightnessMeasurement: Aggregiert 4 Sensoren basierend auf Azimut-Interpolation
Das Problem: war das BrightnessMeasurement keine direkte KO-Quelle ist, sondern ein berechneter Wert aus mehreren Sensoren. Ein Watchdog würde hier nicht passen, da die einzelnen Sensor-Watchdogs bereits überwachen.
Wir haben zwei Möglichkeiten:
• Interface umbenennen zur Klarheit (IAggregatedMeasurement vs IDirectMeasurement)
• BrightnessMeasurement direkt in CallContext integrieren ohne Interface-Hierarchie
| // <Enumeration Text="Manuelle Bedienung über Aktor" Value="0" Id="%ENID%" /> | ||
| // <Enumeration Text="Modul sendet Auf/Ab zum Aktor" Value="1" Id="%ENID%" /> | ||
| // <Enumeration Text="Modul sendet 0/100% zum Aktor " Value="2" Id="%ENID%" /> | ||
| // <Enumeration Text="Manual control via actuator" Value="0" Id="%ENID%" /> |
There was a problem hiding this comment.
Warum wurde das auf Englisch übersetzt? Das sind die Texte aus den Enum in der ETS. Das darf nicht übersetzt sein
There was a problem hiding this comment.
Stimmt, das war unbeabsichtigt. Ich kann alle Enum-Kommentartexte wieder exakt auf die ETS-Originaltexte (Deutsch) zurück setzen. Oder willst du das machen?
| // <Enumeration Text="Nein" Value="0" Id="%ENID%" /> | ||
| // <Enumeration Text="Stellwert %" Value="1" Id="%ENID%" /> | ||
| // <Enumeration Text="Heizungsanforderung (EIN/AUS)" Value="2" Id="%ENID%" /> | ||
| // <Enumeration Text="No" Value="0" Id="%ENID%" /> |
There was a problem hiding this comment.
Auch hier, bitte keine Übersetzungen
There was a problem hiding this comment.
Ich kann alle Kommentartexte auf Deutsch ändern.
| } | ||
| if (startingWindowOpen) | ||
| { | ||
| _windowOpenRestoreActive = true; |
There was a problem hiding this comment.
Was macht dieser Block genau? Wo war da ein Problem?
There was a problem hiding this comment.
Problem vorher: Wenn Fenster geöffnet/gekippt → Rollo fährt in definierte Position → Fenster schließt → Rollo blieb in definierter Position (alte Position ging verloren).
Jetzt: Rollo fährt automatisch auf die Position zurück, die er vor dem Fenster-Öffnen hatte.
Aus meiner Sicht ist das eine Komfortfunktion - > z.B. nach dem Lüften fährt das Rollo automatisch zur vorherigen Position zurück.
There was a problem hiding this comment.
Verstehe ich nicht, dass ist ja die Standardfunktion die ich auch nutze, und ja, das Rollo soll nach dem schließen des Fensters wieder in die Ursprungsposition fahren. Und das macht sie bei mir auch.
Bitte beschreib mal genau in welcher Position die Rollo vor dem Fenster offen ist und was deine Einstellung in der ETS sind, ich würde das gerne nachstellen, bevor wir hier was ändern was eventuell einen anderen Grund hat.
| _currentMode->control(callContext, _positionController); | ||
| _positionController.control(callContext); | ||
|
|
||
| #ifdef KoSHC_CShadingReadyUser |
There was a problem hiding this comment.
Was macht dieses #ifdef ? Das define kommt ja vom Producer und sollte so der KO vorhanden ist, immer gesetzt sein
There was a problem hiding this comment.
Das #ifdef ist als Rückwärtskompatibilität zu älteren bzw. generierten Headern gedacht. Wenn wir garantieren, dass alle Builds immer mit aktualisiertem Producer laufen, kann es auch entfallen.
There was a problem hiding this comment.
Das kann entfallen, wir können die Producer Minimum Version auch über das XML vorschreiben. Wird aber nicht nötig sein, da die Logik die beim RaumController und bei der Jalousiensteuerung dabei ist, das ohnedies schon macht. Also bitte #ifdef Raus nehmen
| <ComObject Id="%AID%_O-%TT%%CC%%PPP+5%" Number="%K%En+5%%" ObjectSize="4 Bytes" DatapointType="DPST-27-1" Name="C%C%Shading%Pn%DiagnoseNotAllowedBit" Text="" FunctionText="" ReadFlag="Enabled" WriteFlag="Disabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" UpdateFlag="Disabled" ReadOnInitFlag="Disabled" /> | ||
| <!-- Modus 1 Diagnose "Nicht erlaubt" Grund --> | ||
| <ComObject Id="%AID%_O-%TT%%CC%%PPP+6%" Number="%K%En+6%%" ObjectSize="1 Byte" DatapointType="DPST-5-5" Name="C%C%Shading%Pn%DiagnoseNotAllowedReason" Text="" FunctionText="" ReadFlag="Enabled" WriteFlag="Disabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" UpdateFlag="Disabled" ReadOnInitFlag="Disabled" /> | ||
| <!-- Modus 1 Bereitschaft --> |
There was a problem hiding this comment.
Neue KOs hier einzuführen bricht die Updatefähigkeit wenn der Benutzer die Logik verwendet hat und dort KO Nummern referenziert. Braucht es den KO wirklich unbedingt?
There was a problem hiding this comment.
Verstanden. Sollen wir das KO ans Ende verschieben oder ganz entfernen? Ich würde bevorzuge es zu behalten. und zu verschieben.
Damit visualisiere ich die Bereitschaft der Beschattung die durch den Nutzer beeinflussbar sind.
There was a problem hiding this comment.
Lass uns das in Slack diskutieren, das Thema ist schwieriger, aber wir werden ein Lösung finden
|
Habe deine Anmerkungen kurz kommentiert. |
Erweiterung Beschattung (zusätzliche Sensoren, Implementierung Azimutausrichtung in Grad)