Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS 19000141 - Beschattungssteuerung

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

    ...und wenn ich mir Post 264 und 269 anschaue bleibe ich bei meiner Frage: Wird 1031 neu gesetzt? In der 2. Box wird doch scheinbar 1045 gesetzt, nicht aber 1031. Der bleibt auf dem alten wert und bei Aktivierung wirkt der remanente Wert dort auf 8/4/0 in der 1. Ausgangsbox... wie gesagt, hatte gestern bei mir ein ähnliches Thema...

    Kommentar


      Zitat von starwarsfan Beitrag anzeigen
      Bist Du sicher, dass das die gleichen KOs sind? Mich wundert, dass dort links am Eingang "20" resp. "51" steht, rechts am Ausgang jedoch "19.60" resp. "50"!?
      Links die 20% / 51 ist der Stellwert, rechts die 19.60% / 50 ist die Rückmeldung vom Aktor.

      Kommentar


        Zitat von saegefisch Beitrag anzeigen
        ...und wenn ich mir Post 264 und 269 anschaue bleibe ich bei meiner Frage: Wird 1031 neu gesetzt? In der 2. Box wird doch scheinbar 1045 gesetzt, nicht aber 1031. Der bleibt auf dem alten wert und bei Aktivierung wirkt der remanente Wert dort auf 8/4/0 in der 1. Ausgangsbox... wie gesagt, hatte gestern bei mir ein ähnliches Thema...
        Schau mal Post 265.
        1031 wird durch den Schieberegler gesetzt, 1045 wird durch die Rückmeldung des Aktors über KNX 4/4/0 gesetzt.

        Kommentar


          ok, da sollte sich der Kreis schließen.

          Vielleicht deaktivierst Du mal die Logik-Seite und aktzivierst neu und schaust dann die ganzen relevanten GA und KO mal die Live-Werte an, welcher wo steht. Ich vermute, damit wirst Du den Verursacher finden.

          Kommentar


            Stimmt, ich bin fündig geworden, habe nur noch keine Idee für eine Lösung...

            Die Logik, die die Konvertierung % <-> binär macht wird von 2 Seiten gefüttert.
            Zum einen schickt der Schieberegler einen Stellwert an 1031, zum anderen steht im Beschattungs-LBS eine 0 an (wenn nicht beschattet wird).
            Diese 0 scheint nun bei Projektaktivierung geschickt zu werden bevor der remanente Stellwert des Schiebereglers zuschlägt.

            Kommentar


              ich habe vor ein paar Wochen einen hack eingebaut, um den Winkel der Lamellen zu korrigieren, wenn die sonne nicht senkrecht auf die Fassade scheint (siehe https://knx-user-forum.de/forum/proj...179#post993179).
              Die paar Tage mit Sonne hat das gut funktioniert so dass ich das teilen möchte.



              Code:
              /**
               * Calculate the shutter angle which is neccessary to prevent sun rays from
               * falling into the room based on current elevation together with width and
               * distance of shutter slats and angle offset.
               *
               * @param $E - The array with all the input values
               * @return float - Shutter angle in degrees
               */
              function LB_LBSID_calculateShutterAngle($E)
              {
                  $elevation = $E[4]['value'];
                  $azimut = $E[5]['value'];
                  $faccadeAngle = $E[6]['value'];
                  $widthA = $E[9]['value'];
                  $heightB = $E[10]['value'];
                  $shutterAngleOffset = $E[11]['value'];
                  $shutterType = $E[12]['value'];
                  $minimalShutterAnglePercent = $E[35]['value'];
                  $shutterStepping = $E[38]['value'];
              
                  // correction for non-direct sun on the facade,
                  // the apparent width of the shutter is larger
                  $oldwidthA = $widthA;
                  $widthA = $widthA / cos(deg2rad( $azimut  -  $faccadeAngle )) ;
                  $angledifference = $azimut  -  $faccadeAngle;
                  $cosfactor = cos(deg2rad( $azimut  -  $faccadeAngle ));
                  LB_LBSID_debug(true, "Elevation correction: angle difference ${angledifference}°, old width ${oldwidthA} mm, cosinus factor ${cosfactor}, new width ${widthA} mm");
              
                  // The following is based on an oblique triangle
              
                  // $alpha is the opposit angle of shutter slat width,
                  // so this is the difference between $elevation and vertical
                  $alpha = 90 - $elevation;
              
                  // $beta is the opposit angle of shutter slat distance
                  $beta = asin(sin($alpha / 180 * pi()) * $heightB / $widthA) * 180 / pi();
              
                  // $gamma is the angle between vertical and shutter slat
                  $gamma = 180 - $alpha - $beta;
              
                  // $shutterAngle is the difference between horizontal and shutter slat,
                  // so this is the result of the calculation
                  $shutterAngle = round(90 - $gamma);
              
                  LB_LBSID_debug(true, "Elevation: ${elevation}°, resulting shutter angle: ${shutterAngle}° (without stepping and offset)");
              
                  // Add given shutter angle offset and define minimal shutter angle
                  if ($shutterType == 0) {
                      // 90° shutters
                      $modifier = round($shutterStepping * 0.9);
                      $shutterAngle = LB_LBSID_handleElevation($shutterAngle, $modifier, $elevation);
                      // "-" = 0° = 0%, "\" = 90° = 100%
                      $shutterAngle = $shutterAngle + ($shutterAngleOffset * 0.9);
                      $minimalShutterAngle = $minimalShutterAnglePercent * 0.9;
                  } else {
                      // 180° shutters
                      $modifier = round($shutterStepping * 1.8);
                      $shutterAngle = LB_LBSID_handleElevation($shutterAngle, $modifier, $elevation);
                      // "/" = -90° = 0%, "-" = 0° = 50%, "\" = 90° = 100%
                      $shutterAngle = $shutterAngle + ($shutterAngleOffset * 1.8);
                      $minimalShutterAngle = $minimalShutterAnglePercent * 1.8 - 90;
                  }
              
                  $shutterAngle = round($shutterAngle);
              
                  // Check calculated angle against given minimal angle
                  if ($shutterAngle < $minimalShutterAngle) {
                      $shutterAngle = $minimalShutterAngle;
                  }
              
                  LB_LBSID_debug(true, "Elevation: ${elevation}°, resulting shutter angle: ${shutterAngle}°");
                  return $shutterAngle;
              }
              Hier ein paar Beispiele der Berechungen:
              Code:
              Elevation correction: angle difference -75.01869774572°, old width 80 mm, cosinus factor 0.25850381377232, new width 309.47319048245 mm
              Elevation correction: angle difference -33.61171570516°, old width 80 mm, cosinus factor 0.83280806710618, new width 96.060548834477 mm
              Elevation correction: angle difference -20.85761468782°, old width 80 mm, cosinus factor 0.93446812033792, new width 85.610197136602 m
              Elevation correction: angle difference -15.18547243168°, old width 80 mm, cosinus factor 0.96508294254, new width 82.894429560063 mm
              Wie man sieht - wenn die Sonne besonders schräg auf die Fassade auftrifft, dann wird die wirksame Länge deutlich größer, wenn es nur 20 oder 15 Grad sind, dann macht das fast keinen Unterschied mehr.

              Das Prinzip sollte passen - meinen Code muss ich noch etwas schöner machen...

              Kommentar


                Hi,

                habe ich im Baustein schon lange korrigiert aber über der Arbeit an der NG-Version versäumt, das zu releasen. Werde das die Tage nachholen.
                Kind regards,
                Yves

                Kommentar


                  Und dann habe ich gleich noch ein neues Problemchen:

                  Ich kann aus meinem Wohnzimmer den Sonnenuntergang am Horizont beobachten - und möchte dass die Beschattung erst danach runterfährt. Die Sensoren messen dann schon <50 lux und sind nicht mehr so genau. Daher habe ich mit dem Sonnenwinkel experimentiert.
                  If (Azimuth < -3) auf den Eingang "E20 Dämmerung aktiv"
                  Leider wird das trotz Trigger auf E1 nicht ausgewertet.
                  Ich vermute der Eingang ist nicht dazu gedacht dass er sich ändern kann - die Statemachine habe ich leider noch nicht überblickt.

                  Diese Funktion (if winkel < x usw) ist problemlos außerhalb aufgehoben und für alle Fenster gleich. Vielleicht ist das eine Idee für den nächsten Baustein, dass der Eingang das 1/0 direkt verarbeiten kann?

                  Kommentar


                    Das solltest Du aber mit der Elevation berechnen und nicht mit dem Azimut!

                    Aber wie auch immer, am aktuellen Baustein werde ich nach Möglichkeit keine größeren Umbauten mehr machen. Ich bin mitten in der Arbeit an einer komplett neuen Implementierung und damit sollte sowas kein Problem sein.

                    Was Du aber machen/testen kannst: Versuch es mal via dem Lock-Eingang!
                    Kind regards,
                    Yves

                    Kommentar


                      starwarsfan zu erst einmal Danke für die tolle Arbeit! Habe mit deinem LBS bereits erste gute Erfahrungen gemacht im Test, macht Spaß! Bevor ich nun alle Rollos und Jalousien in edomi steuere und dazu einrichte wollte ich mal fragen wie dein Stand zum "NG" LBS ist?

                      Kommentar


                        Hallo und guten Abend miteinander,

                        zum Stand der Neuimplementierung kann ich im Moment nur sagen, dass es aufgrund der aktuellen Wetterlage recht langsam voran geht. Das ganze mit (m)einem Test-Setup durchzuspielen ist wesentlich aufwändiger, als den Baustein im Haus einzusetzen und die Reaktionen live zu beobachten und direkt darauf zu reagieren. Damit ich das am lebenden Objekt machen kann, brauchts eben schönes, sonniges und nach Möglichkeit leicht wechselhaftes Wetter. Das dann auch möglichst am Wochenende, wenn ich selber vor Ort bin. Von daher wird es wohl erst im Frühjahr bzw. Sommer wieder so richtig voran gehen.

                        Ich muss mal überlegen, ob ich eine Vorabversion veröffentliche. Dieser sollte dann aber zumindest die rudimentärsten Funktionen schon erfüllen...
                        Kind regards,
                        Yves

                        Kommentar


                          Alles klar und danke fürs Update! Ich denke der "alte" tuts sicher auch fürs erste. Wenn es jetzt noch 1-2 Wochen gewesen wären hätte ich gewartet, aber so passt das auch.

                          Kommentar


                            Hallo zusammen,

                            meine neu erstellte Jalousiensteuerung geht direkt nach Projektaktivierung in den Modus "LBS Disabled", angeblich wurde manuell die Höhe verstellt. Erst nach Reaktivierung über E32 läuft der Baustein wieder (vgl. Bild). Der Trigger ist auf Init=1 , zusätzlich minütlich über SysKO zum Testen

                            Dies ist für mich nicht erklärbar, da sowohl Höhe (E33/A5), als auch Lamellenstellung (E34/A6) überein stimmen.

                            Wer hat eine Idee ? Danke Andreas

                            Auszug aus Logdatei:
                            2017-02-17 18:52:47 946219 20996 INFO: LBS reactivated
                            2017-02-17 18:52:47 949193 20996 INFO: LBS disabled through external height change
                            2017-02-17 18:55:23 603683 20996 INFO: LBS reactivated

                            Verschattung.png

                            Kommentar


                              Zitat von ak68 Beitrag anzeigen
                              meine neu erstellte Jalousiensteuerung geht direkt nach Projektaktivierung in den Modus "LBS Disabled", angeblich wurde manuell die Höhe verstellt. Erst nach Reaktivierung über E32 läuft der Baustein wieder (vgl. Bild).
                              InitScan auf 1/3/16 und 1/3/17 hast Du aktiviert?
                              Kind regards,
                              Yves

                              Kommentar


                                Frage: Kann es sein, dass wen E22 (Dämmerungsschwelle öffnen) kleiner ist als E21 (Dämmerungsschwelle schließen) der Raffstore erst aufgeht, wenn E21 überschritten wird? Ist bei mir nämlich (leider) so...!

                                Kommentar

                                Lädt...
                                X