Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin: webpush

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

  • hijacker7
    antwortet
    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

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    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,

    Einen Kommentar schreiben:


  • hijacker7
    antwortet
    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?

    Einen Kommentar schreiben:


  • hijacker7
    antwortet
    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

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    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

    Einen Kommentar schreiben:


  • hijacker7
    antwortet
    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

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    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?

    Einen Kommentar schreiben:


  • hijacker7
    antwortet
    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.

    Einen Kommentar schreiben:


  • hijacker7
    antwortet
    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...

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    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.

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    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".

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    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

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    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.

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    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

    Einen Kommentar schreiben:


  • hijacker7
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X