Ankündigung

Einklappen
Keine Ankündigung bisher.

Weather.current mit eigener Temperatur

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

    Weather.current mit eigener Temperatur

    Hallo, ich habe da mal eine kurze Frage:
    Gibt es eine Möglichkeit dem Widget Weather.current die Temperatur/Luftfeuchte von der eigenen Wetterstation mitzuteilen?
    Also einzelne Parameter aus dem Online Wetter ersetzen mit eigenen Items.
    Hintergrund ist, ich habe eine Wetterstation die mir die Luftfeuchte und Temperatur ausgibt. Diese Werte würde ich jetzt gerne auf meiner Startseite anstatt des Online Wetters angezeigt bekommen. Jedoch würde ich die Winddaten und das Aussehen mit den Bildern aus dem Onlinewetter gerne nutzen.

    Hat das eventuell schon jemand umgesetzt?


    Grüße, Marc
    Zuletzt geändert von schuma; 27.08.2019, 18:24.

    #2
    Hallo,

    gibt es hierzu vielleicht jemand der so was schon probiert hat? Ich bin auf der Suche nach genau dieser Funktion. Ist das einfach machbar über Tips wäre ich dankbar.

    Gruß Marco

    Kommentar


      #3
      Ich kenne keine fertige Lösung. Es sollte aber im Sinne DIY nicht allzu schwer sein, eine zu erstellen.
      Dazu in widgets/weather.html zwei items für Temperatur und Feuchtigkeit in die Parameterliste vom Makro „current“ anlegen und diese im Code als "data-item" übergeben. Wie das geht, kann man sich in den vielen basic.xyz Makros ansehen. Das Widget weather.current muss dann natürlich mit den entsprechenden shNG-items aufgerufen werden.

      Die Items kommen dann in widgets/weather.js im zugehörigen Makro "sv.weather_current" als response[0] und response[1] an. Wenn diese jeweils nicht undefined sind, gibt man sie anstelle data.current.temp und data.current.more aus.

      Gruß
      Wolfram

      Kommentar


        #4
        Hallo Wolfram,

        hatte mir das schon angesehen. In der weather.html habe ich die Parameter des macro current erweitert."{% macro current(id, temperature, location, repeat) %}"
        Ich verstehe nicht ganz wie dieser Parameter an sv.weather_current übergeben werden muss. In sv.weather_current wir ja das JSON Objekt vom Webservice aufgebaut. Ich weiß nicht wie ich an den Parameter von weather.html herankomme.

        Gruß
        Marco

        Kommentar


          #5
          Zitat von z1marco Beitrag anzeigen
          Ich verstehe nicht ganz wie dieser Parameter an sv.weather_current übergeben werden muss.
          Das habe ich oben geschrieben. In der weather.html z.B. vor dem data-repeat ein
          Code:
          data-item="{{ temperature }}"
          angeben (und ggfls.weitere items, mit Komma getrennt). Im Übrigen würde ich neue Parameter immer hinten anfügen, damit bestehende Seiten weiter funktionieren, bei denen der neue Parameter nicht angegeben wird.

          Im sv.weather_current (weather.js) kommen die Parameter aus data-item in einem Array "response[ ]" an. In der _repeat-Methode muss "function()" durch "function(response)" ersetzt werden. Alles weitere steht oben. Nähere Infos zum Erstellen eigener Widgets sind im github-Wiki von smartVISU.
          Die Daten aus den items werden dann immer mit den repeat-Zyklen aktualisiert. Wenn Du diese ständig aktualisiert haben möchtest, muss noch eine _update-Methode hinzugefügt werden, die ohne den getJSON-Aufruf auskommt, aber die aktualisierten items ausgibt.
          Code:
          this.element.children('.temp').html(response[0]+"°C");
          Mehr kann ich aktuell nicht liefern, da ich zur Zeit andere, größere Baustellen habe und IMHO die Hinweise für eine DIY-Lösung ausreichen sollten. Langfristig steht das Thema auf der to-do Liste, aber dann muss das allgemeingültiger umgesetzt und auch mit den Einheiten in den language files verknüpft werden.

          Gruß
          Wolfram

          Kommentar


            #6
            Danke Wolfram für Deine Tips. Ich werde das mal versuchen.

            Kommentar


              #7
              schuma , z1marco ,
              ich habe heute mal eine erste Version von weather.current nach oben geschildertem Muster erstellt. Die items für Wind, Temperatur und "more" (je nach Wetterservice Feuchtigkeit oder Luftdruck) werden auch schon in der Visu angezeigt. Für Wind und Temperatur nehme ich die Einheiten aus dem Language File, für "more" kann eine Einheit angegeben werden.

              Die Wetterservices liefern die Daten ja als String, einschließlich Einheiten und Beschreibungen, z.B. "leichte Brise aus Südwest mit 10.5 km/h". Im erweiterten Widget wird für das Beispiel nur "10.5 km/h" angezeigt. Alternativ könntet Ihr die Items mit allen Einheiten und Beschreibungen im Backend als String erzeugen. Vielleicht macht Eure Wetterstation das eh schon? Zudem könntet Ihr dann flexibler mit dem item "more" umgehen - z.B. einen Regensensor nehmen und "es nieselt - es regnet - es schifft" als Beschreibungen übermitteln

              Was macht aus Eurer Sicht mehr Sinn?

              Widget zum Ausprobieren ist anbei.

              Gruß
              Wolfram
              Zuletzt geändert von wvhn; 26.10.2020, 14:21.

              Kommentar


                #8
                wvhn Vielen Dank.
                Ich werde mir das bei Gelegenheit mal anschauen.
                Hier ist nur gerade Land unter bei mir...

                Grüße, Marc

                Kommentar


                  #9
                  z1marco , hattest Du schon Gelegenheit, das anzuschauen?

                  Um das Thema abschließen zu können brauche ich noch Feedback zu den Fragen in #7 von interessierten Usern.

                  Danke und Gruß
                  Wolfram

                  Kommentar


                    #10
                    Hatte den Thread gar nicht gesehen. Versuche diese Woche noch draufzuschauen. Freue mich dass Du dich dem Thema angenommen hast.

                    Kommentar


                      #11
                      Ich hab mir das gerade angesehen. In weather.js scheint noch ein Problem zu sein. Wenn ich die Datein einspiele lädt die Smartvisu nicht mehr. Wo finde ich die Logfiles um den Fehler einzugrenzen?

                      Kommentar


                        #12
                        Am besten im Browser die Konsole aufrufen. Die js-Fehler werden dort angezeigt.
                        Falls Du eine Sicherheitskopie der weather.js angelegt hast, musst Du die Dateiendung von .js in etwas anderes ändern. Sonst werden beide Versionen importiert und dann gibt es Konflikte.

                        Das Widget ist aktuell noch in der Konzeptphase und kann nur mit items umgehen, die Zahlenwerte repräsentieren. Die Zahlenwerte werden mit ihren Einheiten dargestellt, die im Language File (/lang/xy.ini) unter "speed" (Wind) und "temp" (Temperatur) eingetragen sind. Das sollte möglichst im Language File vorhanden sein.

                        Gruß
                        Wolfram

                        Kommentar


                          #13
                          Ich versuche mich langsam ranzutasten. Hab noch gar keine neuen Werte übergeben, wollte erstmal probieren ob das neue Widget genauso klappt wie vorher. Dafür muss in der lang/de.ini noch nix geändert werden oder?
                          Die weather.html funktioniert.

                          In der weather.js scheint das mit den Variablen _humi, _wind, _temp schon nicht zu funktionieren.
                          Ich hab nur die Variablen hinzugefügt und dann funktioniert die Abfrage auf die alten Werte (if (this._wind == true) element.children('.wind').html(data.current.wind) schon nicht mehr. Der alte Wert vom Widget wird dann nicht angezeigt. Die update funktion habe ich noch gar nicht übernommen.

                          Kommentar


                            #14
                            Folgende Meldung in der Konsole wenn ich weather.js komplett übernehme

                            Plain old smartVISU widgets are deprecated. Use a jQuery widget based on $.sv.widget instead.
                            <div id="index-weather-weather" class="weather" data-widget="weather.current" data-item=", , " data-humifmt="" data-repeat="15i" data-service-url="lib/weather/service/yr.no.php" data-location="Germany%2FRhineland-Palatinate%2FMaxsain" data-repeat-milliseconds="900000">
                            base.js:1535:12

                            Kommentar


                              #15
                              Muss ich das Widget anders aufrufen? Ich mach das wie folgt

                              {% import "weather.html" as weather %}
                              {{ weather.current('weather') }}

                              Kommentar

                              Lädt...
                              X