Ankündigung

Einklappen
Keine Ankündigung bisher.

Ubuntu Release-Upgrade von focal zu hirsute, smartVISU + FHEM will nicht mehr

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

    Ubuntu Release-Upgrade von focal zu hirsute, smartVISU + FHEM will nicht mehr

    Sollte jemand mal das selbe Problem haben wie ich, das nach einem dist oder release-upgrade smartVISU nicht mehr läuft und er die selben Fehlermeldungen erhält. Ich musste das websocket Modul neu installieren, das beim release-upgrade wohl auf der Strecke blieb... Nach erneuter installation mittels
    Code:
    sudo cpan install Net::WebSocket::Server
    läuft nun alles wieder.



    TLDR;

    Hallo,

    ich habe gerade ein release upgrade von Ubuntu focal zu hirsute durchgeführt, nur will nun smartVISU nicht mehr. Die Seite lädt zwar, aber ich bekomme keine Daten, da er keine Verbindung zu FHEM aufbaut. Wenn ich in smartVISU auf die Räume klicke, tut sich auch nichts. apache2 hat jetzt die Version 2.4.46-4ubuntu1 und php die Version 7.4+76ubuntu1. Wenn ich meine config lösche, oder smartVISU develop neu clone, sieht die erste Seite wie auf dem Screenshot aus. Das habe ich anders in Erinnerung mit den Prüfungen unten. Woran könnte es liegen? Jemand eine Idee?

    sv.png

    [Edit]
    In der Browserkonsole bekomme ich bei dieser Seite auch folgenden Fehler:
    Code:
    GET [URL="http://192.168.188.200:82/test/vendor/jquery/jquery-2.1.4.min.js"]http://192.168.188.200:82/test/vendo...y-2.1.4.min.js[/URL] [HTTP/1.1 404 Not Found 2ms]
    Mit der master ist der Fehler weg, und die Häkchen sind auch alle brav davor, aber die Visu bekommt dennoch keine Daten und wechselt nicht die Räume wenn ich auf diese klicke. Ich vermute evtl. ein PHP oder Apache Modul was nicht geladen wurde oder sich bei dem release upgrade verabschiedet hat!?

    Des weiteren habe ich alle paar Sekunden folgendes in der Konsole:
    Code:
    Uncaught TypeError: io.socket is null
    autoReconnectIntervalId http://192.168.188.200:82/test1/lib/base/base.js:104
    Und dazu hin und wieder:
    Code:
    Uncaught TypeError: notify.messagesPerLevel[level] is undefined
    add http://192.168.188.200:82/test1/lib/base/base.js:1112
    rcTimer http://192.168.188.200:82/test1/driver/io_fhem.js:155
    Geladene PHP Module:
    Code:
    [FONT=monospace][COLOR=#000000][PHP Modules] [/COLOR]
    bz2
    calendar
    Core
    ctype
    curl
    date
    dom
    exif
    FFI
    fileinfo
    filter
    ftp
    gd
    gettext
    hash
    iconv
    json
    libxml
    mbstring
    mysqli
    mysqlnd
    openssl
    pcntl
    pcre
    PDO
    pdo_mysql
    Phar
    posix
    readline
    Reflection
    session
    shmop
    SimpleXML
    sockets
    sodium
    SPL
    standard
    sysvmsg
    sysvsem
    sysvshm
    tokenizer
    xml
    xmlreader
    xmlwriter
    xsl
    Zend OPcache
    zip
    zlib
    
    [Zend Modules]
    Zend OPcache[/FONT]
    Geladene Apache2 Module:
    Code:
    [FONT=monospace][COLOR=#000000]Loaded Modules: [/COLOR]
    core_module (static)
    so_module (static)
    watchdog_module (static)
    http_module (static)
    log_config_module (static)
    logio_module (static)
    version_module (static)
    unixd_module (static)
    access_compat_module (shared)
    alias_module (shared)
    auth_basic_module (shared)
    authn_core_module (shared)
    authn_file_module (shared)
    authz_core_module (shared)
    authz_host_module (shared)
    authz_user_module (shared)
    autoindex_module (shared)
    cgi_module (shared)
    deflate_module (shared)
    dir_module (shared)
    env_module (shared)
    filter_module (shared)
    headers_module (shared)
    mime_module (shared)
    mpm_prefork_module (shared)
    negotiation_module (shared)
    php7_module (shared)
    reqtimeout_module (shared)
    setenvif_module (shared)
    status_module (shared)[/FONT]
    Zuletzt geändert von ReviloEgros; 04.06.2021, 04:48.

    #2
    Zitat von ReviloEgros Beitrag anzeigen
    In der Browserkonsole bekomme ich bei dieser Seite auch folgenden Fehler:
    Code:
    GET [URL="http://192.168.188.200:82/test/vendor/jquery/jquery-2.1.4.min.js"]http://192.168.188.200:82/test/vendo...y-2.1.4.min.js[/URL] [HTTP/1.1 404 Not Found 2ms]
    Mit der master ist der Fehler weg, und die Häkchen sind auch alle brav davor…
    Ich habe im develop die jQuery Version auf v2.2.4 umgestellt. Wenn Deine Seiten versuchen, die v2.1.4 zu laden, dann ist etwas beim clonen der root.html schief gelaufen, oder Du hast eine eigene Version der root.html. Kannst Du das mal checken?

    Des weiteren habe ich alle paar Sekunden folgendes in der Konsole:
    Code:
    Uncaught TypeError: io.socket is null
    autoReconnectIntervalId http://192.168.188.200:82/test1/lib/base/base.js:104
    Das liegt an der fehlenden Websocket-Verbindung.
    Und dazu hin und wieder:
    Code:
    Uncaught TypeError: notify.messagesPerLevel[level] is undefined
    add http://192.168.188.200:82/test1/lib/base/base.js:1112
    rcTimer http://192.168.188.200:82/test1/driver/io_fhem.js:155
    Das kommt aus der Fehlerbehandlung und sollte natürlich nich sein. Ich schau mir das mal an.

    Gruß
    Wolfram
    Gruß
    Wolfram

    Kommentar


      #3
      Zitat von wvhn Beitrag anzeigen
      Ich habe im develop die jQuery Version auf v2.2.4 umgestellt. Wenn Deine Seiten versuchen, die v2.1.4 zu laden, dann ist etwas beim clonen der root.html schief gelaufen, oder Du hast eine eigene Version der root.html. Kannst Du das mal checken?
      Code:
      md5sum smartVISU/pages/base/root.html smartVISU-fresh/pages/base/root.html
      76ece6c5a2aea5c396a400336ec780e1  smartVISU/pages/base/root.html
      76ece6c5a2aea5c396a400336ec780e1  smartVISU-fresh/pages/base/root.html
      Ein und die selbe Datei.

      Kommentar


        #4
        ReviloEgros

        Mein Fehler. In der index.html, die aufgerufen wird, wenn keine config.ini existiert, ist auch nochmal ein Aufruf von jQuery, den ich übersehen hatte. Das ist jetzt im develop gefixt.

        Anderes Thema: im fhem driver gibt es ein Auto-Reconnect jede Minute, sobald der Websocket geschlossen ist. beim Reconnect soll die Meldung „connection to the fhem server lost“ in die rechte obere Ecke geschrieben werden. Das ist aber nicht sauber implementiert, so dass der dritte von Dir genannte Fehler geschmissen wird. Ich habe die Meldung im develop richtig gestellt. Es kann aber sein, dass die Meldung jetzt nervt und wir am Error Handling nochmal was machen müssen. Kannst Du das mal testen? Die Änderung beschränkt sich auf die ./drivers/io_fhem.js. Du kannst notfalls einfach die Version aus dem master drüber schreiben.

        Gruß
        Wolfram
        Gruß
        Wolfram

        Kommentar


          #5
          Werd es heute Abend mal testen, danke. Ist ja alles nur durch zufall aufgefallen, da es mir beim Upgrade den Websocket zerschossen hatte 😅 Hat also alles bisher nicht wirklich gestört.

          Aber jetzt wo dann das Dreieck auftauchen soll wenn die Verbindung flöten geht, kann man auch nochmal anderes testen. smartVISU verliert leider gottes regelmäßig die Verbindung zu FHEM ohne sie erneut aufbauen zu können. Warum das passiert, keine Ahnung. Da haben wir im FHEM Forum uns schon workarounds in FHEM gebaut. Jedesmal wenn das fronthem device ne gewisse Zeit disconnected ist, lade ich über Fully einfach neu und gut. Funktioniert und stört auch nicht wirklich. Zumindest mich nicht. Keine Ahnung ob das hier schon bekannt ist!? Der Thread im FHEM Forum:

          https://forum.fhem.de/index.php/topic,117066.0.html

          Kommentar


            #6
            So, ich habe dann mal FHEM beendet und getestet. Beim Aufruf von smartVISU kommt dann ziemlich sofort:
            Code:
            Firefox kann keine Verbindung zu dem Server unter ws://192.168.188.200:2121/ws/ aufbauen. io_fhem.js:293:18
            [io.fhem]: socket.onerror: [object Event] io_fhem.js:142:15
            [io.fhem]: socket.onclose io_fhem.js:142:15
            [io.fhem]: socket closed io_fhem.js:142:15
            [io.fhem]: Reconnect timer started
            Danach dann:
            Code:
            Uncaught TypeError: io.socket is null
            autoReconnectIntervalId http://192.168.188.200:82/smartVISU/lib/base/base.js:104
            setInterval handler*activateAutoReconnect http://192.168.188.200:82/smartVISU/lib/base/base.js:102
            <anonymous>
            Dann ein paar mal:
            Code:
            centrifuge config
            ...
            client will connect to websocket endpoint centrifuge.js:2899:13
            start connecting centrifuge.js:2899:13
            Status disconnected -> connecting centrifuge.js:2899:13
            Angular app bootstrap
            Und dann nach 1 - 2 Minuten kommt das rote Dreieck.

            [Edit]
            Gerade bemerkt, das auch auf dem Tablet an der Wand wie gewollt das rote Dreieck sichtbar ist, aber nun nachdem ich FHEM wieder gestartet habe, verbindet smartVISU sich nicht automatisch neu. Bzw. es steht is FHEM als connected, bekommt aber keine Daten. Ist aber wohl wieder das selbe Problem wie im FHEM Forum erwähnt.

            Könnte man die Fehleranzeige mit einem Timeout versehen, oder wenn die Verbindung wieder steht, das das dreieck verschwindet?
            Zuletzt geändert von ReviloEgros; 05.06.2021, 10:34.

            Kommentar


              #7
              ReviloEgros
              Ich hab den fhem-Treiber so aufgebohrt, dass der Fehler wieder gelöscht wird, wenn die Verbindung steht. Auch die Fehlermeldungen sollten jetzt etwas aussagekräftiger sein. Mangels fhem-Installation kann ich das nicht testen. Im Anhang die geänderte Version (io_fhem_1.zip), in der nur das Fehlermanagement verbessert ist.

              Der "uncaught type error" in der base.js wird vermutlich geschmissen, wenn der Websocket schon ganz geschlossen ist, aber der autoReconnectTimer von SV noch läuft. Das kannst Du ändern, indem Du in der base.js die Zeile 104 änderst:
              Code:
              if(io.socket != null && io.socket.readyState == 3) {
              Zwecks Doku der Zusammenhänge noch folgende Erläuterung:
              • in der index.php, die die Basis für alle Visu-Seiten ist, wird der websocket initialisiert (io.init) und geöffnet (io.open)
              • Nach Vorbereitung der auszuliefernden Seite wird die Kommunikation auf dem Websocket gestartet (io.run) und es werden die items angefordert. Tatsächlich läuft die Kommunikation aber erst, wenn vom Websocket der Event "onopen" gefeuert wird. Je nach Timing zwischen Backend-Server und Client kann es da hakeln und das ist sicher ein Punkt, an dem noch zu arbeiten ist. Einen ersten Korrekturversuch habe ich angehängt (fhem_2.zip).
              • wenn die Gegenseite die Verbindung schließt, wird der "onclose" Event gefeuert und danach der Treiber-eigene Reconnect-Timer gestartet, der jede Minute einen Verbindungsversuch unternimmt.
              • Zusätzlich hat smartVISU die autoReconnect Funktion, die alle 5 Sekunden prüft, ob der Websocket noch läuft und diesen anderenfalls wieder initialisiert.
              Es wäre klasse, wenn Du beide Varianten einmal testen und berichten könntest. Ich pushe dann die bessere Version in den develop branch.

              In Zeile 19 des Treibers kannst Du übrigens den Loglevel hochdrehen. Mit dem Wert "2" bekommst Du mehr Informationen zu den übertragenen Inhalten.

              Gruß
              Wolfram
              Zuletzt geändert von wvhn; 06.06.2021, 16:42.
              Gruß
              Wolfram

              Kommentar


                #8
                Ok muss ich mal testen, danke. Kann nur etwas dauern, da ich das beschriebene Verhalten nicht reproduzieren kann, das passiert halt irgendwann.

                Kommentar


                  #9
                  Gerade mal wieder etwas Zeit gehabt zu testen.
                  Version 1 läuft soweit. Nachdem ich FHEM beendet habe kommt 12x wie gehabt:
                  Code:
                  Uncaught TypeError: io.socket is null
                  autoReconnectIntervalId http://192.168.188.200:82/smartVISU/lib/base/base.js:104
                  setInterval handler*activateAutoReconnect http://192.168.188.200:82/smartVISU/lib/base/base.js:102
                  <anonymous> http://192.168.188.200:82/smartVISU/index.php?page=OG.Wohnen:94
                  Danach dann
                  Code:
                  [io.fhem]: Reconnect timer fired io_fhem.js:143:15
                  [notify.error] id = 2: Driver: fhem - Connection to the fhem server lost!
                  
                  Firefox kann keine Verbindung zu dem Server unter ws://192.168.188.200:2121/ws/ aufbauen. io_fhem.js:294:18
                  [io.fhem]: socket.onerror: undefined io_fhem.js:143:15
                  [io.fhem]: socket.onclose io_fhem.js:143:15
                  [io.fhem]: socket closed
                  Und dann kommt das rote Dreieck.Habe ein paar Minuten gewartet und FHEM wieder gestartet. smartVISU hat sich dann mit FHEM wieder automatisch verbunden, aber ich durfte dann in smartVISU 5x den Fehler mit OK quittieren, bevor dann das rote Dreieck wieder weg war, da er bei jedem gescheitertem Verbindungsversuch einen neuen Fehler dafür anlegte. [notifiy.error] id = x wurde immer um 1 erhöht, obwohl es der selbe Fehler war.


                  Mit Version 2 bekomme ich folgende Fehler, und keine Daten in smartVISU auf dem PC, und auf dem Tablet sieht man nur den spinner auf weißem Grund:
                  Code:
                  Uncaught SyntaxError: unexpected token: ':'
                  Uncaught ReferenceError: io is not defined
                  <anonymous> http://192.168.188.200:82/smartVISU/index.php?page=OG.Wohnen:93
                  Uncaught ReferenceError: io is not defined
                  _create http://192.168.188.200:82/smartVISU/widgets/device.js:371
                  jQuery 40

                  Kommentar


                    #10
                    ReviloEgros
                    ich habe beide Versionen nochmal überarbeitet. Hoffe, dass das Verhalten jetzt passt.

                    Den ersten Fehler (Uncaught TypeError: io.socket is null) müsstest Du über die oben genannte Änderung in der base.js abfangen können. Ich kann hier keine neue Version der base.js anhängen, da dies mit Sicherheit zu Problemen mit Deiner SV-Version führen würde.

                    Gruß
                    Wolfram
                    Angehängte Dateien
                    Zuletzt geändert von wvhn; 09.06.2021, 12:51.
                    Gruß
                    Wolfram

                    Kommentar


                      #11
                      Auch mit dieser Version 1 werden mehrere von den Fehlermeldungen in smartVISU mit dem roten Dreieck generiert und nicht automatisch gelöscht, wenn die Verbindung wieder zu stande kommt. Wenn die Verbindung wieder steht, muss ich dementsprechend oft die Meldung mit OK quittieren, bis das Dreieck wieder verschwindet.

                      Bei Version 2 kommt das rote dreieck sehr viel schneller als bei Version 1 und der Fehler wird auch nur ein mal für die Visu generiert. Wenn die Verbindung wieder steht, ist das Dreieck auch sofort wieder weg.

                      Also aktuell würde ich sagen, das Version 2 die bessere ist. Danke für deine Bemühungen!

                      Kommentar


                        #12
                        Interessanterweise enthält die Version 1 nicht die Änderungen, die ich gestern gemacht hatte. Ich hatte einige Probleme beim Upload hier im Forum. Die Version 2 ist aber aus meiner Sicht auch die „richtigere“. Sie behebt das Problem, dass die Widgets nicht initialisiert werden, wen beim Aufruf von io.run() der Websocket noch nicht läuft.

                        Jetzt muss sich die Variante 2 noch im Dauereinsatz bewähren und zeigen, ob sie die im verlinkten Thread diskutierten Probleme behebt. Ich schlage vor, dass wir das hier beenden und im fhem Forum fortsetzen.

                        Gruß
                        Wolfram

                        EDIT: der Vollständigkeit halber und für den Fall, dass Version 2 doch noch Probleme macht, hier nochmal die Version 1
                        Angehängte Dateien
                        Zuletzt geändert von wvhn; 10.06.2021, 10:09.
                        Gruß
                        Wolfram

                        Kommentar

                        Lädt...
                        X