Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Vergleich Solarprognosen Solarwetter und brightsky

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Vergleich Solarprognosen Solarwetter und brightsky

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @ticaki last edited by

      @ticaki ja, darauf läuft's hinaus.
      Bedeutet aber, dass ich mich mit den hourly-Werten beschäftigen muss.
      Ich hoffte das vorerst vermeiden zu können, mit allen Einschränkungen die das bringt.

      aber

      @ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:

      Für einen genauigkeitsvergleich ist das aber nix

      wenn ich etwas vergleichen will, muss ich auch gleiche Voraussetzungen vergleichen.
      Der morgendliche Prognosewert wäre einheitlich.

      T 2 Replies Last reply Reply Quote 0
      • T
        ticaki Developer @Homoran last edited by

        @homoran
        Ich Bau dir was ein bekommst heute Abend nen GitHub Branche Link.

        1 Reply Last reply Reply Quote 1
        • T
          ticaki Developer @Homoran last edited by ticaki

          @homoran
          https://github.com/ticaki/ioBroker.brightsky/tree/solar

          Deine States sind für dich erkennbar und stur - die aktualisieren/erstellen sich um 5, wenn du aktuell ein Update oder einen State sehen willst - computer uhr umstellen 😛

          Guckmal im Admin und sag mir, ob das was ich noch eingebaut habe was taugt. ist gerade echt blödes wetter um sowas zu checken

          EDIT:
          Das scheint nicht so zu fuzen - ok ich brauche in meinem echten Leben nie winkelberechnung daher hab ich das jetzt 3 mal in meinem leben gelernt und wieder vergessen- kann mal einer der sich da auskennt auf die chatGPT funktion schauen:

          /**
           * Schätzt die erzeugte elektrische Energie (Wh) für die kommende Stunde.
           *
           * @param valueWhPerM2 GHI für die Stunde (Wh/m²) auf horizontaler Ebene
           * @param time Zeitstempel dieser Stunde (Date | number | string)
           * @param coords { lat, lon }
           * @param panels Array von Panels (azimuth, tilt, area, efficiency in %)
           * @returns Wh (elektrisch) für alle Panels zusammen
           */
          export function estimatePVEnergyForHour(
              valueWhPerM2: number,
              time: Date | number | string,
              coords: Coords,
              panels: Panel[],
          ): number {
              // ===== Helpers (funktion-lokal) =====
              const toRad = (d: number): number => (d * Math.PI) / 180;
              const clamp01 = (x: number): number => Math.min(1, Math.max(0, x));
              const normEff = (pct: number): number => clamp01(pct / 100); // 0..100% → 0..1
          
              // Konstanten (einfaches, robustes Modell)
              const ALBEDO = 0.2; // Bodenreflexionsfaktor
          
              // Sonnenstand holen
              const date = time instanceof Date ? time : new Date(time);
              const pos = suncalc.getPosition(date, coords.lat, coords.lon);
              const sunEl = pos.altitude; // Elevation in rad
              // SunCalc-Azimut: 0 = Süd, +West; auf 0=N, 90=E normieren:
              const sunAzDeg = ((pos.azimuth * 180) / Math.PI + 180 + 360) % 360;
              const sunAz = toRad(sunAzDeg);
          
              if (sunEl <= 0 || valueWhPerM2 <= 0 || panels.length === 0) {
                  return 0;
              }
          
              // Grobe Aufteilung in Direkt/Diffus aus Elevation (ohne externe Daten):
              const beamFraction = clamp01(Math.sin(sunEl) * 1.1);
              const diffuseFraction = 1 - beamFraction;
          
              let totalWh = 0;
          
              for (const p of panels) {
                  const eff = normEff(p.efficiency);
                  if (eff <= 0 || p.area <= 0) {
                      continue;
                  }
          
                  const tilt = toRad(p.tilt);
                  const az = toRad(((p.azimuth % 360) + 360) % 360);
          
                  // Modulnormalen-Vektor
                  const nx = Math.sin(tilt) * Math.sin(az);
                  const ny = Math.sin(tilt) * Math.cos(az);
                  const nz = Math.cos(tilt);
          
                  // Sonnenvektor
                  const sx = Math.cos(sunEl) * Math.sin(sunAz);
                  const sy = Math.cos(sunEl) * Math.cos(sunAz);
                  const sz = Math.sin(sunEl);
          
                  // Einfallswinkel
                  const cosTheta = Math.max(0, nx * sx + ny * sy + nz * sz);
          
                  // Direktanteil von horizontal → Modulfläche
                  const dirGain = cosTheta / Math.max(1e-6, Math.sin(sunEl));
          
                  // Diffus isotrop + Bodenreflexion
                  const skyDiffuseGain = (1 + Math.cos(tilt)) / 2;
                  const groundRefGain = (ALBEDO * (1 - Math.cos(tilt))) / 2;
          
                  // POA-Energie (Wh/m²) auf dem Modul für die Stunde
                  const poaWhPerM2 = valueWhPerM2 * (beamFraction * dirGain + diffuseFraction * skyDiffuseGain + groundRefGain);
          
                  // Elektrische Energie
                  const elecWh = Math.max(0, poaWhPerM2) * p.area * eff;
                  totalWh += elecWh;
              }
          
              return totalWh;
          }
          
          Homoran K 4 Replies Last reply Reply Quote 1
          • Homoran
            Homoran Global Moderator Administrators @ticaki last edited by Homoran

            @ticaki Danke!
            seh ich mir später genauer an.

            @ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:

            stur - die aktualisieren/erstellen sich um 5,

            das mache ich im Moment, indem ich um 15 5 * * * den Wert in einen eigenen Datenpunkt schreibe und mit dem weiterarbeite 😉

            1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @ticaki last edited by

              @ticaki ist das ok so?
              brightsky.0 2025-09-09 18:00:34.585 error Error fetching daily weather data: {}

              folge der sturen 5 Uhr Regel 😂 ?

              zu deinem EDIT

              @ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:

              ich brauche in meinem echten Leben nie winkelberechnung daher hab ich das jetzt 3 mal in meinem leben gelernt und wieder vergessen- kann mal einer der sich da auskennt auf die chatGPT funktion schauen:

              ich kann das auch nicht!
              Ich muss auch jedesmal irgrndwo abschreiben, sorry!

              Vielleicht kann @klassisch aushelfen

              1 Reply Last reply Reply Quote 0
              • K
                klassisch Most Active @ticaki last edited by klassisch

                @ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:

                Das scheint nicht so zu fuzen - ok ich brauche in meinem echten Leben nie winkelberechnung daher hab ich das jetzt 3 mal in meinem leben gelernt und wieder vergessen- kann mal einer der sich da auskennt auf die chatGPT funktion schauen:

                Ich habe auch CHatGPT gefragt und habe ein Skript am Laufen.
                Das nimmt die 13 Stundenwerte für die Enerie, errechnet jeweils den Sonnenstand dazu und die Projektion auf die Modulfläche. Dann werden die 13 Werte addiert.

                Es kommt ein Wert raus, der in einem plausiblen Rahmen liegt. Aber heute hat es lange geregnet und es war wolkig und da war die Schätzung zu hoch.

                Ich weiss nicht, ob man ChatGPT Programme veröffentlichen darf. Kann es Dir per Chat zukommen lassen bei Bedarf.

                Den diffusen Anteil habe ich mal weggelassen. Erst mal die Grundfunktion hinbekommen.
                Für den hier behandelten Zweck ist der diffuse Anteil zumindest bei meiner Anlagengröße und -Anordnung nicht wichtig. Wenn der direkte Strahlungsanteil so klein wird, daß der Diffusanteil relevant wird, dann riskiere ich kein netzdienliches Verhalten, sondern fahre mit Priorität auf Selbstversorgung. An solchen Tagen ist Einspeisung - falls es die denn überhaupt gibt - meist eh willkommen.

                Homoran 1 Reply Last reply Reply Quote 1
                • Homoran
                  Homoran Global Moderator Administrators @klassisch last edited by Homoran

                  @klassisch sagte in Vergleich Solarprognosen Solarwetter und brightsky:

                  Ich weiss nicht, ob man ChatGPT Programme veröffentlichen darf

                  ich würde mich sehr wundern, wenn hier kein chatGPT Bot im Forum unterwegs wäre um sein Wissen zu vermehren.
                  Dementsprechend sollte das ein Nehmen und Geben sein, und wir unsere humanIntelligence mit seinem Wissen schärfen können.

                  K 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @ticaki last edited by Homoran

                    @ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:

                    Guckmal im Admin und sag mir, ob das was ich noch eingebaut habe was taugt

                    Meinst du advanced und diesen DP?
                    Screenshot_20250909-204555_Firefox.jpg

                    auch wenn du deine trigonometrischen Kenntnisse bezweifelst, so ist es doch
                    Screenshot_20250909-204633_Firefox.jpg
                    verdammt dicht dran

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      ticaki Developer @Homoran last edited by

                      @homoran
                      Bei mir war es auch recht dicht dran. Hier ist aber ein L Dach und ich habe Abschattungen in der Formel ignoriert

                      Homoran 2 Replies Last reply Reply Quote 2
                      • K
                        klassisch Most Active @Homoran last edited by

                        @homoran Ich hoffe doch schwer, daß ChatGPT hier mal vorbei schaut. Irgendwoher muss ja das Wissen kommen.
                        Hier mal das Skript auf Basis von ChatGPT.
                        Es hat noch einige spezifische Datenpunkte aus meinem userdata Bestand.
                        Dann wird npm "suncalc" benötigt. War bei mir schon im Bestand. Mit dem Handling der dependencies kenne ich mich nicht aus.

                        Ich lasse das Skript um 05:00 und 08:00 rennen.
                        Falls es untertägig gestartet wird, verwende ich noch den bis dahin angefallenen PV Ertrag mit, weil das Skript ja nur in die Zukunft schaut, wenn ich die Datenstruktur richtig verstanden habe.

                        
                        /*********************************************
                        *
                        *  calculates expected sun energy on base of DWD stations
                        *  provided by bright sky adapter
                        *
                        * suncalc is mandatory
                        * if not already installed
                        * cd /opt/iobroker
                        * npm install suncalc
                        *    on my Win computer
                        *    C:\ioBroker>npm install suncalc
                        *    and was already existent
                        *
                        *  Some common terms used in this script according https://www.intechopen.com/chapters/82468
                        *  Global horizontal irradiance (GHI) is the solar irradiance from the hemisphere above on a horizontal surface
                        *  plane of array (POA) or global tilted irradiance (GTI) is solar irradiance incident on a tilted plane (PV panel
                        *  
                        *
                        *
                        *
                        *
                        ***/
                        
                        
                        // ==========================
                        // Konfiguration
                        // ==========================
                        const AREA_M2      = 20 * 1.755 * 1.038;    // Fläche A in m²
                        const EFFICIENCY   = 0.20;  // Wirkungsgrad (z. B. 20% -> 0.20)
                        const ALPHA_DEG    = -10;     // Azimut der Fläche (0 = Süd, negativ Ost, positiv West)
                        const BETA_DEG     = 30;    // Neigung in Grad gegen Horizontal
                        
                        const pVEnergyUpToNowId= '0_userdata.0.power.pvFrDCEnergy.pvFrDCEnergyToday';
                        var pVEnergyUpToNow = getState(pVEnergyUpToNowId).val;
                        
                        // ==========================
                        const SunCalc = require("suncalc");
                        
                        function deg2rad(d){ return d * Math.PI / 180; }
                        function rad2deg(r){ return r * 180 / Math.PI; }
                        
                        // Hauptfunktion
                        function calcPOA() {
                            // 1) Koordinaten holen
                            const lat = getState("brightsky.0.current.sources.00.lat").val;
                            const lon = getState("brightsky.0.current.sources.00.lon").val;
                        
                            const alpha = deg2rad(ALPHA_DEG);
                            const beta  = deg2rad(BETA_DEG);
                        
                            let results = [];
                            let totalEnergy = 0;
                        
                            for (let i=0; i<=12; i++) {
                                const base = "brightsky.0.hourly." + ("0"+i).slice(-2);
                        
                                const tsStr = getState(base + ".timestamp").val; // z. B. 2025-09-09T03:00:00+00:00
                                const ghi   = getState(base + ".solar").val;     // in kWh/m²
                        
                                if (!tsStr || ghi == null) continue;
                        
                                const time = new Date(tsStr); // iobroker zeigt automatisch in Lokaltime
                                const pos = SunCalc.getPosition(time, lat, lon);
                        
                                const h = pos.altitude;  // Sonnenhöhe (rad)
                                //console.log('Sonnenhoehe: ' + h);
                                const gamma_s = pos.azimuth; // Sonnenazimut (rad, von Süden gegen Westen)
                        
                                if (h <= 0) {
                                    results.push({hour:i, time:time.toString(), ghi, poa:0, energy:0});
                                    continue;
                                }
                        
                                const cosTheta = Math.sin(h) * Math.cos(beta) +
                                                 Math.cos(h) * Math.sin(beta) * Math.cos(gamma_s - alpha);
                        
                                const Rb = Math.max(0, cosTheta) / Math.max(1e-6, Math.sin(h));
                                const RbClamped = Math.min(Rb, 5);
                        
                                const poa_kwh_m2 = ghi * RbClamped;
                                const energy_kWh = poa_kwh_m2 * AREA_M2 * EFFICIENCY;
                        
                                totalEnergy += energy_kWh;
                        
                                results.push({
                                    hour: i,
                                    time: time.toString(),
                                    ghi,
                                    poa_kwh_m2,
                                    energy_kWh
                                });
                            }
                        
                            log("Gesamte erwartete Energie (next 12h): " + totalEnergy.toFixed(2) + " kWh");
                            log("Gesamte erwartete Energie heute: " + Math.round(totalEnergy + getState(pVEnergyUpToNowId).val/1000) + " kWh"); 
                            log("Detail: " + JSON.stringify(results, null, 2));
                        
                            // Optional: Ergebnis in einen Datenpunkt schreiben
                            //on my ioBroker: 0_userdata.0.power.pvFrDCEnergy
                            const solarforecastUserdataId = "0_userdata.0.power.pvFrDCEnergy.SolarForecast-total12h";
                            createState(solarforecastUserdataId, 0, {type: "number", unit: "kWh"});
                            setState(solarforecastUserdataId, Math.round(totalEnergy + getState(pVEnergyUpToNowId).val/1000), true); // if run after 05:00, the energy which was already harvested has to be added
                        }
                        
                        // Skript beim Start und jeden Morgen um 05:10 Uhr ausführen
                        schedule("10 5 * * *", calcPOA); 
                        schedule("10 8 * * *", calcPOA); 
                        
                        calcPOA(); // sofort beim Start einmalig
                        
                        
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @ticaki last edited by Homoran

                          @ticaki wenn man die heutige Sonnenscheinverteilung bei mir sieht
                          Screenshot_20250909-210217_Firefox.jpg
                          hat heute wahrscheinlich die diffuse Strahlung das meiste gebracht 😂

                          K 2 Replies Last reply Reply Quote 0
                          • K
                            klassisch Most Active @Homoran last edited by

                            @homoran sagte in Vergleich Solarprognosen Solarwetter und brightsky:

                            @ticaki wenn man die heutige Sonnenscheinverteilung bei mir sieht hat heute wahrscheinlich die diffuse Strahlung das meiste gebracht 😂

                            An solchen Tagen ist die Fahrweise einfach. Ich habe heute auch alles selbst gebraucht.

                            Homoran 1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @klassisch last edited by

                              @klassisch sagte in Vergleich Solarprognosen Solarwetter und brightsky:

                              Ich habe heute auch alles selbst gebraucht.

                              "Meine Batterie ist alle"
                              (Bis auf die Reserve für Blackout)

                              K 1 Reply Last reply Reply Quote 0
                              • K
                                klassisch Most Active @Homoran last edited by

                                @homoran Heute wird es interessant. Morgennebel, der auch in der DWD App erkennbar ist. Es fehlen also am Morgen 1 bis 2 Stunden Sonne. Dennoch sagt das Skript einen relativ guten Jahresertrag voraus, der es auf Platz 131 in 2025 schaffen würde. Mal schauen was passiert. Wahrscheinlich muß ich den Wirkungsgrad noch ein paar Prozentpunkte pauschal runter nehmen.

                                Homoran 1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @klassisch last edited by

                                  @klassisch sagte in Vergleich Solarprognosen Solarwetter und brightsky:

                                  Heute wird es interessant

                                  ja!

                                  der estimate passt heute zu meiner Faktorisierung.
                                  Screenshot_20250910-085705_Firefox.jpg

                                  ich muss mich irgendwann ™ mal mit den stündlichen Werten beschäftigen

                                  T 1 Reply Last reply Reply Quote 0
                                  • T
                                    ticaki Developer @Homoran last edited by

                                    @homoran sagte in Vergleich Solarprognosen Solarwetter und brightsky:

                                    ich muss mich irgendwann ™ mal mit den stündlichen Werten beschäftigen

                                    hm von X kenne ich da das soon ™ - du wast da nicht mal aktiv vor jahrzehnten? 🙂

                                    Homoran 1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @ticaki last edited by

                                      @ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:

                                      du wast da nicht mal aktiv vor jahrzehnten?

                                      never! keine unsoziale Medien!

                                      T 1 Reply Last reply Reply Quote 0
                                      • K
                                        klassisch Most Active @Homoran last edited by

                                        [OT]
                                        @homoran sagte in Vergleich Solarprognosen Solarwetter und brightsky:

                                        Screenshot_20250909-210217_Firefox.jpg

                                        Wie erzeugst Du den underlay, also die hellgraue Parabel? Das muß doch auch dynamisch sein. Wäre hier auch vorteilhaft. Dann könnte man sehen, wie zutreffend die stündliche Prognose startet.

                                        Homoran 1 Reply Last reply Reply Quote 0
                                        • T
                                          ticaki Developer @Homoran last edited by

                                          @homoran
                                          vor Jahrzehnte war X nicht vermurks sondern ne Weltraumhandelssimulation von Egosoft 🙂

                                          1 Reply Last reply Reply Quote 1
                                          • Homoran
                                            Homoran Global Moderator Administrators @klassisch last edited by Homoran

                                            @klassisch sagte in Vergleich Solarprognosen Solarwetter und brightsky:

                                            Wie erzeugst Du den underlay, also die hellgraue Parabel?

                                            Das ist eine empirisch ermittelte Parabel. Jetzt im Bereich Equinoktium passt sie ganz gut, zur Sommersonnenwende noch nicht.
                                            Schlimmer wurde das Ganze als ich versuchte noch die Temperatur einfließen zu lassen.
                                            Da ich (noch) nicht wirklich die Paneltemperatur zur Verfügung habe, arbeite ich mit der Lufttemperatur.
                                            Bei reichlich Wind sind die Panels wegen doppellagiger Hinterlüftung aber anscheinend deutlich kühler.

                                            Der neue Sensor liegt bereit. will ich im Herbst unter zwei Panels kleben.

                                            Ich seh mal ob ich das Teilblockly sinnvoll hier hereinbekomme

                                            EDIT:
                                            ist das lesbar?
                                            Screenshot_20250910-124217_Firefox.jpg

                                            K 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            788
                                            Online

                                            32.1k
                                            Users

                                            80.6k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            46
                                            684
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo