Ankündigung

Einklappen

Hinweis

Die Forenregeln wurden überarbeitet (Stand 7.11.22). Sie sind ab sofort verbindlich. Wir bitten um Beachtung.
Mehr anzeigen
Weniger anzeigen

Neues Plugin: webpush

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

    #16
    Zitat von Sisamiwe Beitrag anzeigen
    Anklicken kann ich die Groups, aber nach F5 ist alles wieder weg.
    Ja ist klar, dass die Gruppen Einstellungen wieder weg sind. Denn sie werden auch nicht übernommen, wenn man den Button aufgrund von nicht erlaubten Push nicht anklicken kann.

    Verwendest du SSL? Welchen Browser?

    Du müsstest in der webpush.js verbose auf true setzen, den Cache in smartvisu deaktivieren und dann diese Seite mit dem Widget neu laden, dann steht in der Browser Konsole was nicht klappt. Bzw. Da dies eine warning ergeben sollte, kann es auch sein, dass diese direkt im der Konsole steht ohne verbose einzuschalten. Aber den Cache würde ich trotzdem kurz abschalten.
    Zuletzt geändert von hijacker7; 25.10.2022, 05:28.

    Kommentar


      #17
      Der Cache-Mechanismus in smartVISU löscht alle console.log Befehle aus den „gecacheten“ (au weia) JavaScript-Skripten. Mit eingeschaltetem Cache kommen deshalb nur Meldungen des Browsers in der Konsole durch, aber keine in den Skripten erzeugten Debug-Ausgaben.

      Gruß
      Wolfram

      Kommentar


        #18
        Hallo,
        in der
        Zitat von hijacker7 Beitrag anzeigen
        Browser Konsole
        steht:
        Code:
        Push messaging is not supported
        Code:
            registerWorker    @    webpush.js:197
        $.isFunction.proxiedPrototype.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        _create    @    webpush.js:24
        $.isFunction.proxiedPrototype.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        _createWidget    @    jquery.mobile-1.4.5-patch.min.js:1
        $.<computed>.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        (anonym)    @    jquery.mobile-1.4.5-patch.min.js:1
        each    @    jquery-2.2.4.min.js:2
        each    @    jquery-2.2.4.min.js:2
        $.fn.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        enhanceWithin    @    jquery.mobile-1.4.5-patch.min.js:1
        _create    @    jquery.mobile-1.4.5-patch.min.js:1
        $.isFunction.proxiedPrototype.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        _super    @    jquery.mobile-1.4.5-patch.min.js:1
        _create    @    jquery.mobile-1.4.5-patch.min.js:1
        $.isFunction.proxiedPrototype.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        _createWidget    @    jquery.mobile-1.4.5-patch.min.js:1
        _createWidget    @    jquery.mobile-1.4.5-patch.min.js:1
        $.isFunction.proxiedPrototype.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        $.<computed>.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        (anonym)    @    jquery.mobile-1.4.5-patch.min.js:1
        each    @    jquery-2.2.4.min.js:2
        each    @    jquery-2.2.4.min.js:2
        $.fn.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        _enhance    @    jquery.mobile-1.4.5-patch.min.js:1
        $.isFunction.proxiedPrototype.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        _include    @    jquery.mobile-1.4.5-patch.min.js:1
        $.isFunction.proxiedPrototype.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        (anonym)    @    jquery.mobile-1.4.5-patch.min.js:1
        f    @    jquery-2.2.4.min.js:2
        i    @    jquery-2.2.4.min.js:2
        fireWith    @    jquery-2.2.4.min.js:2
        z    @    jquery-2.2.4.min.js:4
        (anonym)    @    jquery-2.2.4.min.js:4
        load (async)        
        send    @    jquery-2.2.4.min.js:4
        ajax    @    jquery-2.2.4.min.js:4
        load    @    jquery.mobile-1.4.5-patch.min.js:1
        $.isFunction.proxiedPrototype.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        _loadUrl    @    jquery.mobile-1.4.5-patch.min.js:1
        $.isFunction.proxiedPrototype.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        change    @    jquery.mobile-1.4.5-patch.min.js:1
        $.isFunction.proxiedPrototype.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        (anonym)    @    jquery.mobile-1.4.5-patch.min.js:1
        each    @    jquery-2.2.4.min.js:2
        each    @    jquery-2.2.4.min.js:2
        $.fn.<computed>    @    jquery.mobile-1.4.5-patch.min.js:1
        $.mobile.changePage    @    jquery.mobile-1.4.5-patch.min.js:1
        (anonym)    @    jquery.mobile-1.4.5-patch.min.js:1
        dispatch    @    jquery-2.2.4.min.js:3
        r.handle    @    jquery-2.2.4.min.js:3​
        MIr sagt das nichts

        Zitat von hijacker7 Beitrag anzeigen
        Welchen Browser?
        Chrome

        Zitat von hijacker7 Beitrag anzeigen
        Verwendest du SSL?
        Nein.

        Kommentar


          #19
          hijacker7

          Ich habe grad im WebIF mal auf "Alle Abonnenten löschen" geklickt.
          Dann kam das im Log:

          Code:
          2022-10-25  21:43:53 ERROR    cherrypy.error.2729640552                [25/Oct/2022:21:43:53] HTTP
          Traceback (most recent call last):
            File "/home/smarthome/.local/lib/python3.8/site-packages/cherrypy/_cprequest.py", line 638, in respond
              self._do_respond(path_info)
            File "/home/smarthome/.local/lib/python3.8/site-packages/cherrypy/_cprequest.py", line 697, in _do_respond
              response.body = self.handler()
            File "/home/smarthome/.local/lib/python3.8/site-packages/cherrypy/lib/encoding.py", line 223, in __call__
              self.body = self.oldhandler(*args, **kwargs)
            File "/home/smarthome/.local/lib/python3.8/site-packages/cherrypy/_cpdispatch.py", line 54, in __call__
              return self.callable(*self.args, **self.kwargs)
            File "/usr/local/smarthome/plugins/_priv_webpush/__init__.py", line 538, in unsubscribeAll
              self.plugin.unsubscribeAll()
            File "/usr/local/smarthome/plugins/_priv_webpush/__init__.py", line 351, in unsubscribeAll
              c.execute(sql)
          sqlite3.OperationalError: near ")": syntax error

          Kommentar


            #20
            Zeile 197 in der webpush.js muss IMHO wie folgt lauten:
            Code:
            webpushwidge​t.pushButton.textContent = 'Push Not Supported';​
            Das beseitigt zumindest die Fehlermeldung aus "registerworker", aber nicht das Problem "Push not supported".

            Kommentar


              #21
              Du kannst aber testen, welche der beiden Bedingungen nicht erfüllt ist. Dazu gibst Du sie in der Browser-Console ein:
              Code:
              'serviceWorker' in navigator
              Code:
              'PushManager' in window
              Beide müssen "true" als Ergebnis liefern. Vermutlich ist der PushManager nicht verfügbar. Ich habe aber noch nicht gefunden, wie man den im Browser aktiviert.

              Kommentar


                #22
                Danke @wvhn


                Wenn er nicht SSL verwendet, dann ist es der ServiceWorker. Diese dürfen nur bei https registriert werden. Das habe ich aber ja schon mal gschrieben, dass das leider Vorraussetzung ist...

                Kommentar


                  #23
                  Zitat von Sisamiwe Beitrag anzeigen

                  Code:
                  2022-10-25 21:43:53 ERROR cherrypy.error.2729640552 [25/Oct/2022:21:43:53] HTTP
                  Traceback (most recent call last):
                  File "/home/smarthome/.local/lib/python3.8/site-packages/cherrypy/_cprequest.py", line 638, in respond
                  self._do_respond(path_info)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/cherrypy/_cprequest.py", line 697, in _do_respond
                  response.body = self.handler()
                  File "/home/smarthome/.local/lib/python3.8/site-packages/cherrypy/lib/encoding.py", line 223, in __call__
                  self.body = self.oldhandler(*args, **kwargs)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/cherrypy/_cpdispatch.py", line 54, in __call__
                  return self.callable(*self.args, **self.kwargs)
                  File "/usr/local/smarthome/plugins/_priv_webpush/__init__.py", line 538, in unsubscribeAll
                  self.plugin.unsubscribeAll()
                  File "/usr/local/smarthome/plugins/_priv_webpush/__init__.py", line 351, in unsubscribeAll
                  c.execute(sql)
                  sqlite3.OperationalError: near ")": syntax error
                  Und

                  Zitat von wvhn Beitrag anzeigen
                  Zeile 197 in der webpush.js muss IMHO wie folgt lauten:
                  Code:
                  webpushwidge​t.pushButton.textContent = 'Push Not Supported';​
                  Danke, ist gefixt.



                  Und habe die warning für PushManager und ServiceWorker aufgeteilt.
                  Zuletzt geändert von hijacker7; 26.10.2022, 17:26.

                  Kommentar


                    #24
                    Zitat von hijacker7 Beitrag anzeigen
                    Wenn er nicht SSL verwendet, dann ist es der ServiceWorker. Diese dürfen nur bei https registriert werden. Das habe ich aber ja schon mal gschrieben, dass das leider Vorraussetzung ist...
                    Das bedeutet, ich muss erst auf eine verschlüsselte Verbindung zwischen shNG und smartVISU wechseln, so wie es wvhn hier beschrieben hat?

                    Kommentar


                      #25
                      Zitat von Sisamiwe Beitrag anzeigen

                      Das bedeutet, ich muss erst auf eine verschlüsselte Verbindung zwischen shNG und smartVISU wechseln, so wie es wvhn hier beschrieben hat?
                      Ja genau, aber selbst dann zickt der Chrome noch rum, weil er selbst signierte Zertifikate nicht mag. Aber z.B. beim Firefox funktionierts dann.

                      Theoretisch könnte man auch extern signierte Zertifikate einbinden wie z.B. von Lets Encrypt. Aber diese müssen alle 3 Monate erneuert werden und dazu muss der Server von außen mit DDNS oder mit einer statischen Provider IP erreichbar sein. Bedeutet alle drei Monate am Router einen Port aufmachen, Befehl zum Zertifikat erneuern ausführen, die Zertifikate von /etc/apache2/ssl/ nach /usr/local/smarthome/etc/ kopieren und den Port wieder schließen (damit die Visu wieder sicher ist). Ist halt viel Arbeit jedesmal.

                      Die mit Abstand schönste Lösung ist ein eigener Reverse Proxyserver mit Lets Encrypt Zertifikaten, da funktioniert es mit jedem Browser sei es desktop oder mobil. https://smarthomeng.github.io/smarth...rse_proxy.html Leider ist das aber auch die aufwendigste Variante, ich denke nicht, dass sich das nur für web push Nachrichten lohnt.

                      Lg
                      Zuletzt geändert von hijacker7; 01.11.2022, 08:29. Grund: Userdok Link angepasst

                      Kommentar


                        #26
                        Es scheint Methoden zu geben, dass serviceWorker auch unter http getestet werden können:
                        https://stackoverflow.com/questions/...rkers-via-http

                        Nicht schön, aber vielleicht einen Versuch wert.

                        Gruß
                        Wolfram

                        Kommentar


                          #27
                          Habe das Repo bei mir umbenannt, bitte ändert den Upstream oder checkt das Repo wie folgt neu aus:

                          Code:
                          git clone https://github.com/gruberth/webpush priv_webpush

                          Kommentar


                            #28
                            Das Plugin läuft sehr gut und ist mittlerweile auf einem Stand wo es veröffentlicht werden könnte. Da es aber anscheinend weder Tester noch Nutzer gibt ist es fragwürdig ob ich überhaupt einen PR erstellen soll.
                            Was sagen die SmarthomeNG Gurus dazu?

                            Kommentar


                              #29
                              Viele schrecken davor zurück ein einzelnes Plugin von woanders zu installieren oder beschränken sich im Einsatz auf Code aus dem Release (master Branch).

                              Daher ist es sinnvoll einen PR gegen den develop Branch zu stellen. Sonst kann das Plugin kaum eine Verbreitung finden,
                              Viele Grüße
                              Martin

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

                              Kommentar


                                #30
                                Habe soeben einen PR erstellt und einen dazu passenden Support Thread aufgemacht, bitte benutzt diesen für weitere Anmerkungen, Fehler, Fragen usw.

                                https://knx-user-forum.de/forum/supp...support-thread

                                Kommentar

                                Lädt...
                                X