Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ja, ist aktiviert ! Kann es sein, dass die beiden Positionswerte erst nach Berechnung des Bausteins zur Verfügung steht ?
Daher habe ich auch schon versucht, als Trigger das iKO Systenstart (auch mit 60s Verzögerung) zu verwenden, aber eigentlich wird der Baustein auch bei Eingang der Wetterdaten berechnet- ohne Erfolg
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...!
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).
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.
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.
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...
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?
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!
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?
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...
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.
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.
...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.
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.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: