Ankündigung

Einklappen
Keine Ankündigung bisher.

Rollladen positionieren

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

    Rollladen positionieren

    Hallo,

    hier eine erste Version, um zu prüfen, wie gut die Positionsberechnung bereits ist. Ich arbeite bislang mit Durchschnittswerten bezüglich der Dicke der Welle und der Lamellen.

    Ich bitte Euch, mit zwei Rollos (ein langes und ein kurzes) Testfahrten zu machen und die Ergebnisse hier zu posten. Dann sehe ich, ob ich die Möglichkeit schaffen muss, unterschiedliche Dicken anzugeben oder ob die Durchschnittswerte Ergebnisse liefern, die gut genug sind.

    Bitte folgendermaßen vorgehen: Bei den Items für den Rollo Carport und den Rollo Büro die Gruppenadressen für die Rollos, die Ihr zum Test ausgesucht habt, eintragen sowie die Länge in cm und die Laufzeit auf- und abwärts sowie die Vorlaufzeit/Nachlaufzeit. Nachlaufzeit bedeutet bei der Abwärtsfahrt die Zeit vom Aufsetzen des Rollos bis die Lücken zwischen den Lamellen geschlossen sind. Vorlaufzeit ist die Zeit beim Start der Aufwärtsfahrt aus der unteren Endposition, bis alle Lücken offen sind und der Rollo beginnt, sich zu heben.

    Bitte macht für beide Rollos folgende Tests:
    • Start in der oberen Endposition
    • Fahrt nach unten über die Visu starten.
    • Nach 25, 50, 70 und 90 Prozent stoppen.
    • Dann wieder nach oben fahren.
    • Achtung! Beim Richtungswechsel zuerst ein Stopp. Der direkte Richtungswechsel funktioniert noch nicht.
    • Bei 70, 50, 30 und 10 Prozent stoppen (nicht in die Endposition fahren!)
    • Dann das gleiche nochmal.
    • Bitte jeweils die gemessenen und angezeigten Werte etwa folgendermaßen in eine Tabelle eintragen:


    Code:
    Position gemessen ! Position angezeigt ! Prozentwert angezeigt
    ------------------+--------------------+-----------------------
            20        !         30         !         15.6
    Dann bitte die Tabelle und den Log hier posten. Ihr braucht nicht in den Debug-Mode zu schalten, alle wichtigen Informationen werden als info geloggt.

    Danke & Gruß
    Peter
    Angehängte Dateien

    #2
    Hallo,

    klappt bei mir leider überhaupt nicht.

    Fehlermeldungen im DEBUG - Modus
    Code:
    2014-04-05 20:37:06,387 DEBUG    Main         WebSocket: incoming connection fro                                                                                        m 192.168.2.176:49841 to 0.0.0.0:2424 -- connection.py:accept:188
    2014-04-05 20:37:06,596 DEBUG    Main         192.168.2.176:49841 sent '{"cmd":"                                                                                        proto","ver":3}' -- __init__.py:json_parse:270
    2014-04-05 20:37:06,607 DEBUG    Main         192.168.2.176:49841 sent '{"cmd":"                                                                                        monitor","items":["EG.KUECHE.Rollo.Rollo_Kueche.move_sv","EG.KUECHE.Rollo.Rollo_                                                                                        Kueche.zielpos_sv","EG.KUECHE.Rollo.Rollo_Kueche.zielpos_show","EG.KUECHE.Rollo.                                                                                        Rollo_Kueche.step_sv","EG.KUECHE.Rollo.Rollo_Kueche.pos_cm"]}' -- __init__.py:js                                                                                        on_parse:270
    2014-04-05 20:37:14,959 DEBUG    Main         192.168.2.176:49841 sent '{"cmd":"                                                                                        item","id":"EG.KUECHE.Rollo.Rollo_Kueche.move_sv","val":"1"}' -- __init__.py:jso                                                                                        n_parse:270
    2014-04-05 20:37:14,967 DEBUG    Main         Item EG.KUECHE.Rollo.Rollo_Kueche.                                                                                        move_sv = True via Visu 192.168.2.176:49841 None -- item.py:__update:363
    2014-04-05 20:37:14,975 DEBUG    Main         Triggering rollo_move - by: Item s                                                                                        ource: EG.KUECHE.Rollo.Rollo_Kueche.move_sv dest: None value: True -- scheduler.                                                                                        py:trigger:162
    2014-04-05 20:37:15,005 INFO     Main         knx: 0.0.0 set 10/2/16 to 01 -- __                                                                                        init__.py:parse_telegram:181
    2014-04-05 20:37:15,183 ERROR    rollo_move   Logic: rollo_move, File: /usr/smar                                                                                        thome/logics/rollo.py, Line: 237, Method: <module>, Exception: 'SmartHome' objec                                                                                        t has no attribute 'Global' -- scheduler.py:_task:334
    Traceback (most recent call last):
      File "/usr/smarthome/lib/scheduler.py", line 327, in _task
        exec(obj.bytecode)
      File "/usr/smarthome/logics/rollo.py", line 237, in <module>
        log_nr = int(sh.Global.Rollo.nextlog())

    Meine ITEM Konf:
    Code:
    [[[[Rollo_Kueche]]]]
                    laufzeit_ab = 20    # Laufzeit in Sekunden bis der Rollladen eine Fahrt bis zur Ankunft am Boden gemacht hat
                    nachlauf_ab = 4     # Zeit in Sekunden von Ankunft am Boden bis alle Lamellen geschlossen sind
                    laufzeit_auf = 22   # Laufzeit in Sekunden bis der Rollladen eine Fahrt bis zur Ankunft oben gemacht hat
                    vorlauf_auf = 5     # Zeit in Sekunden bis alle Lamellen geöffnet sind
                    laenge = 232        # Länge des Rollladens in cm
                    position = 0        # Initialposition ganz oben. 
                    start = 1           # Startzeit bei Rollofahrt
                    richtung = 0        # Richtung = +1: abwärts, -1: aufwärts
                    on_hold = 0         # wenn on_hold, dann wird keine Zielfahrt gestartet 
                    art = -1            # -1 = steht, 0 = Normalfahrt, 1-9 = Zielfahrt Nr. 1-9
                    nextnr = 1          # nächste Nr
                    next_ziel = 1       # nächste Zielfahrtnr
                    [[[[[step_knx]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_listen = 7/0/4 | 7/0/12
                        knx_send = 7/0/4
                        funktion = step_knx
                        enforce_updates = on
                    [[[[[move_knx]]]]]
                        visu_acl = rw
                        type = bool
                        knx_dpt = 1
                        knx_send = 6/0/4
                        funktion = move_knx
                        enforce_updates = on
                    [[[[[step_py]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_send = 10/2/12
                        funktion = step_py
                        enforce_updates = on
                    [[[[[move_py]]]]]
                        type = bool 
                        knx_dpt = 1
                        knx_send = 10/2/15
                        funktion = move_py
                        enforce_updates = on
                    [[[[[step_sv]]]]]
                        visu_acl = rw
                        type = bool
                        knx_dpt = 1
                        knx_send = 10/2/13
                        funktion = step_sv
                        enforce_updates = on
                    [[[[[move_sv]]]]]
                        visu_acl = rw
                        type = bool 
                        knx_dpt = 1
                        knx_send = 10/2/16
                        funktion = move_sv
                        enforce_updates = on
                    [[[[[zielpos_knx]]]]]
                        type = num
                        knx_dpt = 5
                        knx_listen = 10/2/17
                        funktion = zielpos_knx
                    [[[[[zielpos_py]]]]]
                        type = num
                        knx_dpt = 5
                        funktion = zielpos_py
                    [[[[[zielpos_sv]]]]]
                        type = num
                        knx_dpt = 5
                        funktion = zielpos_sv
                        visu_acl = rw
                    [[[[[zielpos_show]]]]]
                        type = num
                        knx_dpt = 5
                        funktion = none
                    [[[[[steppos]]]]]
                        type=bool
                        value=0
                        funktion=steppos
                        enforce_updates = on
                    [[[[[stopp]]]]]
                        type=num
                        value=0
                        funktion=stopp
                        enforce_updates = on
                    [[[[[pos_cm]]]]]
                        type=num
                        value=0
                        funktion=none
    Rollo fährt auch nicht.

    Beim Fahren über den KNX-Taster:

    Code:
    AttributeError: 'SmartHome' object has no attribute 'Global'
    2014-04-05 20:37:31,121 INFO     Main         knx: 1.1.23 set 8/0/5 to 00 -- __i
    2014-04-05 20:37:49,867 INFO     Main         knx: 1.1.26 set 8/0/4 to 0 -- __in
    2014-04-05 20:37:53,767 INFO     Main         knx: 1.1.22 set 8/2/3 to 0c16 -- _
    2014-04-05 20:38:38,527 DEBUG    env_loc      Item env.location.moonset = 2014-0
    2014-04-05 20:38:39,007 DEBUG    Scheduler    env_loc next time: 2014-04-05 21:0
    2014-04-05 20:38:44,452 INFO     Main         knx: 1.1.16 set 8/1/4 to 00 -- __i
    2014-04-05 20:40:01,830 INFO     Main         knx: 1.1.36 set 6/0/4 to 01 -- __init__.py:parse_telegram:181
    2014-04-05 20:40:10,467 INFO     Main         knx: 1.1.36 set 7/0/4 to False -- __init__.py:parse_telegram:190
    2014-04-05 20:40:10,476 DEBUG    Main         Triggering rollo_move - by: Item source: EG.KUECHE.Rollo.Rollo_Kueche.step_knx dest: None value: False -- scheduler.py:trigger:162
    2014-04-05 20:40:35,360 INFO     Main         knx: 1.1.25 set 8/0/0 to 0 -- __init__.py:parse_telegram:190
    Gruß
    Steven

    Kommentar


      #3
      Hallo Steven

      Du hast einen Teil aus der *.conf gelöscht:

      Code:
      [Global]
      	[[Rollo]]
      		[[[nextlog]]]
      			type = num
      			value = 1
      Der ist notwendig ;-)

      Gruß
      Peter

      Kommentar


        #4
        Hallo,

        danke, habe ich komplett übersehen, die Grafik bzw. Logik geht nun nur der Rollladen fährt nicht.

        Könntest du kurz beschreiben welche KNX-ITEMs ich auf echte GA'S ändern muss und was welcher bewirkt?

        Bisher habe ich nur :

        [[[[[step_knx]]]]], [[[[[move_knx]]]]] angepasst.

        Im Debugger spricht er nur
        10.2.16 to 1 start
        10.2.13 to 1 stop
        an.
        Das wären dann ja auch: [[[[[move_sv]]]]], [[[[[step_sv]]]]].

        Dachte man soll nur die "_knx" anpassen.

        Danke!

        Gruß
        Steven

        Kommentar


          #5
          Hallo Steven,

          es werden alle Items gebraucht. D.h. für jeden Rollo 3 x move und 3 x step. Mit jeweils unterschiedlichen GAs. Zudem noch eine GA, falls Du von einem Bus-Gerät aus die Positionierung starten willst.

          Die Items haben folgende Bedeutung:
          *_knx: Signal kommt vom Bus und wird nur von der Logik verarbeitet
          *_sv: Signal kommt aus der Visu oder von Python-Programmen, die Du geschrieben hast. Wird sowohl von der Logik verarbeitet als auch auf den Bus geschickt
          *_py: Signal kommt aus meiner rollo-Logik. Muss auf den Bus gehen (deshalb Zuordnung GA). Item soll nicht anderweitig verwendet werden.


          Für den Test jetzt kannst Du aber auch alles vom Bus aus machen. Da lässt Du die GAs für _sv und _py einfach leer. Sollte von den Tastern aus funktionieren und Du kannst die Messungen machen.

          Gruß
          Peter

          Kommentar


            #6
            Zitat von accelle Beitrag anzeigen
            Hallo Steven,

            es werden alle Items gebraucht. D.h. für jeden Rollo 3 x move und 3 x step. Mit jeweils unterschiedlichen GAs. Zudem noch eine GA, falls Du von einem Bus-Gerät aus die Positionierung starten willst.

            Die Items haben folgende Bedeutung:
            *_knx: Signal kommt vom Bus und wird nur von der Logik verarbeitet
            *_sv: Signal kommt aus der Visu oder von Python-Programmen, die Du geschrieben hast. Wird sowohl von der Logik verarbeitet als auch auf den Bus geschickt
            *_py: Signal kommt aus meiner rollo-Logik. Muss auf den Bus gehen (deshalb Zuordnung GA). Item soll nicht anderweitig verwendet werden.


            Für den Test jetzt kannst Du aber auch alles vom Bus aus machen. Da lässt Du die GAs für _sv und _py einfach leer. Sollte von den Tastern aus funktionieren und Du kannst die Messungen machen.

            Gruß
            Peter
            Danke habe gleich alle GA's definiert.

            Meine Ersten Messungen Fensterbreite 2,00 Fensterhöhe 2,30:

            Fahrt auf 30 % - 50 % - 70 % - 90 % von oben ...

            Position gemessen in cm | Position angezeigt in % | Position angezeigt in cm |
            60 | 28 | 67
            110 | 53 | 124
            153 | 71 | 167
            190 | 88 | 206

            Fahrt erst auf 70 dann nach oben:

            Position gemessen in cm | Position angezeigt in % | Position angezeigt in cm |
            162 | 73 | 171
            114 |43 | 100
            89 | 22 | 52
            68 |4 |10


            Mir ist aufgefallen das im Script bei Ankunft in der Endlage kein "stopp" erfolgt man muss einmal manuell stoppen.


            Habe noch ein paar direktfahrten immer von oben ausgehend gemessen:
            Position gemessen in cm | Position angezeigt in % | Position angezeigt in cm
            61 | 31 | 73
            92 | 48 | 112
            89 | 41 | 97
            140 | 65 | 153
            182 | 88 | 205



            Gruß
            Steven

            Kommentar


              #7
              Hallo Steven,

              Danke für Deine Messungen. Das mit dem manuellen Stopp weiß ich. Hab ich auch in meiner Anleitung für die Tests geschrieben. Das habe ich hinten angestellt, zuerst möchte ich die Formeln hinkriegen.

              Wie ist die Laufzeit für Auf- und Abfahrt?

              Hast Du noch das Log? Dann kann ich nämlich anhand der dokumentierten Fahrtzeiten verschiedene Alternativen für die Formeln durchrechnen, mit meinen Messwerten vergleichen und, falls sich noch der eine oder andere findet, der auch Interesse hat und Messungen macht, dann kann ich sehen, ob es einen guten Mittelwert gibt oder ob ich den Durchmesser der Antriebswelle und der Rollladen-Segmente als Parameter zulassen muss.

              Falls Du noch eine Hilfe suchst, um Deine vielen Rollladen in der *.conf anzulegen (ich glaube, Du hast über 20?). Damit geht's einfacher: https://knx-user-forum.de/smarthome-...tellung-3.html

              Gruß
              Peter

              Kommentar


                #8
                Die Log habe ich angehängt.

                Werde morgen noch 2-3 Messungen vornehmen.

                Wäre es nicht sinnvoll Schaltflächen zu schaffen um Positionen direkt anzufahren jetzt für den Test z.B. 70 % 50 % 30 % 10 % somit könnte man einen Punkt direkt anfahren und müsste nicht ca. stoppen, mir kommt es so vor das hier der meiste "versatz" passiert kann aber auch täuschen.

                Danke für den Tipp, schaue mir morgen das Exel-Sheet an.

                Gruß
                Steven
                Angehängte Dateien

                Kommentar


                  #9
                  Hallo Steven,

                  das mit den Schaltflächen geht nicht. Da müsste ich ja schon die Zielfahrt programmieren. Das will ich aber erst machen, wenn ich die Formel für die Positionsbestimmung habe.

                  Position = f(Fahrzeit)
                  Fahrzeit = g(Position)

                  Wenn ich f kenne, dann kann ich es in g umformen und die Steuerung zum Anfahren einer Position entwickeln.

                  Schickst Du mir noch Deine Laufzeiten für Aufwärts- und Abwärtsfahrt?

                  Gruß
                  Peter

                  Kommentar


                    #10
                    Hallo Peter,

                    die genaue Positionierung vom Rolladenpanzer, für alle möglichen auf dem Markt erhältlichen Rolläden, wird man sicher nicht hinbekommen.
                    Da spielen auch noch die unterschiedlichen Schlitzungen der Rolladen-Segmente eine Rolle.
                    Meine sind z.B. im oberen viertel nicht geschlitzt, somit sind die Rolladen-Segmente bei mir oben dichter zusammen wie im unterem ¾.

                    Gruß
                    Michael

                    Kommentar


                      #11
                      Hallo Michael,

                      da bin ich bei Dir. Ich hatte eine erste Version gemacht, die sich nur an der Fahrtzeit orientiert. Und da sind die Abweichungen - gerade bei Rollläden in Türhöhe schon gewaltig. Für mich gibt es zwei Alternativen:

                      Entweder bei allen Messungen stellt sich heraus, dass ein bestimmter Mittelwert für die Welle und die Dicke der Panzer akzeptabel gut ist, vor allem, wenn der Rollladen mehr als 50% herausgefahren ist. Oder die Werte unterschieden sich so stark, dass jeder diese beiden Parameter selbst einstellen kann. Das macht das Formelwerk etwas unhandlich, deshalb würde ich lieber mit konkreten Zahlen arbeiten ;-)

                      Ich denke, dass auch Aktoren, die eine Positionierung können, gewisse Abweichungen haben. Die können ja auch nicht wissen, wie Deine Geometrie ist.

                      Gruß
                      Peter

                      Kommentar


                        #12
                        Zitat von accelle Beitrag anzeigen
                        Hallo Steven,

                        das mit den Schaltflächen geht nicht. Da müsste ich ja schon die Zielfahrt programmieren. Das will ich aber erst machen, wenn ich die Formel für die Positionsbestimmung habe.

                        Position = f(Fahrzeit)
                        Fahrzeit = g(Position)

                        Wenn ich f kenne, dann kann ich es in g umformen und die Steuerung zum Anfahren einer Position entwickeln.

                        Schickst Du mir noch Deine Laufzeiten für Aufwärts- und Abwärtsfahrt?

                        Gruß
                        Peter
                        Code:
                                        laufzeit_ab = 20    # Laufzeit in Sekunden bis der [URL="http://redaktion.knx-user-forum.de/lexikon/Rollladen/"]Rollladen[/URL] eine Fahrt bis zur Ankunft am Boden gemacht hat
                                         nachlauf_ab = 4     # Zeit in Sekunden von Ankunft am Boden bis alle Lamellen geschlossen sind
                                         laufzeit_auf = 22   # Laufzeit in Sekunden bis der [URL="http://redaktion.knx-user-forum.de/lexikon/Rollladen/"]Rollladen[/URL] eine Fahrt bis zur Ankunft oben gemacht hat
                                         vorlauf_auf = 5     # Zeit in Sekunden bis alle Lamellen geöffnet sind
                                         laenge = 232        # Länge des Rollladens in cm

                        Kommentar


                          #13
                          Zitat von accelle Beitrag anzeigen
                          Hallo Steven,

                          das mit den Schaltflächen geht nicht. Da müsste ich ja schon die Zielfahrt programmieren. Das will ich aber erst machen, wenn ich die Formel für die Positionsbestimmung habe.

                          Position = f(Fahrzeit)
                          Fahrzeit = g(Position)

                          Wenn ich f kenne, dann kann ich es in g umformen und die Steuerung zum Anfahren einer Position entwickeln.

                          Schickst Du mir noch Deine Laufzeiten für Aufwärts- und Abwärtsfahrt?

                          Gruß
                          Peter
                          Hallo,

                          habe gestern noch ein paar Tests gemacht, finde die Positionierung ist schon relativ gut, der meiste Verzug kommt vom Versatz durch das "Stop" klicken...

                          Gruß
                          Steven

                          Kommentar


                            #14
                            Zitat von accelle Beitrag anzeigen
                            Hallo Michael,

                            da bin ich bei Dir. Ich hatte eine erste Version gemacht, die sich nur an der Fahrtzeit orientiert. Und da sind die Abweichungen - gerade bei Rollläden in Türhöhe schon gewaltig. Für mich gibt es zwei Alternativen:

                            Entweder bei allen Messungen stellt sich heraus, dass ein bestimmter Mittelwert für die Welle und die Dicke der Panzer akzeptabel gut ist, vor allem, wenn der Rollladen mehr als 50% herausgefahren ist. Oder die Werte unterschieden sich so stark, dass jeder diese beiden Parameter selbst einstellen kann. Das macht das Formelwerk etwas unhandlich, deshalb würde ich lieber mit konkreten Zahlen arbeiten ;-)

                            Ich denke, dass auch Aktoren, die eine Positionierung können, gewisse Abweichungen haben. Die können ja auch nicht wissen, wie Deine Geometrie ist.

                            Gruß
                            Peter
                            Hallo,

                            gibt es Neuigkeiten oder soll ich noch ein paar Fahrten vornehmen?

                            Vielen Dank! Bald kommen hoffe ich die ersten Sonnentage

                            Grüße
                            Steven

                            Kommentar


                              #15
                              Hallo Steven,

                              es gibt keine guten Neuigkeiten. Im April hatte ich einen Hänger, einfach keine Lust, die Zahlen zu analysieren. Und dann hatte ich einen Sturz mit dem Fahrrad, 1 1/2 Wochen Krankenhaus und derzeit andere Dinge um den Kopf als die Rollladen-Programmierung.

                              Fürs erste musst Du wohl mit der alten Version vorlieb nehmen (aus dem ersten Thread). Wenn man die nur nutzt, um eine bestimmte, täglich gleiche Beschattung einzustellen, dann muss man etwas probieren, welcher Prozentwert der gewünschten Lamellenposition entspricht. Den kann man dann anfahren.

                              Am besten, Du machst für jeden Raum ein kleines Python-Script, das alle Rollläden dieses Raums mit dem entsprechenden Zielwert aufruft. Das Script reagiert auf eine bestimmte GA und die kannst Du per Taster ansprechen. Das ist keine schöne Lösung und die Visu zeigt nicht korrekt an, wo die Rollos stehen. Aber es ist praktikabel genug, um die Rollos einmal am Tag alle in Position zu bringen.

                              Sorry, aber ich kann mich derzeit nicht aufraffen, an dem Thema weiterzuarbeiten.

                              Gruß
                              Peter

                              Kommentar

                              Lädt...
                              X