Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Script Sonnenstand und Einstrahlung

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    224

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Script Sonnenstand und Einstrahlung

Script Sonnenstand und Einstrahlung

Scheduled Pinned Locked Moved Skripten / Logik
35 Posts 7 Posters 11.2k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Y Offline
    Y Offline
    ykuendig
    wrote on last edited by
    #1

    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.

    Gruss Yves

    giorgrazG 1 Reply Last reply
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      wrote on last edited by
      #2

      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?

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Reply Last reply
      0
      • Y Offline
        Y Offline
        ykuendig
        wrote on last edited by
        #3

        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:

        Gruss Yves

        1 Reply Last reply
        0
        • a200A Offline
          a200A Offline
          a200
          wrote on last edited by
          #4

          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!

          IoBroker auf QNAP TS-451, Raspi und NUC

          1 Reply Last reply
          0
          • Y Offline
            Y Offline
            ykuendig
            wrote on last edited by
            #5

            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.

            Gruss Yves

            1 Reply Last reply
            0
            • apollon77A Offline
              apollon77A Offline
              apollon77
              wrote on last edited by
              #6

              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 !?

              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
              1 Reply Last reply
              0
              • Y Offline
                Y Offline
                ykuendig
                wrote on last edited by
                #7

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

                WeatherUnderground installiert noch… Da habe ich noch keine Erfahrung.

                Gruss Yves

                1 Reply Last reply
                0
                • apollon77A Offline
                  apollon77A Offline
                  apollon77
                  wrote on last edited by
                  #8

                  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 🙂

                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                  1 Reply Last reply
                  0
                  • Y Offline
                    Y Offline
                    ykuendig
                    wrote on last edited by
                    #9

                    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.

                    Gruss Yves

                    1 Reply Last reply
                    0
                    • apollon77A Offline
                      apollon77A Offline
                      apollon77
                      wrote on last edited by
                      #10

                      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

                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                      1 Reply Last reply
                      0
                      • Y Offline
                        Y Offline
                        ykuendig
                        wrote on last edited by
                        #11

                        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

                        Gruss Yves

                        1 Reply Last reply
                        0
                        • apollon77A Offline
                          apollon77A Offline
                          apollon77
                          wrote on last edited by
                          #12

                          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

                          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                          1 Reply Last reply
                          0
                          • Y Offline
                            Y Offline
                            ykuendig
                            wrote on last edited by
                            #13

                            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!!

                            Gruss Yves

                            1 Reply Last reply
                            0
                            • apollon77A Offline
                              apollon77A Offline
                              apollon77
                              wrote on last edited by
                              #14

                              Aaaaaahhhhhhh :-))

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

                              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                              1 Reply Last reply
                              0
                              • ThisoftT Offline
                                ThisoftT Offline
                                Thisoft
                                wrote on last edited by
                                #15

                                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?

                                22 HM-Geräte; PivCCU2 auf RasPi

                                ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

                                1 Reply Last reply
                                0
                                • Y Offline
                                  Y Offline
                                  ykuendig
                                  wrote on last edited by
                                  #16

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

                                  Gruss Yves

                                  1 Reply Last reply
                                  0
                                  • apollon77A Offline
                                    apollon77A Offline
                                    apollon77
                                    wrote on last edited by
                                    #17

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

                                    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                    1 Reply Last reply
                                    0
                                    • HomoranH Offline
                                      HomoranH Offline
                                      Homoran
                                      Global Moderator Administrators
                                      wrote on last edited by
                                      #18

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

                                      und:
                                      144_sonnenstand.jpg

                                      Gruß

                                      Rainer

                                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                      1 Reply Last reply
                                      0
                                      • Y Offline
                                        Y Offline
                                        ykuendig
                                        wrote on last edited by
                                        #19

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

                                        Gruss Yves

                                        1 Reply Last reply
                                        0
                                        • HomoranH Offline
                                          HomoranH Offline
                                          Homoran
                                          Global Moderator Administrators
                                          wrote on last edited by
                                          #20

                                          @ykuendig:

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

                                          Gruß

                                          Rainer

                                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          58

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe