Ankündigung

Einklappen
Keine Ankündigung bisher.

Weatherwidget.current Fehler

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

    Weatherwidget.current Fehler

    Hallo Zusammen,
    während auf ca. 10 Geräten (PC, Mac, Iphone und Androids mit Chrome, Firefox und Safari) die Visu einwandfrei läuft, bringt mir ein Samsung Samrtphone mit Chrome immer einen Fehler vom Weatherwidget. Auf allen andren Androiden mit Chrome ist aber alles in Ordnung.
    Die Fehlermeldung gibt auch keine Infos was eigentlich los ist, sondern gibt mir den Inhalt der lib/weather/service/openweathermap.org.php Datei ab Zeile 50 (https://github.com/Martin-Gleiss/sma...ap.org.php#L50).
    Leider habe ich keine Ahnung seit wann dieser Fehler genau auftritt aber er muss schon vor dem letzten Release da gewesen sein.
    Im Anhang zwei Screenshots, da ich den Text nicht kopieren konnte.


    Hier mein Systemcheck:
    System checks:
    'config.ini' file is writeable or can be created
    'temp' directory is writeable
    PHP v8.1.27 is ok
    PHP extension 'mbstring' loaded
    update check skipped for 7 days
    Masteritem file read

    Der Fehler tritt sowohl bei php v8.1 als auch bei v8.3 auf. Habe auch schon zig mal den Cache geleert und auch am Smartphone die Webseitendaten gelöscht und die PWA neu installiert.

    Hat jemand das selbe Problem oder gar einen Tipp wie ich weiter suchen soll?

    Grüße.
    Angehängte Dateien

    #2
    PS: Das current-Widget, das sich im Infoblock befindet, wird deshalb auf diesem Gerät auch nicht angezeit.

    Kommentar


      #3
      Du kannst mal in der error.log des Webservers (Apache2 oder nginx) nachsehen, ob da Fehler eingetragen sind. Ggfs. dazu noch in der config.ini den Eintrag
      Code:
      debug = "1"
      ergänzen.

      Gruß
      Wolfram

      Kommentar


        #4
        P.S.: und auf dem Android-Handy die Seite
        Code:
        http://<DeineIP>/smartVISU/lib/weather/service/openweathermap.org.php?debug=1
        aufrufen.

        Kommentar


          #5
          Im Errorlog von Apache2 hatte ich nachgeschaut (allerdings ohne debug) dort war kein Fehler drinnen. Werde ich nochmal mit debug versuchen.
          Das debug von openwearthermap.org.php habe ich auch versucht, aber auf einem Gerät wo es eh schon funktioniert hat 🤦‍♂️

          Danke inzwischen ich werde berichten.

          Kommentar


            #6
            Ich hab mir den Code inzwischen näher angesehen. Sehr wahrscheinlich kommt der Fehler nicht aus dem php-Skript, sondern aus dem ajax-request im JavaScript-Teil des Widgets. Dabei geht etwas schief, so dass die promise-Funktion „fail“ angesprungen wird. Die Fehlermeldung im jqXHR-Objekt ist aber "HTTP 200 - OK".

            Das könnte bedeuten, dass die Chrome-Version auf Deinem Handy mit dem json-Objekt nicht klar kommt (siehe hier). Ich mache mir mal weiter Gedanken, wie man den Fehler einkreisen kann.

            Gruß
            Wolfram

            Kommentar


              #7
              Habe mittlerweile das Php Skript mit debug getestet. Zeigt mir alle Daten vom Wetterdienst an, wie auch auf den anderen Geräten.
              Auch im Errorlog ist nichts auffälliges zu finden, außer die nachfolgende Meldung, die aber beim Zugriff von allen anderen Geräten auf .../lib/weather/service/openweathermap.org.php?debug=1 auch kommt:
              [Sat Feb 17 17:50:16.013714 2024] [php:warn] [pid 61261] [client 192.168.178.13] PHP Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/smartvisu/lib/service.php:128) in /var/www/html/smartvisu/lib/service.php on line 111
              Zitat von wvhn Beitrag anzeigen
              "HTTP 200 - OK"
              Genau, das hat mich auch verwundert.

              Zitat von wvhn Beitrag anzeigen
              Chrome-Version
              Chrome ist auf dem neuesten Stand, das Smartphone ist ein aktuelles, somit sollte die Version zumindest nicht veraltet sein.


              Danke dir
              Gruß Thomas
              Zuletzt geändert von hijacker7; 17.02.2024, 18:06.

              Kommentar


                #8
                Hast Du die Möglichkeit, die Seite auf dem Smartphone von remote zu analysieren? Siehe z.B. hier.
                Möglicherweise wird eine Meldung auf der Konsole ausgegeben, die den Fehler eingrenzt. Notfalls kann man die Konsolenausgabe auch auf ein shNG-item umleiten.

                Der in #6 verlinkte Thread enthält mögliche Ursachen, ebenso wie der dort verlinkte Thread. Die Lösungen dazu kann man in der ./lib/service.php ausprobieren. Mit den Varianten kann ich Dir helfen.

                Gruß
                Wolfram

                P.S.: in der service.php in Zeile 111 ist schon seit Ewigkeiten der Content-Type "text/json" angegeben. Der ist aber offiziell nicht definiert. Es liegt also nahe, dies in "application/json" zu ändern. Erste Tests bei mir zeigen keine negativen Folgen.
                Zuletzt geändert von wvhn; 17.02.2024, 23:54.

                Kommentar


                  #9
                  Zunächst habe ich in der openweathermap.org.php folgendes getestet:

                  Code:
                  ...
                  
                  ob_start();​
                  $service = new weather_openweathermap(array_merge($_GET, $_POST));
                  ob_end_clean();​
                  echo $service->json();
                  
                  ?>​
                  war aber erfolglos.

                  Dann habe ich in der widgets/weather.js die Zeile 74 mit dem dataType auskommentiert und der Fehler war weg. https://github.com/Martin-Gleiss/sma...weather.js#L74


                  Ich komme vil in den nächsten Tagen mal dazu das Smartphone zu debuggen, dann kann ich schauen worans genau liegt, aber vorerst muss dieser Fix reichen

                  Danke Wolfram für die Hilfe

                  Kommentar


                    #10
                    Was mich an der Sache eher stört ist, dass ich nicht verstehe warum durch einen Fehler aufgrund eines nicht gültigen Json Formats, das PHP-Skript am Server nicht wirklich ausgeführt wird, sondern als Fehlertext nahezu komplett an den Client übertragen wird. Wenn man bedenkt, dass das Skript durchaus sensible Daten, wie Datenbankzugriffe usw. enthalten könnte, ist das schon ne echt gruslige Sache. Meine Sicherheitsbedenken richten sich jetzt weniger an Smartvisu sondern generell an alle Seiten. Ich gehe davon aus, dass so eine Art Fehler in einem ajax-request relativ leicht gewollt erzeugt werden kann.

                    Kommentar


                      #11
                      Den gleichen Gedanken hatte ich auch. Das ist besorgiserregend.

                      Eigentlich kann das nur passieren, wenn das php-Skript nicht geparst wird - also php auf dem Server nicht läuft. Dann wird das php-Skript vom Webserver in Klartext an den Browser geschickt, wie eine normale Webseite. Ich habe nur bisher keinerlei Ansatz, wie ein einzelner Client dies verursachen kann. Deshalb wäre es für mich oberste Priorität, den Fehler so reproduzieren zu können, dass man das Verhalten debuggen kann.

                      Ich würde den Datentyp im Ajax-Call ungerne herauszunehmen, weil dann die Fehlererkennung nicht mehr funktioniert, wenn tatsächlich mal keine json-Daten ankommen. Hast Du mal die oben im P.S. vorgschlagene Lösung probiert? Wenn man Zeile 111 noch erweitert zu
                      Code:
                      if (!$this->debug )
                              header('Content-Type: application/json');​
                      dann entfällt auch die header-Warnung im debug-Modus.

                      Gruß
                      Wolfram

                      P.S.: gestern habe ich einen meiner Raspis im laufenden Betrieb von Buster auf Bullseye umgestellt und vergessen, die Visu auf dem Client zu schließen. Ich bekam dann diese Fehlermeldungen mit allen PHP-Services (Wetter, Kalender, Telefon). Leider konnte ich das nicht debuggen und nach Löschen der Browser-History war der Spuk vorbei. Vermutlich hat die Visu das Skript aufgerufen, während PHP gerade nicht lief und es dann im Klartext im Cache behalten.
                      Zuletzt geändert von wvhn; 19.02.2024, 13:46.

                      Kommentar


                        #12
                        Zitat von wvhn Beitrag anzeigen
                        Hast Du mal die oben im P.S. vorgschlagene Lösung probiert?
                        Ja das habe ich so in der service.php drinnen, jetzt auch mit der Überprüfung auf nicht debug. Das hat aber an dem Fehler in der Visu nichts geändert. Durch das if kommt jetzt natürlich im Errorlog der Eintrag nicht mehr. Ich konnte aber auch keine negativen Auswirkungen vom 'Content-Type: application/json' finden, dies könnte man meiner Meinung nach so, mit dem if, übernehmen.

                        Zitat von wvhn Beitrag anzeigen
                        Ich würde den Datentyp im Ajax-Call ungerne herauszunehmen
                        Das verstehe ich, das würde auch nur die Symptome behandeln und nicht den Auslöser. Leider komme ich physisch nicht so schnell wieder an das Smartphone ran, um es zu debuggen. Bin gerade im Ausland und andauernd über Whatsapp nachzufragen ob der Fehler noch da ist oder wieder weg, ist ehrlich gesagt nervenaufreibender als der Fehler selbst. 😆 In ca. zwei Wochen kann ich Debug-Ergebnise liefern, bis dahin bleibt bei mir der Datenyp auskommentiert damit Ruhe auf "Client-Seite" ist.😉

                        Zitat von wvhn Beitrag anzeigen
                        Vermutlich hat die Visu das Skript aufgerufen, während PHP gerade nicht lief und es dann im Klartext im Cache behalten.
                        Ja wahrscheinlich, das ist aber ein Szenario in dem man sowas durchaus mal verkraften kann.

                        LG

                        Kommentar


                          #13
                          Hallo zusammen,

                          ich muss dieses Thema ebenfalls aufgreifen.
                          Seit einigen Wochen habe ich den Effekt, dass ich einen Error auf Grund des Wheater Widget current und forecast bekomme.
                          Anfangs dachte ich, dass ich ein Thema mit dem API key von openwhatermap habe.

                          Habe nun die aktuelle dev Version der SV gezogen und einen neuen whaterpirate Key gezogen, doch leider zeigt es mir den Fehler weiterhin an.

                          Wenn ich das "Offline Wetter" ziehe, bekomme ich den Error nicht.

                          vielleicht hat/hatte irgendjemand das selbe und ne Lösung parat.

                          Danke im Voraus

                          Kommentar


                            #14
                            Da wirst Du auf smartVISU Seite vermutlich nicht viel tun können, außer den Fehler zu unterdrücken.

                            Ich bekomme im openweathermap Plugin in SmartHomeNG auch zwischendurch den Fehler, dass openweathermap die Verbindung abbricht 'Remote end closed connection without response​':

                            Code:
                            2024-07-25  10:19:23 ERROR    plugins.openweathermap Request failed for DataSource weather: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
                            ​
                            Viele Grüße
                            Martin

                            There is no cloud. It's only someone else's computer.

                            Kommentar


                              #15
                              wu3mi wie lautet denn die Fehlermeldung? Hast Du den Service mal direkt mit dem Parameter debug=1 aufgerufen (siehe oben)? Was wird dann angezeigt?
                              Im Ordner ./lib/weather/service gibt es zu jedem Wetterdienst eine Beschreibung, wie die Ortsangabe einzugeben ist. Hast Du das berücksichtigt?

                              Gruß
                              Wolfram

                              Kommentar

                              Lädt...
                              X