Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Script Sonnenstand und Einstrahlung

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Script Sonnenstand und Einstrahlung

    This topic has been deleted. Only users with topic management privileges can see it.
    • Y
      ykuendig last edited by

      Damit meiner Einer auch mal etwas an die Community zurückgeben kann:

      Ich habe das Sonnenstand-Script aus dem Forum mit einem Python Programm von meinem vorherigen Solar-Pi gebastel verheiratet.

      Herausgekommen ist eine Möglichkeit, die theoretische Leistung einer PV-Anlage abzuschätzen und zu loggen. Damit das etwas wissenschaftlich ausschaut, hab ich das mit allerlei Formelzeugs aus dem Internet vollgepackt.

      Machen tue ich das so:

      // calculates the sun position, path and power throughout the day
      // based on from http://www.stjarnhimlen.se/comp/tutorial.html
      // most var-names are identical to above tutorial
      // combined with Sonnenstand-Script: paul53, pix; 06.07.2015 nach ioBroker Forum http://forum.iobroker.net/viewtopic.php?f=21&t=975&sid=6f0ba055de5f82eed6809424f49ca93b#p7635
      // Angepasst ykuendig 12.02.17; stringify im log, ack = true bei setState und Diverses
      
      var suncalc = require('suncalc'),
          result =  getObject("system.adapter.javascript.0"),
          lat =  result.native.latitude,
          long = result.native.longitude;
      
      var modtilt =       38;     //Dachneigung in Grad (Solar panel's tilt angle)
      var modazi =        200;    //Ausrichtung des Hauses in Grad zB SSW (Solar panel's azimut)
      var modsufrace =    56.0;   //Paneloberfläche in m2 (Solar panel's surface in sq. meters)
      var modeff =        0.183;  //Annäherung an Panel-Wirkungsgrad zB 18 Prozent (modules efficiency correction)
                                               // Hier kann an einem klaren Tag etwas geschraubt werden ;-)
      
      var altitude;       // Calculated Elevation
      var azimuth;        // Calculated Azimuth
      
      createState('javascript.0.Solar.Sonnenstand.Elevation', 0, {unit: '°'});
      createState('javascript.0.Solar.Sonnenstand.Azimut', 0, {unit: '°'});
      createState('javascript.0.Solar.Sonnenstand.PanelPossible', 0, {unit: 'W'});
      // ganz am Ende die setStates anpassen nicht vergessen!
      
      // Do not change below, until You know what You are doing!
      // ********************************************************
      
      Math.degrees = function(radians) {return radians * 180 / Math.PI;};
      Math.radians = function(degrees) {return degrees * Math.PI / 180;};
      
      function Sonnenstand_berechnen () {
          var now = new Date();
          var sunpos = suncalc.getPosition(now, lat, long);
          log("Script Sonnenstand; latitude : " + result.native.latitude + " / longitude: " + result.native.longitude,'debug');
          log("Script Sonnenstand; sunpos: " + JSON.stringify(sunpos),'debug');
      
          altitude = Math.degrees(sunpos.altitude);
          azimuth =  Math.degrees(sunpos.azimuth) + 180;
      
          // The intensity of the direct component of sunlight throughout each day can be determined as 
          // a function of air mass. based on: http://pveducation.org/pvcdrom/properties-of-sunlight/air-mass#formula
          var airmass = 1/Math.cos((90-altitude)*4*Math.asin(1)/360); 
      
          // Sincident is the intensity on a plane perpendicular to the sun's rays in units of kW/m2 and AM is the air mass.
          // The value of 1.353 kW/m2 is the solar constant and the number 0.7 arises from the fact that about 70% of the radiation incident on the atmosphere is transmitted
          // to the Earth. The extra power term of 0.678 is an empirical fit to the observed data and takes into account the non-uniformities in the atmospheric layers.
          // ykuendig: use different values because of pv instead thermal panels
          var Sincident = (1.367*Math.pow(0.78,Math.pow(airmass,0.6)));
          var fraction = Math.cos(altitude*4*Math.asin(1)/360)*Math.sin(modtilt*4*Math.asin(1)/360)*Math.cos(azimuth*4*Math.asin(1)/360-modazi*4*Math.asin(1)/360)+Math.sin(altitude*4*Math.asin(1)/360)*Math.cos(modtilt*4*Math.asin(1)/360);
      
          // W/m² light intensity on the module * module's surface
          var SmoduleInt = Sincident * fraction * modsufrace * 1000;
          if(SmoduleInt<0) {
              SmoduleInt =    0;
          }
          // Module Effective in relation of the efficiency of the used panel
          var SmoduleEff = SmoduleInt * modeff;
      
          if( altitude < 0 ) {
              SmoduleInt =    0;
              SmoduleEff =    0;
              altitude =      0;
          }
      
          log("Script Sonnenstand; Erfolgreich gelaufen, Werte akzeptiert", "info");
          log("Script Sonnenstand; airmass: " + airmass,"debug");
          log("Script Sonnenstand; azimuth: " + azimuth,"debug");
          log("Script Sonnenstand; altitude: " + altitude,"debug");
          log("Script Sonnenstand; SmoduleInt: " + SmoduleInt,"debug");
          log("Script Sonnenstand; SmoduleEff: " + SmoduleEff,"debug");
      
          // Change ID to the created States
          setState("javascript.0.Solar.Sonnenstand.Elevation",altitude.toFixed(1), true);
          setState("javascript.0.Solar.Sonnenstand.Azimut",azimuth.toFixed(), true);
          setState("javascript.0.Solar.Sonnenstand.PanelPossible", SmoduleEff.toFixed(), true);
      }
      
      // -> Zyklisch
      
      schedule("*/1 * * * *", Sonnenstand_berechnen);
      Sonnenstand_berechnen(); // bei Scriptstart
      
      

      Aussehen kann das zum Beispiel so:
      452_elektro02.png
      Dafür muss aber Sonnenstand und Leistung mit einem der History-Adapter regelmässig gespeichert werden.

      giorgraz 1 Reply Last reply Reply Quote 0
      • apollon77
        apollon77 last edited by

        Cool :-))

        Fragen:

        var modtilt =       38;     //Solar panel's tilt angle
        

        Dachneigung bzw Neigung der panels, korrekt?!

        var modazi =        200;    //Solar panel's azimut
        

        Ausrichtung in Grad … also Äquivalenz zu "SW" und so, korrekt?!

        var modsufrace =    56.0;   //Solar panel's surface in sq. meters
        

        Auch klar.

        var modeff =        0.183;  //modules efficiency correction
        

        Wo hast Du das her?

        Ansonsten: Macht es ggf Sinn noch aus dem Weatherunderground-Adapter werte wie Sonneneinstrahlung oder "bewölkt"/nicht bewölkt mit reinzunehmen um die erwartung von der aktuellen Wetterlage besser abhängig zu machen?

        1 Reply Last reply Reply Quote 0
        • Y
          ykuendig last edited by

          Du hast das schon gut verstanden. Habe aber trotzdem noch ein paar Übersetzungen ins obige Script nachgetragen. 😉

          -Wo hast Du das her?- Das stand auf der Verpackung meiner Module, hiess dort Wirkungsgrad. – Aber, im Ernst. das muss an einem 'guten', klaren Tag etwas zurechtgesturzt werden. Das Original rechnete die solare 'Leistung' auf eine Fläche und war für eine thermische Nutzung konzipiert. Ich habe das für PV nur 'gestohlen'. Die Anzeige hilft mir, zu sehen wo ich etwa stehe. Ich mach damit keine wissenschaftliche Auswertung, oder verklage gar den lieben Gott wegen zu viel Nebel. :mrgreen:

          1 Reply Last reply Reply Quote 0
          • a200
            a200 last edited by

            Sollte man den Wirkungsgrad so anpassen, dass die orangene Kurve auf der gelben sitzt. Damit hätte man den reellen Wirkungsgrad bestimmt.

            Ich habe lediglich eine Solaranlage zur Warmwassererzeugung. Ich arbeite daran den E-Bus meiner Heizungsanlage an ioBroker anzuschließen. Dann werde ich versuchen die Energiegewinnung auszuwerten.

            Aber es sieht echt gut aus, was du da gemacht hast. Hut ab!

            1 Reply Last reply Reply Quote 0
            • Y
              ykuendig last edited by

              Wie ich geschrieben habe. JA- aber an einem 'guten', klaren Tag. Das Bild im Beispiel oben zeigt die Werte von gestern. Es war bei uns sonning, aber auch ein klein wenig dunstig. Die Anlage konnte nicht am Maximum laufen. Ich habe diesen Werte letztes Jahr in ein, zwei kleinen Schritten angepasst. Angefangen von 19% (0.19) bis nun (0.183). Damals lief das aber mit Python und pushte die Werte an emoncms.

              Bei einer thermischen Nutzung hast systembedingt einen viel höheren Wirkungsgrad. Dann musst zB (0.75) oder gar mehr eintragen.

              Wie gesagt die rechnerische Basis (die Formeln) kommen ursprünglich aus der thermischen Nutzung, was aber auch egal ist. Sonne bleibt Sonne.

              1 Reply Last reply Reply Quote 0
              • apollon77
                apollon77 last edited by

                Die Frage ist echt ob man weatherunderground ehmen kann um es nicht zu verbessern. Bei deren Messstationen gibt es z.B. einen Datenpunkt namens Solar Radiation wo bei Karlsruhe aktuell 370W/m2 steht … Vllt echt ne Idee Dinge wie Nebel, Wolken oder so direkt einzukalkulieren, oder !?

                1 Reply Last reply Reply Quote 0
                • Y
                  ykuendig last edited by

                  Habe nun mal noch Werte vom Solarwetter Adapter zum testen reingenommen.

                  WeatherUnderground installiert noch… Da habe ich noch keine Erfahrung.

                  1 Reply Last reply Reply Quote 0
                  • apollon77
                    apollon77 last edited by

                    Bei Weatherunderground musst du ggf bissl stationen suchen bis Du eine hast die Solar-Radiation liefert. Die meisten der "kleinen privaten Stationen" haben das nicht. Ich hab daher zwei Adapter laufen. Einmal die nächste sinnvolle private für temperaturen und so und einmal die "offizielle Karlsruhe" wo dann mehr Daten da sind.

                    Solarwetter Adapter … oh den gibts ja auch 🙂

                    1 Reply Last reply Reply Quote 0
                    • Y
                      ykuendig last edited by

                      Welche Karlsruhe genau? Muss mal prüfen ob man das auf der Homepage vorabklären kann. Hab keine Lust, alle mit dem Adapter durchzuprüfen.

                      1 Reply Last reply Reply Quote 0
                      • apollon77
                        apollon77 last edited by

                        Location: Karlsruhe%2C+Germany

                        Station: IBADEN-W33

                        Dort unter "current.solarradiation" … aktuell natürlich 0 🙂

                        378_bildschirmfoto_2017-02-16_um_21.18.22.png
                        Werden scheinbar alle 30 Minuten aktualisiert

                        1 Reply Last reply Reply Quote 0
                        • Y
                          ykuendig last edited by

                          Habe mittlerweile auch welche in der Region gefunden. (Karlsruhe ist ja doch ein paar Stündchen hin).

                          Habe aber heraus gefunden, das der GROSSE radiation-sensor bei mir auf dem Dach schneller und präziser die aktuelle lokale Sonne anzeigt! :twisted: :lol: :twisted:

                          Aber das mit dem Solarwetter-Adapter könnte wegen den forecast Daten was werden…
                          452_elektro03.png

                          1 Reply Last reply Reply Quote 0
                          • apollon77
                            apollon77 last edited by

                            Am Ende kommen ja aber von allen nur W/m2 oder ?! Das heisst jeder kann sich eine sinnvolle Quelle suchen und dort nutzen, oder ?! Das wäre cool

                            1 Reply Last reply Reply Quote 0
                            • Y
                              ykuendig last edited by

                              Ja, klar; aber Du hast meine Ironie überlesen, denke ich.

                              Ich habe einen GROSSEN 'radiation–sensor' auf dem Dach ---> sprich meine Solaranlage. Die zeigt sinngemäss EXAKT an ob und wie starkt die Sonne scheint -> also radiation.current an. Und das ganz GENAU für meine Location!!

                              1 Reply Last reply Reply Quote 0
                              • apollon77
                                apollon77 last edited by

                                Aaaaaahhhhhhh :-))

                                SO ein externer Wert ist natürlich cool um den exakten Wirkungsgrad rauszubekommen bzw die Erwartungskurve trotz Nebel o.ä. korrekter zu haben

                                1 Reply Last reply Reply Quote 0
                                • Thisoft
                                  Thisoft last edited by

                                  Ich wollte jetzt mal versuchen die auf Wetterunderground veröffentlichte Solarradiation zur Berechnung der möglichen PV-Leistung zu verwenden - habe nämlich bis jetzt noch keine PV-Anlage. Da ich eine WU-Station in der näheren Umgebung habe die die Solardaten anbietet müssten die Daten ja relativ zuverlässig sein.

                                  Nun bin ich mir nicht ganz sicher, ob ich in deinem Script einfach anstelle der um den Airmass-Wert korrigierten 1.367kW/m³ den WU-Wert verwenden kann, also konkret diese Zeile:

                                      var Sincident = (1.367*Math.pow(0.78,Math.pow(airmass,0.6)));
                                  

                                  durch folgende ersetzen:

                                      var Sincident = (getState("weatherunderground.0.current.solarradiation").val/1000);
                                  

                                  Ich erhalte damit Werte die schon ungefähr plausibel sein könnten, mir allerdings tendenziell etwas niedrig erscheinen. Kannst du das vielleicht mal vergleichen?

                                  1 Reply Last reply Reply Quote 0
                                  • Y
                                    ykuendig last edited by

                                    Dann müsste ich ja rechnen :lol:

                                    Aber ich hätte da vielleicht was für dich. Muss es bloss schnell zusammenkopieren.

                                    Ich habe die Tage mit dem Solarwetter-Adapter getestet. Damit habe ich zusätzlich zur möglichen, die zu erwartenden min in max Werte mit geschrieben. Damit könntest vielleicht auch was anfangen.

                                    Aber Vorschlag zur Güte; ich hau das mal als weitere Linie mit rein. und dann wissen wir morgen oder so mehr. – ist allerdings dunkles Wetter angesagt die nächsten Tage --

                                    1 Reply Last reply Reply Quote 0
                                    • apollon77
                                      apollon77 last edited by

                                      +1 … meine Anlage ist auch bestellt und ich bereite mich gerade darauf vor ;-)))

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

                                        Ist das hier etwas für euch?
                                        144_solar_verbrauchs_auswertung.jpg

                                        und:
                                        144_sonnenstand.jpg

                                        Gruß

                                        Rainer

                                        1 Reply Last reply Reply Quote 0
                                        • Y
                                          ykuendig last edited by

                                          Nur, wenns vom broker kommt - Du weisst was ich meine?!

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

                                            @ykuendig:

                                            Nur, wenns vom broker kommt - Du weisst was ich meine?! `
                                            noch nicht 😞

                                            Gruß

                                            Rainer

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            632
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            35
                                            8975
                                            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