Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

    Automatische Beschattung

    Hallo,

    ich hab nun seit einiger Zeit den eibPC und bin begeistert. Ich les hier auch regelmäßig mit, leider hab ich auf meine Frage noch keine zufriedenstellende Antwort gefunden.

    Da ich fürn Sommer die automatische Beschattung aktivieren möchte hab ich mir die Makros mal angesehen.

    Meine Kriterien für eine Freigabe der Beschattung sehen wie folgt aus:

    • Innentemperatur & Aussentemperatur > 20 Grad
    • kein bewölkter Himmel (Lux-Wert)
    • und die 3 Terrassentüren müssen verschlossen sein; nicht das die Beschattung runterfährt und wir stehen draussen.

    Das Makro für bspw. BeschattungRolloSuedOst prüft immer nur ob die Freigabe erfüllt ist:
    Code:
    if Freigabe and (elevation()>2f32) and  azimuth()>(40f32) and azimuth()<230f32 then write(GARolloSonnenSchutz,WertRolloDunkel) endif 
    if Freigabe and (elevation()>2f32) and  !(azimuth()>40f32 and azimuth()<230f32) then write(GARollo,AUS) endif
    Was passiert, wenn sich die Freigabe ändert (es wird draussen kälter, dunkler oder die Terrassentür geht auf)?

    Reagiert das Makro dann, und fährt die Rollos hoch, oder bleiben die solange bis sich die Sonne weiterbewegt hat?

    Danke im Voraus.

    lg,

    Peter

    #2
    Zitat von ppfeifer Beitrag anzeigen
    Was passiert, wenn sich die Freigabe ändert (es wird draussen kälter, dunkler oder die Terassentür geht auf)?
    Bisher passiert da nix. Da wude schon mal diskutiert. Ich muss da mal nachfragen, ob sich was geändert hat, im baldigem Release...
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Danke für die rasche Antwort.

      Müsste nicht was ausreichend sein wie:
      [highlight=epc]
      if !Freigabe or ((elevation()>2f32) and !(azimuth()>40f32 and azimuth()<230f32)) then write(GARollo,AUS) endif[/highlight]?

      lg,

      peter

      Kommentar


        #4
        Zitat von ppfeifer Beitrag anzeigen
        Danke für die rasche Antwort.
        Müsste nicht was ausreichend sein wie:
        Code:
        if !Freigabe or ((elevation()>2f32) and  !(azimuth()>40f32 and azimuth()<230f32)) then write(GARollo,AUS) endif
        ?
        Ja. so einfach ist das ...
        Teste doch mal
        _[highlight=epc]
        [\highlight]
        für den Code (ohne das "_")
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar


          #5
          da kommt noch eine Frage auf.

          Es ist ja immer so eine Sache mit grenzwerten wie Temperatur > 20.

          Wenn die Temperatur immer zw, 19,5° und zb 20,5° schwankt, würden die Rollos ja andauernd auf und abfahren.

          Gäbe es da eine Möglichkeit, die Grenze fließend zu gestalten und nicht hart, damit es nicht zu einer Rauf-Runter-Orgie kommt?

          lg,

          peter

          Kommentar


            #6
            Ich würde dies über eine Hysterese lösen.

            Also Freigabe bei 20°C und !Freigabe erst wieder bei z.B. 18°

            Alternativ könntest du auch eine Zeitschaltuhr verwenden. erst wenn es 30min unter 20° ist schaltet die Freigabe

            Kommentar


              #7
              Zitat von fuchs Beitrag anzeigen
              Ich würde dies über eine Hysterese lösen.
              Die Funktion heisst hsyteresis
              [highlight=epc]
              Freigabe=hysteresis(Temp, 19.0,20.0)
              [/highlight]
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #8
                Danke für die Antworten.

                Das werd ich gleich mal probieren.

                Kommentar


                  #9
                  Nicht Eib spezifische Bedenken habe ich bei deiner Lösung:

                  Was machst du wenn du im Garten sitzt und einer macht die Terassentüre zu (z.B. der Wind)
                  Ich würde die Freigabe zusätlich noch auf einen Taster oder Funktaster legen

                  Joachim
                  Gruß Jukom

                  Kommentar


                    #10
                    Code:
                    if Freigabe and (elevation()>2f32) and  azimuth()>(40f32) and azimuth()<230f32 then write(GARolloSonnenSchutz,WertRolloDunkel) endif 
                    if Freigabe and (elevation()>2f32) and  !(azimuth()>40f32 and azimuth()<230f32) then write(GARollo,AUS) endif
                    Wenn wir das umstellen würden z.B. bei Freigabe "AUS" plötzlich alle Rollos hochfahren. Ist das wirklich gewollt?

                    steffi
                    Enertex Bayern GmbH - www.eibpc.com

                    Kommentar


                      #11
                      Zitat von ppfeifer Beitrag anzeigen
                      ... damit es nicht zu einer Rauf-Runter-Orgie kommt?
                      Du kannst natürlich alle "unruhigen" Einganssignal per Hysterese dämpfen, einfacher könnte es aber sein, das Ausgangssignal zu filtern, also nur die Beschattung verfahren, wenn die letzte Änderung eine gewisse Mindestzeit in der Vergangenheit liegt (Sperrzeit) oder eine Änderung muß für eine gewisse Mindestzeit anliegen (Entprellung), bevor sie ausgeführt wird. Die Zeiten könnten bei Bedarf noch richtungsabhängig sein, d.h. Aktivierung der Beschattung könnte schneller erfolgen als Deaktivierung. Eine reine "Beruhigung" der Eingangssignale ist ohnehin keine Garantie für ein ruhiges Ausgangssignal, sie begrenz ja nur die Änderungsgeschwindigkeit je eines Signals. Trotzdem könnten mehrere Signale unmittelbar aufeinanderfolgend eine Änderung des Ausgangs auslösen - was wohl nicht gewollt ist.

                      Zu Deinem Ausgangsproblem:
                      Gemäß Validierungskonzept wird der then-Zweig ausgeführt, wenn der gesammte logische Ausdruck von falsch auf wahr wechselt (von binär 0 auf binär 1). Die beiden Originalausdrücke im Makro können bei einem Wechsel von Freigabe von 1 auf 0 aber nicht wahr werden, also kann ein Wechsel der Freigabe von 1 auf 0 auch nichts auslösen - Freigabe=0 verhindert nur jeden weiteren Schreibbefehl.

                      Was Du möchtests ist eine typische if-then-else-Entscheidung, wenn der Ausdruck wahr wird, soll die Beschattung aktiv werden, wenn er falsch wird, soll sie inaktiv werden:[highlight=epc]if (Freigabe and (elevation()>2f32) and azimuth()>(40f32) and azimuth()<230f32) then {
                      write(GARolloSonnenSchutz,WertRolloDunkel)
                      } else {
                      write(GARollo,AUS)
                      } endif[/highlight]Da mußt Du Dir derzeit Dein eigenes Makro schreiben...

                      Zitat von SteffiEnertex Beitrag anzeigen
                      Wenn wir das umstellen würden z.B. bei Freigabe "AUS" plötzlich alle Rollos hochfahren. Ist das wirklich gewollt?
                      Ja, ich glaube in diesem Fall schon, denn wenn man zur Tür hinaus will, sollten die Rolläden/Jalousien schon oben sein, wenn die Temperatur fällt sollen sie ebenfalls hochfahren. Ich vermute mal, das die Freigabe dafür nicht gedacht ist. Ggf. ist vielleicht ein weiterer Parameter sinnvoll, der nicht als reine Sperre fungiert, sondern tatsächlich zur Einbindung weitere Signale zur Entscheidung ob Beschatten oder nicht dienen soll und entsprechend anders behandelt wird.
                      Tessi

                      Kommentar


                        #12
                        Bei mir sieht es derzeit so aus:

                        [highlight=epc]

                        if hwinkel>20f16 and hwinkel<60f16 and awinkel>45f16 and awinkel<160f16 then {
                        WhzSiF=EIN
                        } else {
                        WhzSiF=AUS
                        } endif

                        if WhzSiF==EIN and WhzAutoRollo==EIN and FreigabeWhzSiF==EIN and sonnig and warm and !WhzBalkontuere then {
                        if WhzRollladen_status==0 then {
                        write ("whz rollladen pos% anfahren-3/1/16","whz rollladen %beschattung-3/1/13");WhzSiFstatus=EIN
                        } endif
                        } else {
                        write ("whz rollladen pos% anfahren-3/1/16",0%);WhzSiFstatus=AUS
                        } endif

                        [/highlight]



                        Uwe

                        Kommentar

                        Lädt...
                        X