Ankündigung

Einklappen
Keine Ankündigung bisher.

Diagramm startet auf der falschen Seite

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

    [Webserver] Diagramm startet auf der falschen Seite

    Hallo,

    ich bin jetzt mal bis zur Darstellung der Diagramme im Webserver vorgedrungen. Auf Basis des Beispiels aus dem Handbuch habe ich versucht unseren Ölvebrauch darzustellen.

    Wenn ich die Anzeige dann starte beginnen die angezeigten Punkte auf der linken Seite des Diagramms, dort wo (-24h) steht und erreicht, (wenn man nichts zwischendurch probiert) den rechten Rand (jetzt) erst nach 24 h.

    Bis auf 24h komme ich nur am Wochenende, aber das ist wieder das Thema "remanenter Speicher", das bereits genug diskutiert ist.

    Richtig wäre, wenn die Punkte am rechten Rand auftauchen und dann nach und nach bis zum linken Rand verschoben würden.
    Der schöne Niederrhein läßt Grüssen

    Andreas


    Alter Hof mit neuer Technik

    #2
    Zitat von anlo007 Beitrag anzeigen
    Hallo,
    ich bin jetzt mal bis zur Darstellung der Diagramme im Webserver vorgedrungen. Auf Basis des Beispiels aus dem Handbuch habe ich versucht unseren Ölvebrauch darzustellen.
    Einfach mal beim Systemstart Null-Werte reinschieben...
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Und wie macht man das?! Wie komme ich an den entsprechenden Speicher?

      warum schreibt das Diagramm den neusten Wert nicht immer rechts auf die letzte Position und schiebt vorherige (0)Werte nach links. Das ist doch als normale Abfolge nach 24h bereits programmiert.
      Der schöne Niederrhein läßt Grüssen

      Andreas


      Alter Hof mit neuer Technik

      Kommentar


        #4
        Zitat von anlo007 Beitrag anzeigen
        Und wie macht man das?! Wie komme ich an den entsprechenden Speicher?
        einfach durch schreiben auf das diagramm
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar


          #5
          Hallo,

          für alle die auch das Problem haben:
          Code:
          //                                                              voll-müllen eines Diagramms
          z_an=0b01
          zaehler=0u08
          if after (z_an,10u64) then z_an=AUS;zaehler=zaehler+1 endif
          if after (z_an==AUS,10u64) and zaehler<50 then z_an=EIN; webchart (110,1u08,$alt$c14,$jetzt$c14)endif
          Der schöne Niederrhein läßt Grüssen

          Andreas


          Alter Hof mit neuer Technik

          Kommentar


            #6
            Zitat von anlo007 Beitrag anzeigen
            Hallo,

            für alle die auch das Problem haben:
            ...
            Sehr schöne Lösung einer Schleife!

            Ich setze folgenden Code ein um die Diagramme von 2 bis 7 mit 1 zu füllen:
            Code:
            TIME_1ms = [COLOR=seagreen]1u64[/COLOR]
            TIME_10s = [COLOR=seagreen]10000u64[/COLOR]
            [COLOR=blue]//  Init Chart[/COLOR]
            Init_Chart = [COLOR=seagreen]AUS[/COLOR]
            First_Chart = [COLOR=seagreen]2u08[/COLOR]
            Last_Chart = [COLOR=seagreen]7u08[/COLOR]
            Current_Chart = First_Chart
            count_i = [COLOR=seagreen]0u08[/COLOR]
             
            [COLOR=magenta]if[/COLOR] [COLOR=magenta]after[/COLOR] ( [COLOR=magenta]systemstart[/COLOR](), TIME_10s ) [COLOR=magenta]then[/COLOR] Init_Chart = [COLOR=seagreen]EIN[/COLOR] [COLOR=magenta]endif[/COLOR]
             
            [COLOR=blue]//  Init Charts[/COLOR]
            [COLOR=magenta]if[/COLOR] [COLOR=magenta]after[/COLOR]( Init_Chart [COLOR=#ff00ff]==[/COLOR] EIN, TIME_1ms ) [COLOR=magenta]then[/COLOR] {
              [COLOR=blue]/* rearm trigger */[/COLOR];
              Init_Chart = Init_Chart [COLOR=magenta]xor[/COLOR] [COLOR=seagreen]EIN[/COLOR];
              Init_Chart = Init_Chart [COLOR=#ff00ff]xor[/COLOR] [COLOR=seagreen]EIN[/COLOR];
              [COLOR=blue]/* draw dot */[/COLOR];
              webchart ( Current_Chart , [COLOR=seagreen]1u08[/COLOR], $$c14, $$c14);
              count_i = count_i [COLOR=#ff00ff]+[/COLOR] [COLOR=seagreen]1[/COLOR];
              [COLOR=blue]/* end of chart? */[/COLOR];
              [COLOR=magenta]if[/COLOR] ( count_i > [COLOR=seagreen]47[/COLOR] ) [COLOR=magenta]then[/COLOR] {
                count_i = 0;
                Current_Chart = Current_Chart [COLOR=magenta]+[/COLOR] [COLOR=seagreen]1[/COLOR];
                [COLOR=blue]/* next chart? */[/COLOR];
                [COLOR=magenta]if[/COLOR] ( Current_Chart [COLOR=magenta]>[/COLOR] Last_Chart ) [COLOR=magenta]then[/COLOR] {
                  [COLOR=blue]/* end loop */[/COLOR];
                  Init_Chart = AUS
                } [COLOR=magenta]endif[/COLOR]
              } [COLOR=magenta]endif[/COLOR]
            } [COLOR=magenta]endif[/COLOR]
            Das würde übrigens wunderbar in einen [Systemstart] Bereich passen
            Auch ein Beispiel für die Notwendigkeit von Schleifen
            Und natürlich darf der Hinweis auf den "Balkon" für die 'Abfrage unter Umgehung des Validierungsschemas' nicht fehlen, der die Laufzeit verdoppelt
            BR
            Marc

            Kommentar


              #7
              Zitat von saft6luck Beitrag anzeigen
              Sehr schöne Lösung einer Schleife!
              Ich setze folgenden Code ein um die Diagramme von 2 bis 7 mit 1 zu füllen:
              Wie hast Du das denn mit der Färbung hingekriegt oder hast Du das zu Fuss gemacht?
              Und natürlich darf der Hinweis auf den "Balkon" für die 'Abfrage unter Umgehung des Validierungsschemas' nicht fehlen, der die Laufzeit verdoppelt
              Diese Aussage versteh ich nicht.
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #8
                Zitat von enertegus Beitrag anzeigen
                Wie hast Du das denn mit der Färbung hingekriegt oder hast Du das zu Fuss gemacht?
                Hi, hi, da hab ich im UltraEdit eine Regel für das Einfärben getestet. Geht noch nicht ganz (z.B. '=' und '<', '>' ...), daher teilweise nachgearbeitet ...
                Diese Aussage versteh ich nicht.
                Wenn ich davon ausgehe, dass der Scheduler im eibPC jede ms aufgerufen wird, wird durch das "after" in meinem Fall immer eine ms Pause erzeugt, oder?
                Aber ohne geht es nicht und einen kürzeren "Event" habe ich noch nicht gefunden. Evtl. kannst du da helfen?
                BR
                Marc

                Kommentar


                  #9
                  Zitat von saft6luck Beitrag anzeigen
                  Wenn ich davon ausgehe, dass der Scheduler im eibPC jede ms aufgerufen wird, wird durch das "after" in meinem Fall immer eine ms Pause erzeugt, oder?
                  Aber ohne geht es nicht und einen kürzeren "Event" habe ich noch nicht gefunden. Evtl. kannst du da helfen?
                  Hm, einen "Balkon bauen" musst Du immer - das stimmt. Aber ggf. wäre hier ein "change()-Balkon" schneller. Das müsste ich mal mit der Firmwareabteilung besprechen. Soweit ich mich erinnere, haben wir irgendwann mal eine Zwangspause eingeführt, damit der Webserver immer etwas Luft zum Atmen hat - um mal in der blumigen Sprache zu bleiben
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar


                    #10
                    Zitat von saft6luck Beitrag anzeigen

                    Ich setze folgenden Code ein um die Diagramme von 2 bis 7 mit 1 zu füllen:

                    wenn du 5 Diagramme zumüllen willst, brauchst du in meinem 2 Zeiler doch nur in der letzten Zeile die weiteren Webcharts mit ";" getrennt reinschreiben.

                    Deine Loop.Geschichte ist mir persönlich zu lang und umständlich.
                    Der schöne Niederrhein läßt Grüssen

                    Andreas


                    Alter Hof mit neuer Technik

                    Kommentar


                      #11
                      Zitat von anlo007 Beitrag anzeigen
                      Deine Loop.Geschichte ist mir persönlich zu lang und umständlich.
                      *plonk*
                      BR
                      Marc

                      Kommentar


                        #12
                        Michael, ich habe change() jetzt ausprobiert:
                        Code:
                        count_i = [COLOR=seagreen]0u08[/COLOR]
                        [COLOR=magenta]if[/COLOR] [COLOR=magenta]after[/COLOR] ( [COLOR=magenta]systemstart[/COLOR](), TIME_1ms ) [COLOR=magenta]then[/COLOR] count_i = [COLOR=seagreen]1u08[/COLOR] [COLOR=magenta]endif[/COLOR]
                        [COLOR=magenta]if[/COLOR] ( count_i < [COLOR=seagreen]25[/COLOR]) [COLOR=magenta]and[/COLOR] [COLOR=magenta]change[/COLOR]( count_i ) [COLOR=magenta]then[/COLOR] {
                          count_i = count_i [COLOR=magenta]+ [/COLOR][COLOR=seagreen]1[/COLOR]
                        } [COLOR=magenta]endif[/COLOR]
                        Ich würde erwarten, dass nach der Abarbeitung count_i == 25 gilt, count_i bleibt aber bei 2 stehen.
                        BR
                        Marc

                        Kommentar


                          #13
                          So jetzt hast Du mich erwischt. Das scheint mir ein Bug, weil das so gehen sollte. .
                          Ein workaround (bitte nicht micht schlagen) wäre derweil
                          Code:
                          if(count_i < [COLOR=seagreen]25[/COLOR])  [COLOR=magenta]and[/COLOR] [COLOR=magenta]after(change[/COLOR](  count_i),1u64) [COLOR=magenta]then[/COLOR] {
                          Ich schau mal, ein Makro für eine For-Schleife zur Verfügung zu stellen. Wäre das in Eurem Sinne?
                          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                          Enertex Produkte kaufen

                          Kommentar


                            #14
                            Zitat von enertegus Beitrag anzeigen
                            So jetzt hast Du mich erwischt. Das scheint mir ein Bug, weil das so gehen sollte. .
                            Ein workaround (bitte nicht micht schlagen) wäre derweil
                            Code:
                            if(count_i < [COLOR=seagreen]25[/COLOR])  [COLOR=magenta]and[/COLOR] [COLOR=magenta]after(change[/COLOR](  count_i),1u64) [COLOR=magenta]then[/COLOR] {
                            Gut bzw. schlecht
                            Muss ich dann momentan alle change() einpacken? Mir war das noch nicht aufgefallen, evtl. weil es beim ersten Mal tut?
                            Ich schau mal, ein Makro für eine For-Schleife zur Verfügung zu stellen. Wäre das in Eurem Sinne?
                            Hm, wenn das geht ... klar.
                            BR
                            Marc

                            Kommentar


                              #15
                              Zitat von saft6luck Beitrag anzeigen
                              Gut bzw. schlecht
                              Muss ich dann momentan alle change() einpacken? Mir war das noch nicht aufgefallen, evtl. weil es beim ersten Mal tut?
                              nein es liegt wohl daran dass sinngemäß
                              if change(a) then a=a+1 endif
                              auftritt. Also wenn du ein change auf ein Objekt machst, welches selbst wieder davon verändert wird, eine Rekursion also.
                              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                              Enertex Produkte kaufen

                              Kommentar

                              Lädt...
                              X