Ankündigung

Einklappen
Keine Ankündigung bisher.

Rolladen

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

  • amaridian
    antwortet
    Ich habe das so wie auf der angehängten Grafik zu sehen gelöst. Die vier Zwischenpositionen reichen für mich völlig aus und es lässt sich ohne große Erklärungen bedienen.

    Der Code dazu:
    [WICHTIG]Das ist die SVN-Version... so wie dargestellt geht das in der aktuellen Version nicht mit dem Editor[/WICHTIG]
    Code:
    <mapping name="Auf_Ab">
      <entry value="0"><icon name="steuer_auf"/> Auf</entry>
      <entry value="1"><icon name="steuer_ab"/> Ab</entry>
    </mapping>
    <mapping name="Stop">
      <entry value="1"><icon name="audio_stop"/> Stop</entry>
    </mapping>
    <mapping name="Positionen">
      <entry value="20">20%</entry>
      <entry value="40">40%</entry>
      <entry value="60">60%</entry>
      <entry value="80">80%</entry>
    </mapping>
    
    [...]
    
    <group>
        <layout colspan="5" />
        <text>
            <layout colspan="1" />
            Jalousien:
        </text>
        <trigger value="0" mapping="Auf_Ab">                
            <layout colspan="1" />
            <address transform="DPT:1.008" type="">......</address>
        </trigger>
        <trigger value="1" mapping="Stop">
            <layout colspan="1" />
            <address transform="DPT:1.008" type="">......</address>
        </trigger>
        <trigger value="1" mapping="Auf_Ab">
            <layout colspan="1" />
            <address transform="DPT:1.008" type="">......</address>
        </trigger>
    </group>
    <group>
        <layout colspan="7" />
        <text>
            <layout colspan="1" />
            Position:
        </text>
        <trigger value="20" mapping="Positionen">
            <layout colspan="1" />
            <address transform="DPT:5.001" type="">......</address>
        </trigger>
        <trigger value="40" mapping="Positionen">
            <layout colspan="1" />
            <address transform="DPT:5.001" type="">......</address>
        </trigger>
        <trigger value="60" mapping="Positionen">
            <layout colspan="1" />
            <address transform="DPT:5.001" type="">......</address>
        </trigger>
        <trigger value="80" mapping="Positionen">
            <layout colspan="1" />
            <address transform="DPT:5.001" type="">......</address>
        </trigger>
    </group>
    Angehängte Dateien

    Einen Kommentar schreiben:


  • iwan
    antwortet
    Ich habe das ganze noch etwas anpassen müssen.
    Die Android Tablets haben die doofe Angewohnheit nach dem touchstart gleich einen mousedown und moudeup zu "senden"...
    Das habe ich nun noch abgefangen.
    Hier der Code:
    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 = "";
     var lastevent;
        // create buttons + info
        var buttons = $('<div style="float:left;"/>');
        var buttonCount = 2;
     
        var actordown = '<div class="actor shutterUnpressed 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 touchstart', this.mousedown).bind( 'mouseup touchend', this.mouseup ).bind( 'mouseout',this.mouseout );
        var actorup = '<div class="actor shutterUnpressed 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 touchstart', this.mousedown).bind( 'mouseup touchend', this.mouseup ).bind( 'mouseout',this.mouseout );
        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('shutterInvisible');
      },
      action: function() {
      var data = $(this).data();
      var value = data.value;
     
      var relative = ( data.change != 'absolute' );
      if( !relative )
      {
        value = parseFloat($(this).parent().find('.shutterInvisible').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(event) {
      if(typeof lastevent === 'undefined'){  lastevent = ""; };
     if(typeof lasteventhist === 'undefined'){  lasteventhist = ""; };
     if(lastevent !== 'touchstart'){
     lastevent = event.type;
      var element = $(this);
      element.removeClass('shutterUnpressed').addClass('shutterPressed');
      downtime = new Date().getTime();
      clicktype = "long";
      timeout=setTimeout(function(){element.trigger('action');},element.data().shorttime);
     }
     },
     mouseup: function(event) {
      if(lastevent !== 'touchstart'){
       var element = $(this);
       element.removeClass('shutterPressed').addClass('shutterUnpressed');
       clearTimeout(timeout)
       if ((new Date().getTime()-downtime) < element.data().shorttime){
         clicktype = "short";
         element.trigger('action');
       }
      }
      lastevent = event.type;
     },
     mouseout: function() {
       var element = $(this);
      element.removeClass('shutterPressed').addClass('shutterUnpressed');
      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
    });

    Einen Kommentar schreiben:


  • chriss1980
    antwortet
    Zitat von iwan Beitrag anzeigen
    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.
    Das finde ich gut. Spricht eigentlich etwas dagegen, dieses Feature auch in den ganz normalen Taster (d.h. Trigger) zu übernehmen?

    Einen Kommentar schreiben:


  • iwan
    antwortet
    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>

    Einen Kommentar schreiben:


  • haus42
    antwortet
    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.

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    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

    Einen Kommentar schreiben:


  • haus42
    antwortet
    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. :-(

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    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.

    Einen Kommentar schreiben:


  • haus42
    antwortet
    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?

    Einen Kommentar schreiben:


  • makki
    antwortet
    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

    Einen Kommentar schreiben:


  • devilchris
    antwortet
    Editor öffnen

    Hallo NetFritz,

    die Frage hatte ich mir vor kurzer Zeit auch gestellt.

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

    Einen Kommentar schreiben:


  • NetFritz
    antwortet
    Hallo
    Die XML kannst Du auch im Browser so ansehen.
    "wiregatexxx/visu/visu_config.xml"
    Gruß NetFritz

    Einen Kommentar schreiben:


  • Spartaner
    antwortet
    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.

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    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)

    Einen Kommentar schreiben:


  • mclb
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X