Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Azimut und Elevation vom Wiffi spinnen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Azimut und Elevation vom Wiffi spinnen

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

      Seit einigen Tagen habe ich mehrmals täglich Aussetzer in der Berechnung der Solarposition über den Wiffi:
      wiffi_solarposition.png

      Die anderen Werte kommen aber in der selben Zeit weiter, so dass ich eine fehlerhafte Abfrage ausschließen kann.
      Auch auf der CCU setzen zeitgleich die Werte der Solarposition aus dem wiffi aus.

      Ein Reboot des Wiffi brachte nur von gestern abend bis zu dem im Graphen gezeigten Aussetzer Besserung.

      Das parallel noch immer auf der CCU laufende Script von @funkleuchtturm liefert weiterhin die richtigen Werte.

      Das parallel auf ioBroker laufende Uralt-Skript von 2015, jedoch nicht.

      /* System Sonnenstand
       {1}
       Sonne Azimut und Elevation in Variablen schreiben
       {1}
       erstellt: 06.07.2015 nach ioBroker Forum http://forum.iobroker.net/viewtopic.php?f=21&t=975&sid=6f0ba055de5f82eed6809424f49ca93b#p7635
       */
      var Elevation = "javascript.1.Sonnenstand.Elevation";
      var Azimut = "javascript.1.Sonnenstand.Azimut";
      var zenit = formatDate(getAstroDate('solarNoon'), 'hh:mm') + ' Uhr'; 
      var nadir = formatDate(getAstroDate('nadir'), 'hh:mm') + ' Uhr';
       
      var suncalc = require('suncalc'),
          result = getObject("system.adapter.javascript.0"),
          lat = result.native.latitude,
          long = result.native.longitude;
       
      createState(Elevation, 0) ; // , {unit: '°'});
      createState(Azimut, 0) ; // , {unit: '°'});
      createState('Sonnenstand.Zenit', '12:00', {type: "string"});
      createState('Sonnenstand.Nadir', '00:00', {type: "string"});
        
       function Sonnenstand_berechnen () {
           var now = new Date();
        
           var sunpos = suncalc.getPosition(now, lat, long);
           console.log(sunpos);
        
           var h = sunpos.altitude * 180 / Math.PI,
               a = sunpos.azimuth * 180 / Math.PI + 180;
        
            setState("Sonnenstand.Elevation", Math.round(10 * h) / 10,true);
            setState("Sonnenstand.Azimut", Math.round(a),true);
            setState("Sonnenstand.Zenit", zenit, true);
            setState("Sonnenstand.Nadir", nadir, true);
        
       }
        
       schedule("*/5 * * * *", Sonnenstand_berechnen); // alle 5 Minuten zur vollen Minute
       Sonnenstand_berechnen(); // bei Scriptstart
      

      Hier habe ich diverse Variablen über console.log ausgeben lassen und bin bei der sunpos auf unplausible Werte gestoßen:
      11:00:00.083 info javascript.1 (21904) script.js.Wetter_und_Klima.Sonnenstand: {'azimuth':-1.5663300872338395,'altitude':1.0120699553297068}

      Kann mir bitte jemand sagen, wo ich dran schrauben muss?

      EDIT:
      ich glaube es liegt hier dran:

          result = getObject("system.adapter.javascript.1"),
          lat = result.native.latitude,
          long = result.native.longitude;
      

      ich kann diese Objekte nicht finden

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Homoran last edited by

        @homoran sagte: ich kann diese Objekte nicht finden

        Hast Du die Koordinaten in der Konfiguration der Javascript-Instanz 1 eingetragen?

        var zenit = formatDate(getAstroDate('solarNoon'), 'hh:mm') + ' Uhr'; 
        var nadir = formatDate(getAstroDate('nadir'), 'hh:mm') + ' Uhr';
        

        Diese Berechnung darf nicht nur bei Skript-Start erfolgen, sondern mind. einmal pro Tag.

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

          @paul53 sagte in Azimut und Elevation vom Wiffi spinnen:

          Hast Du die Koordinaten in der Konfiguration der Javascript-Instanz 1 eingetragen?

          ja!
          deswegen hatte ich auch mal javascript.1 probiert, im ersten Versuch stand da aus alten Tagen noch .0, wo nur use system config angehakt war

          @paul53 sagte in Azimut und Elevation vom Wiffi spinnen:

          Diese Berechnung darf nicht nur bei Skript-Start erfolgen, sondern mind. einmal pro Tag.

          Das wäre dann finetuning - Danke!

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Homoran last edited by

            @homoran sagte: ja! deswegen hatte ich auch mal javascript.1 probiert

            Dann müssten die Koordinaten im Tab "NATIV" von "system.adapter.javascript.1" oben zu sehen sein.

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

              @paul53 sagte97):

              Dann müssten die Koordinaten im Tab "NATIV" von "system.adapter.javascript.1" oben zu sehen sein.

              Ja!
              Da sind sie

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Homoran last edited by paul53

                @homoran sagte: Da sind sie

                Dann müssen sie auch im Skript eingelesen werden. Ergänze mal in Zeile 16:

                log('Latitude: ' + lat + ' °, Longitude: ' + long + ' °');
                
                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @paul53 last edited by Homoran

                  @paul53 sagte:

                  @homoran sagte: Da sind sie
                  Damm müssen sie auch im Skript eingelesen werden. Ergänze mal in Zeile 16:
                  log('Latitude: ' + lat + ' °, Longitude: ' + long + ' °');

                  werde ich machen, hatte gerade in RAW nachgesehen:

                  "native": {
                      "latitude": "50.xxxxx",
                      "longitude": "6.yyyyy",
                      "libraries": "dewpoint",
                      "libraryTypings": "",
                      "mirrorPath": "",
                      "sunriseEvent": "nightEnd",
                      "sunriseOffset": "",
                      "sunriseLimitStart": "06:00",
                      "sunriseLimitEnd": "12:00",
                      "sunsetEvent": "dusk",
                      "sunsetOffset": "",
                      "sunsetLimitStart": "18:00",
                      "sunsetLimitEnd": "23:00",
                      "mirrorInstance": 0,
                      "enableSetObject": true,
                      "enableSendToHost": false,
                      "enableExec": true,
                      "subscribe": false,
                      "useSystemGPS": false,
                      "allowSelfSignedCerts": false
                    },
                  

                  und noch mal eine Frage zu:

                  @paul53 sagte in Azimut und Elevation vom Wiffi spinnen:

                  Diese Berechnung darf nicht nur bei Skript-Start erfolgen, sondern mind. einmal pro Tag.

                  wenn ich es richtig sehe, ist das doch Bestandteil der Funktion Sonnenstand_berechnen, die doch auch im schedule aufgerufen wird

                  schedule("*/5 * * * *", Sonnenstand_berechnen);

                  EDIT:
                  Das log gibt die korrekte Geoposition aus

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Homoran last edited by

                    @homoran sagte: ist das doch Bestandteil der Funktion Sonnenstand_berechnen

                    Eben nicht. Die Ermittlung der Werte erfolgt außerhalb.

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

                      @paul53 sagte:

                      Eben nicht. Die Ermittlung der Werte erfolgt außerhalb.

                      Danke! - dann habe ich an der falschen Stelle gesucht.

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

                        ich glaube ich habe den Fehler gefunden:

                        Nachdem ich die setState() Befehle angepasst habe, indem ich

                              setState(Elevation, Math.round(10 * h) / 10,true);
                              setState(Azimut, Math.round(a),true);
                              setState("javascript.1.Sonnenstand.Zenit", zenit, true);
                              setState("javascript.1.Sonnenstand.Nadir", nadir, true);
                        

                        die Pfade angepasst habe, läuft es jetzt anscheinend.

                        Habe den Fall mal auf gelöst gesetzt.

                        PS warum der Wiffi auf einmal spinnt weiß ich allerdings immer noch nicht

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Homoran last edited by

                          @homoran sagte: die Pfade angepasst habe, läuft es jetzt anscheinend.

                          Läuft das Skript in Instanz 0?

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

                            @paul53 sagte in [gelöst] Azimut und Elevation vom Wiffi spinnen:

                            Läuft das Skript in Instanz 0?

                            nein, in Instanz .1
                            trotzdem wird einiges in .0 angelegt - und auf dem Testrechner lief es früher in .0

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            688
                            Online

                            31.9k
                            Users

                            80.1k
                            Topics

                            1.3m
                            Posts

                            2
                            12
                            285
                            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