Ankündigung

Einklappen
Keine Ankündigung bisher.

Shutter Richtung ändern

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

    Shutter Richtung ändern

    Hallo zusammen,

    ich habe eine (vielleicht einfache) Frage. Vielleicht sehe ich auch den Wald vor lauter Bäumen nicht mehr.

    Ich nutze FHEM, die Fibaro Shutter Unterputz Module und Fronthem mit smartVisu (2.7) mit dem Shutter Device.

    In der Anleitung auf der smartVisu Homepage steht:
    min - the minimum value for close (optional, default 0)
    max - the maximum value for open (optional, default 255)

    Mein html code sieht so aus, was auch sauber funktioniert, nur die Richtung passt nicht.
    {{ device.shutter('OG.SZ.Rolladen', 'Rolladen', 'OG.SZ.Rolladen.mov', '', 'OG.SZ.Rolladen.pos', '', '', '', 0, 99, 1 ) }}

    Wenn ich nun nach unten drücke, schickt smartVisu eine 99 und wenn ich nach oben drücke eine 0.
    Auch die direkte Positionsanforderung per Klick auf das Bild ist verkehrt herum (unten 99, oben 0).

    Sollte es nicht umgekehrt sein? Wie kann ich es umstellen?

    Ich habe meine Hardware extra so verkabelt, da im Fibaro Schalter 99 definitiv offen ist und 0 geschlossen (Rolladen unten).

    Danke und viele Grüße,
    Christian

    #2
    Hallo Christian

    Da ist anscheinend die Doku falsch. Bei Rollläden ist es üblich, dass die Position von oben gemessen wird.
    Also 0 ist ganz oben (offen) und meist 255 als Binärzahl oder 100 als Prozent ist ganz unten (geschlossen).

    Gruss
    Stefan

    Kommentar


      #3
      Hallo Stefan,

      danke für deine schnelle Antwort. Dann werde ich es wohl wieder umverkabeln, damit es passt.

      Dumm ist, dass ich es gestern extra so hinverkabelt habe, weil ich dachte es wäre falsch, da es in der smartVisu Doku UND in den Fibaro Shuttern wohl auch falsch beschrieben ist bzw. im FHEM Code.

      Da steht nämlich bei Reaktion auf CO2Alarm (und andere Alarms) entweder OpenBlind oder CloseBlind. Und hier fährt der Rolladen dann bei OpenBlind auf 99 und bei CloseBlind auf 0.

      Naja, dann werde ich es mal beim FHEM Forum noch melden und einfach umverkabeln.

      Grüße,
      Christian

      Kommentar


        #4
        Vielleicht bin ich auch zu sehr auf KNX fixiert, dort ist es jedenfalls so.

        Kommentar


          #5
          SmartVisu macht es ja eigentlich auch so. Habe etwas gegoogled, aber auch keine klare Aussage gefunden. In manchen Beispielen wird es so gemacht und manchmal so.

          Vielleicht hat ja noch jemand anderes eine Meinung dazu?

          Wie kann ich denn dem SmartVisu Chef mitteilen, dass die Doku falsch ist?

          Kommentar


            #6
            Hast du schon, der bin aktuell faktisch ich. Der Founder Martin Gleiß ist nur noch am Rande aktiv.

            Kommentar


              #7
              Ja fein

              Kommentar


                #8
                Ich habe die Erfahrung gemacht, dass es vom System und Hersteller abhängt, ob ein Rollo nun halb offen bzw. halb geschlossen ist.
                Darum denke ich nicht, dass ein Fehler in der Anleitung ist und würde die Verkabelung so lassen, wie sie dort beschrieben ist. Nicht dass es bei der Verwendung
                von Sensoren vielleicht ungewünschte Nebeneffekte gibt.

                Ich hatte das gleiche Problem mit meinen Rollo-Aktoren und habe mir damals einen eigenen Converter für fronthem in FHEM gebastelt, der die Werte einfach invertiert, damit sie für SV passen.
                Den kann ich dir gerne zur Verfügung stellen.

                Kommentar


                  #9
                  Aus Sicht der smartVISU ist die Doku definitiv falsch, denn da ist immer min oben (open) und max unten (close).

                  Als ich mir das eben angeschaut habe, ist mir aber aufgefallen, dass min allgemein etwas speziell behandelt wird.
                  Min steht nicht etwa für den Wert, wenn der Rolladen ganz oben ist, sondern der Rolladen wird einfach auf das min begrenzt, aber z.B. bei min=50 trotzdem halb geschlossen angezeigt. Oben is5 also immer 0.

                  Ich betrachte dies mal als Bug und nicht als Feature und werde es für die kommende Version ändern. Oder nutzt jemand das tatsächlich als Feature?
                  Gleichzeit8g werde ich wojhl min und max durch sowas wie value_opened und value_closed ersetzen. Damit kann man dann value_closed auch kleiner als value_opened setzen und so das Verhalten umkehren (das wäre ja jetzt min > max, was nicht funktioniert).

                  Kommentar


                    #10
                    Das klingt super. Dann müsste ich nicht nochmal umverkabeln und vertausche einfach min und max.

                    Ich hatte mir den Code des Shutters bereits angeschaut, aber mich dann für umverkabeln entschieden, da hier recht viel Umrechnung von Pixeln auf die Positionswerte drin ist und das war mir dann doch zu kompliziert.

                    Falls du allerdings hier in naher Zukunft eine neue Version erschaffen würdest, würde ich mich über eine kurze Nachricht freuen. Gerne auch als "Beta-Tester"

                    Kommentar


                      #11
                      Wie nahe diese Zukunft sein wird, kann ich dir noch nicht versprechen, ich habe noch einiges vor für den Release.
                      Aber evtl. kannst du dann den Codeausschnitt in die alte Version reinkopieren.

                      Ich habe das als Issue 130 erfasst.
                      Zuletzt geändert von smai; 16.01.2017, 15:04. Grund: Issue hinzugefügt

                      Kommentar


                        #12
                        So würde ich das gerne machen. Kannst du dann bitte hier posten wenn du was hast oder wie wollen wir weiter vorgehen?

                        Kommentar


                          #13
                          Du kannst du mal folgenden Code in der widget.js testen (in der originalen 2.8 musst du die Zeilen 353 bis 422 ersetzen).

                          Code:
                              // ----- basic.shutter --------------------------------------------------------
                              $(bevent.target).find('div[data-widget="basic.shutter"]').on( {
                                  'update': function (event, response) {
                                      event.stopPropagation();
                                      // response is: {{ gad_pos }}, {{ gad_angle }}
                          
                                      var max = parseInt($(this).attr('data-max'));
                                      var min = parseInt($(this).attr('data-min'));
                          
                                      var a = 13;
                                      var mode = ($(this).attr('data-mode') == 'half' ? 0.5 : 1);
                                      if (response[1] !== undefined) {
                                          a = parseInt(13 / mode * ((response[1] - min) / (max - min) + mode - 1));
                                      }
                          
                                      var style;
                          
                                      var h = parseInt((response[0] - min) * 13 * 14 / (max - min));
                                      $.each($(this).find('.blade-pos, .blade-neg').get().reverse(), function(i) {
                                          if (h >= 14) {
                                              var w = 13 - Math.abs(a);
                                              style = 'height: ' + ((h > (12-i) * 14) && a == 13 ? (14 - w) : (15 - w)) + 'px;';
                          
                                              if (a != 13) {
                                                  style += 'margin-top: ' + (h - 15 >= 14 ? w : parseInt(w / 2)) + 'px;';
                                              }
                                              else {
                                                  style += 'border-top: 1px dotted ' + (h > (12-i) * 14 ? '#ccc' : '#333') + ';';
                                              }
                          
                                              if (a > 0) {
                                                  $(this).attr('class', 'blade-pos');
                                              }
                                              else {
                                                  $(this).attr('class', 'blade-pos');
                                              }
                          
                                              $(this).attr('style', style);
                          
                                              h = h - 15;
                                          }
                                          else {
                                              style = 'height: ' + h + 'px;';
                                              style += 'border-top: 1px dotted #aaa;';
                                              $(this).attr('style', style);
                                              h = 1;
                                          }
                                      });
                                  },
                          
                                  'click': function (event) {
                                      var max = parseInt($(this).attr('data-max'));
                                      var min = parseInt($(this).attr('data-min'));
                                      var step = parseInt($(this).attr('data-step'));
                          
                                      var offset = $(this).offset();
                                      var x = event.pageX - offset.left;
                                      var y = event.pageY - offset.top;
                                      var val = Math.floor(y / $(this).outerHeight() * (max - min) / step) * step + min;
                          
                                      var items = $(this).attr('data-item').explode();
                                      if (items[1] != '' && x > $(this).outerWidth() / 2) {
                                          io.write(items[1], val);
                                      }
                                      else {
                                          io.write(items[0], val);
                                      }
                                  },
                          
                                  'mouseenter': function (event) {
                                      $(this).find('.control').fadeIn(400);
                                  },
                          
                                  'mouseleave': function (event) {
                                      $(this).find('.control').fadeOut(400);
                                  }
                              });

                          Kommentar


                            #14
                            Würde das dann auch mein hier erwähntes Problem lösen?

                            Zitat von nEiMi Beitrag anzeigen
                            ...
                            1. Der Stand der Symbole stimmt nicht mit dem Wert überein. Ich denke das hat was mit der Skalierung zu tun... da ich Werte von 0-100% sende, das Icon aber wohl Werte von 0-255 möchte...
                            Code:
                            <svg id="room_wohnen-EG_wohnen_raffstore_couch_lamelle_wert" class="icon icon0" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" data-max="255" data-min="0" data-item="EG.wohnen.raffstore.couch.lamella_status, " data-widget="icon.blade_arc">
                            Wie kann ich das auf 0-100 ändern?
                            ...
                            cu Yfkt5A
                            DALI(ABB DG/S1.1), KODI Odroid, TrueNAS, Zehnder ComfoAir 200 L Luxe
                            microk8s-Cluster: HomeAssistant, MusicAssistant, mosquitto, TVHeadend, jellyfin

                            Kommentar


                              #15
                              Hallo nEiMi

                              Leider nein. Wenn ich das richtig verstanden habe, geht es bei dir um das icon.shutter.
                              Hier geht es um device.shutter bzw. das zugrunde liegende basic.shutter (ja, ist etwas verwirrend).

                              Aber ich könnte sowas natürlich auch für die Icons implementieren. Bei der Analyse eben hatte ich das Gefühl, dass bei den dynamischen icons noch weiteres Potential besteht, ich muss mir das mal genauer anschauen.

                              Kommentar

                              Lädt...
                              X