Ankündigung

Einklappen
Keine Ankündigung bisher.

NINGX und SmartVISU

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

    NINGX und SmartVISU

    Ich habe auch das Update auf die Version 3.0 vollzogen. Da ich aber NGINX benutze, habe ich in der bisherigen Versionen einen angepassten Treiber verwendet, um meinen definierten https-Port an SmartHomeNG weiterzeuleiten und lokal den Standard-Port 2424 zu nutzen. Das funktioniert jetzt nicht mehr so recht bzw. gibt es auch die Möglichkeit einen Reverse-proxy einzuschalten. Mache ich das, kann ich keine IP-Adresse und auch keinen Port eintragen und ich kann weder die Verbindung lokal, noch über NGINX zu SmartHomeNG (WebSocket) herstellen.

    Wie kann ich das korrekt konfigurieren?

    #2
    Bei der SV sollte nix nötig sein. Für nginx wirst du vielleicht hier fündig?

    https://github.com/smarthomeNG/ansib...n/04_nginx.yml

    Kommentar


      #3
      Der Schalter für den Reverse Proxy macht nichts anderes, als in der Konfiguration die Eingabe für IP und Port abzuschalten. Beides wird - zumindest im Image von Onkelandy - nicht benötigt oder stört sogar, wenn der nginx als Reverseproxy konfiguriert ist.

      In Deinem Fall müsstest Du Deine Anpassungen wieder in den aktuellen Treiber einarbeiten und dann sollte es funktionieren, wie früher. Der Treiber io_smarthome.py.js wurde um Funktionen erweitert, aber in der Grundfunktion nicht verändert. Den alten Treiber kannst Du nicht mehr verwenden.

      In shNG ist das bisherige visu_websocket Plugin noch verfügbar. Wenn Du mit dem neuen Websocket-Modul nicht zum Ziel kommst, solltest Du es mit dem Plugin versuchen.

      Gruß
      Wolfram

      Kommentar


        #4
        Zitat von wvhn Beitrag anzeigen
        In Deinem Fall müsstest Du Deine Anpassungen wieder in den aktuellen Treiber einarbeiten und dann sollte es funktionieren, wie früher. Der Treiber io_smarthome.py.js wurde um Funktionen erweitert, aber in der Grundfunktion nicht verändert. Den alten Treiber kannst Du nicht mehr verwenden.
        Ich habe mir das gerade angeschaut, auch mit einem debugger. Den Code habe ich wie folgt angepasst:

        Code:
        	open: function () {
        		var protocol = '';
        		if (!io.address || io.address.indexOf('://') < 0) {
        			// adopt websocket security to current protocol (https -> wss and http -> ws)
        			// if the protocol should be forced, add it to the address
        			protocol = location.protocol === 'https:' ? 'wss://' : 'ws://';
        			if (!io.address) {
        				// use url of current page if not defined
        				io.address = location.hostname;
        			}
        /*
        			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 = '2424';
        					if (location.protocol == 'https:') io.port = '1443';
        				}
        			}
        */
        			if (!io.port) {
        				if (location.protocol == 'http:') io.port = '2424';
        				if (location.protocol == 'https:') io.port = '1443';
        			}
        		}
        Damit sollte das ja eigentlich gehen. Aber ich bekomme immer einen undefined error zurück.

        Zitat von wvhn Beitrag anzeigen
        In shNG ist das bisherige visu_websocket Plugin noch verfügbar. Wenn Du mit dem neuen Websocket-Modul nicht zum Ziel kommst, solltest Du es mit dem Plugin versuchen.
        Ich möchte das gern mit der aktuellen Version zum laufen bekommen. Das wäre natürlich gut. Andererseits muss ich wohl noch mal zurück, um das zu testen.

        Kommentar


          #5
          Zitat von Onkelandy Beitrag anzeigen
          Bei der SV sollte nix nötig sein. Für nginx wirst du vielleicht hier fündig?
          Anpassungen braucht man aber, um sowohl den lokalen Betrieb ohne rerverse proxy, als auch den mit proxy hinzubekommen, da ich ja irgendwo den Port definieren muss. Und leider will die Fritz!Box keinen Port 443 durch lassen ... deshalb braucht man einen alternativen Port.

          Kommentar


            #6
            Okay, wenn du nicht 443 nutzen kannst, sieht das anders aus. Aber ansonsten hab ich bei mir keine Änderungen gemacht und klappt sowohl lokal als auch über PR ohne Adaptionen.

            Kommentar


              #7
              Hi Cannon ,

              wenn ich ich mich recht erinnere hast Du einen zweiten Raspi (Rechner) mit dem nginx am Laufen korrekt ?

              Wenn du in der Smartvisu 3.0 die IP-Adresse des shNG-Rechners und Port 2424 eingibst funktioniert die Visu dann via http im lokalen Netz ?
              (Mit dem originalen io_smarthome.py-Treiber und Reverse-Proxy in der Visu aus)

              Falls ja dann passt zumindest mit dem smartvisu-Plugin und mit der Visu alles.

              Du kannst dann mal folgende Änderung in der io_smarthome.py bei der function "open" vorzunehmen. (Einstellungen in der smartvisu lassen wie oben beschrieben)

              Code:
                open: function () {
                  var protocol = '';
                  if (!io.address || io.address.indexOf('://') < 0 ) {
                    // adopt websocket security to current protocol (https -> wss and http -> ws)
                    // if the protocol should be forced, add it to the address
                    protocol = location.protocol === 'https:' ? 'wss://' : 'ws://';
                    if (!io.address) {
                      // use url of current page if not defined
                      io.address = location.hostname;
                    }
                    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';
                      }
                    }
                  }
              
                  [MARKIEREN]if (location.protocol == 'https:')
                    { io.port = '1443'}[/MARKIEREN]
                  
                  io.socket = new WebSocket(protocol + io.address + ':' + io.port);
              Das Problem taucht aus meiner Sicht immer dann auf, wenn der Nginx auf einem separaten Rechner läuft und man lokal direkt auf den shNG-Rechner zugreifen will.

              Ich hatte hier mal eine Diskussion angestossen, ist aber wieder in Vergessenheit geraten. Siehe hier Post #115 ff

              Da ich die gleiche Konfig habe (ein Rechner shNG / ein Rechner Nginx für den Zugang via https von außen und kein Image verwende) werde ich mir das noch anschauen, bin aber noch nicht ganz soweit mit meinem Setup.

              Vielleicht kannst Du nach obigen Tests ein kures Feedback geben, Danke

              Viele Grüsse
              Andre

              Kommentar


                #8
                Zitat von AndreK Beitrag anzeigen
                wenn ich ich mich recht erinnere hast Du einen zweiten Raspi (Rechner) mit dem nginx am Laufen korrekt ?

                Wenn du in der Smartvisu 3.0 die IP-Adresse des shNG-Rechners und Port 2424 eingibst funktioniert die Visu dann via http im lokalen Netz ?
                (Mit dem originalen io_smarthome.py-Treiber und Reverse-Proxy in der Visu aus)

                Falls ja dann passt zumindest mit dem smartvisu-Plugin und mit der Visu alles.
                NGINX läuft auf dem Raspberry auf dem SmartHomeNG, als auch die SmartVISU laufen. Also alles auf einem.

                Die lokale Version, also ohne NGINX, läuft -> auch nach deiner Version. Die läuft auch, wenn ich keine Hostadresse eingebe, was auch Voraussetzung dafür ist, dass die Version mit NGINX überhaupt laufen kann, weil die Hostadresse dann bezogen wird. Und die Hostadresse ja eine andere ist.

                Möglicherweise gibt es aber doch ein Problem mit dem Websocket-Plugin oder der Umleitung in conf.d.

                Kommentar

                Lädt...
                X