Ankündigung

Einklappen
Keine Ankündigung bisher.

Monatsdiagramm (12 X-Werte) in der Visualisierung darstellen

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

    Monatsdiagramm (12 X-Werte) in der Visualisierung darstellen

    Hallo zusammen,
    ich stehe vor der folgenden Aufgabe aber finde noch keinen zielführenden Lüäsungsansatz, weshalb ich hier nach Rat fragen möchte:

    Für meine PV-Anlage möchte ich in einem Diagramm die Produktionswerte des verganenen und des aktuellen Jahres als Monats-Graphen darstellen. Zum Jahreswechsel aktualisiere ich dann die 12 "alten" werte mit den aktuellen udn läche das aktuelle Jahr auf "0" ab.
    Als Basis hierfür habe ich mit das Werte-Diagramm ausgesucht, da ich hier die X- und Y-Werte einzeln schreiben kann. Die Graphik soll untertägig wiederkehrend aktualisiert werden und nciht nur am Montasende einmalig aktualiseirt werden.

    - In Graph 1 möchte ich die Prüduktionsdaten (Aufsummiert je Monat) des vergangenen Jahres darstellen, also 12 Wertepaare (X = 1..12 -> Monat; Y = PV-Erzeugung in kWh)
    - in Graph 2 möchte ich an den gleichen X-Koordinaten die PV-Erzeugung des aktuellen Jahres darstellen, also ebenso 12 Wertepaare, welche aber über das Jahr fortwährend aktualisiert werden (der aktuelle Monat läuft und ich möchte die PV-Erzeugung z.B. stündlich aktualisieren)

    > Als erstes "Hindernis" finde ich momentan keine Möglichkeit, die Wertpaare je Graphen von 48 auf 12 zu begrenzen, da ich nicht mehr Werte benötige
    >> Dieser Bedarf würde entfallen, wenn es eine Möglichekit gibt, ein Wertepaar (X/Y) direkt zu überschreiben, aber ich kann leide rnur den Index eines Graphen ansprechen (und nicht ein Wertepaar in einen Graphen)
    >> Ebenso sehe ich momentan das Problem, dass ich zum aktualisieren eines einzelnen Wertepaares erst die anderen (momentan 47) Wertepaare alle neu beschreiben müsste um wieder zu dem einen zu aktualisierenden zu kommen

    > Als zweiter offener Punkt finde ich die Möglichkeit zur Skalierung der Y-Achse nirgends. Bei einem Zeitwert-Diagramm kann ich festlegen, dass ich z.B. "0" als Grundlinie nutzen möchte. Gibt es diese Möglichkeit auch beim Wertediagramm?

    Momentan ist mein Ansatz, dass ich das Diagramm als Objekt in der Visualisierung anlege, und mit dme Experten verknüfen will. Ich möchte soweit mögliich einen Bogem um das Thema "Visualisierung im Experten erzeugen" machen, um nicht zweierlei Seitenarten (Visu_Editor und Experte) pflegen zu müssen.
    Das Schreiben der einzelnen Werte im Experten ist nicht so die große Herausforderung, sobal ich den richtigen Weg hierfür kenne. Die notwendigen Werte habe ich im Expertenprogramm eh schon als Variablen vorliegen.

    Vielleicht sehe ich ja einfach den Wald vor lauter Bäumen nicht und jemand hat einen schlauen Rat / Ansatz für mich?

    #2
    Zitat von Latias1990 Beitrag anzeigen
    as Schreiben der einzelnen Werte im Experten ist nicht so die große Herausforderung, sobal ich den richtigen Weg hierfür kenne.
    An dieser Stelle scheine ich aktuell nicht wirklich voran zu kommen, warscheinlich irgend eine "Kleine Dummheit", k.A....

    - ich habe das Diagramm im Visu-Editor angelegt udn mit dem Expertenprogramm verknüpft (ID: Diag_Prod_Jahr)
    Diagramm.png

    im Expertenprogramm habe ich eine stündlich laufende Aktualisierung implementiert:

    //Aktuelle Werte
    If (minute() == 59) then {
    if ... {
    (...) - Diverse Werteberechnungen
    } endif;

    mchart(Diag_Prod_Jahr, 0.0, 0.0, 0); /* Index 0 - Eintrag 1 */
    ...
    mchart(Diag_Prod_Jahr, 0.0, 0.0, 0); /* Index 0 - Eintrag 36 - ich brauche ja nur 12 darstellte Werte, daher die restlicehn 36 auf "0/0" geparkt*/

    mchart(Diag_Prod_Jahr, 1.0, convert (WR1_PV_aktuell_M01, Dummy_f16), 0); /* Index 0 - X = 1.0, X = Wert "Januar" */
    mchart(Diag_Prod_Jahr, 2.0, convert (WR1_PV_aktuell_M02, Dummy_f16), 0);
    mchart(Diag_Prod_Jahr, 3.0, convert (WR1_PV_aktuell_M03, Dummy_f16), 0);
    mchart(Diag_Prod_Jahr, 4.0, convert (WR1_PV_aktuell_M04, Dummy_f16), 0);
    mchart(Diag_Prod_Jahr, 5.0, convert (WR1_PV_aktuell_M05, Dummy_f16), 0);
    mchart(Diag_Prod_Jahr, 6.0, convert (WR1_PV_aktuell_M06, Dummy_f16), 0);
    mchart(Diag_Prod_Jahr, 7.0, convert (WR1_PV_aktuell_M07, Dummy_f16), 0);
    mchart(Diag_Prod_Jahr, 8.0, convert (WR1_PV_aktuell_M08, Dummy_f16), 0);
    mchart(Diag_Prod_Jahr, 9.0, convert (WR1_PV_aktuell_M09, Dummy_f16), 0);
    mchart(Diag_Prod_Jahr, 10.0, convert (WR1_PV_aktuell_M10, Dummy_f16), 0);
    mchart(Diag_Prod_Jahr, 11.0, convert (WR1_PV_aktuell_M11, Dummy_f16), 0);
    mchart(Diag_Prod_Jahr, 12.0, convert (WR1_PV_aktuell_M12, Dummy_f16), 0); /* Index 0 - X = 12.0, X = Wert "Dezember" */

    // und zu Testzwecken lasse ich Stündlich einen weiteren Wert in Index 1-3 schreiben
    mchart(Diag_Prod_Jahr, 1.5, convert (hour()*10, Dummy_f16), 1);
    mchart(Diag_Prod_Jahr, 2.5, convert (hour()*10, Dummy_f16), 2);
    mchart(Diag_Prod_Jahr, 3.5, convert (hour()*10, Dummy_f16), 3);

    } endif

    --------------------
    Leider erhalte ich so gar keine Werte im Diagramm, sondern nur alle auf "0/0":
    Webserver.png

    Aber in den Variablen sind Werte drin...
    Debugger.png

    Wo stehe ich hier auf dem Schlauch?

    Kommentar


      #3
      Hi,

      du hast die falsche Funktion verwendet. Du brauchst die mpchart()-Funktion (hier ist leider auch ein Fehler in der Visu-Doku. Die verweist auf pchart. Wird gefixt.)

      Code:
      val=second()
      
      iCounter=1
      if cycle(0,1) then {
      mpchart(wcChart, convert(iCounter,0f16), convert(val,0f16), 0, wcChart_P);
      iCounter = mod(iCounter+1,12);
      } endif;


      Bildschirmfoto_2022-03-21_14-09-37.png

      Was du siehst, sind alle 48 darstellbaren Werte. Du kannst alternativ auch ein Timechart verwenden und dort 12 anzuzeigende Werte eingeben. Als x nimmst du zB den Beginn des Tages, an dem der Eintrag erfolgt. Dann sollte die Darstellung des Datums automatisch passen.

      Kommentar


        #4
        Moin,

        für mich wird in der Anleitung auch nicht so ganz klar, wann die *globalen* chart / mchart und wann die *seitenbezogenen* pchart / mpchart zu nutzen sind.

        mit einem Timechart komme ich nicht wirklich weiter. Ich möchte jede Stunde den aktuellen Wert überschreiben, nicht ergänzen. Das Diagramm soll 12 Werte (mal vier Graphen) für die 12 Monate darstellen. Ich aktualisiere diese aber innerhalb des aktuellen Monats stündlich, also der Monatsbalken soll mit laufender Produktion stetig wachsen bis zum Monatswechsel. Daher auch die Frage nach dem *expliziten ansprechen* eines Wertes. Aktuell ändert sich stündlich der März-Wert, die anderen 11 Monatswerte liegen fix bis zum nächsten Monatswechsel. Um das ganze zu aktualisieren muss ich aktuell 36 Werte *ins off* schieben da ich sie nicht brauche und die anderen 12 immer ebenfalls alle aktualisieren obwohl sich nur einer ändert.... unschön aber machbar.
        Zuletzt geändert von Latias1990; 21.03.2022, 18:15.

        Kommentar


          #5
          Kurze Frage am Rande:
          Wenn ich auf der Webserver-Seite bin aktualisiert er zur angegebenen Zeit die Werte wie gewoht.. Alles schön und gut.
          Wenn ich die Seite verlasse und zurückkehre oder wenn ich komplet tneu auf die Seite springe ist der Graph quasi leer und wird erst nach dem nächsten Beschreiben ordentlich angezeigt.

          Was mache ich falsch? Muss ich den Graphen bei jedem springen auf die Seite neu beschreiben?
          Ich habe vorher noch nie ein Diagramm im Experten-verknüpften Modus genutzt... und auch noch kein Werte-Diagramm an sich...


          Nachtrag:
          Das scheint nur ein Problem des "ersten Anlaufs" gewesen zu sein. Nach der ersten Nacht sind die Daten stets sofort verfügbar
          Zuletzt geändert von Latias1990; 22.03.2022, 09:33.

          Kommentar


            #6
            Zitat von Latias1990 Latias1990 Beitrag anzeigen
            wann die *seitenbezogenen*
            Ist mehr historisch bedingt. Würde generell bei den seitenbezogenen bleiben, außer du willst ein Chart auf mehreren Seiten darstellen,. Dann musst du die Visu-Seite aber auch im Experten erstellen, da die Visu falls möglich immer auf die Seitenbezogenen Elemente zurückgreift.

            Zitat von Latias1990 Latias1990 Beitrag anzeigen
            36 Werte *ins off*
            bei der Anforderung bringt dir der Timechart nichts, richtig. Du kannst einzelne Werte ja auch öfter netzen, dann hast du keine "ungültigen" Punkte in der Darstellung.

            Kommentar


              #7
              Zitat von foobar0815 Beitrag anzeigen
              Würde generell bei den seitenbezogenen bleiben, außer du willst ein Chart auf mehreren Seiten darstellen
              Kein Problem, war ja eher eine Frage aus Unwissenheit.

              Zitat von foobar0815 Beitrag anzeigen
              Dann musst du die Visu-Seite aber auch im Experten erstellen, da die Visu falls möglich immer auf die Seitenbezogenen Elemente zurückgreift.
              Meiner Meinung nach wird in de rAnleitung dieser Unterschied nicht so ganz deutlich, daher auch meine Nachfrage hier. Bis zu diesem "Projekt" habe ich noch keine selbst gefüttertden Diagramme genutzt, sondern immer nur Zeitdiagramme mit selbstverwaltendem timebuffer. Vielleicht ein Ansatzpunkt für eine zukünftige Überarbeitung der Anleitung, dass irgenwo dieser Hinweis auftaucht "Im Visualisierungseditor erstellte Elemente sind seitenbezogen, globale Elemente nur in Verbindung mit im Experten erzeugten Visualisierungsseiten" oder so etwas in der Art.

              ------------------------------
              Dank der netten Unterstützung hier habe ich jetzt aber mein ziel Erreicht und das Werte-Diagramm für mich nutzbar machen können! Vielen Dank!


              Zitat von foobar0815 Beitrag anzeigen
              Du kannst einzelne Werte ja auch öfter netzen, dann hast du keine "ungültigen" Punkte in der Darstellung.
              So mache ich das jetzt auch. Da die historischen Werte (Vorjahr) sich im Jahresverlauf nicht ändern ist das da kein Problem. Und die aktuellen Werte wachsen ja auch nur nach oben, sodass der Balken nur höher wird; also auch nicht störend.

              Hier noch mal das aktuelle Ergebnis mit Livedaten dieses Jahres (2. PV-Anlage ist erst seit März im Betrieb):
              Diagramm_live.png
              - Graph 1 und 2 als Balkendigramm für die aktuellen Werte
              - Graph 3 und 4 als Punkte ohne Linien für die historischen Werte

              Angefüttert mit fiktiven Daten würde das in etwa wie folgt aussehen, mit dem Ergebnis bin ich sehr zufrieden!
              Diagramm_fiktiv.png

              Vielleicht ziehe ich die Balken noch etwas auseinander, das ist ja über die X-Position relativ leicht möglich. 🧐

              Weitere Diagramme dieser Art (Verbrauch: Eigenverbrauch&Einkauf, Erzeugung: Eigenverbrauch&Verkauf, Autarkiequator&Eigenverbrauchsqute) werden sich die nächsten Wochen noch dazugesellen. Die Basis ist ja jetzt gelegt 😀

              Großes Dankeschön nochmal für den tollen Support! 👍
              Zuletzt geändert von Latias1990; 23.03.2022, 12:18.

              Kommentar


                #8
                schaut super aus, kannst du ev. den zugehörigen Code zur Verfügung stellen?

                LG
                EPIX
                ...und möge der Saft mit euch sein...
                Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                Kommentar


                  #9
                  Zitat von Latias1990 Beitrag anzeigen
                  Angefüttert mit fiktiven Daten würde das in etwa wie folgt aussehen, mit dem Ergebnis bin ich sehr zufrieden!
                  gefällt mir auch. Werde mich da auch mal dran versuchen das nachzubauen.

                  VG
                  Michael
                  Meine Installation: VM Debian Buster SH NG 1.8.1, SmartVISU 3.0, KNX, DMX, 1-wire, Fortigate 30E IPS, VMware vSphere 6.7

                  Kommentar


                    #10
                    Moin,

                    Zitat von EPIX Beitrag anzeigen
                    schaut super aus, kannst du ev. den zugehörigen Code zur Verfügung stellen?
                    Zitat von yachti Beitrag anzeigen
                    efällt mir auch. Werde mich da auch mal dran versuchen das nachzubauen.
                    Dankeschön
                    Gerne stelle ich den Code hierfür bereit, kein Problem:

                    --------------------------------------------------------------------------------------------------------------------------------------------------------------------

                    //Externe Variablen, werden in anderem Programm gefüllt (Auslesen aus WR via Modbus)
                    WR1_PV_Gesamtertrag = 0u32
                    WR2_PV_Gesamtertrag = 0u32

                    //Variablen Gesamtertrag Historie - WR PV
                    WR1_PV_Gesamtertrag_Vorjahr = 0u32
                    WR2_PV_Gesamtertrag_Vorjahr = 0u32

                    //Variablen für Monatswerte - WR PV
                    WR1_PV_Vorjahr_M01 = 0u32
                    WR1_PV_Vorjahr_M02 = 0u32
                    WR1_PV_Vorjahr_M03 = 0u32
                    WR1_PV_Vorjahr_M04 = 0u32
                    WR1_PV_Vorjahr_M05 = 0u32
                    WR1_PV_Vorjahr_M06 = 0u32
                    WR1_PV_Vorjahr_M07 = 0u32
                    WR1_PV_Vorjahr_M08 = 0u32
                    WR1_PV_Vorjahr_M09 = 0u32
                    WR1_PV_Vorjahr_M10 = 0u32
                    WR1_PV_Vorjahr_M11 = 0u32
                    WR1_PV_Vorjahr_M12 = 0u32

                    WR2_PV_Vorjahr_M01 = 0u32
                    WR2_PV_Vorjahr_M02 = 0u32
                    WR2_PV_Vorjahr_M03 = 0u32
                    WR2_PV_Vorjahr_M04 = 0u32
                    WR2_PV_Vorjahr_M05 = 0u32
                    WR2_PV_Vorjahr_M06 = 0u32
                    WR2_PV_Vorjahr_M07 = 0u32
                    WR2_PV_Vorjahr_M08 = 0u32
                    WR2_PV_Vorjahr_M09 = 0u32
                    WR2_PV_Vorjahr_M10 = 0u32
                    WR2_PV_Vorjahr_M11 = 0u32
                    WR2_PV_Vorjahr_M12 = 0u32

                    WR1_PV_aktuell_M01 = 0u32
                    WR1_PV_aktuell_M02 = 0u32
                    WR1_PV_aktuell_M03 = 0u32
                    WR1_PV_aktuell_M04 = 0u32
                    WR1_PV_aktuell_M05 = 0u32
                    WR1_PV_aktuell_M06 = 0u32
                    WR1_PV_aktuell_M07 = 0u32
                    WR1_PV_aktuell_M08 = 0u32
                    WR1_PV_aktuell_M09 = 0u32
                    WR1_PV_aktuell_M10 = 0u32
                    WR1_PV_aktuell_M11 = 0u32
                    WR1_PV_aktuell_M12 = 0u32

                    WR2_PV_aktuell_M01 = 0u32
                    WR2_PV_aktuell_M02 = 0u32
                    WR2_PV_aktuell_M03 = 0u32
                    WR2_PV_aktuell_M04 = 0u32
                    WR2_PV_aktuell_M05 = 0u32
                    WR2_PV_aktuell_M06 = 0u32
                    WR2_PV_aktuell_M07 = 0u32
                    WR2_PV_aktuell_M08 = 0u32
                    WR2_PV_aktuell_M09 = 0u32
                    WR2_PV_aktuell_M10 = 0u32
                    WR2_PV_aktuell_M11 = 0u32
                    WR2_PV_aktuell_M12 = 0u32

                    //Variablen für Anzeigewerte - WR PV
                    WR1_PV_Monat = 0u32
                    WR1_PV_Vormonat= 0u32

                    WR2_PV_Monat = 0u32
                    WR2_PV_Vormonat= 0u32

                    //Debug-Variablen
                    DeBug_write_Diagramm = 0b01
                    DeBug_write_Historie = 0b01

                    //Übertrag Jahreswechsel
                    If (month(31,12) AND htime(23,59,30)) then {

                    //WR1 PV
                    WR1_PV_Vorjahr_M01 = WR1_PV_aktuell_M01;
                    WR1_PV_aktuell_M01 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M01);
                    WR1_PV_Vorjahr_M02 = WR1_PV_aktuell_M02;
                    WR1_PV_aktuell_M02 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M02);
                    WR1_PV_Vorjahr_M03 = WR1_PV_aktuell_M03;
                    WR1_PV_aktuell_M03 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M03);
                    WR1_PV_Vorjahr_M04 = WR1_PV_aktuell_M04;
                    WR1_PV_aktuell_M04 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M04);
                    WR1_PV_Vorjahr_M05 = WR1_PV_aktuell_M05;
                    WR1_PV_aktuell_M05 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M05);
                    WR1_PV_Vorjahr_M06 = WR1_PV_aktuell_M06;
                    WR1_PV_aktuell_M06 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M06);
                    WR1_PV_Vorjahr_M07 = WR1_PV_aktuell_M07;
                    WR1_PV_aktuell_M07 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M07);
                    WR1_PV_Vorjahr_M08 = WR1_PV_aktuell_M08;
                    WR1_PV_aktuell_M08 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M08);
                    WR1_PV_Vorjahr_M09 = WR1_PV_aktuell_M09;
                    WR1_PV_aktuell_M09 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M09);
                    WR1_PV_Vorjahr_M10 = WR1_PV_aktuell_M10;
                    WR1_PV_aktuell_M10 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M10);
                    WR1_PV_Vorjahr_M11 = WR1_PV_aktuell_M11;
                    WR1_PV_aktuell_M11 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M11);
                    WR1_PV_Vorjahr_M12 = WR1_PV_aktuell_M12;
                    WR1_PV_aktuell_M12 = 0u32;
                    writeflashvar(WR1_PV_Vorjahr_M12);

                    //WR2 PV
                    WR2_PV_Vorjahr_M01 = WR2_PV_aktuell_M01;
                    WR2_PV_aktuell_M01 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M01);
                    WR2_PV_Vorjahr_M02 = WR2_PV_aktuell_M02;
                    WR2_PV_aktuell_M02 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M02);
                    WR2_PV_Vorjahr_M03 = WR2_PV_aktuell_M03;
                    WR2_PV_aktuell_M03 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M03);
                    WR2_PV_Vorjahr_M04 = WR2_PV_aktuell_M04;
                    WR2_PV_aktuell_M04 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M04);
                    WR2_PV_Vorjahr_M05 = WR2_PV_aktuell_M05;
                    WR2_PV_aktuell_M05 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M05);
                    WR2_PV_Vorjahr_M06 = WR2_PV_aktuell_M06;
                    WR2_PV_aktuell_M06 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M06);
                    WR2_PV_Vorjahr_M07 = WR2_PV_aktuell_M07;
                    WR2_PV_aktuell_M07 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M07);
                    WR2_PV_Vorjahr_M08 = WR2_PV_aktuell_M08;
                    WR2_PV_aktuell_M08 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M08);
                    WR2_PV_Vorjahr_M09 = WR2_PV_aktuell_M09;
                    WR2_PV_aktuell_M09 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M09);
                    WR2_PV_Vorjahr_M10 = WR2_PV_aktuell_M10;
                    WR2_PV_aktuell_M10 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M10);
                    WR2_PV_Vorjahr_M11 = WR2_PV_aktuell_M11;
                    WR2_PV_aktuell_M11 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M11);
                    WR2_PV_Vorjahr_M12 = WR2_PV_aktuell_M12;
                    WR2_PV_aktuell_M12 = 0u32;
                    writeflashvar(WR2_PV_Vorjahr_M12);

                    //Gesamtertrag
                    WR1_PV_Gesamtertrag_Vorjahr = WR1_PV_Gesamtertrag;
                    WR2_PV_Gesamtertrag_Vorjahr = WR2_PV_Gesamtertrag;
                    writeflashvar(WR1_PV_Gesamtertrag_Vorjahr);
                    writeflashvar(WR2_PV_Gesamtertrag_Vorjahr);
                    } endif

                    //Aktuelle Werte
                    If (second() == 59) or DeBug_write_Diagramm then {

                    //Dezember
                    if month(01,12) then {

                    WR1_PV_aktuell_M12 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr - WR1_PV_aktuell_M01 - WR1_PV_aktuell_M02 - WR1_PV_aktuell_M03 - WR1_PV_aktuell_M04 - WR1_PV_aktuell_M05 - WR1_PV_aktuell_M06 - WR1_PV_aktuell_M07 - WR1_PV_aktuell_M08 - WR1_PV_aktuell_M09 - WR1_PV_aktuell_M10 - WR1_PV_aktuell_M11;
                    WR1_PV_Monat = WR1_PV_aktuell_M12;
                    WR1_PV_Vormonat = WR1_PV_aktuell_M11;

                    WR2_PV_aktuell_M12 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr - WR2_PV_aktuell_M01 - WR2_PV_aktuell_M02 - WR2_PV_aktuell_M03 - WR2_PV_aktuell_M04 - WR2_PV_aktuell_M05 - WR2_PV_aktuell_M06 - WR2_PV_aktuell_M07 - WR2_PV_aktuell_M08 - WR2_PV_aktuell_M09 - WR2_PV_aktuell_M10 - WR2_PV_aktuell_M11;
                    WR2_PV_Monat = WR2_PV_aktuell_M12;
                    WR2_PV_Vormonat = WR2_PV_aktuell_M11;
                    } else {

                    //November
                    if month(01,11) then {

                    WR1_PV_aktuell_M11 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr - WR1_PV_aktuell_M01 - WR1_PV_aktuell_M02 - WR1_PV_aktuell_M03 - WR1_PV_aktuell_M04 - WR1_PV_aktuell_M05 - WR1_PV_aktuell_M06 - WR1_PV_aktuell_M07 - WR1_PV_aktuell_M08 - WR1_PV_aktuell_M09 - WR1_PV_aktuell_M10;
                    WR1_PV_Monat = WR1_PV_aktuell_M11;
                    WR1_PV_Vormonat = WR1_PV_aktuell_M10;

                    WR2_PV_aktuell_M11 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr - WR2_PV_aktuell_M01 - WR2_PV_aktuell_M02 - WR2_PV_aktuell_M03 - WR2_PV_aktuell_M04 - WR2_PV_aktuell_M05 - WR2_PV_aktuell_M06 - WR2_PV_aktuell_M07 - WR2_PV_aktuell_M08 - WR2_PV_aktuell_M09 - WR2_PV_aktuell_M10;
                    WR2_PV_Monat = WR2_PV_aktuell_M11;
                    WR2_PV_Vormonat = WR2_PV_aktuell_M10;
                    } else {

                    //Oktober
                    if month(01,10) then {

                    WR1_PV_aktuell_M10 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr - WR1_PV_aktuell_M01 - WR1_PV_aktuell_M02 - WR1_PV_aktuell_M03 - WR1_PV_aktuell_M04 - WR1_PV_aktuell_M05 - WR1_PV_aktuell_M06 - WR1_PV_aktuell_M07 - WR1_PV_aktuell_M08 - WR1_PV_aktuell_M09;
                    WR1_PV_Monat = WR1_PV_aktuell_M10;
                    WR1_PV_Vormonat = WR1_PV_aktuell_M09;

                    WR2_PV_aktuell_M10 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr - WR2_PV_aktuell_M01 - WR2_PV_aktuell_M02 - WR2_PV_aktuell_M03 - WR2_PV_aktuell_M04 - WR2_PV_aktuell_M05 - WR2_PV_aktuell_M06 - WR2_PV_aktuell_M07 - WR2_PV_aktuell_M08 - WR2_PV_aktuell_M09;
                    WR2_PV_Monat = WR2_PV_aktuell_M10;
                    WR2_PV_Vormonat = WR2_PV_aktuell_M09;
                    } else {

                    //September
                    if month(01,09) then {

                    WR1_PV_aktuell_M09 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr - WR1_PV_aktuell_M01 - WR1_PV_aktuell_M02 - WR1_PV_aktuell_M03 - WR1_PV_aktuell_M04 - WR1_PV_aktuell_M05 - WR1_PV_aktuell_M06 - WR1_PV_aktuell_M07 - WR1_PV_aktuell_M08;
                    WR1_PV_Monat = WR1_PV_aktuell_M09;
                    WR1_PV_Vormonat = WR1_PV_aktuell_M08;

                    WR2_PV_aktuell_M09 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr - WR2_PV_aktuell_M01 - WR2_PV_aktuell_M02 - WR2_PV_aktuell_M03 - WR2_PV_aktuell_M04 - WR2_PV_aktuell_M05 - WR2_PV_aktuell_M06 - WR2_PV_aktuell_M07 - WR2_PV_aktuell_M08;
                    WR2_PV_Monat = WR2_PV_aktuell_M09;
                    WR2_PV_Vormonat = WR2_PV_aktuell_M08;
                    } else {

                    //August
                    if month(01,08) then {

                    WR1_PV_aktuell_M08 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr - WR1_PV_aktuell_M01 - WR1_PV_aktuell_M02 - WR1_PV_aktuell_M03 - WR1_PV_aktuell_M04 - WR1_PV_aktuell_M05 - WR1_PV_aktuell_M06 - WR1_PV_aktuell_M07;
                    WR1_PV_Monat = WR1_PV_aktuell_M08;
                    WR1_PV_Vormonat = WR1_PV_aktuell_M07;

                    WR2_PV_aktuell_M08 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr - WR2_PV_aktuell_M01 - WR2_PV_aktuell_M02 - WR2_PV_aktuell_M03 - WR2_PV_aktuell_M04 - WR2_PV_aktuell_M05 - WR2_PV_aktuell_M06 - WR2_PV_aktuell_M07;
                    WR2_PV_Monat = WR2_PV_aktuell_M08;
                    WR2_PV_Vormonat = WR2_PV_aktuell_M07;
                    } else {

                    //Juli
                    if month(01,07) then {

                    WR1_PV_aktuell_M07 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr - WR1_PV_aktuell_M01 - WR1_PV_aktuell_M02 - WR1_PV_aktuell_M03 - WR1_PV_aktuell_M04 - WR1_PV_aktuell_M05 - WR1_PV_aktuell_M06;
                    WR1_PV_Monat = WR1_PV_aktuell_M07;
                    WR1_PV_Vormonat = WR1_PV_aktuell_M06;

                    WR2_PV_aktuell_M07 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr - WR2_PV_aktuell_M01 - WR2_PV_aktuell_M02 - WR2_PV_aktuell_M03 - WR2_PV_aktuell_M04 - WR2_PV_aktuell_M05 - WR2_PV_aktuell_M06;
                    WR2_PV_Monat = WR2_PV_aktuell_M07;
                    WR2_PV_Vormonat = WR2_PV_aktuell_M06;
                    } else {

                    //Juni
                    if month(01,06) then {

                    WR1_PV_aktuell_M06 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr - WR1_PV_aktuell_M01 - WR1_PV_aktuell_M02 - WR1_PV_aktuell_M03 - WR1_PV_aktuell_M04 - WR1_PV_aktuell_M05;
                    WR1_PV_Monat = WR1_PV_aktuell_M06;
                    WR1_PV_Vormonat = WR1_PV_aktuell_M05;

                    WR2_PV_aktuell_M06 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr - WR2_PV_aktuell_M01 - WR2_PV_aktuell_M02 - WR2_PV_aktuell_M03 - WR2_PV_aktuell_M04 - WR2_PV_aktuell_M05;
                    WR2_PV_Monat = WR2_PV_aktuell_M06;
                    WR2_PV_Vormonat = WR2_PV_aktuell_M05;
                    } else {
                    //Mai

                    if month(01,05) then {

                    WR1_PV_aktuell_M05 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr - WR1_PV_aktuell_M01 - WR1_PV_aktuell_M02 - WR1_PV_aktuell_M03 - WR1_PV_aktuell_M04;
                    WR1_PV_Monat = WR1_PV_aktuell_M05;
                    WR1_PV_Vormonat = WR1_PV_aktuell_M04;

                    WR2_PV_aktuell_M05 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr - WR2_PV_aktuell_M01 - WR2_PV_aktuell_M02 - WR2_PV_aktuell_M03 - WR2_PV_aktuell_M04;
                    WR2_PV_Monat = WR2_PV_aktuell_M05;
                    WR2_PV_Vormonat = WR2_PV_aktuell_M04;
                    } else {

                    //April
                    if month(01,04) then {

                    WR1_PV_aktuell_M04 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr - WR1_PV_aktuell_M01 - WR1_PV_aktuell_M02 - WR1_PV_aktuell_M03;
                    WR1_PV_Monat = WR1_PV_aktuell_M04;
                    WR1_PV_Vormonat = WR1_PV_aktuell_M03;

                    WR2_PV_aktuell_M04 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr - WR2_PV_aktuell_M01 - WR2_PV_aktuell_M02 - WR2_PV_aktuell_M03;
                    WR2_PV_Monat = WR2_PV_aktuell_M04;
                    WR2_PV_Vormonat = WR2_PV_aktuell_M03;
                    } else {

                    //März
                    if month(01,03) then {

                    WR1_PV_aktuell_M03 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr - WR1_PV_aktuell_M01 - WR1_PV_aktuell_M02;
                    WR1_PV_Monat = WR1_PV_aktuell_M03;
                    WR1_PV_Vormonat = WR1_PV_aktuell_M02;

                    WR2_PV_aktuell_M03 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr - WR2_PV_aktuell_M01 - WR2_PV_aktuell_M02;
                    WR2_PV_Monat = WR2_PV_aktuell_M03;
                    WR2_PV_Vormonat = WR2_PV_aktuell_M02;
                    } else {

                    //Februar
                    if month(01,02) then {

                    WR1_PV_aktuell_M02 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr - WR1_PV_aktuell_M01;
                    WR1_PV_Monat = WR1_PV_aktuell_M02;
                    WR1_PV_Vormonat = WR1_PV_aktuell_M01;

                    WR2_PV_aktuell_M02 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr - WR2_PV_aktuell_M01;
                    WR2_PV_Monat = WR2_PV_aktuell_M02;
                    WR2_PV_Vormonat = WR2_PV_aktuell_M01;
                    } else {

                    //Januar

                    WR1_PV_aktuell_M01 = WR1_PV_Gesamtertrag - WR1_PV_Gesamtertrag_Vorjahr;
                    WR1_PV_Monat = WR1_PV_aktuell_M01;
                    WR1_PV_Vormonat = WR1_PV_Vorjahr_M12;

                    WR2_PV_aktuell_M01 = WR2_PV_Gesamtertrag - WR2_PV_Gesamtertrag_Vorjahr;
                    WR2_PV_Monat = WR2_PV_aktuell_M01;
                    WR2_PV_Vormonat = WR2_PV_Vorjahr_M12;
                    } endif;
                    } endif;
                    } endif;
                    } endif;
                    } endif;
                    } endif;
                    } endif;
                    } endif;
                    } endif;
                    } endif;
                    } endif;

                    //Diagramm|Wertpaar 01-12 - aktuelle Werte WR1 PV
                    mpchart(Diag_Prod_Jahr, 0.95, convert (WR1_PV_aktuell_M01, Dummy_f16), 0, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 1.95, convert (WR1_PV_aktuell_M02, Dummy_f16), 0, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 2.95, convert (WR1_PV_aktuell_M03, Dummy_f16), 0, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 3.95, convert (WR1_PV_aktuell_M04, Dummy_f16), 0, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 4.95, convert (WR1_PV_aktuell_M05, Dummy_f16), 0, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 5.95, convert (WR1_PV_aktuell_M06, Dummy_f16), 0, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 6.95, convert (WR1_PV_aktuell_M07, Dummy_f16), 0, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 7.95, convert (WR1_PV_aktuell_M08, Dummy_f16), 0, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 8.95, convert (WR1_PV_aktuell_M09, Dummy_f16), 0, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 9.95, convert (WR1_PV_aktuell_M10, Dummy_f16), 0, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 10.95, convert (WR1_PV_aktuell_M11, Dummy_f16), 0, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 11.95, convert (WR1_PV_aktuell_M12, Dummy_f16), 0, Diag_Prod_Jahr_P);

                    //Diagramm|Wertpaar 13-24 - aktuelle Werte WR2 PV
                    mpchart(Diag_Prod_Jahr, 1.05, convert (WR2_PV_aktuell_M01, Dummy_f16), 1, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 2.05, convert (WR2_PV_aktuell_M02, Dummy_f16), 1, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 3.05, convert (WR2_PV_aktuell_M03, Dummy_f16), 1, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 4.05, convert (WR2_PV_aktuell_M04, Dummy_f16), 1, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 5.05, convert (WR2_PV_aktuell_M05, Dummy_f16), 1, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 6.05, convert (WR2_PV_aktuell_M06, Dummy_f16), 1, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 7.05, convert (WR2_PV_aktuell_M07, Dummy_f16), 1, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 8.05, convert (WR2_PV_aktuell_M08, Dummy_f16), 1, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 9.05, convert (WR2_PV_aktuell_M09, Dummy_f16), 1, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 10.05, convert (WR2_PV_aktuell_M10, Dummy_f16), 1, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 11.05, convert (WR2_PV_aktuell_M11, Dummy_f16), 1, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 12.05, convert (WR2_PV_aktuell_M12, Dummy_f16), 1, Diag_Prod_Jahr_P);

                    //Diagramm|Wertpaar 25-36 - historische Werte WR1 PV
                    mpchart(Diag_Prod_Jahr, 0.975, convert (WR1_PV_Vorjahr_M01, Dummy_f16), 2, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 1.975, convert (WR1_PV_Vorjahr_M02, Dummy_f16), 2, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 2.975, convert (WR1_PV_Vorjahr_M03, Dummy_f16), 2, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 3.975, convert (WR1_PV_Vorjahr_M04, Dummy_f16), 2, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 4.975, convert (WR1_PV_Vorjahr_M05, Dummy_f16), 2, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 5.975, convert (WR1_PV_Vorjahr_M06, Dummy_f16), 2, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 6.975, convert (WR1_PV_Vorjahr_M07, Dummy_f16), 2, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 7.975, convert (WR1_PV_Vorjahr_M08, Dummy_f16), 2, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 8.975, convert (WR1_PV_Vorjahr_M09, Dummy_f16), 2, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 9.975, convert (WR1_PV_Vorjahr_M10, Dummy_f16), 2, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 10.975, convert (WR1_PV_Vorjahr_M11, Dummy_f16), 2, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 11.975, convert (WR1_PV_Vorjahr_M12, Dummy_f16), 2, Diag_Prod_Jahr_P);

                    //Diagramm|Wertpaar 37-48 - historische Werte WR2 PV
                    mpchart(Diag_Prod_Jahr, 1.075, convert (WR2_PV_Vorjahr_M01, Dummy_f16), 3, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 2.075, convert (WR2_PV_Vorjahr_M02, Dummy_f16), 3, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 3.075, convert (WR2_PV_Vorjahr_M03, Dummy_f16), 3, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 4.075, convert (WR2_PV_Vorjahr_M04, Dummy_f16), 3, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 5.075, convert (WR2_PV_Vorjahr_M05, Dummy_f16), 3, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 6.075, convert (WR2_PV_Vorjahr_M06, Dummy_f16), 3, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 7.075, convert (WR2_PV_Vorjahr_M07, Dummy_f16), 3, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 8.075, convert (WR2_PV_Vorjahr_M08, Dummy_f16), 3, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 9.075, convert (WR2_PV_Vorjahr_M09, Dummy_f16), 3, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 10.075, convert (WR2_PV_Vorjahr_M10, Dummy_f16), 3, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 11.075, convert (WR2_PV_Vorjahr_M11, Dummy_f16), 3, Diag_Prod_Jahr_P);
                    mpchart(Diag_Prod_Jahr, 12.075, convert (WR2_PV_Vorjahr_M12, Dummy_f16), 3, Diag_Prod_Jahr_P);

                    } endif

                    --------------------------------------------------------------------------------------------------------------------------------------------------------------------

                    Hinweis:
                    die aktuellen Werte schreibe ich beim Shutdown in den Flash, nach einem Neustart lese ich alle Werte (aktuell + Historisch wieder zurück)

                    Hier noch die Diagramm-Konfiguration im Visu-Editor:
                    Diagramm_config.png
                    Zuletzt geändert von Latias1990; 23.03.2022, 16:30.

                    Kommentar


                      #11
                      Danke für den Code - eine Frage: bringen die verschachtelten if ..then }else{ irgendeinen Vorteil?

                      oder einfach

                      if month(01,03) then {
                      ..
                      }endif

                      Jedenfalls: DANKE!!!
                      EPIX
                      ...und möge der Saft mit euch sein...
                      Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                      Kommentar


                        #12
                        Zitat von EPIX Beitrag anzeigen
                        bringen die verschachtelten if ..then }else{ irgendeinen Vorteil?
                        da ich den ganzen Block aktuell minütlich durchlaufen lasse (äußere if-Schleife) würden die ganzen Monate dann immer neu berechnet werden. Das würde aber die geschriebene Logik (aktueller Monat wird in jedem Monat etsprechend beschrieben) zersemmeln... Ist quasi eine Art "Ist schon Dezember? - Nein? - Dann: Ist schon November? - ..."
                        Ich will nur einen Monat (den aktuellen) auswerten lassen, da habe ich noch keine bessere Lösung für...

                        ich will das Diagramm ja quasi "live" schreiben und nicht nur 1x im Monat, sonst wäre ich wieder bei nem Zeitdiagramm
                        Zuletzt geändert von Latias1990; 23.03.2022, 19:18.

                        Kommentar


                          #13
                          aha!! Clever!!!!

                          Statt einer case -Funktion....

                          HALLO Enertex
                          EPIX
                          ...und möge der Saft mit euch sein...
                          Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                          Kommentar


                            #14
                            Zitat von EPIX Beitrag anzeigen
                            Statt einer case -Funktion....
                            Jepp 😀

                            Und hunter Zeilen code mit "fast dem selben" mangels Arrays 😁

                            Kommentar


                              #15
                              Zitat von Latias1990 Beitrag anzeigen
                              Und hunter Zeilen code mit "fast dem selben" mangels Arrays 😁
                              Da wäre ggf. ein Makro übersichtlich.
                              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                              Enertex Produkte kaufen

                              Kommentar

                              Lädt...
                              X