Rollläden über xBlind (mal wieder)

Begonnen von erdbeerschaeler, 13. Oktober 2014, 15:33:02

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

erdbeerschaeler

Guten Morgen,

na klar mach ich noch ein paar Screenshots.
Du bekommst alles was Du brauchst  ;)

Es ändert sich beim Öffnen des Fensters, aber nur der Eingang vom Kontakt.
Ich hab einen Screenshot und auch mal den aktuellen Code des Blind angehängt.


(*IF NOT (up AND dn) AND night THEN
(* manual operation at night will cancel operation for one night *)
night := FALSE;*)
IF (DT_TO_TOD(dtin) > sunset + sunset_offset) AND (last_night < DT_TO_DATE(dtin)) AND NOT night AND e_night AND DN AND (DT_TO_TOD(dtin)>=EARLIEST_CLOSING_TIME OR NOT ENABLE_MINMAXTIMES) THEN
(* enable night *)
night := TRUE;
last_night := DT_TO_DATE(dtin);
ELSIF (DT_TO_TOD(dtin) > sunrise + sunrise_offset) AND (last_day < DT_TO_DATE(dtin)) AND night AND e_day AND (last_night < DT_TO_DATE(dtin)) AND (DT_TO_TOD(dtin)>=EARLIEST_OPENING_TIME OR NOT ENABLE_MINMAXTIMES) THEN
(* disable night *)
night := FALSE;
last_day := DT_TO_DATE(dtin);
END_IF;

(* shade at night only in auto mode and enable = true *)
IF UP AND DN AND night THEN
status := 141;
IF ENABLE_VENTINGPOS AND NOT WINDOW_SWITCH THEN (* open shade slightly if venting position is enabled and window is opened *)
po := night_position;
ao := night_angle;
ELSE (* set standard night position when not venting *)
po := night_position;
ao := night_angle;
END_IF
ELSE
po := pi;
ao := ai;
status := s_in;
END_IF;
QU := UP;
QD := DN;



Ich hab nochmal versucht zu verstehen, warum der Blindnight seine Position nach Manueltimeout immer wieder nachzieht, aber dafür fehlt mir einfach das Programmiergen  :-\

[gelöscht durch Administrator]

erdbeerschaeler

 ::) ::) Fehler gefunden  ::) ::)

Ich hab für die Lüftungsposition die Nachtposition eingetragen.

BLÖD... wer lesen kann ist klar im Vorteil.

Dann halt nur noch das Problem mit dem automatischen Fahren.
Muss ich da etwas am Blind_Input umstellen?

mattsches

Ja, genau. Klassischer Tippfehler.

Dass der BLIND_NIGHT nach Ablauf des Timeouts für den Handbetrieb wieder seine Position aktiviert, liegt tatsächlich an der deaktivierten ersten IF-Abfrage. Die bewirkt nämlich, dass sich der BLIND_NIGHT bei einem nächtlichen Handeingriff bis zum nächsten Abend abschaltet. Dann bleibt der Laden auch nach Ablauf des Timeouts oben. Aber er fährt morgens eben nicht automatisch hoch, wenn er nachts manuell geöffnet und wieder geschlossen wurde. Die beiden Anforderungen wirdersprechen sich also.

Denkbar wäre ein Mechanismus, der das manuelle Schließen versucht zu erkennen und den BLIND_NIGHT wieder aktiv schaltet. Aber ganz trivial ist das nicht. Was wäre das Erkennungskriterium? NIGHT_POS wieder erreicht? Nahezu unmöglich, wenn hierfür nicht 0 sondern z. B. 15 hinterlegt ist. Man könnte auch den Status beobachten. Und wenn der Laden manuell oder per Klick-Betrieb für eine gewisse Zeit abwärts bewegt wird den BLIND_NIGHT wieder aktivieren.

Es gäbe aber auch zwei einfache Abhilfen: Timeout verlängern. Oder länger schlafen.  ;)

erdbeerschaeler

Mahlzeit mattsches,

so langsam verstehe ich den Syntax glaube ich.
Deine beiden reellen Lösungsansätze werde ich mal mit der Regierung mal klären ;D

Allerdings finde ich den Timeout von 2-3 Stunden auch nicht schlecht.

Ich hab da selbst auch noch mal was versucht.
Das möchte ich noch einbauen um die Rolladen bei längerer Abwesenheit (URLAUB) ganz zu schließen.
Könnte das Funktionieren, oder ist das totaler Quatsch?


VAR_INPUT
SPEZ_NIGHT_POS : BYTE;
OTHER_NIGHT_POS_AKTIV: BOOL;

END_VAR



IF OTHER_NIGHT_POS_AKTIV := TRUE THEN
NIGHT_POSITION : = SPEZ_NIGHT_POS;
END_IF



mattsches

Das geht schon so. Bis auf einen Tippfehler, es müsste heißen

IF OTHER_NIGHT_POS_AKTIV = TRUE

oder einfach nur

IF OTHER_NIGHT_POS_AKTIV

":=" ist eine Wertzuweisung; an dieser Stelle führt das zu einem Übersetzungsfehler. Und du musst das Ganze natürlich vor der Zuweisung an PO packen.

Folgende Anregungen noch:

- SPEZ_NIGHT_POS würde ich in den VAR_INPUT CONSTANT-Block reinpacken. Dann verschwindet das Beinchen in CFC, und du kannst den gewünschten Wert zusammen mit den anderen Einstellungen per Doppelklick auf den Block einstellen.

- NIGHT_POSITION ist ein Eingangsparameter, den du intern bedingt überschreibst. Funktioniert, ist aber nicht so richtig guter Stil. Ich würde es wohl so machen:

(* shade at night only in auto mode and enable = true *)
IF UP AND DN AND night THEN
status := 141;
IF ENABLE_VENTINGPOS AND NOT WINDOW_SWITCH THEN (* open shade slightly if venting position is enabled and window is opened *)
po := venting_position;
ao := venting_angle;
ELSIF OTHER_NIGHT_POS_AKTIV THEN (* use special night position *)
po := SPEZ_NIGHT_POS;
ao := night_angle;
ELSE (* set standard night position when not venting *)
po := night_position;
ao := night_angle;
END_IF
ELSE
po := pi;
ao := ai;
status := s_in;
END_IF;
QU := UP;
QD := DN;


Viel Spaß,
mattsches

erdbeerschaeler

Okay, Danke für die Hinweise.
Habe ich verstanden und werde es berücksichtigen.

Übrigens:
Länger Schlafen is nicht, aber den Timeout auf 2-3 Stunden setzen ist genehmigt  ::)

erdbeerschaeler

Hallo Zusammen,

ich muss dieses Thema nochmal erweitern und finde es hier ganz passend.

Der modifizierte Blind_Night läuft jetzt seit über einem Jahr hervorragend.

Jetzt habe ich noch den Security Baustein mit dahinter gehangen der bei Wind die Rolladen z.T. ganz Auf oder ganz Zu fährt.

Wenn in der Nacht der Windalarm die Rolläden schließt, dann kommt es vor, dass auf Grund der vielen Nachlaufzeiten in den unterschiedlichen Bausteinen die Rolläden am Morgen nicht mehr hoch fahren.

Was haltet ihr davon die manuelle Timeoutzeit im Blind_Input auf 5 Minuten zu setzen?
Gleichzeitig suche ich nach einer Lösung durch die manuelle Bedienung, z.B. Morgens oder Zwischendurch, die Blind_Night Automatik zu deaktivieren. Wenn ich die Automatik nicht deaktiviere würden die Rolladen sonst nach den 5 Minuten in die Nachposition fahren?!?!

Über eure Meinungen oder Erfahrungen würde ich mich freuen.
Wie habt ihr die Zeiten an den Baustein so eingestellt?

Gruß
Sven


@Peewit
Wenn ich für dieses Thema einen neuen Thread auf machen soll, einfach bescheid geben.

mattsches

Hallo Sven,

der BLIND_NIGHT deaktiviert sich selbst, wenn du nachts manuell eingreifst. Er schaltet sich dann ab und wird erst am nächsten Abend wieder aktiv. Insofern musst du da gar nichts machen.

Meine Timeouts habe ich bei 1 h belassen, an der Schiebetür bei 3 h.

Gruß,
Mattsches

erdbeerschaeler

Guten Morgen Mattsches,

ich hab über Nacht mal wieder getestet und bin etwas verwirrt.
Die Rollläden im Schlafzimmer habe ich von Hand hoch gefahren und alles hat funktioniert.
Allerdings habe ich vor ca. 14 Tagen das ganze Spielchen schon einmal getestet und wir waren zuhause (Anwesend) die Rolläden sind dann mindestens einmal wieder zu gefahren.

Könnte es mit dem modifizierten Baustein zusammen hängen und die Anwesenheitsschaltung die Nachtfunktion wieder aktivieren?
Vielleicht liegt es aber auch an dem Security-Baustein, der den Nachtmodus irgendwie durcheinander bringt.

Könntest du vielleicht einmal drüber schauen?!?

Vielen Dank im Voraus
Schwenn


(*IF NOT (up AND dn) AND night THEN
(* manual operation at night will cancel operation for one night *)
night := FALSE;*)
IF (DT_TO_TOD(dtin) > sunset + sunset_offset) AND (last_night < DT_TO_DATE(dtin)) AND NOT night AND e_night AND DN AND (DT_TO_TOD(dtin)>=EARLIEST_CLOSING_TIME OR NOT ENABLE_MINMAXTIMES) THEN
(* enable night *)
night := TRUE;
last_night := DT_TO_DATE(dtin);
ELSIF (DT_TO_TOD(dtin) > sunrise + sunrise_offset) AND (last_day < DT_TO_DATE(dtin)) AND night AND e_day AND (last_night < DT_TO_DATE(dtin)) AND (DT_TO_TOD(dtin)>=EARLIEST_OPENING_TIME OR NOT ENABLE_MINMAXTIMES) THEN
(* disable night *)
night := FALSE;
last_day := DT_TO_DATE(dtin);
END_IF;

IF UP AND DN AND night THEN
status := 141;
IF ENABLE_VENTINGPOS AND NOT WINDOW_SWITCH THEN (* open shade slightly if venting position is enabled and window is opened *)
po := venting_position;
ao := venting_angle;
ELSIF OTHER_NIGHT_POS_AKTIV THEN (* use special night position *)
po := SPEZ_NIGHT_POS;
ao := night_angle;
ELSE (* set standard night position when not venting *)
po := night_position;
ao := night_angle;
END_IF
ELSE
po := pi;
ao := ai;
status := s_in;
END_IF;
QU := UP;
QD := DN;


[gelöscht durch Administrator]

erdbeerschaeler

BOAH... warum ist denn die erste Zeile auskommentiert?  :o

das habe ich gerade erst gesehen! Ich glaube das ist schon das Problem?!?

mattsches

Genau. Auskommentiert hast du das vermutlich selbst.  ;)

mattsches


erdbeerschaeler

Klassischer Fall von Blind & Blöd...
... SORRY für die Störung  ::)