Ankündigung

Einklappen
Keine Ankündigung bisher.

mpchart

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

    [EibStudio] mpchart

    Guten Abend

    Ich versuche meinen El. Energieverbrauch grafisch darzustellen. Nun scheint das zurücksetzten des Counters, EMchartCounter, irgendwie früher zu geschehen als das mpchart diesen schreiben kann. Ich habe versucht Rückgabeergebnis auszuwerten aber dies scheint auch nicht zu funktionieren. Resultat: es wird kein Verlauf aufgezeichnet

    //hier werden die Telegramme gezählt
    if event ("El. Energie [10 Wh Imp]-0/2/1") then {
    EMgrandTotal = EMgrandTotal + Impuls;
    EMcounter = EMcounter + Impuls;
    EMchartCounter = EMchartCounter + Impuls
    } endif

    //hier soll alle 5 Minuten der Wert in den Chart geschrieben werden
    if cycle(5,0) then { EMchartValueSaved=mpchart(EMchartID,Time,convert(E MchartCounter,EMconversion),0,SmartMeteringPageID)
    } endif

    //und hier soll der Zähler wieder neu gestartet werden
    if change (EMchartValueSaved) then {
    EMchartCounter = 0u16
    } endif

    Hat jemand eine Idee wie ich sicherstellen kann das der Wert in die Grafik eingetragen wurde, bevor ich den Zähler zurücksetzte?

    Vielen Dank für Eures Feedback im Voraus,

    Martin

    #2
    Hi Martin,

    warum kannst du den Counter denn nicht gleich zurücksetzen? Also so:
    if cycle(5,0) then {
    mpchart(EMchartID,Time,convert(EMchartCounter,EMco nversion),0,SmartMeteringPageID);
    EMchartCounter=0
    } endif

    Der Wert sollte doch auf jeden Fall in deinem Chart drinstehen. Alles andere klingt irgendwie nach Laufzeitproblem.

    Just my 2 cents,

    Harry

    Kommentar


      #3
      Hallo Harry

      Vielen Dank für Deine Antwort. Das hatte ich am Anfang, aber dann macht er mir eine Null Line, obwohl der EMchartCounter ansich hochzählt. Dachte mir das es hier ein Timing Problem gibt.

      Hab das sogar mit einem Infobutton verifiziert. Im Infobutton sehe ich den Aktuellen Wert, und ich kann sogar beobachten das er einen Nullpunkt im Chart macht und den Wert nachher auch auf Null zurücksetzt.

      Gruss,

      Martin

      Kommentar


        #4
        Martin,

        mir düngt da schwer, daß es nur in deinem Convert() liegen kann den du "inline" verwendest. Da hast du allerdings nicht den ganzen Code gepostet, also kann man dazu leider nix sagen.

        Wenn du mal die den hier selbst nochmal in eine Variable steckst:
        EMConverted = convert(EMchartCounter,EMconversion)
        und dann mal mit dem Debugger guckst.

        Täte mich schon interessieren, denn ich habe in den nächsten Tagen genau die gleich Aufgabe.

        Grüße,

        Harry

        Kommentar


          #5
          Guten Morgen Harry

          Das teste ich gleich und werde es hier posten.

          Gruss,

          Martin

          Kommentar


            #6
            Vielen Dank Harry,

            es scheint genau an dem gelegen zu haben:

            if cycle(5,0) then {
            EMconverted = convert(EMchartCounter,EMconversion);
            mpchart(EMchartID,Time,EMconverted,0,SmartMetering PageID);
            EMchartCounter = 0u16
            } endif

            Gruss,

            Martin
            Angehängte Dateien

            Kommentar


              #7
              Zitat von kropfm Beitrag anzeigen
              Guten Abend
              Ich versuche meinen El. Energieverbrauch grafisch darzustellen. Nun scheint das zurücksetzten des Counters, EMchartCounter, irgendwie früher zu geschehen als das mpchart diesen schreiben kann.
              Ohne den kompletten Code zu kennen, wird das natürlich schwer hier für uns, aber die Vermutung könnte richtig sein. Ich würde mal folgendes vorschlagen (oder Du schickst mal den kompletten Code):
              [highlight=epc]

              //hier werden die Telegramme gezählt
              if event ("El. Energie [10 Wh Imp]-0/2/1") then {
              EMgrandTotal = EMgrandTotal + Impuls;
              EMcounter = EMcounter + Impuls;
              EMchartCounter = EMchartCounter + Impuls
              } endif

              //hier soll alle 5 Minuten der Wert in den Chart geschrieben werden
              if cycle(5,0) then { mpchart(EMchartID,Time,convert(EMchartCounter,EMco nversion),0,SmartMeteringPageID)
              } endif

              //und hier soll der Zähler wieder neu gestartet werden
              if after(cycle(5,0),100u64) then {
              EMchartCounter = 0u16
              } endif
              [/highlight]
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar

              Lädt...
              X