Ankündigung

Einklappen
Keine Ankündigung bisher.

Rolladen

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

    #31
    Es wird auch kein Wert angezeigt, wenn ich Format leer lasse. Ich hatte Het tatsächlich nur 1%, so wie weiter oben beschrieben. Beim Infotrigger hatte ich es so auch noch ausprobiert und zumindest das Prozentzeichen zeigte die Visa dort auch korrekt an. Und wenn mich jetzt nicht alles täuscht, steht es in der Doku auch nur mit einem Prozentzeichen.

    Kommentar


      #32
      Wie kann ich denn das config-file (ist xml oder?) Direkt öffnen? Hier wird ja immer wieder der Code rein kopiert, um die Einstellungen zu zeigen. Vielleicht gibt es ja bei mir einen kleinen Fehler mit dem Editor, der sich im config-file zeigt.

      Gesendet von meinem HTC Desire mit Tapatalk 2

      Kommentar


        #33
        Die Konfiguration liegt unter /var/www/visu/visu_config.xml (falls Du die SVN Version nimmst must Du in dem Verzeichnis schauen in das Du sie ausgecheckt hast, ev. /var/www/visu_svn/visu_config.xml).

        Entweder Du loggst Dich per SSH auf dem Wiregate ein und öffnest sie mit dem Editor Deiner Wahl (ich nehme joe, vi ist aber auf jeden Fall installiert), oder Du kopierst sie per sftp auf Deinen lokalen Rechner. Den root Zugang auf dem Wiregate must Du vorher ev. noch aktivieren.

        Kommentar


          #34
          Hi,

          ich hab meine Raffstores im Moment mit Slidern dargestellt, sieht aus wie im Bildchen im Anhang. Gibts in der aktuellen Version eine Möglichkeit, dass ich 2 Slider und 1 Switch 2 Mal nebeneinander hinbekomm, also 6 Elemente? (Slider Slider Switch Slider Slider Switch)

          Am Besten wär natürlich, wenn jeweils zwei Slider Slider Switch Kombination in einer Group wären.

          Geht da schon was, oder muss ich da auf die SVN-Version umsteigen?
          Angehängte Dateien

          Kommentar


            #35
            Nein, das geht nur in der SVN Version bei Verwendung eines 12-Spalten Designs (pitchblack, oder bald planet; pure werde ich auch auf 12-Spalten umstellen; bei den anderen Designs sind deren Ersteller verantwortlich)
            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


              #36
              Wieder einmal sehr, sehr merkwürdig. Ich hatte nichts weiter an den Visu-Einstellungen geändert und heute zeigt er mir den Positionswert an.
              War gestern wohl nen Schluckauf im System.

              Die Konfiguration liegt unter /var/www/visu/visu_config.xml (falls Du die SVN Version nimmst must Du in dem Verzeichnis schauen in das Du sie ausgecheckt hast, ev. /var/www/visu_svn/visu_config.xml).
              Ist mir ja schon bald peinlich, aber wie genau rufe ich das auf? Im Browser hinter wiregateXXX:10000 oder wiregatexxx/visu funktioniert es nicht

              ich hab meine Raffstores im Moment mit Slidern dargestellt,
              Die Variante mit den Slidern würde ich auch gerne mal versuchen. Wenn ich das richtig verstehe, muss ich dafür doch aber gezielt eine bestimmte Position anfahren können. Ich hatte dies schon versucht, aber stehe da noch auf dem Schlauch. Nutze den MCU-09 und weiß nicht wirklich, wie ich diesen konfigurieren muss und welche GAs anzulegen sind.

              Grüße
              Daniel

              PS: Hoffe es stört nicht, wenn ich so viele Fragen stelle. Ich versuche natürlich immer zunächst im Forum zu suchen und die Dokumentationen zu lesen, aber im Moment bleibe ich noch immer an ganz grundsätzlichen Dingen hängen.

              Kommentar


                #37
                Hallo
                Die XML kannst Du auch im Browser so ansehen.
                "wiregatexxx/visu/visu_config.xml"
                Gruß NetFritz
                KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
                WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
                PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

                Kommentar


                  #38
                  Editor öffnen

                  Hallo NetFritz,

                  die Frage hatte ich mir vor kurzer Zeit auch gestellt.

                  Schau mal hier hab Thread #37, hat mir auch geholfen.
                  Gruß
                  Christian

                  Kommentar


                    #39
                    Zitat von Spartaner Beitrag anzeigen
                    Die Zeiten vom Gruppenmonitor und eib.log sind zwar nicht synchron, aber scheint sonst alles vorhanden zu sein.
                    Ich möchte stolzen Hauptes sagen, das dann die Uhr am Windows-PC nicht stimmt, ich hasse falsche Uhren (u.a. genau deswegen: man kann nichts vergleichen..), am WG ist wirklich alles Menschenmögliche getan, das sie immer auf 100ms genau stimmt

                    Zum Kern: evtl. ein DPT-Problem?

                    Makki
                    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                    -> Bitte KEINE PNs!

                    Kommentar


                      #40
                      Hallo,

                      habe ein ähnliches Problem wie Spartaner:

                      Zitat von Spartaner Beitrag anzeigen

                      Habe in der ETS eine neue GA mit dem Rückmeldungsobjekt für Höhe des MCU-09 angelegt. In der Visu habe ich ein Info Widget angelegt. GA rein, DPT5.001, readonly, format: %.0f%

                      Im Gruppenmonitor zeigt er mir nach Abschluss der Fahrt den Positionswert an. In der Visu bleibt da einfach nur ein -
                      Leider hat es sich bei mir nicht am nächsten Tag von alleine erledigt.
                      Auch meine Versuche mit einem Info Widget die Temperatur von einem 1-Wire Sensor anzuzeigen führen nur zu dem "-" in der Visu (Release Version).

                      Im Log des WG sehe ich die Datenpakete:

                      Code:
                      2012-07-15 22:00:32.462,A_GroupValue_Write,1.1.254,5/1/2,06 27,15.75,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_REQ,0
                      2012-07-15 22:00:49.557,A_GroupValue_Write,1.1.254,2/3/12,00,,,,0,low,7,T_DATA_XXX_REQ,0
                      2012-07-15 22:00:49.749,A_GroupValue_Write,1.1.4,2/3/15,CF,,,,0,low,5,T_DATA_XXX_REQ,0
                      z.B. das Info Widget für die Temperatur sieht so aus:

                      Code:
                       <info format="%.1f°C">
                            <label>Temperatur</label>
                            <address transform="DPT:9.001" readonly="true" variant="">5/1/2</address>
                          </info>
                      Bin etwas ratlos.

                      Und da dies der Rolladen/Raffstore Thread ist:

                      Kann man mit mit einem Widget zwei verschiedene Werte an zwei GA senden? (Derselbe Wert an verschiedene GA geht ja).
                      Ich möchte mit einem MGX-9 den Raffstore mit einem Click auf eine bestimmte Beschattungsposition fahren. Also z.B. Höhe 100% Lamelle 50%.
                      Wenn man nicht das Griesserobjekt verwendet hat der Aktor ja dafür je Kanal zwei Kommunikationsobjekte. Eines für Höhe, eins für Lamelle.

                      Einfach direkt das Kommunikationsobjekt für die Beschattungsposition zu nehmen hilft mir nicht, da ich verschiedene Beschattungspositionen anfahren möchte, nicht zur die eine die im Aktor hinterlegt ist.

                      Die bekomme ich sowas mit der CV hin? Oder geht da was über die ETS?

                      Kommentar


                        #41
                        Zitat von haus42 Beitrag anzeigen
                        Leider hat es sich bei mir nicht am nächsten Tag von alleine erledigt.
                        Auch meine Versuche mit einem Info Widget die Temperatur von einem 1-Wire Sensor anzuzeigen führen nur zu dem "-" in der Visu (Release Version).
                        Hast Du in einem anderen Widget evtl. ein <address> Element mit leerer Adresse?
                        Zitat von haus42 Beitrag anzeigen
                        Kann man mit mit einem Widget zwei verschiedene Werte an zwei GA senden? [...]
                        Die bekomme ich sowas mit der CV hin? Oder geht da was über die ETS?
                        Nein, das ist Aufgabe einer Logik-Engine. Genauer: eines Szenen-Controllers.

                        Die gibt's in manchen KNX-Geräten (z.B. mein Dim-Aktor hätte einen eingebaut...), die könnte man dann per ETS parametrieren.
                        Oder mit einem WireGate Plugin.
                        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


                          #42
                          Zitat von Chris M. Beitrag anzeigen
                          Hast Du in einem anderen Widget evtl. ein <address> Element mit leerer Adresse?
                          Eigentlich nicht. Allerdings habe ich ein paar "dummy" Info Widgets eingefügt bei denen ich noch gar keine Adresse eingegeben habe. (d.h. das Address Tag kommt im XML der Widgets gar nicht vor).
                          CheckConfig meckert auch fleißig. Die Fehlermeldung ist aber nicht gerade selbsterklärend.
                          Werde mal ausprobieren die alle wieder raus zu nehmen.

                          Zitat von Chris M. Beitrag anzeigen
                          Nein, das ist Aufgabe einer Logik-Engine. Genauer: eines Szenen-Controllers.

                          Die gibt's in manchen KNX-Geräten (z.B. mein Dim-Aktor hätte einen eingebaut...), die könnte man dann per ETS parametrieren.
                          Oder mit einem WireGate Plugin.
                          Ah. Danke. Habe über die Suche ein paar Threads zu entsprechenden WG Plugins gefunden.
                          Gibt es eigentlich irgendwo eine Übersicht der Plugins?

                          Jetzt muss ich erstmal wieder meine rrd-Files reparieren. Aus irgendwelchen Gründen hat der WG die im XML-Format gedumped und sie im rrd-Format gelöscht. Dann geht natürlich nix mehr. :-(

                          Kommentar


                            #43
                            Zitat von haus42 Beitrag anzeigen
                            Gibt es eigentlich irgendwo eine Übersicht der Plugins?
                            Hoi

                            Ja gukst Du hier: SourceForge.net Repository - [openautomation] Index of /wiregate/plugin/generic
                            Grüsse Bodo
                            Fragen gehören ins Forum, und nicht in mein Postfach;
                            EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                            Kommentar


                              #44
                              Danke.
                              Mit den Plugins kann ich mich ne Weile beschäftigen. :-)

                              Die Info Widgets gehen bei mir jetzt auch.
                              Es waren nicht meine Dummy Info Widgets sondern andere Einträge bei denen sich ein zweiter Address Tag, allerdings ohne GA, eingeschlichen hatte.
                              Per copy-paste dann im Text-Editor geschickt vervielfacht ohne es zu merken.

                              Kommentar


                                #45
                                Hallo

                                Ich habe ein bisschen rumgebastelt.
                                Ich habe den infotrigger so "umgebaut" dass er langer und kurzer Tastendruck unterscheiden kann. So wie man sich das von den "normalen" Tastern auch gewohnt ist.
                                Kurz: Stop / Lamelle
                                Lang: Fahren

                                Sicher nicht wunderschön aber funktioniert prima.

                                Wenn ich den Button kürzer als die Zeit in ms im attribut shorttime drücke, sendet er die GA im attrubut shortaddr), wenn länger die andere...

                                Ist sicherlich noch viel vom infotrigger drin, was es für die reine
                                Rolladensteuerung nicht unbedingt bräuchte, aber habs einfach mal dringelassen...
                                Hier der Auszug aus der structure_custom.js:
                                Code:
                                VisuDesign_Custom.prototype.addCreator('shutter', {
                                  create: function( element, path, flavour, type ) {
                                    var $e = $(element);
                                    var layout = $e.children('layout')[0];
                                    var style = layout ? 'style="' + extractLayout( layout, type ) + '"' : '';
                                    var ret_val = $('<div class="widget clearfix infotrigger" ' + style + '/>');
                                    ret_val.setWidgetLayout($e);
                                    ret_val.append( extractLabel( $e.find('label')[0] ) );
                                    // handle addresses
                                    var address = makeAddressList($e, 
                                      function( src, transform, mode, variant ) {
                                        return [ variant != 'button', variant == 'button' ];
                                      }
                                    );
                                 var downtime;
                                 var timeout;
                                 var clicktype = "";
                                    // create buttons + info
                                    var buttons = $('<div style="float:left;"/>');
                                    var buttonCount = 2;
                                 
                                    var actordown = '<div class="actor switchUnpressed downlabel" '
                                    if ( $e.attr( 'align' ) ) 
                                      actorinfo += 'style="text-align: '+$e.attr( 'align' )+'" '; 
                                    actordown += '>';
                                    actordown += '<div class="value">' + ($e.attr('downlabel') ? $e.attr('downlabel') : '-') + '</div>';
                                    actordown += '</div>';
                                    var $actordown = $(actordown).data( {
                                      'address' : address,
                                      'mapping' : $e.attr('mapping'),
                                      'styling' : $e.attr('styling'),
                                      'value'   : $e.attr('downvalue') || 0,
                                      'align'   : $e.attr('align'),
                                      'change'  : $e.attr('change') || 'relative',
                                      'min'     : parseFloat($e.attr('min')) || 0,
                                      'max'     : parseFloat($e.attr('max')) || 255,
                                      'type'    : 'switch',
                                   'shortaddr': $e.attr('shortaddr'),
                                   'shorttime': $e.attr('shorttime')
                                    } ).bind('action', this.action).bind( 'mousedown', this.mousedown)
                                 .bind( 'mouseup', this.mouseup ).bind( 'mouseout',this.mouseout ).bind( 'touchstart', this.mousedown).bind( 'touchend', this.mouseup );
                                    var actorup = '<div class="actor switchUnpressed uplabel" '
                                    if ( $e.attr( 'align' ) ) 
                                      actorinfo += 'style="text-align: '+$e.attr( 'align' )+'" '; 
                                    actorup += '>';
                                    actorup += '<div class="value">' + ($e.attr('uplabel') ? $e.attr('uplabel') : '+') + '</div>';
                                    actorup += '</div>';
                                    var $actorup = $(actorup).data( {
                                      'address' : address,
                                      'mapping' : $e.attr('mapping'),
                                      'styling' : $e.attr('styling'),
                                      'value'   : $e.attr('upvalue') || 1,
                                      'align'   : $e.attr('align'),
                                      'change'  : $e.attr('change') || 'relative',
                                      'min'     : parseFloat($e.attr('min')) || 0,
                                      'max'     : parseFloat($e.attr('max')) || 255,
                                      'type'    : 'switch',
                                   'shortaddr': $e.attr('shortaddr'),
                                   'shorttime': $e.attr('shorttime')
                                    } ).bind('action', this.action).bind( 'mousedown', this.mousedown)
                                 .bind( 'mouseup', this.mouseup ).bind( 'mouseout',this.mouseout ).bind( 'touchstart', this.mousedown).bind( 'touchend', this.mouseup );
                                    var actorinfo = '<div class="actor switchInvisible " ';
                                    if ( $e.attr( 'align' ) ) 
                                      actorinfo += 'style="text-align: '+$e.attr( 'align' )+'" '; 
                                    actorinfo += '" ><div class="value">-</div></div>';
                                    var $actorinfo = $(actorinfo).data({
                                      'address'  : address,
                                      'format'   : $e.attr('format'),
                                      'mapping'  : $e.attr('mapping'),
                                      'styling'  : $e.attr('styling'),
                                      'align'    : $e.attr('align'),
                                    });
                                    for( var addr in address ) 
                                    {
                                  if( !address[addr][2] ) // if NOT relative
                                        $actorinfo.bind( addr, this.update );
                                    }
                                    if ( $e.attr('infoposition' )==1 ) {
                                      buttons.append( $actordown );
                                      buttons.append( $actorinfo );
                                      buttons.append( $actorup );        
                                    } else if ( $e.attr('infoposition' )==2 ) {
                                      buttons.append( $actordown );
                                      buttons.append( $actorup );        
                                      buttons.append( $actorinfo );
                                    } else {
                                      buttons.append( $actorinfo );
                                      buttons.append( $actordown );
                                      buttons.append( $actorup );        
                                    }
                                    ret_val.append( buttons );
                                    return ret_val;
                                  },
                                  update: function(e,d) { 
                                    var element = $(this);
                                    var value = defaultUpdate( e, d, element );
                                    element.addClass('switchInvisible');
                                  },
                                  action: function() {
                                  var data = $(this).data();
                                  var value = data.value;
                                 
                                  var relative = ( data.change != 'absolute' );
                                  if( !relative )
                                  {
                                    value = parseFloat($(this).parent().find('.switchInvisible').data('basicvalue'));
                                    value = value + parseFloat(data.value);
                                    if (value < data.min ) value = data.min;
                                    if( value > data.max ) value = data.max;
                                  }
                                  for( addr in data.address )
                                  {
                                 
                                   if( !(data.address[addr][1] & 2) ) continue; // skip when write flag not set
                                 
                                   if( data.address[addr][2] != relative ) continue; // skip when address mode doesn't fit action mode
                                 
                                 
                                   if (clicktype == "short" && data.shortaddr.indexOf(addr.substr(1)) != -1){
                                    //alert(addr.substr(1) + " is in shortaddr, clicktyoe: " + clicktype);
                                    visu.write( addr.substr(1), transformEncode( data.address[addr][0], value ) );
                                   } else if (clicktype == "long" && data.shortaddr.indexOf(addr.substr(1)) == -1){
                                    //alert(addr.substr(1)+ " is NOT in shortaddr, clicktyoe: " + clicktype);
                                    visu.write( addr.substr(1), transformEncode( data.address[addr][0], value ) );
                                   }
                                  }
                                  },
                                  mousedown: function() {
                                 var element = $(this);
                                 element.removeClass('switchUnpressed').addClass('switchPressed');
                                 downtime = new Date().getTime();
                                 clicktype = "long";
                                 timeout=setTimeout(function(){element.trigger('action');},element.data().shorttime);
                                 },
                                 mouseup: function() {
                                  var element = $(this);
                                  element.removeClass('switchPressed').addClass('switchUnpressed');
                                  clearTimeout(timeout)
                                  if ((new Date().getTime()-downtime) < element.data().shorttime){
                                    clicktype = "short";
                                    element.trigger('action');
                                  }
                                 
                                 
                                 },
                                 mouseout: function() {
                                   var element = $(this);
                                  element.removeClass('switchPressed').addClass('switchUnpressed');
                                  clearTimeout(timeout);
                                 },
                                  attributes: {
                                    uplabel:      { type: 'string' , required: false },
                                    upvalue:      { type: 'string' , required: false },
                                    downlabel:    { type: 'string' , required: false },
                                    downvalue:    { type: 'string' , required: false },
                                    mapping:      { type: 'mapping', required: false },
                                    styling:      { type: 'styling', required: false },
                                    align:        { type: 'string' , required: false },
                                    infoposition: { type: 'list'   , required: true , list: {0: 'Info/Down/Up', 1: 'Down/Info/Up', 2: 'Down/Up/Info'} },
                                    format:       { type: 'string' , required: false },
                                    change:       { type: 'list'   , required: false, list: {'relative': 'Send relative/delta values', 'absolute': 'Send absolute values'} },
                                    min:          { type: 'numeric', required: false },
                                    max:          { type: 'numeric', required: false },
                                    colspan:      { type: 'numeric', required: false },
                                    rowspan:      { type: 'numeric', required: false },
                                 shortaddr:    { type: 'string', required: false },
                                 shorttime:     { type: 'numeric', required: false }
                                  },
                                  elements: {
                                    layout:       { type: 'layout' , required: false, multi: false },
                                    label:        { type: 'string' , required: false, multi: false },
                                    address:      { type: 'address', required: true , multi: true , options: {variant: ['', 'isbutton']} }
                                  },
                                  content:      false
                                });
                                und hier die konfig:
                                Code:
                                 <shutter format="%.0f %" shortaddr="4/2/12" shorttime="500" uplabel="up" upvalue="0" downlabel="down" downvalue="1" align="center" infoposition="1" change="relative">
                                        <layout colspan="4" />
                                  <label>Storen</label>
                                        <address transform="DPT:5.001" mode="read" variant="display">4/2/13</address>
                                  <address transform="DPT:1.001" mode="write" variant="button">4/2/11</address>
                                  <address transform="DPT:1.001" mode="write" variant="button">4/2/12</address>
                                   </shutter>

                                Kommentar

                                Lädt...
                                X