Ankündigung

Einklappen
Keine Ankündigung bisher.

Alexa4p3 für Dummies

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

  • 2malmama
    antwortet
    Onkelandy ah ok

    Ich hab es an den Text der Datei als Beispiel unten angehängt. Ich hoffe, dass das so den Vorstellungen entspricht. Musste die Datei umbenennen, sonst hätte das Forum sie nicht hochladen lassen (-hab ein .pdf angehängt, denn ohne Dateiendung konnte ich sie nicht hochladen und als txt war sie zu groß...., also bitte nach dem Runterladen einfach .pdf aus dem Dateinamen löschen)

    user_doc.rst.pdf

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    2malmama Das File ist im Shng Ordner plugins/alexa4p3
    hier hochladen meinte ich im Thread hier, dann kann ich den Githubkram erledigen. Ist nämlich nicht ganz sooo trivial

    Einen Kommentar schreiben:


  • 2malmama
    antwortet
    Vielen Dank Wolfram! Ich habe mich einfach soo sehr darüber gefreut, dass ich so viel Unterstützung bekommen habe (auch wenn ich mich hier und da ziemlich dusselig angestellt habe), dass es auch mir Spaß macht meine Erfahrungen weiterzugeben. Vielleicht hilft es ja jemandem weiter.

    Hier mal der Screenshot (ich habe mich aber noch nicht mit der Problemlösung beschäftigt - muss heute erst noch etwas für die Arbeit tun). Ich kann es hier problemlos posten, die Visu gibt es immer noch nur mit meinem Testaufbau. Oben intern, unten extern:

    keine Grafik.png

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    Klasse. Das finde ich vorbildlich, dass Du Deine Ergebnisse der Allgemeinheit zur Verfügung stellst. So macht Open Source Spaß!
    Habe ich das richtig verstanden, dass die Visu bei Zugriff aus dem LAN ganz normal funktioniert, aber bei Zugriff von außen Elemente fehlen?
    Kannst Du mir mal einen Screenshot schicken? Gerne auch per PN.

    Gruß
    Wolfram

    Einen Kommentar schreiben:


  • 2malmama
    antwortet
    mmmh - verrätst Du mir auch, wo ich das user_doc.rst finde? Auch wo ich das auf Github einstellen kann (hab mich ja nie so richtig damit auseinandergesetzt) finde ich irgendwie nicht. Und wenn Du sagst
    Zitat von Onkelandy Beitrag anzeigen
    hier nochmals hochladen
    - hast Du dann da ein bestimmtes Ziel ins Auge gefasst?

    Sorry - aber jetzt hast Du mich eiskalt erwischt

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Super wäre natürlich, du könntest das ins user_doc.rst im Pluginverzeichnis einbinden. Entweder dann auf Github stellen oder hier nochmals hochladen. Dann verschwindet die sehr ausführliche Anleitung auch nicht in den Tiefen des Forums hier

    Einen Kommentar schreiben:


  • 2malmama
    antwortet
    Sooooo - da bin ich wieder! Nach tagelangen vergeblichen Versuchen wieder online gehen zu können und diversen anderen Schwierigkeiten hatte ich doch noch jede Menge Zeit mich eingehend noch einmal mit der Thematik auseinanderzusetzen.

    Ich hatte die Infos aus Deinem Beitrag - Andre - an der ein oder anderen Stelle schon umgesetzt, aber irgendwie kam ich auf keinen grünen Zweig.

    Aber ich darf Euch freudig verkünden: ES KLAPPT JETZT!

    Ich habe in den letzten Tagen das ganze Konstrukt noch gute 6 mal neu angefangen(mit Ausnahme der Amazon-Geschichte). Ich hab also die Raspis x-mal platt gemacht und neu aufgesetzt.

    Interessanterweise stellen sich - warum auch immer - bei scheinbar gleicher Vorgehensweise immer mal wieder andere Fehler ein. Es hakt mal hier, es klemmt mal da.

    So habe zum Beispiel ich die Änderung der io_smarthome.py.js in meiner letzten Version noch gar nicht bearbeitet - habe aber auch auf keinem Browser den "alten" Websocket-Error.

    Auch meine jetzige Ausführung hat noch Kinderkrankheiten - so interpretiert meine Visu den Zugriff von außen noch ohne Bild und Hintergrund und die Alexa sagt beim Schalten immer, dass das Gerät nicht reagieren würde (schaltet aber trotzdem), aber das löst sich im Laufe der Zeit denke ich auch noch.

    Aber wie versprochen hab ich das ganze in letzter Konsequenz zusammengetragen und daher ist im Anhang ein pdf mit meiner Dummie-Anleitung zu finden. Ich hoffe, das hilft mal jemandem weiter. Auf jeden Fall darf es gerne kopiert und verändert werden.

    Ohne Euch hätts nicht geklappt!!! Daher: VIELEN, VIELEN LIEBEN DANK!!!

    alexa4p3fuerDummies.pdf

    Einen Kommentar schreiben:


  • Hasenradball
    antwortet
    Hallo Andre,

    die Änderung hängt vermutlich noch in den offenen PR von smarthome.

    siehe: doc -> visualisierung -> nginx

    https://github.com/smarthomeNG/smarthome/pull/362

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hallo Hasenradball ,

    in welches develop-Repo hast Du geschoben "smartvisu" oder "smarthome" ich kann im Moment nichts finden. (oder noch ein Anderes ?)
    Wie ich geschrieben hatte - to be discussed -

    Die Diskussion beginnt ja bereits

    Gruss Andre

    Nachtrag:

    Vielleicht das ganze Thema ins smartVisu-Forum verschieben - das war im hier im Thread ja nur der "ad hoc" Lösuns-Vorschlag
    Zuletzt geändert von AndreK; 25.10.2020, 22:30. Grund: siehe Nachtrag

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    Nach meiner Meinung ist die vorgeschlagene Codeänderung im io_smarthome.py.js Treiber ein Workaround für eine noch nicht 100% stimmige Konfiguration des nginx.
    Sinn und Zweck der Definition an dieser Stelle ist doch, dass über http (Port 80) bzw https (Port 443) kommuniziert wird, wenn der Port in der config weggelassen wird. In diesem Fall bleibt es dann der Konfiguration des nginx überlassen, dies auf den richtigen Port weiter zu leiten.

    Bevor ich etwas im Code (der nicht von mir stammt) ändere und das noch nicht 100% verstanden ist, müsste dies von möglichst vielen Leuten mit unterschiedlichen Konfogurationen getesetet werden.

    Gruß
    Wolfram

    Einen Kommentar schreiben:


  • Hasenradball
    antwortet
    Hi ja die aktualisierte Doku hab ich bereits in den develop geschoben....

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hi Hasenradball hatte sich damit auch schon auseinandergesetzt und glaub die Doku aktualisiert. Die Lösung hier scheint mir aber sehr straight. De facto muss der Code in der Visu aktualisiert werden und dann muss man nur korrekt weiterleiten und kann alles andere gleich lassen, ja?

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    2malmama

    Kurzer Nachtrag, nach der Änderung der "io_smarthome.py.js" auf jeden Fall die Seite unter Umgehung des Browser-caches neu laden.

    Je nach Browser mit "STRG + F5" oder "STRG + SHIFT + R"

    Gruss Andre

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hallo 2malmama ,

    Deine angestrebte Konfiguration (1 x Raspi mit Nginx, 1 x Rapsi mit shNG + smarVisu) deckt sich mit meiner Konfig. (nur verwende ich beides mal kein Image).
    Noch mal kurz zu den Vorrausetzungen :
    - Der Raspi mit shNG + smarVisu erfährt keine weitere Konfig des Nginx, dieser bleibt wie er mit dem Image kommt
    - Der Raspi mit dem Nginx wird mittels Zertifikaten und Anpassen der "https.conf" entsprechend eingerichtet.
    - Da nun die shNG und die Visu nicht mehr auf dem gleichen Host laufen muss dem Nginx erklärt werden wohin er weiterleiten soll. Alle Einträge in der https.confg
    müssen umgeleitet werden. Dies erfolgt in den jeweiligen "locations". Hier müssen folgende Einträge ergänzt werden :
    Code:
     # Zugriff auf die SmartVISU mit Basic Auth
        location /smartVISU {
            auth_basic "Restricted Area: smartVISU";
            auth_basic_user_file /etc/nginx/.smartvisu;
    
            # Zugreifendes Land erlaubt?
            if ($allowed_country = no)  {
                    return 403;
            }
    
            proxy_pass http://<SmartVISU Server LAN IP>/smartVISU;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    
        # Alexa Plugin Weiterleitung
        location /alexa {
            auth_basic "Restricted Area: Alexa";
            auth_basic_user_file /etc/nginx/.alexa;
    
            # Zugreifendes Land erlaubt?
            if ($allowed_country = no) {
                    return 403;
            }
    
            proxy_pass http://<SmartHomeNG LAN IP>:<Alexa Plugin Port>/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    Wichtig ist hier das korrekte Weiterleiten der Websocketverbindung :

    Code:
    # Weiterleitung zu SmartHomeNG (Websocket Schnittstelle) mit Basic Auth
        location / {
            auth_basic "Restricted Area: smartVISU";
            auth_basic_user_file /etc/nginx/.smartvisu;
    
            # Zugreifendes Land erlaubt?
            if ($allowed_country = no) {
                    return 403;
            }
    
            # Nur Websocket Verbindungen gegen "/" durchlassen!
            if ($http_upgrade = websocket) {
                    proxy_pass http://<SmartHomeNG LAN IP>:[MARKIEREN]<Websocket Port>[/MARKIEREN];
            }
            if ($http_upgrade != websocket) {
                    return 403;
            }
    Der Websocket Port ist standardmäßig 2424

    Vergleich hierzu auch die Doku auf smarthomeng.de/user

    Nun zum eigentlichen Problem - wieso kann gibt es den Fehler mit dem Websocket in der Visu?

    Im Moment is es so geregelt, dass wenn die Felder "Host/IP" und "Port" in der smartVisu-Config leer sind wird über "wss" also Socket via "https" die Verbindung aufgebaut wird. Es wird Port 443 verwendet. Die Weiterleitung auf Port 2424 macht dann der Nginx. Das funktioniert auch.

    Wenn "Host/IP" und "Port" leer sind wird Stand heute, die Verbindung über Port "80" hergestellt - Das ist der Fehler !!!

    Die Funktion "open" im Driver "io_smarthome.py.js" (zu finden in ./smartvisu/driver) setzt den Port auf "80" wenn nicht "https".

    Es gibt auch die Möglichkeit "Host/IP" + Port je Gerät in der smartVisu-Config zu setzen. Ich glaube aber nicht, das das zielführend ist da je nachdem die Geräte
    einmal intern via http und einmal extern via https zugreifen.

    Ich habe mir so beholfen in dem ich die "io_smarthome.py.js" wie folgt angepasst habe.

    original :
    =============
    Code:
    if (!io.port) {
      // use port of current page if not defined and needed
      if (location.port != '') {
        io.port = location.port;
        } else {
          if (location.protocol == 'http:') io.port = '80';
          if (location.protocol == 'https:') io.port = '443';
        }
    }
    meine Variante :
    =============
    Code:
    if (!io.port) {
      // use port of current page if not defined and needed
      if (location.port != '') {
        io.port = location.port;
        } else {
          if (location.protocol == 'http:') io.port = '[MARKIEREN]2424[/MARKIEREN]';
          if (location.protocol == 'https:') io.port = '443';
        }
    Ich hatte das nie irgendwo disktutiert / kommentiert da ich mir selbst zu helfen wusste.

    Hallo wvhn, das wäre eventuell auch noch eine grundsätzliche Anpassung wert. Man könnte nur das Feld "Host/IP" leer lassen und dann den Port wie folgt
    festlegen :

    Code:
    if (location.port != '') {
      io.port = location.port;
      } else {
      if (location.protocol == 'https:') io.port = '443';
    }
    also ohne Überprüfung ob if (!io.port). Konnte ich bisher nicht testen - solle aber genauso tun. Die Frage ist was für die User der einfachere / bessere Weg ist
    - To be discussed -

    Buh, das wurde aber ein langer Betrag -

    2malmama - Ich hoffe das bringt dich weiter

    Einen schönen Sonntag noch

    Viele Grüsse

    Andre

    Einen Kommentar schreiben:


  • 2malmama
    antwortet
    Guten Morgen

    den Port 80 lass ich dann jetzt mal zu. So wie es ja auch sein soll.

    Die Angaben in der SmartVisuConfig hatte ich schon drin.

    Die access.log zeigt heute überhaupt keinen Eintrag. Die error.log verzeichnet heute Nacht Zugriffe (ich war es nicht - ich hab geschlafen...). Könnte sein, dass das aufschlussreich ist:

    sudo tail -f /var/log/nginx/error.log
    2020/10/25 02:58:07 [error] 1834#1834: *10 access forbidden by rule, client: 87.166.58.35, server: meindns.de, request: "GET / HTTP/1.0", host: "meindns.de"
    2020/10/25 04:19:44 [error] 1834#1834: *21 open() "/var/www/html/login_sid.lua" failed (2: No such file or directory), client: 148.72.133.152, server: meindns.de, request: "GET //login_sid.lua HTTP/1.1", host: "185.53.XXX.XX"
    2020/10/25 06:46:28 [error] 1834#1834: *23 access forbidden by rule, client: 34.246.218.75, server: meindns.de, request: "POST /alexa/ HTTP/1.1", host: "meindns.de"
    2020/10/25 08:35:22 [error] 1834#1834: *25 access forbidden by rule, client: 213.32.122.82, server: meindns.de, request: "GET / HTTP/1.1", host: "185.53.XXX.XX"

    Einen Kommentar schreiben:

Lädt...
X