Ankündigung

Einklappen
Keine Ankündigung bisher.

Weather.current mit eigener Temperatur

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

    #16
    Wenn ich Deine Dateien übernehme lädt die Visu gar nicht mehr wegen folgendem Fehler

    Uncaught TypeError: itemtemp is undefined
    _update weather.js:24
    a.widget/</i[b]</< jQuery
    update base.js:2032
    jQuery 5
    refresh base.js:1533
    run io_smarthome.py.js:80
    <anonymous> index.php:92
    jQuery 33
    weather.js:24:17

    speed und temp sind bei mir im language file schon enthalten

    Kommentar


      #17
      Wenn ich Deine Dateien komplett übernehme bekomme ich folgenden Fehler. temp und wind ist im language file vorhanden

      Uncaught TypeError: itemtemp is undefined
      _update weather.js:24
      a.widget/</i[b]</< jQuery
      update base.js:2032
      jQuery 5
      a.widget/</i[b]</<
      a.widget.bridge/a.fn[c]/<
      each
      each
      c
      refresh base.js:1533
      run io_smarthome.py.js:80
      <anonymous> index.php:92
      jQuery 33
      dispatch
      handle
      trigger
      trigger
      each
      each
      trigger
      _trigger
      _triggerWithDeprecated
      a.widget/</i[b]</<
      _triggerCssTransitionEvents
      a.widget/</i[b]</<
      _cssTransition
      a.widget/</i[b]</<
      transition
      a.widget/</i[b]</<
      change
      a.widget/</i[b]</<
      a.widget.bridge/a.fn[c]/<
      each
      each
      c
      changePage
      initializePage
      <anonymous>
      j
      fireWith
      ready
      I
      promise
      <anonymous>
      <anonymous>
      <anonymous>
      weather.js:24:17

      Kommentar


        #18
        Einen Fehler hab ich gefunden. In der Datei weather.js hast Du
        if (itemtemp != 'undefined') geschrieben. Das undefined muss ohne Hochkomma sein. Dann lädt zumindest die Visu wieder. Allerdings werden ohne neue Parameter nicht die alten Werte angezeigt.

        Kommentar


          #19
          Ich habe das jetzt mal auf die schnelle getestet.
          Funktioniert erstmal soweit ohne Änderungen.
          Die Werte für Temp und Wind werden aus online angezeigt.
          Allerdings werden die neuen (Optionalen) Werte nicht angezeigt.
          Ich hatte zum Test erstmal meine Items aus der Wetterstation genommen. Die sind aber NUM.
          Dann hatte ich ein beliebiges str item aus dem darksky genommen STR='Cloudy'. Das wird aber auch nicht benutzt - Das sollte dann ja irgendetwas ersetzen.
          Oder ich habe das was noch nicht verstanden....

          Kommentar


            #20
            Hast du die Hochkomman von 'undefined' entfernt?

            Kommentar


              #21
              Das scheint bei mir in weather.js nicht zu ziehen:

              if (this._temp == false) element.children('.temp').html(data.current.temp);

              Wenn ich das if rausnehme werden die Online Daten angezeigt.

              Kommentar


                #22
                Zitat von z1marco Beitrag anzeigen
                Hast du die Hochkomman von 'undefined' entfernt?
                Ich habe nichts entfernt und die Dateien stumpf kopiert.

                Kommentar


                  #23
                  Hallo Wolfram,

                  das mit dem Werte durchreichen funktioniert jetzt bei mir. Allerdings muss ich definitiv in der weather.js die Hochkomma bei 'undefined' entfernen. Leider klappt es auch nicht, wenn ich keine Parameter übergebe dass dann wieder die Online Daten angezeigt werden.

                  Bei Temperatur und Windgeschwindigkeit find ich die Übergabe von Items ganz gut. Bei dem anderen liefert meine Wetterstation ein Boolean und ich würde dann gerne "Es regnet" anzeigen. Ist die Frage ob man generell mit String nicht besser und flexibler fährt. Ist aber nur meine persönliche Meinung.

                  Hab dank Deinem Beispiel aber recht viel gelernt, danke dafür. Vielleicht bekommen wir das ja noch gelöst bei fehlenden Parametern auch wieder den Online Service anzuzeigen.

                  Gruß

                  Kommentar


                    #24
                    sorry, da war ich wohl etwas betriebsblind und habe zu wenig erklärt bzw. dachte, der Docstring im html-Code wäre ausreichend. Die weather.html wurde um 4 Parameter erweitert und muss entsprechend aufgerufen werden. Fehlen die Parameter, werden die entsprechenden Daten aus dem konfigurierten Wetterservice geholt, der ja eh für die Prognose gebraucht wird. Die update-Methode des widgets prüft, welche items vorhanden sind, setzt einen Merker (z.B. "_temp") für jeden vorhandenen Wert und bringt diesen direkt auf die Anzeige. Die repeat-Methode, die zyklisch die externen Wetterdaten aus dem Cache holt oder neu abfragt, wertet den o.g. Merker aus und bringt nur diejenigen Werte aus dem externem Service auf die Anzeige, für die kein item vorhanden sind.

                    Zur Nutzung der eigenen Daten muss der Aufruf wie folgt lauten:
                    Code:
                     {{ weather.current('weather','','','item.temperatur', item.wind', 'item.luftdruck', 'hPa') }}
                    wobei für item.luftdruck auch andere Messgrößen verwendet werden können - mit entsprechender Angabe der Maßeinheit als letztem Parameter.

                    Gib mal für die items, die Du nicht nutzt, jeweils zwei Hochkommas ein. Ich muss die Defaults noch setzen. Die mitgelieferte Datei ist als proof-of-concept zu verstehen, weil ich erst einmal sehen wollte, was Ihr wirklich braucht. Siehe dazu die Fragen in #7. Wenn Strings besser sind und Ihr diese in shNG erzeugen könnt bzw. bereits habt, dann kann ich das umsetzen.

                    Gruß
                    Wolfram

                    P.S.: mit dem 'undefined' hattest Du natürlich recht. Sorry!
                    Zuletzt geändert von wvhn; 17.11.2020, 23:18.

                    Kommentar


                      #25
                      Hallo Wolfram, könnte man da evtl. noch einen Parameter Satz wie beim Luftdruck hinzufügen?
                      Also Parameter Item, Parameter Einheit.

                      Ich habe bei mir auch immer noch die Regenmenge am Tag stehen. Das könnte ich damit dann gleich erschlagen.

                      Zu den Items nochmal: Die Items müssen doch aktuell als String kommen oder würde auch ein Num Item funktionieren?

                      Grüße, Marc

                      Kommentar


                        #26
                        Hallo Marc,

                        der aktuelle Stand ist nur ein Teaser. Alles, was Ihr Euch an Funktionalitäten wünscht, kann ich da hineinbringen. Also jedenfalls solange es mir auch sinnvoll erscheint .
                        • Bei der Temperatur sollte wohl ein Zahlenwert reichen. Mehr passt auch im Layout nicht rein.
                        • Beim Wind würde ich einen Text bevorzugen, den Ihr aber als item in shNG generieren müsstest: “leichte Brise aus Nordost mit 8 km/h”. Ggfls. kann das per Option auf den reinen Zahlenwert plus Einheit umgeschaltet werden.
                        • Max. 2 weitere beliebige Items würden dann noch in das Layout passen. Hier würde ich dynamischen Text aus einem item bevorzugen. Statischer Text, Zahl und Einheit (“Luftdruck: 1023 hPa”) würde auch gehen.
                        Aktuell erwarten Temperatur und Wind items vom Typ num. Beim dritten item geht auch Text.

                        Ich kämpfe gerade noch mit den items, die leider nicht richtig zugeordnet werden, sobald man eines weglässt. Da das in einem anderen Widget, das ich geschrieben hatte, einwandfrei funktioniert hatte, bin ich noch bei der Ursachenanalyse.

                        Gruß
                        Wolfram

                        Kommentar


                          #27
                          Hallo,

                          Bei Temperatur finde ich einen Zahlenwert in Ordnung.
                          Bei Wind einen Text wäre auch gut das mit "leichte Brise aus Nordost" gefällt mir gut und kann man in Smarthome generieren.
                          Wenn vom Layout noch 2 weitere Werte reinpassen sollten die ausgenutzt werden.
                          Ich würde da gerne Regen anzeigen "Es regnet oder es regnet nicht" also wäre da Text gut.

                          Gruß und Danke für Deine Mühe

                          Kommentar


                            #28
                            Ich würde statischen Text/Zahl/Einheit bevorzugen.
                            wenn keine Einheit angegeben wird, kann man ja aus der Zahl ein Text machen.

                            Damit könnte man möglichst viele Anwendungen abdecken ohne im Hintergrund noch was zu ändern.
                            widget rein - richtig konfigurieren - fertig.

                            Grüße, Marc

                            Kommentar


                              #29
                              Hallo zusammen,

                              hier nochmal ein Stand, der dir oben geschilderten Anforderungen erüllen sollte.

                              Der Aufruf erfolgt mit 9 zusätzlichen Parametern, die alle optional sind:
                              Code:
                              {% macro current(id, location, repeat,[MARKIEREN] itemtemp, itemwind, windfmt, itemhumi, humitxt, humifmt, itemmisc, misctxt, miscfmt[/MARKIEREN]) %}
                              • itemtemp: ein item, das die lokale Temperatur enthält -> wird mit der Einheit aus dem language file dargestellt
                              • itemwind: ein item, das entweder die Windgeschwindigkeit enthält (Einheit 'speed' aus dem language file, oder einen im Backend generierten string
                              • windfmt: definiert, welcher Inhalt in itemwind angegeben ist (value / text)
                              • itemhumi / humitxt / humifmt: zusätzliches item, das einen Zahlenwert enthält, sowie führender Text und nachfolgende Einheit
                              • itemmisc / misctxt / miscfmt: weiteres zusätzliches item mit führendem Text und nachfolgender Einheit
                              Fehlende items werden durch die online-Daten des Wetterdienstes ersetzt (außer bei itemmisc).

                              So sieht das Ganze aus, wenn itemwind als 'text' mit einem Text vom Backend parametriert ist.

                              Screenshot_weather.current.png

                              Den aktuellen Stand des Widgets hänge ich unten an. Einfach die Dateien entsprechend der Ordnerstruktur kopieren bzw. entpacken. Ich stelle das später auch auf smartvisu-newstuff. Viel Spaß!

                              Gruß
                              Wolfram
                              Zuletzt geändert von wvhn; 21.11.2020, 16:40. Grund: veralteten Anhang gelöscht

                              Kommentar


                                #30
                                Super, vielen Dank!
                                Teste ich heute Abend gleich.

                                Kommentar

                                Lädt...
                                X