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.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Rolladen
Einklappen
X
-
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
-
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
-
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).
ich hab meine Raffstores im Moment mit Slidern dargestellt,
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
-
Hallo
Die XML kannst Du auch im Browser so ansehen.
"wiregatexxx/visu/visu_config.xml"
Gruß NetFritzKNX & 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
-
Zitat von Spartaner Beitrag anzeigenDie Zeiten vom Gruppenmonitor und eib.log sind zwar nicht synchron, aber scheint sonst alles vorhanden zu sein.
Zum Kern: evtl. ein DPT-Problem?
MakkiEIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
-> Bitte KEINE PNs!
Kommentar
-
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 -
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
Code:<info format="%.1f°C"> <label>Temperatur</label> <address transform="DPT:9.001" readonly="true" variant="">5/1/2</address> </info>
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
-
Zitat von haus42 Beitrag anzeigenLeider 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).
Zitat von haus42 Beitrag anzeigenKann 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?
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.
Kommentar
-
Zitat von Chris M. Beitrag anzeigenHast Du in einem anderen Widget evtl. ein <address> Element mit leerer Adresse?
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 anzeigenNein, 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.
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
-
Zitat von haus42 Beitrag anzeigenGibt es eigentlich irgendwo eine Übersicht der Plugins?
Ja gukst Du hier: SourceForge.net Repository - [openautomation] Index of /wiregate/plugin/genericGrüsse Bodo
Fragen gehören ins Forum, und nicht in mein Postfach;
EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;
Kommentar
-
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
-
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 });
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
Kommentar