Ankündigung

Einklappen
Keine Ankündigung bisher.

CometVisu - (interner) Beta-Test

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • makki
    antwortet
    Zitat von Chris M. Beitrag anzeigen
    soeben habe ich die 0.6.0-RC2 gebrancht und als Paket bei SF hochgeladen.
    Sehr schön das was voran geht! Das motiviert glatt das Paket auch noch rauszujagen statt sich morgen neben schlechter Laune noch mit einem schlechten gewissen durch den Familien-Feiertag zu schleppen Aber apt hat heute die Schlacht gewonnen (ich blicks nicht und hab grad keine Lust mehr! 10 Minuten fürs packerl, 2h für die Versionummern damit diese als neuer erkannt wird), es gibt doch kein Paket Ich muss da morgen nochal drüber nachdenken, vermutlich ist irgendwas im repository zerschossen..

    Ich wünsche mir bis dahin bitte eindeutige Nummerische Versionsnummern (1..1000 mit Punkten dazwischen )

    Einen zweiten Wunsch hätte ich aber immernoch fürs finale Release: das minify der JS im release statt das danach im Packerl zu machen (was auch nur bisher zu 50%-> ich machs auch, machs jetzt ja auch halbwegs händisch im packerl..)

    Makki

    Morgen ist ein neuer Tag.. entweder das repository ist geschossen oder ich... Über den Multitrigger, warum es zumindest bei KNX immer nur eine sendende Adresse gibt und ggfs viele hörende die aber nur absolute Werte empfangen, da muss ich auch nochmal was zu loswerden (verstehe ich ehrlichgesagt auch gerade nicht, das ist eindeutig [zumindest solange wir nur ein KNX-transform haben], das war bisher genau richtig wie es ist.. Aber jetzt ist erstmal gut

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    Neues Release: 0.6.0-RC2

    Hallo zusammen,

    soeben habe ich die 0.6.0-RC2 gebrancht und als Paket bei SF hochgeladen.

    Aus dem ChangeLog:
    Code:
    - New Feature: Show version in status bar
    - New Feature: toogle-widget (switch toggling multiple values based on mapping)
    - New Feature: jqclock - a clock widget with statusbar-support
    - infotrigger widget:
      - Show infoposition and format attribute in the editor
      - New Feature: also send absolute value change
    - Add some missing links for DPT sub-types (incomplete; see Artifact 3424149)
    - Feature Request #3113716: "Addresses should be shown"
    - Fix Bug #3423019 and rendering problem in discreet_slim design
    - Fix Bug #3424149
    - Fix Bug #3370929: "Missing text in top line"
    - Fix Bug #3204682: "Caching on web server"
    - Fix Bug #3427309: "GA list unsorted in editor (transform_knx, get_adreesses)"
    - Fix Usability: add a button movement "animation" to the triggers so that a 
      user has immediate feedback
    - Whitespace clean up (DON'T USE TABS IN THE CODE!)
    
    Config changes:
    - As the infotrigger can send absolute values now and the distinguishing of the
      addesses for the relative mode based on the readonly attribute was unusual,
      the new version is using the variant attribute of the address element now.
      This will break backward compatability!
    Wie hier im ChangeLog zu lesen und vor ein paar Postings hier im Thread auch: der Infotrigger hat einige Änderungen hinter sich => bitte eigene Config anpassen und ausgiebig testen!

    Für diesen Release-Candidate konnte ich vorher eigentlich alle offenen Bugs entweder schließen oder diese so einstufen, dass die erst nach der öffentlichen Beta gefixt werden.

    Sollten jetzt keine gravierenden Bugs mehr auftauchen oder die große Mehrheit ein Feature eskalieren, dann wird diese Version zur 0.6.0, d.h. unserer öffentlichen Beta, umbenannt.

    => Bitte ausgiebig testen!
    Ich plane dafür jetzt mal etwas über einer Woche ein.

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Zitat von Chris M. Beitrag anzeigen
    Das ist schon mal sehr interessant - und ein Bereich in dem wohl bisher gar nicht getestet wurde...
    Kannst Du das auch reproduzieren, wenn auf dem Bus Traffic ist, aber die aktuelle Config nur auf GAs hört, die am Bus nicht gesendet werden?
    Gleiches Verhalten. Es muss auf einer GA Traffic kommen, die in der Visu verwendet wird.

    Ich habe jetzt folgende Lösung (für "normale" Visu-Seiten ist es ja eh kein Problem) für das Pageswitch-Problem:

    Code:
    update: function(e, data) { 
      if (data==01) {
        scrollToPage(this.attributes.path.nodeValue, 1);
        visu.write(e.type.substr(1), transformEncode("DPT:1.001", 0));
      }
    },
    Ob das so elegant ist, sei mal dahingestellt, positiv könnte man argumentieren: Wenn auf der GA eine "1" kommt, ist das der Befehl, die Seite anzuzeigen, wenn eine "0" kommt, ist das die Rückmeldung "habe ich gemacht". Funktioniert jedenfalls einwandfrei.

    Gruss,

    der Jan

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    Das ist schon mal sehr interessant - und ein Bereich in dem wohl bisher gar nicht getestet wurde...
    Kannst Du das auch reproduzieren, wenn auf dem Bus Traffic ist, aber die aktuelle Config nur auf GAs hört, die am Bus nicht gesendet werden?

    Ich konnte ein seltsammes Verhalten beobachten, wenn ich eine ziemlich leere Config erstelle mit nur einem Switch und in diesem nur eine GA enthalten ist, die nicht gesendet wird. Der Traffic am Bus ist meine Wohnung, d.h. nicht wirklich still...
    Ergebnis ist dann, dass ein r abgesetzt wird (http://wiregate/cgi-bin/r?s=SESSION&a=14/1/9&t=0) und nach ziemlich genau einer Sekunde eine leere Antwort mit Status 200 kommt.
    => Im Sekundentakt werden Verbindungen abgesetzt...
    Erwartet hätte ich, dass die Verbindung bis zu einem Timeout offen bleibt und erst dann der Nachfolger abgesetzt wird.
    @Makki: hast Du das auch? Ist das ein Problem vom Backend?

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Zitat von Chris M. Beitrag anzeigen
    Ja.

    OK, dann kommen wir der Sache schon näher.

    Alle dort im data geführten Addressen werden nach geupdated.

    => Aber wieso stehen alle Addresse im Data?!?

    Was sagt den die Bus-Kommunikation zu diesem Zeitpunkt?

    (Ich kann bei mir dieses Verhalten immer noch nicht nachstellen, data sieht so aus wie erwartet)
    So. Ich weiss jetzt, wann es passiert: Immer dann, wenn auf dem Bus nichts los ist. Ich habe testweise in der ETS eine GA die in der Visu angezeigt wird alle 60s senden lassen und es passiert genau nichts. Stelle ich das ab, habe ich wieder alle ca. 130s einen kompletten Reload. Ich vermute mal, das liegt daran, dass in dem Fall

    watchdog.ping()

    in Z. 61 der cometvisuclient.js nicht ausgeführt wird und deswegen angenommen wird, dass die Session tot ist und ein kompletter Reload durchgeführt wird.

    Gruss,

    der Jan

    Edit: Das ist defintiv so. Ich habe mir ein Plugin "Keepalive" angelegt und lasse damit alle 60s eine 1 auf eine GA schreiben, die in der Visu angezeigt wird. Diese Full-Updates gibt es nicht mehr. Im Allgemeinen stellt das alles kein Problem dar, weil ja nur die Anzeigen upgedatet werden. Woran ich allerdings gerade gearbeitet habe war "page-switch-by-ga". Das läuft soweit, nur wird der dann bei einem "Full-Update" auch ausgeführt und das ist nicht Sinn der Sache. Genauso wird das im Augenblick noch bei einem Neu-Aufruf der Visu-Seite, weil da ja auch ein Full-Update durchgeführt wird. Lösung dafür habe ich noch keine, eventuell braucht man da ein "Mich bitte nicht automatisch updaten"-Flag.

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    Da der Thread inzwischen ziemlich unübersichtlich ist, habe ich leider nicht den passenden Beitrag gefunden zum zitieren

    IIRC hatte wir uns drauf geeinigt, dass besser jetzt noch Config-Zerstörende Änderungen kommen (trotz Feature Freeze) als nach 0.6.0 - genau den habe ich jetzt gemacht:

    Der infotrigger ist jetzt sowohl relativ als auch absolut benutzbar.
    Relativ ist gleich dem alt bekannten Verhalten, d.h. auf einer GA wird gehört und dieser Wert angezeigt, auf einer anderen GA ein Delta-Wert gesendet. Eine Logik (z.B. Plugin) rechnet denn das Delta uf den Wert und schickt den dann über den Bus. Vergleichbar mit dem KNX-Dim-Befehl
    Absolut heißt, dass das Widget selbst den neuen Wert berechnet und den neuen Wert über den Bus an alle sendet.

    Dazu gibt man im Widget selbst im Attribut "change" vor, ob das Widget "absolute" oder "relative" arbeiten soll.
    Im relativen Modus wird nun das bekannte Attribut "variant" bei den Address-Elementen genutzt um per "absoulte" den Info-Wert oder "relative" die GA für Delta-Telegramme zu definieren.

    PS @Julian: Was ich jetzt noch gerne hätte, wäre dem Editor sagen zu können, welchen "Datentyp" ich bei Variant erwarte ähnlich den normalen Attributen. Dann könnte man da auch Listen hinterlegen, die dem Endanwender deutlich weiterhelfen könnten...

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    Zitat von JNK Beitrag anzeigen
    aus der pure.js?
    Ja.
    Zitat von JNK Beitrag anzeigen
    Edit: es gibt allerdings einen Unterschied: Wenn ein Telegramm kam, dann steht in data (Z. 67 der cometvisuclient.js) nur eine GA (oder wenige, wenn die Telegramme sehr zeitnah hintereinander kamen), bei den "Nicht-Telegramm-Updates" alle, die überhaupt definiert wurden.
    OK, dann kommen wir der Sache schon näher.

    Alle dort im data geführten Addressen werden nach geupdated.

    => Aber wieso stehen alle Addresse im Data?!?

    Was sagt den die Bus-Kommunikation zu diesem Zeitpunkt?

    (Ich kann bei mir dieses Verhalten immer noch nicht nachstellen, data sieht so aus wie erwartet)

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Zitat von Chris M. Beitrag anzeigen
    Klar, an der Stelle im jquery.js kommen alle Trigger vorbei die es gibt. Neben den ganzen GAs auch so Sachen wie AJAX-Calls, etc. Schau einfach mal auf type oder event.type an dieser Stelle.

    Das braucht uns aber nicht weiter interessieren, da das Bind im Widget ja nur auf die dort relevanten Events hört, sprich: die anderen schon ausgefiltert sind. Und diese Events heißen ja '_'+GA. Folglich dürfen die nur aufgerufen werden, wenn ein entsprechendes Paket am Bus war.

    Mal ein anderer Versuch, das Thema einzukreisen:
    Passiert das auch bei einem normalen Switch-Widget (d.h. Breakpoint auf Zeile 339)?
    ist 339

    var element = $(this);

    aus der pure.js? Dann ja, da macht es das gleiche. Habe ich gerade ausprobiert.

    Gruss,

    der Jan

    Edit: es gibt allerdings einen Unterschied: Wenn ein Telegramm kam, dann steht in data (Z. 67 der cometvisuclient.js) nur eine GA (oder wenige, wenn die Telegramme sehr zeitnah hintereinander kamen), bei den "Nicht-Telegramm-Updates" alle, die überhaupt definiert wurden.

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    Zitat von JNK Beitrag anzeigen
    Ich könnte Dir meine structure_pure.js schicken. Du kannst aber auch einfach im Firebug einen Breakpoint auf Zeile 2124 im jquery.js setzen und dann ist das Problem schon offensichtlich. Es werden da Trigger versendet, obwohl es kein Telegramm vorher gab. Wieso, das weiss ich allerdings noch nicht.
    Klar, an der Stelle im jquery.js kommen alle Trigger vorbei die es gibt. Neben den ganzen GAs auch so Sachen wie AJAX-Calls, etc. Schau einfach mal auf type oder event.type an dieser Stelle.

    Das braucht uns aber nicht weiter interessieren, da das Bind im Widget ja nur auf die dort relevanten Events hört, sprich: die anderen schon ausgefiltert sind. Und diese Events heißen ja '_'+GA. Folglich dürfen die nur aufgerufen werden, wenn ein entsprechendes Paket am Bus war.

    Mal ein anderer Versuch, das Thema einzukreisen:
    Passiert das auch bei einem normalen Switch-Widget (d.h. Breakpoint auf Zeile 339)?

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Zitat von Chris M. Beitrag anzeigen
    Aus dem Stehgreif kann ich leider nicht helfen - gibt es eine einfache Möglichkeit das nachzustellen?
    Ich könnte Dir meine structure_pure.js schicken. Du kannst aber auch einfach im Firebug einen Breakpoint auf Zeile 2124 im jquery.js setzen und dann ist das Problem schon offensichtlich. Es werden da Trigger versendet, obwohl es kein Telegramm vorher gab. Wieso, das weiss ich allerdings noch nicht.

    Gruss,

    der Jan

    Edit: Also, das ganze passiert ca. alle 130 s, der Stack sagt:

    trigger(event=Object { type="_7/7/7", timeStamp=1319974597480, jQuery1319973747799=true}, data="01", elem=undefined)jquery.js (Zeile 2124)
    update(json=Object { 0/1/1="6B65696E65204D656C64756E6700", 1/0/100="00", 1/0/110="00", mehr...})templateengine.js (Zeile 33)
    handleRead(json=Object { d={...}, i=63764})cometv...ient.js (Zeile 68)
    handleSuccess(s=Object { url="/cgi-bin/r?s=SESSION&a=...0/2&a=6/0/3&a=0/1/1&t=0", global=true, type="GET", mehr...}, xhr=XMLHttpRequest { responseText="{"d": {"0/1/1":"6B65696.../7/7":"01"},"i":63764}\n", response="{"d": {"0/1/1":"6B65696.../7/7":"01"},"i":63764}\n", status=200, mehr...}, status="success", data=Object { d={...}, i=63764})jquery.js (Zeile 6170)
    onreadystatechange(isTimeout=readystatechange )jquery.js (Zeile 6004)

    In gewissen Abständen werden also wohl alle update-Events ausgeführt. Jetzt wär es nur interessant, wie man einzelne davon ausnehmen kann. Ich werde das weiter untersuchen. Trotzdem wäre jede Hilfe willkommen.

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    Zitat von JNK Beitrag anzeigen
    Ich habe an ein Widget eine GA gebunden, mit

    Code:
    name.bind(address, this.update)
    und

    Code:
    update: function(e, data) {  
    ... diverser Code ...
        },
    die update-Routine wird auch wunderbar aufgerufen, wenn ein Telegramm an die passende GA kommt. Nur wird die Update-Routine auch hin und wieder aufgerufen, wenn definitiv kein Telegramm kam. Wie kann ich das programmtechnisch unterscheiden?
    Dieses Verhlaten kann ich nicht nachvollziehen und vom Code her sehe ich auch keine Möglichkeit dafür.

    Das Bind sagt ja dass auf den Event-Typen '_' + GA (also z.B. '_1/2/3') gehört werden soll. Und nur ein KNX-Paket mit dieser GA löst diesen Event aus.

    Bist Du sicher, dass Du nicht wo anders in der Config das gleiche Widget verwendet hast, das natürlich auf andere GAs hört?
    Die Update-Routine ist ja bei allen Instanzen dieses Widget genau die gleiche - nur this, e und d sind halt spezifisch und zeigen wo gerade "gearbeitet" wird.
    Hier kann man sich selbst leicht in die Irre führen. Schau einfach im FireBug ob das this auch auf das aktuelle Widget von Interesse zeigt...

    Einen Kommentar schreiben:


  • makki
    antwortet
    Also, dann nochmal ein Machtwort: ich denke es würde uns allen brutal helfen wenn Postings:

    - zur CV selbst hier erfolgen (Client, JS, das vorletzte Posting von JNK ist ein gutes Beispeil was hierher gehört) -> für Bugs s.o. bzw. für "sichere" Bugs noch lieber direkt auf SF einen Bug anlegen.
    - zu möglichen Bugs, rendering-problemen: hier

    - zu anderen Problemen: (installation,...) bitte einfach einen neuen Thread anlegen! Dem wird auch Aufmerksamkeit gewidmet.. (Aber nicht dieselbe in sekundenfrist wie..)
    Wir wollen hier ja nicht den Preis für den längsten Thread gewinnen Man sollte immer bedenken, das jeder involvierte bei einem Post ggfs. ein eMail erhält (was auch ganz gut&praktisch ist) nur wenn man eher aktiv ist, dann erhält man dann ein email, weil jemand im Thread (wahlloses Beispiel) "Heimautomatisierung mit xy" "geht das auch mit abc so?" frägt..

    Makki

    Einen Kommentar schreiben:


  • daviid
    antwortet
    @Chris, Visu=!Logik is völlig klar, hatte mir nur gedacht der Thread is eh schon so lang ... aber um die Uhrzeit schlaf ich wohl geistik schon ...

    @Makki, atm=at the moment

    Sry für die Threadschändung :P

    Einen Kommentar schreiben:


  • makki
    antwortet
    Mein AKF (Abkürzungfimmel) kann "atm" gerade nicht auflösen aber vielleicht ists PCMCIA (People cannot memorize computer industrie acronyms)
    Off-Topic ist es aber ganz sicher, Logik-Engine != CometVisu, also wenn dann in entspr. Thread und wie es darum gerade steht liest man auch dort..

    Edit: hat sich überschnitten, @chris: schön&gut finde ich das auch nicht aber wenn es denn so ist und niemand mit "ihr macht doch nur XY falsch" daherkommt dann ist es eben so.. und es muss eine Lösung her, die Schuldfrage interessiert weder mich noch den Anwender..

    Makki

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    Zitat von makki Beitrag anzeigen
    @Chris: einverstanden mit unconditional config-get (also immer GET+Timestamp) ? Wenn das in FF&Crome über drei versionen 100% sauber anders geht, bin ich der erste der es abschalten will.. Hier&jetzt ist dem aber nicht so..
    Immer doof wenn man etwas sauberes dem unsauberen opfern muss. Aber ja, ich denke auch, dass das der pragmatisch sinnvolle Weg ist.
    Zitat von daviid Beitrag anzeigen
    Ich hab mal ne ganz andere Frage.
    [...]
    Logik-Engine
    [...]
    is zwar bissel OT aber was solls ...
    Der Thread ist eh schon sehr voll.
    => Hier in diesem Thread sag ich nichts dazu.

    Einen Kommentar schreiben:

Lädt...
X