Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. tcp-request-node für UPnP-Client-Implementierung?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    tcp-request-node für UPnP-Client-Implementierung?

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

      Hallo,

      ich möchte im node-red eine Abonnementanfrage an eine Set-Top-Box stellen und dann Benachrichtigungen empfangen.

      In Javascript funktioniert das mit net.socket gut. Die Abonnementanfrage hat die Struktur:

      SUBSCRIBE /MediaRenderer/AVTransport/Event HTTP/1.1\r\n"
      HOST: 192.168.165.106:1400\r\n
      CALLBACK: <http://192.168.165.90:1234>\r\n
      NT: upnp:event\r\n
      TIMEOUT: Second-3600\r\n
      \r\n
      

      Im node-red könnte ich eine tcp-Node verwenden? Komme da einfach nicht weiter.

      G OliverIO 2 Replies Last reply Reply Quote 0
      • G
        goesebrecht @goesebrecht last edited by

        Ich muss meine Frage mal noch etwas ausführlicher erläutern.

        Die Abonnementanfrage funktioniert in Javascript wie folgt:

        const net = require('net');
        const msg = "SUBSCRIBE /MediaRenderer/AVTransport/Event HTTP/1.1\r\nHOST: 192.168.165.106:1400\r\nCALLBACK: <http://192.168.165.90:1234>\r\nNT: upnp:event\r\nTIMEOUT: Second-3600\r\n\r\n"
        
        const client = new net.Socket()
        
        client.connect(1400, '192.168.165.106', function() {
            client.write(msg)
            console.log('write: ' + msg);
        })
        
        client.on('data', function(data) {
            console.log('received: ' + data);
            client.destroy();
        })  
        
        client.on('close', function() {
        	console.log('connection closed');
        });
        
        1. Es wird eine Verbindung zum Server aufgebaut.
        2. Über net.Socket.write wird die subscribe-Message versandt.
        3. Ich erhalte ein 200-ok zurück und die Verbindung wird getrennt.

        Jetzt sendet der Server seine Events auf den Port (1234). Auf diesem Port kann ich lauschen und die Nachrichten empfangen. Das Lauschen funktioniert auch in node red mit einer tcp-in-node.

        Ich bekomme es aber nicht hin, die net.Socket.write-Funktionalität in node red nachzustellen. Habe es wie folgt versucht:

        964f8fa6-e0cf-4f38-9b81-c7c997f81bf2-image.png

        Ich schicke meine Message als payload an die tcp-request-node. Dann bekomme ich aber ein 400 Bad Request zurück 😞
        Habe es versucht als string zu senden und als buffer ... finde einfach keine Lösung, warum das in node red nicht funktionieren soll.

        Vielleicht hat jemand eine Idee?

        1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @goesebrecht last edited by OliverIO

          @goesebrecht

          https://www.google.com/search?q=node+red+upnp
          für upnp gibt es schon nodes.
          haben die die notwendige funktionalität nicht?

          oder du verwendest einen tcp listener?
          https://flows.nodered.org/node/node-red-contrib-tcp-client

          G 1 Reply Last reply Reply Quote 0
          • G
            goesebrecht @OliverIO last edited by

            @oliverio

            Die habe ich auch schon gesehen. Die eine node ist wohl für die Steuerung eines iRobot und die zweite sendet nur Kommandos an ein Gerät.

            Ich möchte Events abonnieren. Im JS funktioniert das ja auch alles wunderbar. Ich hätte's nur gern im node red und ich stehe auf dem Schlauch, warum es da nicht funktioniert?!

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

              Binde die Bibliothek mit der es funktioniert doch einfach in eine function Node. Websocket Node wirst du schon probiert haben?

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

                @mickym

                Da muss ich doch an die settings.js ran - oder? Das wollte ich vermeiden.

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

                  @goesebrecht Nein musst du nicht. Du kannst in der function node jede beliebige Bibliothek einbinden, die wird automatisch geladen.

                  Dafür habe ich den Thread erstellt
                  https://forum.iobroker.net/topic/53446/ext-nodejs-module-in-node-red-on-the-fly-nutzen-ab-v-3-0

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

                    @mickym

                    Danke, das funktioniert. Trotzdem schade, dass es nicht über die tcp-nodes funktioniert. ... Du bist doch der Anti-function-nodes-Verfechter ... 😉

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

                      @goesebrecht sagte in tcp-request-node für UPnP-Client-Implementierung?:

                      @mickym

                      Danke, das funktioniert. Trotzdem schade, dass es nicht über die tcp-nodes funktioniert. ... Du bist doch der Anti-function-nodes-Verfechter ... 😉

                      Das bin ich auch - und ich kenn mich zuwenig in diesen Netzwerkdingen aus, aber um externe Module nutzen zu können oder auch asynchrone Verarbeitung oder wenn es keine passenden Nodes gibt, dann sind doch function Nodes gut. Ich finde function nodes nur überflüssig, wenn man payloads verändern will etc. - Auch haben function Nodes den Vorteil von eigenem Kontext. Also ich bin nicht grundsätzlich dagegen - aber function nodes sind trotzdem ein mächtiges Mittel, wenn man mit den verfügbaren Nodes nicht auskommt.

                      Wahrscheinlich müsste man sich nur mal den Quellcode der Bibliothek anschauen, um zu sehen, wie der Handshake aussehen muss.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      1.1k
                      Online

                      31.7k
                      Users

                      79.7k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      384
                      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