Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme rund um model.addUpdateListener Aufruf

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

    Probleme rund um model.addUpdateListener Aufruf

    In einer dynamischen SVG nutze ich mehrere KNX-Werte - aber aus irgendeinem Grund komme ich an einen Wert nicht ran.
    Meine JS-Datei zur SVG sieht wie folgt aus:
    Code:
    // import namespaces from parent window
        const
            cv = window.parent.cv;
            model = cv.data.Model.getInstance();
            KurveGA = '3/7/51';
            KurveTransform = 'DPT:9.002';
            ParVerschGA = '3/7/52';
            ParVerschTransform = 'DPT:9.002';
            MaxVorlaufGA = '3/7/55';
            MaxVorlaufTransform = 'DPT:9.001';
            MinVorlaufGA = '3/7/54';
            MinVorlaufTransform = 'DPT:9.001';
            AussentempGA = '0/6/3';
            AussentempTransform = 'DPT:9.001';
            SollVorlauftempGA = '3/7/46';
            SollVorlauftempTransform = 'DPT:9.001';
        var //global
            Kurve = -100;
            ParVersch = -100;
            MaxVorlauf = -100;
            MinVorlauf = -100;
            Aussentemp = -100;
            SollVorlauftemp = -100;
            neuerSollpunkt = false;
            neueKurve = false;
            initialisierung = true;​
    <...viele weitere Zeile Code...>

    Code:
    function update(adress, data) // overload the handler
    {
    ...
    switch(adress)
      {
    ...
      case AussentempGA:
        Aussentemp = cv.Transform.decode({transform: AussentempTransform}, data);
        if (Aussentemp === undefined || isNaN(Aussentemp))
        {
          return;
        }
        neuerSollpunkt = true;
        break;
      case SollVorlauftempGA:
        SollVorlauftemp = cv.Transform.decode({transform: SollVorlauftempTransform}, data);
        if (SollVorlauftemp === undefined || isNaN(SollVorlauftemp))
        {
        return;
        }
        neuerSollpunkt = true;
        break;
      }​
    <...viele weitere Zeile Code...>
    Code:
        model.addUpdateListener(KurveGA, update, this);
        model.addUpdateListener(ParVerschGA, update, this);
        model.addUpdateListener(MaxVorlaufGA, update, this);
        model.addUpdateListener(MinVorlaufGA, update, this);
        model.addUpdateListener(AussentempGA, update, this);​​
        model.addUpdateListener(SollVorlauftempGA, update, this);

    Aus einem mir noch nicht ersichtlichen Grund führt die letzte Zeile nicht dazu, dass die Variable SollVorlauftemp mit dem Wert der KNX-Adresse SollVorlauftempGA beschrieben wird.
    Code:
        model.addUpdateListener(SollVorlauftempGA, update, this);

    Bei den anderen 5 Adressen oder addUpdateListener-Aufrufen, die ich exakt genauso definiert habe, funktioniert es...irgendwie habe ich Tomaten auf den Augen.
    Die GA liefert auch tatsächlich regelmässig Werte, ich zeige sie in der gleichen Visu auch als Wert (also nicht in einer SVG) an.

    Habt Ihr eine Idee, wie ich weiter debuggen könnte um meinem Fehler auf die Schliche zu kommen?

    #2
    Wenn ich im Firefox debugge und auf die Zeile
    Code:
     Aussentemp = cv.Transform.decode({transform: AussentempTransform}, data);​
    einen Breakpoint lege, hält die Logik entsprechend und alle Werte sind für mich plausibel.



    Wenn ich dagegen einen Breakpoint auf die Zeile
    Code:
    SollVorlauftemp = cv.Transform.decode({transform: SollVorlauftempTransform}, data);​
    setze, hält der Debugger nie ... also scheint die Zeile nicht erreicht zu werden.



    Wenn ich einen Breakpoint auf die Zeile
    Code:
    model.addUpdateListener(SollVorlauftempGA, update, this);
    oder die Zeile
    Code:
    model.addUpdateListener(AussentempGA, update, this);
    setzte, dann hält der Debugger hier scheinbar, aber ich erhalte auch ein rotes Error-Fenster:




    Zeile 139 im srcScript lautet:
    Code:
                document.getElementById("Kurve1").setAttribute('d', kurve_zeichnen(Kurve, ParVersch, MinVorlauf, MaxVorlauf));
    Zeile 155 im srcScript ist die mit dem Breakpoint:
    Code:
    ​model.addUpdateListener(SollVorlauftempGA, update, this);
    Zuletzt geändert von Robosoc; 30.11.2022, 09:01.

    Kommentar


      #3
      Kompletter Code
      Code:
          // import namespaces from parent window
          const
              cv = window.parent.cv;
              model = cv.data.Model.getInstance();
              KurveGA = '3/7/51';
              KurveTransform = 'DPT:9.002';
              ParVerschGA = '3/7/52';
              ParVerschTransform = 'DPT:9.002';
              MaxVorlaufGA = '3/7/55';
              MaxVorlaufTransform = 'DPT:9.001';
              MinVorlaufGA = '3/7/54';
              MinVorlaufTransform = 'DPT:9.001';
              AussentempGA = '3/7/46';//'0/6/3';
              AussentempTransform = 'DPT:9.001';
              SollVorlauftempGA = '3/7/46';
              SollVorlauftempTransform = 'DPT:9.001';
          var //global
              Kurve = -100;
              ParVersch = -100;
              MaxVorlauf = -100;
              MinVorlauf = -100;
              Aussentemp = -100;
              SollVorlauftemp = -100;
              neuerSollpunkt = false;
              neueKurve = false;
              initialisierung = true;
          // overload the handler
          function update(adress, data) // overload the handler
          {
              const    
                  x_links = 13.216884;
                  x_rechts = 105.74679
                  y_oben = 191.24092;
                  y_unten = 283.77083;          
              function x_pos_abs(x_rel)
              {
                  var diff = x_rechts - x_links;
                  return x_rel*diff+x_links;
              }
              function y_pos_abs(y_rel)
              {
                  var diff = y_unten - y_oben;
                  return y_unten - y_rel*diff;
              }
              function kurve_zeichnen(pKurve, pParVersch, pMinVorlauf, pMaxVorlauf)
              {
                  var t = 'M ';
                  for (var i = 20; i > -16; i--)
                  {
                      var
                          x_abs = x_pos_abs( (20-i) / 35 );
                          formel1 = (i*(-0.18)+Math.pow(i,2)*(-0.005));
                          formel2 = -20+20*(-0.18)+Math.pow(20,2)*(-0.005);
                          formel3 = formel1 - formel2 - 20;
                          formel4 = pKurve*formel3;
                          formel5 = formel4+pParVersch+20;
                          formel = Math.max(pMinVorlauf,Math.min(formel5,pMaxVorlauf));
                          y_abs = y_pos_abs((formel-20)/12);
                      t = t + x_abs + ',' + y_abs + ' ';
                  }
                  return t;
              }
              switch(adress) {
                  case KurveGA:
                      Kurve = cv.Transform.decode({transform: KurveTransform}, data);
                      if (Kurve === undefined || isNaN(Kurve))
                      {
                          return;
                      }
                      neueKurve = true;
                      break;
                  case ParVerschGA:
                      ParVersch = cv.Transform.decode({transform: ParVerschTransform}, data);
                      if (ParVersch === undefined || isNaN(ParVersch))
                      {
                          return;
                      }
                      neueKurve = true;
                      break;
                  case MaxVorlaufGA:
                      MaxVorlauf = cv.Transform.decode({transform: MaxVorlaufTransform}, data);
                      if (MaxVorlauf === undefined || isNaN(MaxVorlauf))
                      {
                          return;
                      }
                      neueKurve = true;
                      break;
                  case MinVorlaufGA:
                      MinVorlauf = cv.Transform.decode({transform: MinVorlaufTransform}, data);
                      if (MinVorlauf === undefined || isNaN(MinVorlauf))
                      {
                          return;
                      }
                      neueKurve = true;
                      break;
                  case AussentempGA:
                      Aussentemp = cv.Transform.decode({transform: AussentempTransform}, data);
                      if (Aussentemp === undefined || isNaN(Aussentemp))
                      {
                          return;
                      }
                      neuerSollpunkt = true;
                      break;
                  case SollVorlauftempGA:
                      SollVorlauftemp = cv.Transform.decode({transform: SollVorlauftempTransform}, data);
                      if (SollVorlauftemp === undefined || isNaN(SollVorlauftemp))
                      {
                          return;
                      }
                      neuerSollpunkt = true;
                      break;    
              }
              if (neuerSollpunkt && SollVorlauftemp != -100 && Aussentemp != -100 )
              {
                  var y_abs = y_pos_abs((SollVorlauftemp-20)/12);
                  var x_abs = x_pos_abs((20-Aussentemp)/35);
                  document.getElementById("line_Aussentemp").setAttribute('d', 'M'+x_abs+',283.77082 V'+ y_abs);
                  document.getElementById("line_Vorlauftemp").setAttribute('d', 'M13.227492,'+y_abs+' H'+ x_abs);
                  document.getElementById("Sollpunkt").setAttribute('cx', x_abs);
                  document.getElementById("Sollpunkt").setAttribute('cy', y_abs);
                  document.getElementById("Aussentemp").firstChild.innerHTML = Aussentemp.toFixed(1) +' '+unescape("%B0")+'C';
                  document.getElementById("SollVorlauf").firstChild.innerHTML = SollVorlauftemp.toFixed(1) +' '+unescape("%B0")+'C';
                  if (((20-Aussentemp)/35) > 0.5)
                  {
                      document.getElementById("Aussentemp").firstChild.setAttribute('x', x_abs + 0.6);
                  } else {
                      document.getElementById("Aussentemp").firstChild.setAttribute('x', x_abs - 10);
                  }
                  if (((SollVorlauftemp-20)/12) > 0.5)
                  {
                      document.getElementById("SollVorlauf").firstChild.setAttribute('y', y_abs + 3);
                  } else {
                      document.getElementById("SollVorlauf").firstChild.setAttribute('y', y_abs - 1.5);
                  }
                  neuerSollpunkt = false;
              }
              if (neueKurve && Kurve != -100 && ParVersch != -100 && MaxVorlauf != -100 && MinVorlauf != -100 )
              {
                  document.getElementById("Kurve1").setAttribute('d', kurve_zeichnen(Kurve, ParVersch, MinVorlauf, MaxVorlauf));
                  if (initialisierung)
                  {
                      initialisierung = false;
                      //default-Kurve zeichnen
                      document.getElementById("Kurve2").setAttribute('d', kurve_zeichnen(1, 2, 20, 28));
                      //Bisherige-Kurve zeichnen
                      document.getElementById("Kurve3").setAttribute('d', kurve_zeichnen(Kurve, ParVersch, MinVorlauf, MaxVorlauf));
                  }
                   neueKurve = false;
              }
          }
          model.addUpdateListener(KurveGA, update, this);
          model.addUpdateListener(ParVerschGA, update, this);
          model.addUpdateListener(MaxVorlaufGA, update, this);
          model.addUpdateListener(MinVorlaufGA, update, this);
          model.addUpdateListener(SollVorlauftempGA, update, this);
          model.addUpdateListener(AussentempGA, update, this);

      Kommentar


        #4
        Zitat von Robosoc Beitrag anzeigen
        Code:
        // import namespaces from parent window
        const
        cv = window.parent.cv;
        model = cv.data.Model.getInstance();
        KurveGA = '3/7/51';
        KurveTransform = 'DPT:9.002';
        ParVerschGA = '3/7/52';
        ParVerschTransform = 'DPT:9.002';
        MaxVorlaufGA = '3/7/55';
        MaxVorlaufTransform = 'DPT:9.001';
        MinVorlaufGA = '3/7/54';
        MinVorlaufTransform = 'DPT:9.001';
        AussentempGA = '3/7/46';//'0/6/3';
        AussentempTransform = 'DPT:9.001';
        SollVorlauftempGA = '3/7/46';
        SollVorlauftempTransform = 'DPT:9.001';
        var //global
        Kurve = -100;
        ParVersch = -100;
        MaxVorlauf = -100;
        MinVorlauf = -100;
        Aussentemp = -100;
        SollVorlauftemp = -100;
        neuerSollpunkt = false;
        neueKurve = false;
        initialisierung = true;
        Hierfür egal, aber der Code macht nicht exakt was Du willst.
        Um in jeder Zeile ein "const" zu haben darfst Du den Ausdruck nicht mit einem Strichpunkt beenden, sondern musst den mit einem Komma weiterführen.

        Das Problem wird hier liegen:
        Zitat von Robosoc Beitrag anzeigen
        Code:
        AussentempGA = '3/7/46';//'0/6/3';
        AussentempTransform = 'DPT:9.001';
        SollVorlauftempGA = '3/7/46';
        SollVorlauftempTransform = 'DPT:9.001';
        ​
        ...
        
        switch(adress) {
        case AussentempGA:
        ...
        break;
        case SollVorlauftempGA:
        ...
        break;
        Da SollVorlauftempGA == AussentempGA wird das untere case nie erreicht. Der macht das obere und hört dann wegen dem break (oder gar dem return) vor erreichen des nächsten case wieder auf.
        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


          #5
          Oh nein, Chris, es tut mir Leid. Der Komplette Code in Beitrag # 3 war leider nicht korrekt. Das war ein temporärer Code, den ich ausprobiert hatte um zu prüfen (oder besser gesagt auszuschließen), ob es daran liegt, dass der Name "SollVorlauftemp" länger ist als alle anderen Namen oder dass der addUpdateListener Aufruf der Letzte ist...denn das waren die einzigen Dinge, die mir unterschiedlich vorkam.en

          Der Code, der zu meinem Problem führt ist an denen Stellen, die Du aufgezeigt hast 100% mit dem in Beitrag # 1 identisch. Ich werde gleich den korrekten Kompletten Code posten. Die "Aussentemp" wird korrekt gezogen...aber die "SollVorlauftemp" macht mir Probleme.
          Zuletzt geändert von Robosoc; 30.11.2022, 21:13.

          Kommentar


            #6
            Dies ist mein kompletter Code, der für mich nicht nachvollziehbar nicht zum gewünschten Ergebnis führt:
            Code:
                // import namespaces from parent window
                const
                    cv = window.parent.cv;
                    model = cv.data.Model.getInstance();
                    KurveGA = '3/7/51';
                    KurveTransform = 'DPT:9.002';
                    ParVerschGA = '3/7/52';
                    ParVerschTransform = 'DPT:9.002';
                    MaxVorlaufGA = '3/7/55';
                    MaxVorlaufTransform = 'DPT:9.001';
                    MinVorlaufGA = '3/7/54';
                    MinVorlaufTransform = 'DPT:9.001';
                    AussentempGA = '0/6/3';
                    AussentempTransform = 'DPT:9.001';
                    SollVorlauftempGA = '3/7/46';
                    SollVorlauftempTransform = 'DPT:9.001';
                var //global
                    Kurve = -100;
                    ParVersch = -100;
                    MaxVorlauf = -100;
                    MinVorlauf = -100;
                    Aussentemp = -100;
                    SollVorlauftemp = -100;
                    neuerSollpunkt = false;
                    neueKurve = false;
                    initialisierung = true;
                // overload the handler
                function update(adress, data) // overload the handler
                {
                    const    
                        x_links = 13.216884;
                        x_rechts = 105.74679
                        y_oben = 191.24092;
                        y_unten = 283.77083;          
                    function x_pos_abs(x_rel)
                    {
                        var diff = x_rechts - x_links;
                        return x_rel*diff+x_links;
                    }
                    function y_pos_abs(y_rel)
                    {
                        var diff = y_unten - y_oben;
                        return y_unten - y_rel*diff;
                    }
                    function kurve_zeichnen(pKurve, pParVersch, pMinVorlauf, pMaxVorlauf)
                    {
                        var t = 'M ';
                        for (var i = 20; i > -16; i--)
                        {
                            var
                                x_abs = x_pos_abs( (20-i) / 35 );
                                formel1 = (i*(-0.18)+Math.pow(i,2)*(-0.005));
                                formel2 = -20+20*(-0.18)+Math.pow(20,2)*(-0.005);
                                formel3 = formel1 - formel2 - 20;
                                formel4 = pKurve*formel3;
                                formel5 = formel4+pParVersch+20;
                                formel = Math.max(pMinVorlauf,Math.min(formel5,pMaxVorlauf));
                                y_abs = y_pos_abs((formel-20)/12);
                            t = t + x_abs + ',' + y_abs + ' ';
                        }
                        return t;
                    }
                    switch(adress) {
                        case KurveGA:
                            Kurve = cv.Transform.decode({transform: KurveTransform}, data);
                            if (Kurve === undefined || isNaN(Kurve))
                            {
                                return;
                            }
                            neueKurve = true;
                            break;
                        case ParVerschGA:
                            ParVersch = cv.Transform.decode({transform: ParVerschTransform}, data);
                            if (ParVersch === undefined || isNaN(ParVersch))
                            {
                                return;
                            }
                            neueKurve = true;
                            break;
                        case MaxVorlaufGA:
                            MaxVorlauf = cv.Transform.decode({transform: MaxVorlaufTransform}, data);
                            if (MaxVorlauf === undefined || isNaN(MaxVorlauf))
                            {
                                return;
                            }
                            neueKurve = true;
                            break;
                        case MinVorlaufGA:
                            MinVorlauf = cv.Transform.decode({transform: MinVorlaufTransform}, data);
                            if (MinVorlauf === undefined || isNaN(MinVorlauf))
                            {
                                return;
                            }
                            neueKurve = true;
                            break;
                        case AussentempGA:
                            Aussentemp = cv.Transform.decode({transform: AussentempTransform}, data);
                            if (Aussentemp === undefined || isNaN(Aussentemp))
                            {
                                return;
                            }
                            neuerSollpunkt = true;
                            break;
                        case SollVorlauftempGA:
                            SollVorlauftemp = cv.Transform.decode({transform: SollVorlauftempTransform}, data);
                            if (SollVorlauftemp === undefined || isNaN(SollVorlauftemp))
                            {
                                return;
                            }
                            neuerSollpunkt = true;
                            break;    
                    }
                    if (neuerSollpunkt && SollVorlauftemp != -100 && Aussentemp != -100 )
                    {
                        var y_abs = y_pos_abs((SollVorlauftemp-20)/12);
                        var x_abs = x_pos_abs((20-Aussentemp)/35);
                        document.getElementById("line_Aussentemp").setAttribute('d', 'M'+x_abs+',283.77082 V'+ y_abs);
                        document.getElementById("line_Vorlauftemp").setAttribute('d', 'M13.227492,'+y_abs+' H'+ x_abs);
                        document.getElementById("Sollpunkt").setAttribute('cx', x_abs);
                        document.getElementById("Sollpunkt").setAttribute('cy', y_abs);
                        document.getElementById("Aussentemp").firstChild.innerHTML = Aussentemp.toFixed(1) +' '+unescape("%B0")+'C';
                        document.getElementById("SollVorlauf").firstChild.innerHTML = SollVorlauftemp.toFixed(1) +' '+unescape("%B0")+'C';
                        if (((20-Aussentemp)/35) > 0.5)
                        {
                            document.getElementById("Aussentemp").firstChild.setAttribute('x', x_abs + 0.6);
                        } else {
                            document.getElementById("Aussentemp").firstChild.setAttribute('x', x_abs - 10);
                        }
                        if (((SollVorlauftemp-20)/12) > 0.5)
                        {
                            document.getElementById("SollVorlauf").firstChild.setAttribute('y', y_abs + 3);
                        } else {
                            document.getElementById("SollVorlauf").firstChild.setAttribute('y', y_abs - 1.5);
                        }
                        neuerSollpunkt = false;
                    }
                    if (neueKurve && Kurve != -100 && ParVersch != -100 && MaxVorlauf != -100 && MinVorlauf != -100 )
                    {
                        document.getElementById("Kurve1").setAttribute('d', kurve_zeichnen(Kurve, ParVersch, MinVorlauf, MaxVorlauf));
                        if (initialisierung)
                        {
                            initialisierung = false;
                            //default-Kurve zeichnen
                            document.getElementById("Kurve2").setAttribute('d', kurve_zeichnen(1, 2, 20, 28));
                            //Bisherige-Kurve zeichnen
                            document.getElementById("Kurve3").setAttribute('d', kurve_zeichnen(Kurve, ParVersch, MinVorlauf, MaxVorlauf));
                        }
                         neueKurve = false;
                    }
                }
                model.addUpdateListener(KurveGA, update, this);
                model.addUpdateListener(ParVerschGA, update, this);
                model.addUpdateListener(MaxVorlaufGA, update, this);
                model.addUpdateListener(MinVorlaufGA, update, this);
                model.addUpdateListener(AussentempGA, update, this);
                model.addUpdateListener(SollVorlauftempGA, update, this);​

            Kommentar


              #7
              In dem Teil vom Code war ich schon länger nicht mehr unterwegs. Aber kann es sein, dass grundsätzlich noch das Abo der GA fehlt - also dass die SVG zwar auf die GA reagieren würde, die CV aber gar nicht weiß, dass sie auf diese GA hören soll?

              Also als Test einfach mal in der normalen Konfig z.B. ein Info-Widget mit der GA 3/7/46 einbauen und dann schauen ob nun der Wert ankommt
              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


                #8
                An sowas hatte ich auch schon gedacht, denn tatsächlich waren die anderen GA alle vorher bereits in der Visu auch an anderen Stellen im Einsatz, nur die Betroffene nicht.

                Deshalb hatte ich die Betroffene dann vorgestern schon in die Visu an anderer Stelle eingebunden (exakt da, wo auch die Aussentemp ansonsten eingebunden ist) ihr Wert wurde mir sofort anschließend angezeigt.

                Deshalb hatte ich oben geschrieben
                Die GA liefert auch tatsächlich regelmässig Werte, ich zeige sie in der gleichen Visu auch als Wert (also nicht in einer SVG) an.

                Kommentar


                  #9
                  Die Frage ist ob auf der Addresse auch regelmässig Änderungen kommen. Wenn Du die GA in die Visu einbaust, dann wird die einmal initial abgefragt und danach gibt es nur noch updates wenn der Wert sich ändert. Wenn nun der SVG-Teil erst initialisiert wird nach dem die initiale Abfrage durch ist bekommt der erstmal nichts bis es einen neuen Wert für diese GA gibt den initialen Wert hat der nicht mitbekommen. Das wäre zumindest eine mögliche Erklärung die mir einfällt.
                  Kannst du mal bewusst eine Wertänderung auf der GA triggern währen die Visu läuft und schauen ob der dann in der SVG ankommt?

                  Ansonsten auch mal einfach ein "console.log(address, data)" in die update-Funktion schreiben, damit man auf der Konsole sehen kann was da so ankommt.
                  Gruß
                  Tobias

                  Kommentar


                    #10
                    Falls meine Annahme stimmt musst Du Dir den initialen Wert einmal selbst holen mit:

                    Code:
                    update(SollVorlauftempGA, model.getState(SollVorlauftempGA));
                    Gruß
                    Tobias

                    Kommentar


                      #11
                      Also, ich bin tatsächlich ein Stück weiter:
                      Insgesamt habe ich vier solcher dynamischer SVG in meiner Vidu, alle bisher mit dem gleichen Verhalten. Jeweils die Variablen 1/7/46 - 2/7/46 - 3/7/46 - 4/7/46 liefern durch addUpdateListener keine Werte. Anders als die anderen GA in den SVG, sind diese vier nirgends in meienr Visu eingebunden.

                      Gestern morgen hatte ich die 3/7/46 auf einer anderen Subpage meiner Visu als Wert eingebunden, dort wurde sie auch sofort angezeigt, in der SVG jedoch noch immer nicht. Ob ich bei dem Versuch vorab wirklich den Cahce gelöscht habe, lässt sich jetzt nicht sagen. Heute morgen jedenfalls funktionierte die SVG mit dem 3/7/46 dann! Es muss also daran liegen, was Tobias hier schon vermutet.

                      Code:
                      update(SollVorlauftempGA, model.getState(SollVorlauftempGA));
                      führt leider nicht zum Erfolg.
                      Inzwischen glaube ich verstanden zu haben, dass die GA-Werte alle in der komplexen model-Datenstruktur liegen. Wenn ich einen Haltepunkt auf diese eben zitierte neue Codezeile setze und mir dann beim "Halten" dann den Tooltipp zu "model" anschaue, sehe ich Folgendes
                      __P_93_0: {...}
                      __P_93_1: {...}
                      __P_93_2: {...}
                      __P_93_3: {...}
                      <prototype>: {...}
                      Im Array (ich nenne es mal so) "__P_93_0: {...}" finde ich die aktuellen Werte aller GA - und genau hier ist sind die drei, die ich nun vermisse nicht enthalten: 1/7/46 - 2/7/46 - 4/7/46

                      Sie werden aber alle drei nach jeder Änderung von 0/6/3 vom TWS auf den Bus geschrieben, sollten also genauso wie die 0/6/3 theoretisch verfügbar sein! MAcht es für die CV einen Unterschied welche PA die GA auf den Bus schreibt?

                      Kommentar


                        #12
                        Die CometVisu sammelt alle GAs die als "read" oder "readwrite" in der Config angegeben sind und holt sich für diese einmalig den aktuellen Wert und subscribed sich dann auf Updates die kommen wenn sich der Wert auf dem Bus ändert. Alles was nicht in dieser Liste ist bekommt demendsprechend auch keine Werte/Wertänderungen. Wenn Du also irgendwo in einem Custom-Code (wozu dein SVG zählt) GAs benutzt, die nicht in der Config sind, dann werden diese ne Werte erhalten.

                        Das was du da als Model-Datenstruktur gefunden hast ist genau das, was mit "model.getState(...)" abgefragt wird. Da landen aber wie schon beschrieben nur Werte drin die in die Config benutzt werden, sonst nichts. Das heißt Du musst die GAs erstmal irgendwie in die Config bringen.
                        Wenn das erledigt ist, funktioniert dann:

                        Code:
                        update(SollVorlauftempGA, model.getState(SollVorlauftempGA));
                        immer noch nicht?
                        Was gibt denn dann "console.log(model.getState(SollVorlauftempGA) )" aus?
                        Gruß
                        Tobias

                        Kommentar


                          #13
                          Also, nachdem ich die vier betroffene Wert in dem XML-Code irgendwo zur Anzeige bringe, stehehn die Werte wie erwartet in meiner dynamischen SVG zur Verfügung und alles läuft wieder so, wie ich das beabsichtigt habe. Vielen Dank für die Hilfe!

                          Mit der Codezeile:
                          Code:
                          update(SollVorlauftempGA, model.getState(SollVorlauftempGA));
                          (bzw dieser Codezeile entsprecehnd auch für die anderen 5 Variablen eingesetzt, läuft es aber noch nicht...das werde ich mir noch genauer anschauen...ich bekomme da auch ein Error rausgeworfen...kann das jetzt aber gerade nicht weiter verfolgen und dokumentieren...folgt in den kommenden Tagen.

                          Kommentar

                          Lädt...
                          X