Programm zum Erfassen von Stromdaten (Photovoltaik) - mit DataSet

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Programm zum Erfassen von Stromdaten (Photovoltaik) - mit DataSet

    Hallo ihr lieben
    In drei Wochen lasse ich auf dem Dach meines Ladens eine Photovoltaikanlage bauen.
    Diese Anlage gehört mir (Privateperson) - den erzeugten Strom verkaufe ich an meine Firma.
    Hierzu muss ich jeden Monat eine Rechnung über den verkauften Strom an die Firma erstellen - das möchte ich durch ein Programm automatisiert (pdf Erstellung mit EPPLus) erledigen.
    Der Plan ist, dass ich ins Programm die relevanten Daten eingebe - der Rest soll dann automatisch passieren.

    Zur PV Anlage gehört ein Wechselrichter, welcher mir anzeigt wie viel Strom durch die PV erzeugt wurde (insgesamt).
    Desweiteren wird ein neuer Zähler installiert, der anzeigt wie viel Strom ich aus dem Netz gezogen habe, und wie viel Strom ich ins Netz eingespeist habe (Überproduktion der PV Anlage)
    Der Strom der nun von PV an Firma verkauft wird ergibt sich also für z.B. den Monat Juli wie folgt:
    Wechselrichter Erzeugung bis 30.06. = 18.000KW | Einspeisung ins Netz bis 30.06. 4.500KW
    Wechselrichter Erzeugung bis 31.07. = 24.000KW | Einspeisung ins Netz bis 31.07. 6.000KW
    Also Stromerzeugung im Juli: 24.000 - 18.000 = 6.000KW | davon eingespeist wurden 6.000 - 4.500 = 1.500KW | Es wurden also 6.000 - 1.500 = 4.500KW des von der PV erzeugten Stroms von der Firma verbraucht.

    Dabei sollen aber alle Spalten aus dem DataSet Monatsweise in einer Übersicht angezeigt werden können. (wie im angehängten Excel Beispiel - welches davon ausgeht, dass die PV im Juni 2021 aufgebaut wurde)

    Die Menge des aus dem Netz gezogenen Stroms spielt hier also eigentlich keine Rolle, wenn ich aber eh jeden Monat den Einspeisezählerstand ablese, kann ich den gleich mit ablesen.

    Mein Plan ist nun, dass ich jeden Monat nur die beiden Zählerstände, sowie den erzeugten Strom der PV Anlage (Wechselrichter) eintrage und der Rest soll ausgerechnet werden.
    Hierzu habe ich mir folgendes einfaches DataSet überlegt (die Spaltennamen habe ich erstmal bewusst Deutsch gelassen - der Verständlichkeit wegen).

    Haut das mit meinem einfachen DataSet so problemlos hin, oder hättet ihr hier schon einen Verbesserungsvorschlag?

    Edit: Achja. Der Grund, dass ich hierfür ein Programm erstelle und nicht Excel verwende (was sich ja geradezu aufdrängt für dieses Problem) ist, dass ich automatisch die Rechnung erstellen lassen möchte, damit ich das nicht jeden Moant manuel mit Word erledigen muss.

    *Topic verschoben*
    Bilder
    • DataSet.jpg

      34,15 kB, 373×347, 71 mal angesehen
    • Tabelle.jpg

      421,06 kB, 1.920×1.080, 81 mal angesehen

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Monat würd ich aufteilen in Monatsinde (Int32) und Jahr (Int32). Irgendwann willst Du ggf. ne Auswertung machen und dann musst Du sonste Text parsen.
    Berechnete Zeilen: Weiß nicht, ob Du die speichern willst/musst. Ist ne Einstellungssache (beim Programmierer). Wenn Du sie nur für die Rechnung brauchst, würd ich es nicht machen. Aber soviel Platz nimmt es beim Speichern auch nicht weg.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    sollte ich je ein E-Auto anschaffen wollt ich mir auch eine solche Anlage anschaffen, aber
    der Strom sollte dann gespeichert werden.

    zu deiner Anlage:
    ist da keine Software dabei ?
    wird der Zähler bzw. Zählerstände geprüft ? wenn ja von wem
    einfach eine Rechnung an den Stromkonzern ? kann ich mir nicht so vorstellen.
    Was meinst du mit "Monatsinde"?

    Die Spalten die ich errechne brauche ich (erstmal) nur für die Erstellung der Rechnung.
    Allerdings soll ja auch das ganze Programm erstmal nur den Zweck haben, dass ich nur drei Zählerstände eintrage und eben eine Rechnung habe.

    Ich hatte jedoch vor die errechneten Spalten dann im Dts zu speichern, damit eine eventuell später mal angelegte Auswertung einfacher erfolgen kann (und eben nicht dann für jeden Monat gerechnet werden muss).
    Das kann ja evtl. nach 10 bis 15 Jahren eine spürbare (wenn auch kleine) Verzögerung erzeugen.
    Außerdem ermöglicht die Speicherung eine einfachere Dartstellung der Daten in einem DGV (so wie im Excel Beispiel).
    Also ich brauch dann nichts machen, außer ein gebundenes DGV auf die Form klatschen.
    Edit: Ich muss die Werte speichern. Denn ich habe mir überlegt, eine zweite DTSTable zu erstellen um z.B: den aktuellen Strompreis zu speichern. Wenn nun der Strom 3 cent teurer wird, wären ja meine alten Werte (zum aten Strompreis) dann falsch, wenn ich das Ergebnis nicht speichere.

    Edit: @Kasi
    habs mal gespoilert, weils ja mit dem Thema hier nur am Rande zu tun hat und wohl viele nicht interessiert.
    Spoiler anzeigen

    Kasi schrieb:

    einfach eine Rechnung an den Stromkonzern ? kann ich mir nicht so vorstellen.

    Nein. Für den eingespeisten Strom braucht man keine Rechnung erstellen.
    Nach Fertigstellung der PV Anlage kommt ein neuer Zähler, welche die Zählerstände "AusDemNetzGezogen" und "InsNetzEingespeist" speichert.
    Auf Grundlage des eingespeisten Stroms erfolgt die Verrechnung mit dem Energieversorger automatisch.
    Der schickt mir eine Rechnung (bzw. eine Gutschrift). Genau wie beim benutzen des Stroms aus dem Netz.

    Kasi schrieb:

    wird der Zähler bzw. Zählerstände geprüft ? wenn ja von wem

    Es erfolgt in der Regel die auomatische Übermittlung derZählerstände über das Mobilfunknetz, an den Energieversorger.
    Wenn dies nicht funktioniert (kein Mobilfunkempfang z.B.), kann auch der eingespeiste Strom jährlich abgerechnet werden, mit einer festgelegetn Monatlichen Abschlagssumme, die du dann bekommst. Am Ende des Jahres wird geguckt ob alles passt und ggf. Differenzen ausgeglichen. Genau wie beim "kaufen" des Stroms aus der Leitung.

    Kasi schrieb:

    ist da keine Software dabei ?

    Zum Wechselrichter gehört eine Software, die Erzeugungsdaten anzeigt. Aus dieser hohle ich mir ja die Menge des erzeugten Stroms.

    Es geht in meinem Fall nicht darum, den Strom an den Energieversorger zu verkaufen.
    Sondern an eine Firma, die den Strom verwendet, der mit MEINER (privaten) PV Anlage, auf dem Dach der Halle, erzeugt wird.
    Also so, als wenn du auf meinem Wohnhaus eine PV Anlage installieren lässt, und mir den Strom verkaufst.

    Zur Batterie, ja. Hätte ich eine E Auto würde ich auch ernsthaft (zumindest zuhause) über eine Batterie nachdenken.
    Aktuell ist es aber so, dass meine Stromkosten zuhause (aus dem Netz gezogener Strom abzüglich dem was ich fürs Einspeisen bekomme), bei 10 - 20€ im Monat liegen. Das Sparpotenzial einer Batterie liegt also bei maximal 240€ im Jahr. Da brauch ich nicht anfangen zu rechnen.
    Und im Laden ist die Anlage vergleichsweise klein (30KWP (also ca. 30.000KW/Jahr - bei jährlichem Stromverbrauch zwischen 70.000 und 90.000 KW) - da brauch ich auch nicht über eine Batterie nachdenken.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „DerSmurf“ ()

    Da fehlte ein X :rolleyes: : Monatsindex. Also 0-11 oder 1-12, nach Belieben.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Jau. Das ist schöner als den aktuellen Monat Juni um eins zu reduzieren und dann ein Phantasiedatum im Dts zu suchen.



    Sagt mal, wäre es sehr unsauber neben dem Monatsindex auch den Namen des Monats zu speichern?
    Also ich speichere in meiner DataRow den Index = 2 und den Namen = Februar.
    Dies möchte ich tun, damit ich einfach ein gebundenes DGV auf die Form klatschen kann, die Spalte Index blende ich aus und Name zeige ich an.
    Dann steht dort ohne weiteres zutun "Februar" "2012" und "März" "2021".
    Allerdings ist natürlich das speichern des Namens redundant, wenn ich ja bereits den Index habe.

    Beiträge zusammengefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Es ist eine Abwägung zwischen Bequemlichkeit und Speicherbedarf.
    Bequem, aber erhöhter Speicherbedarf (was allerdings aufgrund der Datenmenge lächerlich wenig ist): Monatsindex und Namen pro Monat einspeichern.
    Einen Schritt »effizienter« (?): Ne Extratabelle mit Monatsnamen und mit der ersten Tabelle über den Monatsindex verknüpfen, sodass die Monatstabelle mit IDs versehen ist, die sich in der Haupttabelle wiederspiegelt. Erfordert auf dem Form dann z.B. ein DGV mit ComboBoxColumn und 2 BindingSources.
    Oder am speicherplatzmäßig effizientesten (?): Nur den Index speichern und die Monatsspalte per Code befüllen. Aber darüber nachzudenken sehe ich bei diesem Beispiel schon als Zeitverschwendung an. Du hast 12 Einträge pro Jahr. Da über Effizienz nachzudenken ist absolut Overkill. Meines Erachtens. Speicher die Monatsnamen mit, wenn Du es später nur bequem haben willst. Die Datenbank (oder was immer Du zum Speichern verwendest) lacht über den Mehrverbrauch.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ich bin jetzt fleißig dabei, aber habe ein recht lustiges Problem.
    Auf der frmMain gibt es eine BindingSource zur DataTable DtsElectricity.ElectricityData. Daran hängt ein gebundenes DGV.
    Viel mehr gibts dann auf der Form auch nicht zu sehen.

    Nun ist mir aufgefallen, dass Änderungen an den Spalten (also löschen / hinzufügen) im Designer, bei Ausführung des Programmes nicht übernommen werden.
    Daraufhin habe ich das ganze DGV gelöscht (und nicht neu hinzugefügt). Trotzdem wird es zur Laufzeit noch angezeigt.

    Dann habe ich die Form umbenannt und komplett neu erstellt. Hilft auch nix.
    Was läuft hier falsch?
    Dateien
    • Strom.zip

      (234,38 kB, 57 mal heruntergeladen, zuletzt: )