Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonnenstand ( Object, iframe )

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Sonnenstand ( Object, iframe )

    Hallo hat jemand eine Idee, wie ich diese URL in die VISU kriege:

    HTML-Code:
      http://sonnenverlauf.de/#/48.85826,2.29451,17/2015.05.11/13:15/324.0/2
    HTML-Code:
     <div class="block">
      <div class="set-1" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
      <div data-role="collapsible" data-collapsed="false">
      <h3>Sonnenstand</h3>
      <object data="http://sonnenverlauf.de/#/48.85826,2.29451,17/null/null/null/1"></object>
      </div>
      </div>
      </div>

    #2
    brauchste doch nicht , gibt doch ein icon das den sonnenstand anzeigt und die werte bekommste ausgerechnet

    Kommentar


      #3
      danke, das ist mir bekannt und ich nutze das auch schon.
      mir geht es auch weniger um die Werte ( die habe ich aus der Wetterstation ) als um die Darstellung.
      über Google Maps, kann ich halt genau erkennen wo die Sonne steht,

      Kommentar


        #4
        Doofe Frage als Mitleser: welches Icon? Finde auf die Schnelle nichts im icons Folder. Berechnung denke ich mal wie hier (https://knx-user-forum.de/forum/suppo...er-sonnenstand) beschrieben.

        PS: Soweit ich das mit dem FireBug sehe zeichnen die auf Google Maps ein SVG (<svg height="722" version="1.1" width="722" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative;">)

        Das müsste man mit beherrschbarem Aufwand selber bauen können, vermutlich machen sies auch nur mit JS, dazu müsste ich aber tiefer reinschauen. Webseiten iframen finde ich keine schöne Lösung.
        Zuletzt geändert von psilo; 20.11.2015, 15:53.

        Kommentar


          #5
          das Icon, das das anzeigt ist iconzenith und gibt es als update für die VISU 2.7.
          schau mal bitte hier: https://knx-user-forum.de/forum/supp...and-darstellen
          hatte ich alles mit der Hand eingebaut aber mein letztes smartVISU update hat das wieder gelöscht, keine Ahnung warum.
          habe leider wenig Zeit für Basteleien, mir gefällt halt die Darstellung im Netz bei Sonnenstand.de gut, weil sie Google Maps benutzt, nach Norden ausgerichtet ist und auch die Lages meines Hauses zeigt. Der Autor hat mir schon erklärt, dass er iframes nicht zulässt und nicht möchte, dass andere das einbinden. Die Werbung stört mich aber gewaltig.
          man müsste ja dann das Icon.zenith ähnlich über einen kartenausschnitt legen können, oder einfach noch das Grundstück oder das Haus drunter legen.
          wenn Du so etwas auf die Schnelle hinkriegst ! wäre super.
          als Icon wird das sicher alles zu klein, aber in einem Block wirkt das sicher super.

          Kommentar


            #6
            ich schaue mal, erstmal das icon anschauen ;-) mehr als 1 tag wird das aber auch dauern.. habe aber dank elternzeit gerade viel muße für basteleien..

            Das Icon geht schon mal - danke, in meiner aktuellen Entwicklungsversion aus dem GIT war das alles schon drin. Ist aber sicher nur sinnvoll anzuzeigen, wenn der altitude Wert > 0 ist . Berechnung läuft via Smarthome.py, da die Wetterstation mir nichts ausgibt. Das Icon so über Google Maps zu legen ist sicher nicht der Hit..

            Ich schaue mir mal die Tage den verwendeten Algorithmus in Javascript von Deinem ersten Link + die GoogleMaps API an. Im Endeffekt müsste es ja reichen den Halbkreis einzumalen...

            Update: ich denke man braucht 3 Linien: Winkel zu Sonnenaufgang, Winkel zu Sonnenuntergang, aktueller Winkel. Die dann als Vektor im GMaps einzeichnen.. Baue gerade noch die Berechnung alle 3 Winkel im smarthome.py, dann mal weitersehen. Muss bei sh.sun.pos() wohl mit Offsets in Minuten arbeiten, dann sollte das bestimmbar sein. Tagsüber ist ja auch klar welcher Sonnenauf- und -Untergang relevant sind. Nachts braucht man erstmal nichts anzeigen. Die Winkel habe ich schonmal über eine Codeerweiterung aus https://knx-user-forum.de/forum/suppo...n-icon-gesucht

            Jetzt in GMaps einlesen..

            Code:
            # aktuelle Sonnenposition
            import math
            
            # Berechnungen für icon.zenith
            now = datetime.datetime.utcnow().hour * 60 + datetime.datetime.utcnow().minute
            sunrise = sh.sun.rise().hour * 60 + sh.sun.rise().minute
            sunset = sh.sun.set().hour * 60 + sh.sun.set().minute
            
            # current values
            azimut, altitude = sh.sun.pos()
            azimut = round(math.degrees(azimut),2)
            altitude = round(math.degrees(altitude),2)
            sh.weather.sun.pos.current.azimut(azimut)
            sh.weather.sun.pos.current.altitude(altitude)
            
            # sunrise values
            azimut_rise, altitude_rise = sh.sun.pos(sunrise-now)
            azimut_rise = round(math.degrees(azimut_rise),2)
            altitude_rise = round(math.degrees(altitude_rise),2)
            sh.weather.sun.pos.rise.azimut(azimut_rise)
            sh.weather.sun.pos.rise.altitude(altitude_rise)
            
            # sunset values
            azimut_set, altitude_set = sh.sun.pos(sunset-now)
            azimut_set = round(math.degrees(azimut_set),2)
            altitude_set = round(math.degrees(altitude_set),2)
            sh.weather.sun.pos.set.azimut(azimut_set)
            sh.weather.sun.pos.set.altitude(altitude_set)
            Anbei schonmal Code zum Linienzeichnen. Jetzt ist bei mir aber eine Lücke bzgl. SmartVisu Funktionaltität. Wie kriege ich "live" den aktuellen Winkel in das JS rein? Die data-item Sache ist ja immer nur HTML-Tag-bezogen. Wenn das ginge ist es simple Linienberechnung und man könnte die Linien für Sonnenaufgang, Untergang und IST-Stand zeichnen. Vielleicht weiss ja jemand anders hier schneller Bescheid. Habe gerade alle Widgets durchgeschaut und werde nicht so recht schlau..

            Code:
            <script src="https://maps.googleapis.com/maps/api/js?key=<yourKey>&callback=initMap" async defer></script>
            <script type="text/javascript">
                  var map;
                  function initMap() {
                  map = new google.maps.Map(document.getElementById('map'), {
                                    center: {lat: xxx, lng: xxx},
                                    zoom: 18
                                  });
                                  var sunrayCoordinates = [
                                    {lat: xxx, lng: xxx},
                                    {lat: yyy, lng: yyy}                    
                                  ];
                                  var sunrayPath = new google.maps.Polyline({
                                    path: sunrayCoordinates,
                                    geodesic: true,
                                    strokeColor: '#FF0000',
                                    strokeOpacity: 1.0,
                                    strokeWeight: 2
                     });
            
                    sunrayPath.setMap(map);
                    }
            </script>
            Zuletzt geändert von psilo; 21.11.2015, 14:26.

            Kommentar

            Lädt...
            X