Ankündigung

Einklappen
Keine Ankündigung bisher.

Konfiguration InfoTrigger Widget für Rolladen

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

    Konfiguration InfoTrigger Widget für Rolladen

    Hallo zusammen,

    ich baue mir gerade ein schönes Rolladen Bedienelement für meine CometVisu.
    Eine 95% Lösung habe ich. Aber wie immer hänge ich am letzten Feinschliff.

    Hier mal mein Code:
    Code:
    <infotrigger uplabel="▲" upvalue="0" shortupvalue="0" downlabel="▼" downvalue="1" shortdownvalue="1" align="center" infoposition="middle" change="relative" shorttime="300" mapping="Rolladen">
                 <label>Hobby</label>
                 <address transform="DPT:1.008" mode="readwrite" variant="button">2/4/0</address>
                 <address transform="DPT:1.010" mode="readwrite" variant="short">2/4/1</address>
                 <address transform="DPT:5.001" mode="read" variant="relative">2/4/2</address>
            </infotrigger>
    Die erste address transform ist das Langzeitobjekt, die zweite das Kurzzeitobjekt und die dritte liefert den Status, nachdem der Rolladen gestoppt wird (entweder auf 0%, 100% oder über Kurzzeitobjekt)

    Die Position in % (Status) soll nach dem Verfahren über die Icons fts_shutter_10, fts_shutter_20, usw. angezeigt werden. Soweit funktioniert das. Nun würde ich gerne die Icons fts_shutter_down und fts_shutter_up verwenden. Meine Idee dazu ist, dass ich bei 0 bzw. 1 (binär) vom Langzeitobjekt diese Icons verwende, um zu signalisieren, dass der Rolladen gerade hoch bzw. runter fährt. Das funktioniert soweit ganz gut. Allerdings bekomme ich bei den Positionen 0% und 1% natürlich die falschen Icons (up/down) angezeigt. Mit der fts_shutter_down bei 1% könnte ich als "Visu-Bug" leben, aber fts_shutter_up bei 0% fände ich nicht so dolle. Wie kann man dieses Problem, dass einmal %-Werte und einmal binärwerte gemeint sind lösen?

    Hier noch das aktuelle Mapping:
    Code:
    <mapping name="Rolladen">
                 <entry value="0">
                    <icon name="fts_shutter_up"/>
                 </entry>
                 <entry range_min="0.01" range_max="0.99">
                     <icon name="fts_window_2w"/>
                 </entry>
                 <entry value="1">
                     <icon name="fts_shutter_down"/>
                 </entry>
                 <entry range_min="1.01" range_max="14.99">
                     <icon name="fts_shutter_10"/>
                 </entry>
                 <entry range_min="15" range_max="24.99">
                     <icon name="fts_shutter_20"/>
                 </entry>
                 <entry range_min="25" range_max="34.99">
                     <icon name="fts_shutter_30"/>
                 </entry>
                 <entry range_min="35" range_max="44.99">
                     <icon name="fts_shutter_40"/>
                 </entry>
                 <entry range_min="45" range_max="54.99">
                     <icon name="fts_shutter_50"/>
                 </entry>
                 <entry range_min="55" range_max="64.99">
                     <icon name="fts_shutter_60"/>
                 </entry>
                 <entry range_min="65" range_max="74.99">
                     <icon name="fts_shutter_70"/>
                 </entry>
                 <entry range_min="75" range_max="84.99">
                     <icon name="fts_shutter_80"/>
                 </entry>
                 <entry range_min="85" range_max="99.99">
                     <icon name="fts_shutter_90"/>
                 </entry>
                 <entry range_min="99.99" range_max="100">
                     <icon name="fts_shutter_100"/>
                 </entry>
            </mapping>
    Bin auf Eure Antworten gespannt.

    Viele Grüße

    DJens

    #2
    Ich wüsste nicht wie das gehen soll, für die CometVisu (und auch in Javascript) gibt es an der Stelle nur Zahlen, wo die Zahl 0 oder 1 herkommt ist da nicht bekannt.
    Du musst also einen Weg finden, dass die Werte des Langzeitobjekts nicht in 0/1 transformiert werden, sondern z.B. in UP/DOWN und diese dann mappen. Das geht aber nicht ohne Änderungen am Source-Code der CometVisu. Irgendwo müsstest Du sowas in der Art einfügen (vielleicht in der Datei transforms/TransformDefault.js):

    Code:
    Transform.addTransform( 'Custom', {
      'shutter': {
            name: 'Custom_shutter',
            encode: function (phy) {
              return (phy | 0x80).toString(16);
            },
            decode: function (hex) {
              return parseInt(hex, 16) === 1 ? "DOWN" : "UP";
            }
      }
    });
    Und dann für die entsprechenden Adresse dieses neue Transform nutzen:

    Code:
    <infotrigger uplabel="▲" upvalue="0" shortupvalue="0" downlabel="▼" downvalue="1" shortdownvalue="1" align="center" infoposition="middle" change="relative" shorttime="300" mapping="Rolladen">
                 <label>Hobby</label>
                 <address transform="Custom:shutter" mode="readwrite" variant="button">2/4/0</address>
                 <address transform="DPT:1.010" mode="readwrite" variant="short">2/4/1</address>
                 <address transform="DPT:5.001" mode="read" variant="relative">2/4/2</address>
            </infotrigger>
    Ist aber jetzt alles ungetestet aus der Hüfte geschossen, aber sollte so gehen.
    Gruß
    Tobias

    Kommentar


      #3
      Hallo,

      vielen Dank für Deine Antwort. OK, es wird wohl etwas komplizierter. Wäre es denn alternativ möglich, bei dem infotrigger statt der Strings für uplabel und downlabel die icons fts_shutter_up bzw. ...down darzustellen? Ist zwar von der Funktionalität her anders aber so kämen die schicken Icons doch noch zur Nutzung. Die beiden Funktionalitäten schließen sich ja auch nicht aus, stelle ich gerade fest . Vielleicht fällt ja jemand auch noch ein trickreicher Workaround ohne Eingriff in den SourceCode der Cometvisu für das ursprüngliche Problem ein?

      Viele Grüße
      DJens
      Zuletzt geändert von DJens; 22.06.2017, 18:55.

      Kommentar


        #4
        Ich habe nun mal auf dem Wiregate Server - dort läuft die CometVisu - nach der TransformDefault.js Datei gesucht, diese aber nicht gefunden. Kann mir hierbei jemand weiterhelfen oder fallen jemandem noch alternative Möglichkeiten ein? Ich finde es echt ziemlich cool, dass während der Fahrt ein anderes Icon eingeblendet werden kann - so bekommt man nochmal ein deutliches visuelles und optisch ansprechendes Feedback, wenn man nicht im gleichen Raum ist wie der Rolladen, den man bedient.

        Edit: Ich hätte ein Screen Capture im avi-Format, aus dem das Problem nochmal visuell dargestellt wird. Kann aber leider keine avi-Datei anhängen. Welches Video-Format würde sich als Anhang anhängen lassen?
        Zuletzt geändert von DJens; 22.06.2017, 19:22.

        Kommentar


          #5
          DJens welche Version der Visu verwendest Du? Je nach dem ist das Transform wo anders...
          TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

          Kommentar


            #6
            Die Version dürfte relativ aktuell sein. Comet Visu Manager sagt Version 0.9.2

            Kommentar


              #7
              Also aktuell ist die 0.10.2, bei der gibt es die Datei transforms/TransformDefault.js. Bei der 0.9.2 gibt es die leider nicht. Du könntest mal versuchen den Javascript Code in die "designs/<name-des-designs/design_setup.js" den von Dir benutzten Designs zu kopieren. Sollte eigentlich auch gehen, habs aber nicht getestet.
              Gruß
              Tobias

              Kommentar


                #8
                Wie kriege ich denn die 0.10.2, d.h. die aktuelle Version drauf? Siehe auch https://knx-user-forum.de/forum/supp...f-dem-wiregate ganz unten...

                Edit: Habs das update hinbekommen. Werde die Lösung auch im verlinkten Thread reinposten...
                Zuletzt geändert von DJens; 25.08.2017, 06:52.

                Kommentar


                  #9
                  Nun habe ich das mit dem Transform Datei ausprobiert. Dabei habe ich in folgendem Code

                  Code:
                   <infotrigger uplabel="▲" upvalue="0" shortupvalue="0" downlabel="▼" downvalue="1" shortdownvalue="1" align="center" infoposition="middle" change="relative" shorttime="300" mapping="Rolladen">
                       <label>Hobby</label>
                       <address transform="Custom:shutter" mode="readwrite" variant="button">2/4/0</address>
                       <address transform="DPT:1.010" mode="readwrite" variant="short">2/4/1</address>
                       <address transform="DPT:5.001" mode="read" variant="relative">2/4/2</address>
                  </infotrigger>
                  Auch einmal upvalue="UP", Downvalue="DOWN" (entsprechend den Strings im addTransform) gesetzt. Nichtsdestotrotz funktioniert das Langzeitobjekt nicht, was soviel bedeutet, dass ich keinerlei Rekation (weder Rolladen noch Cometvisu) erhalte, wenn ich es in der Cometvisu auslöse... Wie könnte ich weiter vorgehen?

                  Grüße

                  DJens

                  Kommentar


                    #10
                    Funktioniert das Langzeitobjekt denn ohne die besagten Änderungen? Wenn du mit F12 die Developer-Tools im Browser aufmachst solltest Du zumindest einen Write Request im "Network"-Tab (im Chrome) sehen (also irgendwie so was /cgi-bin/w?...), das würde bedeuten das das Langzeitobjekt schon was sendet, wenn aber nichts passiert vermutlich nicht das richtige.
                    Gruß
                    Tobias

                    Kommentar


                      #11
                      Also einen write request erhalte ich, allerdings den falschen. Ein funktionierender Request sieht so aus:

                      /cgi-bin/w?s=SESSION&a=2/4/0&v=81&ts=1504435976373

                      der nicht funktionierende so:
                      /cgi-bin/w?s=SESSION&a=2/4/0&v=0&ts=1504435958451

                      Ich habe schon herausgefunden, dass wenn ich im Browser den nichtfunktionierenden in die Adressleiste eingebe und die 0 durch die 81 ersetze, dass es dann klappt.

                      Aber was sagt mir v=0 bzw. 81 aus? Wofür stehen diese Zahlen? Und wie kriege ich es hingebogen, dass es passt?

                      Kommentar


                        #12
                        Wenn der Transform richtig eingebunden wurde, sollte der encode Teil aus der 0 bzw. 1 die als send-Value in dem Infotrigger-Widget definiert sind den passenden Wert berechnen:

                        Code:
                        Transform.addTransform( 'Custom', {
                              'shutter': {
                                name: 'Custom_shutter',
                                encode: function (phy) {
                                  return (phy | 0x80).toString(16);
                                },
                                decode: function (hex) {
                                  return parseInt(hex, 16) === 1 ? "DOWN" : "UP";
                                }
                              }
                            });
                        Meine Vermutung ist, dass das Custom:shutter-Transform nicht benutzt wird und einfach ein nicht-transformierter Wert gesendet wird und mit dem kann der KNX-Bus nichts anfangen (der braucht halt 81 für AN und 80 für AUS bei einem DTP:1.001). Du kannst in der Browser-Konsole unter Sources auch checken, ob der o.g. Code in der Datei in der Du den eingefügt hast überhaupt geladen wird. Wenn das der Fall ist, kannst Du genau auf die Zeile innerhalb der encode-Funktion (also die mit dem Inhalt: return (phy | 0x80).toString(16); ) einen Breakpoint setzten (einfach auf die Zeilennummer klicken, die sollte dann einen blauen Hintergrund bekommen (zumindest im Chrome Browser) . Wenn Du dann das Langezitobjekt bedienst, sollte der Browser in dem Breakpoint hängen bleiben. Damit wäre zumindest mal sichergestellt das alles korrekt eingebunden ist und benutzt wird. Ich vermute aber das genau das nicht der Fall ist.
                        Gruß
                        Tobias

                        Kommentar


                          #13
                          Hallo zusammen,

                          ich habe mir das Ganze heute nochmal angesehen. Es wird nicht die richtige TransformDefault.js Datei geladen. Auf dem Wiregate habe ich nach allen "TransformDefault.js" Dateien gesucht. Da ich noch Ordnerleichen von veralteten Cometvisu-Versionen habe, habe ich in jeder TransformDefault-Datei ganz oben die entsprechende Cometvisu Version reingeschrieben. Die von peuter vorgeschlagene Vorgehensweise sollte im Firefox "Debugger" heißen. Öffne ich nun die Cometvisu Seite und schaue mir den Inhalt der geladenen TransformDefault.js Datei in diesem Debugger an, stelle ich fest, dass ganz oben KEINE Version eingetragen ist. D.h. es wird irgendeine TransformDefault.js verwendet, die ich über meine Suche über WinSCP nicht finde. Ich suche im Verzeichnis "/" nach "TransformDefault.js". Da ich nicht so der Linux Crack bin, wäre ich für den entscheidenden Hinweis dankbar - ich bin hier zunächst am Ende mit meinem Latein.

                          Viele Grüße

                          Jens

                          Kommentar


                            #14
                            Im Debugger kannst Du auf die Netzwerk-Sicht schalten und so die komplette URL der geladenen Datei sehen. Wenn Du mir sagst welche das ist, dann kann ich sagen, wo die auf dem WireGate liegt
                            TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

                            Kommentar


                              #15
                              Ich finde es nicht. Unter dem Reiter "Netzwerkanalyse" --> "JS" wird die Datei nicht aufgelistet (s. Screenshot "Netzwerkanalyse"). Was ich etwas merkwürdig finde ist, dass unter dem Reiter Debugger die TransformDefault.js unter "no domain" aufgelistet wird (s. Screenshot "Debugger").

                              Wenn ich die Quelladresse der Datei im Debugger kopiere habe ich im Zwischenspeicher: "transforms/TransformDefault.js"

                              Kann es sein, dass der Inhalt der TransformDefault.js in die main.js eingepflegt werden muss? Dort habe ich über eine Suche obige Quelladresse wieder gefunden. Leider ist die main.js bei mir im Notepad++ immer noch so unstrukturiert, dass ich hier Berührungsängste hätte, etwas zu ändern...
                              Angehängte Dateien
                              Zuletzt geändert von DJens; 01.11.2017, 09:33.

                              Kommentar

                              Lädt...
                              X