Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. Nodered Problem mit Websocket

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Nodered Problem mit Websocket

    This topic has been deleted. Only users with topic management privileges can see it.
    • daes10
      daes10 last edited by

      Habe Nodered im iobroker installiert als Adapter.

      Wollte nun mein Streamdeck via Websocket an Nodered anbinden, wie laut dieser website:
      https://www.thesmarthomebook.com/2020/08/28/controlling-home-assistant-entities-with-your-elgato-stream-deck/

      bringe es jedoch einfach nicht hin eine Verbindung zwischen Nodered und dem Streamdeck hinzukriegen.

      Geht Websocket überhaupt, wenn Nodered im Iobroker mitinstalliert ist? Oder hat das von euch jemand im Einsatz?

      Wäre froh, um ein paar Ratschläge.
      Eingegeben sollte alles richtig sein mit Endpoint und Adresse.
      IP habe ich die des iobrokers genommen und als Port habe ich den Standartport genommen (1880). Also: ws://192.168.10.10:1880/endpoint/streamdeck im wsproxy im streamdeck eingegeben.

      Und auf noderedseite bei der websocket node: /endpoint/streamdeck als endpoint genommen und auf "listen on" gestellt.

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @daes10 last edited by mickym

        @daes10 Nein es gibt kein Problem mit websocket, NodeRed unter iobroker.

        Du kannst Dir ja einfach mal das Beispiel von https://flows.nodered.org/flow/8666510f94ad422e4765 importieren.

        Das funktioniert. Der Flow stellt Dir eine Webseite zur Verfügung

        dcf7ed8b-6184-411b-bcab-6fa6714cc32d-image.png

        Diese macht eine Websocket Verknüpfung auf.

        d0692203-874d-4111-8b6f-6a950196c2ad-image.png

        Das eine Verbindung zwischen der Webseite und dem websocket-server unter node-red zeigt der Status der Websocket Nodes und auf der Webserver,

        Anhand des Datums siehst Du dass die Inject Node die Uhrzeit auf der Webseite aktualisiert. Ein Klick auf den Button zeigt im Debugfenster den click.

        Wenn diese Beispiele nicht funktionieren, dann hat Deine Maschine oder Netzwerk eher ein Problem.


        Ich hab mir aber auch die Seite angeschaut, Du kannst es ja erst mal mit einer normalen HTTP Kommunikation und NodeRed oder ohne NodeRed - wenn Du Blockly Fan bist und simple API Adapter unter iobroker probieren.

        5308f078-3bbd-408d-8201-3f410315efa6-image.png

        Du könntest auch ohne NodeRed direkt hier mit dem SimpleAPI Adapter unter iobroker arbeiten.

        daes10 2 Replies Last reply Reply Quote 0
        • daes10
          daes10 @mickym last edited by

          @mickym Vielen Dank für deine Antwort, werde heute Abend dies ausprobieren. Hab irgwie voll vergessen dass dieser auch über Simple API Adapter funktioniert. Teste ihn daher mal auf beide Weise aus. Simple API hab ich nämlich auch schon erfolgreich im Einsatz.

          Werde mich melden sobald es geklappt hat 👍

          1 Reply Last reply Reply Quote 0
          • daes10
            daes10 @mickym last edited by

            @mickym

            Du könntest auch ohne NodeRed direkt hier mit dem SimpleAPI Adapter unter iobroker arbeiten.

            Habe es nun einfach mit dem Simple API Adapter gelöst und einem einfachen http Befehl. Denn mit dem websocket bekomm ich dass irgendwie nicht hin. Und ehrlich gesagt hab ich auch keine Lust noch lange zu probieren, denn die Website die bei dir geht, funktioniert bei mir nicht und wird nicht geöffnet. Habe daher obwohl ich alles gecheckt habe, wahrscheinlich irgendwo ein Problem im Netzwerk.

            Sollte meiner Meinung aber nicht sein, da mein PC und der iobroker alles im gleichen Netz sind und ich für dies keine Regel habe, das irgendwas geblockt wird. Aber egal jetzt!

            Vielen Dank für den Denkanstoss!

            S 1 Reply Last reply Reply Quote 0
            • S
              SpeedyBlade @daes10 last edited by SpeedyBlade

              ich habe das ganze ebenfalls durchgespielt und die Webseite wird nicht angezeigt, an was kann das liegen?

              "Fehler: Verbindung fehlgeschlagen"
              http://{your-server-ip:1880/simple => hier wurde auch die IP vom IO Broker angegeben

              "Fehler beim Senden: Error: WebSocket is not open: readyState 3 (CLOSED)"

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @SpeedyBlade last edited by mickym

                @speedyblade Ich habe keine Ahnung was ihr macht - unabhängig vom Websocket - müsstet ihr ja immer mit http-in & out eine Verbindung bekommt. Ihr müsst höchstens schauen, ob noch was auf dem port läuft oder ihr sonst irgendeine Netzverbindung zugemacht habt.

                ed9efc4a-2158-402a-98fd-1491e3e36a69-image.png

                Die Seite wird jedenfalls mit diesen Nodes so angezeigt, wenn das System ordnungsgemäß arbeitet.

                Das Anzeigen der Seite hat noch nicht mal was mit Websockets zu tun. Selbst wenn Du keine Webseite aufbaust, sollte der Browser zumindest das anzeigen:

                224aaf05-feed-4888-b250-4bbca2202913-image.png

                und dabei wurde nur als URL bei der Http-In Node /leer angegeben

                469870e4-7170-4401-a74c-a5cb8f04bd4d-image.png

                so und wenn das schon nicht funktioniert, dann ist an Deinem Netz oder an Deiner Maschine auf der NodeRed läuft was faul.

                Falls dieser Fehler im Log auftaucht:

                "Fehler beim Senden: Error: WebSocket is not open: readyState 3 (CLOSED)"
                

                das hat wahrscheinlich gar nichts mit dem Browseraufruf zu tun.
                Das kommt, wenn Du den NodeRed Editor zu machst und der Adapter noch was prüft - ist mit der neuen Version behoben - habe ich aber auch gehabt und ist unbedenklich. Wenn Du NodeRed im Editor längere Zeit nichts machst kommt der Fehler auch nicht. Wenn Du innerhalb vom iobroker das Editorfenster aufmachst und dann wechselt - passiert so was häufiger. Das hat aber alles nichts damit zu tun, dass Du den Webserver nicht erreichst.

                S 1 Reply Last reply Reply Quote 0
                • S
                  SpeedyBlade @mickym last edited by

                  also ich hab keinen Plan warum das nicht läuft.

                  fehler.png

                  was hast du bei den Nodes alles geändert?
                  Benötigt es zum Anzeigen der Webseite noch einen Adapter?

                  mickym 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @SpeedyBlade last edited by mickym

                    @speedyblade nicht ws/simple nur /simple und auch kein ws und so ein Mist.

                    Ganz normal:

                    http://ip-adresse:1880/simple
                    

                    Bei den ws - Nodes wird keine IP Adresse angegeben, sondern die stellt man auf lauschen und listen:

                    f5b947a2-672d-486a-9f6b-55c2f67a7dd2-image.png

                    Der eigenliche Verbindungsaufbau zu den ws Nodes - erfolgt in dem script Teil der HTML Seite in der Template Node.

                    Anhand Deines Aufrufs der normalen HTTP Seite - setzt das Script die URL zusammen, um mit Deinen ws-Nodes zu kommunizieren:

                            wsUri += "//" + loc.host + loc.pathname.replace("simple","ws/simple");
                    
                            function wsConnect() {
                                console.log("connect",wsUri);
                                ws = new WebSocket(wsUri);
                                //var line = "";    // either uncomment this for a building list of messages
                                ws.onmessage = function(msg) {
                                    var line = "";  // or uncomment this to overwrite the existing message
                                    // parse the incoming message as a JSON object
                                    var data = msg.data;
                                    // console.log(data);
                                    // build the output from the topic and payload parts of the object
                                    line += "<p>"+data+"</p>";
                                    // replace the messages div with the new "line"
                                    document.getElementById('messages').innerHTML = line;
                                    //ws.send(JSON.stringify({data:data}));
                                }
                                ws.onopen = function() {
                                    // update the status div with the connection status
                                    document.getElementById('status').innerHTML = "connected";
                                    //ws.send("Open for data");
                                    console.log("connected");
                                }
                                ws.onclose = function() {
                                    // update the status div with the connection status
                                    document.getElementById('status').innerHTML = "not connected";
                                    // in case of lost connection tries to reconnect every 3 secs
                                    setTimeout(wsConnect,3000);
                                }
                            }
                    

                    also die ws.uri.

                    Das was mit console.log ausgegeben wird erkennst Du in der console Deines Browsers ( mit F12)

                    S 1 Reply Last reply Reply Quote 0
                    • S
                      SpeedyBlade @mickym last edited by SpeedyBlade

                      Fehler besteht weiterhin
                      Die Ip Adresse ist schon jede vom ioBroker, richtig?
                      Alles andere würde für mich keinen Sinn machen.

                      fehler.png

                      selbst dieses einfache Beispiel funktioniert ja nicht mal

                      fehler.png

                      mickym 1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @SpeedyBlade last edited by mickym

                        @speedyblade Na das ist ja was ich meine. Wenn diese einfache Beispiel nicht funktioniert - dann ist da der Wurm drin.

                        Zeig doch mal wie Du den Node-Red Editor aufrufst. Gibst Du auch brav http://192.168.0.118:1880/simple ein und nicht nur die IP-Adresse?

                        S 1 Reply Last reply Reply Quote 0
                        • S
                          SpeedyBlade @mickym last edited by

                          @mickym hier.png

                          mickym 1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @SpeedyBlade last edited by mickym

                            @speedyblade Und wie schaut dann die URL aus, wenn Du es aufgerufen hast? - Also im Browser.
                            Und wie gesagt das http:// am Anfang nicht weglassen.

                            Hast Du irgendwas an Deiner settings.js gefummelt oder meldest Du Dich mir Namen und Passwort im Node-Red an?

                            S 1 Reply Last reply Reply Quote 0
                            • S
                              SpeedyBlade @mickym last edited by SpeedyBlade

                              @mickym

                              fehler.png

                              nein..nichts herumgefummelt...habe sogar extra neu aufgesetzt...auch ohne Erfolg

                              und ja...Name und Passwort hatte ich zuerst, aber aktuell fahre ich ohne Zugangsdaten, dennoch wird die Page nicht aufgerufen

                              auch bereits neu installiert, fixer drüber gelaufen, alle browser durch probiert..hat alles nichts gebracht.
                              kann es sein, dass der Port 1880 eventuell anderweitig genutzt wird?

                              mickym 1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @SpeedyBlade last edited by

                                @speedyblade Klar kann das sein - deswegen wollte ich ja wissen, was im Browser steht wenn Du normal node-red aufrufst. Da siehst ja welche IP Adresse und welchen port Du benutzt.

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  SpeedyBlade @mickym last edited by SpeedyBlade

                                  @mickym

                                  http://192.168.0.118:1885/simple

                                  na klar...der Port von NodeRed muss verwendet werden

                                  fehler.png

                                  Jetzt ist auch der WS verbunden 🙂

                                  042be7af-e60f-41aa-bff5-5ce979d47ff4-image.png

                                  mickym 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @SpeedyBlade last edited by

                                    @speedyblade Na also 👍 👍 👍

                                    S 1 Reply Last reply Reply Quote 0
                                    • S
                                      SpeedyBlade @mickym last edited by

                                      @mickym
                                      jetzt kann ich zu meinem ursprünglichem Problem zurück 😉
                                      Es läuft ein Gira HS der Endpoints sendet.
                                      Die WS Verbindung zum HS steht, einfache E/A Befehle können auch von NR zum HS gesendet werden.
                                      Umgekehrt jedoch noch nicht.
                                      Muss das in NR abonniert werden, oder wie checkt NR, wann der HS Daten sendet?

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @SpeedyBlade last edited by mickym

                                        @speedyblade

                                        Wenn ein WS Verbindung steht - steht diese in beide Richtungen und dann hört die ws- IN Node mit dem Lauschen ob was ankommt.

                                        f3226c89-68d6-4423-a71a-9f8bad99fe97-image.png

                                        Auf der Beispielseite siehst Du ja dass im Debug Fenster was ankommt, wenn du den Button Click to send message ankommt.

                                        mit

                                          function doit(m) {
                                                if (ws) { ws.send(m); }
                                        

                                        ws.send - schickt also der Server auf der anderen seite seine Nachricht.

                                        Da kann aber NodeRed nichts machen - wenn eine ws Verbindung steht muss natürlich immer derjenige, der was senden will initiativ werden. Also musst Du wohl oder übel auf der HS Seite schauen, warum der nichts sendet.

                                        S 1 Reply Last reply Reply Quote 0
                                        • S
                                          SpeedyBlade @mickym last edited by

                                          @mickym

                                          https://192.168.0.11/endpoints/call?key=CO@TEST_EIN_AUS&method=toggle&value=1&user=XXX&pw=YYY

                                          gibt man den Befehl im Browser ein, wird das Objekt getogglet im HS.

                                          Ergebnis

                                          {"request": {"method": "toggle", "key": "CO@TEST_EIN_AUS"}, "code": 0, "type": "call"}
                                          

                                          Json-Format

                                          {
                                          "request":{
                                          "method":"toggle",
                                          "key":"CO@TEST_EIN_AUS"
                                          },
                                          "code":0,
                                          "type":"call"
                                          }
                                          
                                          mickym 1 Reply Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @SpeedyBlade last edited by

                                            @speedyblade Das ist aber keine Websocket Verbindung - und dazu braucht man das auch nicht. Das ist eine normale HTTP-Get Kommunikation. Dafür brauchst Du wie gesagt die websocket Nodes nicht.. Wenn Du im HS entsprechende URLs zu bestimmten Aktien festlegen kannst, ist das somit kein Problem.

                                            S 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            740
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            31
                                            1969
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo