Weiter zum Inhalt
  • Home
  • Aktuell
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Node-Red: Flow über ein Javascript neu starten

NEWS

  • Der neue Monatsrückblick für September 2026 ist online!
    BluefoxB
    Bluefox
    9
    1
    377

  • Neu im Blog: Was die neue Website alles kann
    BluefoxB
    Bluefox
    7
    1
    287

  • Node.js 24 ist jetzt offiziell empfohlen!
    apollon77A
    apollon77
    9
    1
    572

Node-Red: Flow über ein Javascript neu starten

Geplant Angeheftet Gesperrt Verschoben Node-Red
6 Beiträge 4 Kommentatoren 1.9k Aufrufe 4 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • KlausStoertebekerK
    KlausStoertebekerK
    KlausStoertebeker
    schrieb am zuletzt editiert von KlausStoertebeker
    #1

    Hallo in die Community,
    ich habe mir im Node-Red Adapter folgenden Flow erstellt, der meine Klimaanlage über einen Telnet-Request fernsteuert und deren Status abfragt:

    ioBroker-RedNode-Bildschirmfoto.png

    Die Telnetverbindung wird von der Klimaanlage automatisch geschlossen. Dann hat der Request-Node den Status "closed" und dann muss ich den Flow neu starten, um die Telnet-Verbindung neu aufzubauen.

    Also hier meine konkreten Fragen:

    1. Wie frage ich den Status des Request-Nodes über ein JavaScript ab?
    2. Wie starte ich den Flow über ein JavaScript neu?

    Wie mache ich das im ioBroker? Ich möchte eine einfache Lösung und nicht erläutern, warum die Klimaanlage die Verbindung automatisch nach einer Minute schließt und das man ja eine zyklische Statusabfrage einrichten kann, um das zu verhindern...
    Vielen Dank für die Hilfe

    "Klaus"

    ioBroker-Host: Raspberry Pi 5 (8GByte RAM) mit Halo8-KI-Hat, Argon ONE M.2-Gehäuse mit 256GByte PCIe-SSD

    mickymM 1 Antwort Letzte Antwort
    0
    • P
      P
      peterfido
      schrieb am zuletzt editiert von
      #2

      Der Telnet-Request ist ja mies dokumentiert. Ich würde es über TCP auf Port 23 probieren. Dafür die Doku der Klimaanlage fragen, oder die Telnet - Kommunikation mitschneiden und analyisieren.

      Mit der Kanone auf einen Spatz: eine eigene Node-Red Instanz und diese dann beenden und neu starten.

      Das könnte z.B. so aussehen:

                 //Node.red.1 beenden
                  setState("system.adapter.node-red.1.alive", false);
      
                  setTimeout(function() {
                  // Adapter nach 5 Sekunden starten
                      setState("system.adapter.node-red.1.alive", true);
      
                  }, 5000);
      
      

      Gruß

      Peterfido

      1 Antwort Letzte Antwort
      0
      • KlausStoertebekerK
        KlausStoertebekerK
        KlausStoertebeker
        schrieb am zuletzt editiert von
        #3

        Hallo peterfido,
        leider kann ich bei der Klimaanlage nur mit Telnet arbeiten, da es sich um eine reine ASCII-Kommunikation handelt.
        Und die node-red Instanz zurücksetzen dauert auch so um die 10 Sekunden, bevor man wieder Befehle an die Klimaanlage senden kann...
        Aber vielen Dank für den Tipp :-)
        Re-Gruß
        "Klaus"

        ioBroker-Host: Raspberry Pi 5 (8GByte RAM) mit Halo8-KI-Hat, Argon ONE M.2-Gehäuse mit 256GByte PCIe-SSD

        1 Antwort Letzte Antwort
        0
        • P
          P
          peterfido
          schrieb am zuletzt editiert von
          #4

          Der "normale" TCP Request kann auch Rohdaten. Zumindest habe ich darüber damals mit einem Pioneer AVR gesprochen. Den Flow habe ich nicht mehr.

          Zum Testen / Probieren ein Grundgerüst:

          [
             {
                 "id": "telnet_flow_group",
                 "type": "group",
                 "style": {
                     "label": true
                 },
                 "nodes": [
                     "inject_trigger",
                     "change_add_newline",
                     "tcp_telnet_request",
                     "debug_response"
                 ],
                 "x": 34,
                 "y": 79,
                 "w": 712,
                 "h": 122
             },
             {
                 "id": "inject_trigger",
                 "type": "inject",
                 "z": "b59f3d99b19bc9e5",
                 "g": "telnet_flow_group",
                 "name": "Befehl senden",
                 "props": [
                     {
                         "p": "payload",
                         "v": "help",
                         "vt": "str"
                     }
                 ],
                 "repeat": "",
                 "crontab": "",
                 "once": false,
                 "onceDelay": 0.1,
                 "topic": "",
                 "x": 150,
                 "y": 140,
                 "wires": [
                     [
                         "change_add_newline"
                     ]
                 ]
             },
             {
                 "id": "change_add_newline",
                 "type": "change",
                 "z": "b59f3d99b19bc9e5",
                 "g": "telnet_flow_group",
                 "name": "Zeilenumbruch (\\r\\n)",
                 "rules": [
                     {
                         "t": "set",
                         "p": "payload",
                         "pt": "msg",
                         "to": "$msg.payload & \"\\r\\n\"",
                         "tot": "jsonata"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 360,
                 "y": 140,
                 "wires": [
                     [
                         "tcp_telnet_request"
                     ]
                 ]
             },
             {
                 "id": "tcp_telnet_request",
                 "type": "tcp request",
                 "z": "b59f3d99b19bc9e5",
                 "g": "telnet_flow_group",
                 "server": "localhost",
                 "port": "23",
                 "out": "time",
                 "splitc": "0",
                 "name": "Telnet Server",
                 "ret": "string",
                 "newline": "",
                 "tls": "",
                 "x": 570,
                 "y": 140,
                 "wires": [
                     [
                         "debug_response"
                     ]
                 ]
             },
             {
                 "id": "debug_response",
                 "type": "debug",
                 "z": "b59f3d99b19bc9e5",
                 "g": "telnet_flow_group",
                 "name": "Antwort",
                 "active": true,
                 "tosidebar": true,
                 "console": false,
                 "tostatus": false,
                 "complete": "payload",
                 "targetType": "msg",
                 "statusVal": "",
                 "statusType": "auto",
                 "x": 720,
                 "y": 140,
                 "wires": []
             }
          ]
          

          Gruß

          Peterfido

          1 Antwort Letzte Antwort
          0
          • KlausStoertebekerK KlausStoertebeker

            Hallo in die Community,
            ich habe mir im Node-Red Adapter folgenden Flow erstellt, der meine Klimaanlage über einen Telnet-Request fernsteuert und deren Status abfragt:

            ioBroker-RedNode-Bildschirmfoto.png

            Die Telnetverbindung wird von der Klimaanlage automatisch geschlossen. Dann hat der Request-Node den Status "closed" und dann muss ich den Flow neu starten, um die Telnet-Verbindung neu aufzubauen.

            Also hier meine konkreten Fragen:

            1. Wie frage ich den Status des Request-Nodes über ein JavaScript ab?
            2. Wie starte ich den Flow über ein JavaScript neu?

            Wie mache ich das im ioBroker? Ich möchte eine einfache Lösung und nicht erläutern, warum die Klimaanlage die Verbindung automatisch nach einer Minute schließt und das man ja eine zyklische Statusabfrage einrichten kann, um das zu verhindern...
            Vielen Dank für die Hilfe

            "Klaus"

            mickymM
            mickymM
            mickym
            Most Active
            schrieb am zuletzt editiert von
            #5

            @KlausStoertebeker sagte:

            Also hier meine konkreten Fragen:

            Wie frage ich den Status des Request-Nodes über ein JavaScript ab?

            Den Status der Request Node würde ich über die status Node abfragen und in einen eigenen Datenpunkt schreiben. Dieser Datenpunkt kann dann ein Javascript triggern.

            Wie starte ich den Flow über ein JavaScript neu?

            Einen einzelnen Flow kannst Du nicht von außen steuern, lediglich die gesamte Instanz.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            1 Antwort Letzte Antwort
            0
            • Marc BergM
              Marc BergM
              Marc Berg
              Most Active
              schrieb am zuletzt editiert von Marc Berg
              #6

              Man kann einen Flow von außen neu starten, indem man ihn per API deaktiviert und wieder aktiviert. Nicht sehr elegant, aber geht.

              Hier ein Flow dazu, das könnte man auch im Skript abbilden (hostname und Flow-ID im Inject Node anpassen:

              [
                  {
                      "id": "0101b52dd8b0e69c",
                      "type": "inject",
                      "z": "tab_restart",
                      "name": "Flow neu starten",
                      "props": [
                          {
                              "p": "baseUrl",
                              "v": "http://nuc.fritz.box:1880",
                              "vt": "str"
                          },
                          {
                              "p": "flowId",
                              "v": "56a35d28dbb8d4c1",
                              "vt": "str"
                          }
                      ],
                      "repeat": "",
                      "crontab": "",
                      "once": false,
                      "onceDelay": "",
                      "topic": "",
                      "x": 160,
                      "y": 140,
                      "wires": [
                          [
                              "ffb73632947a1b74"
                          ]
                      ]
                  },
                  {
                      "id": "ffb73632947a1b74",
                      "type": "http request",
                      "z": "tab_restart",
                      "name": "GET /flow/:id",
                      "method": "GET",
                      "ret": "obj",
                      "paytoqs": "ignore",
                      "url": "{{{baseUrl}}}/flow/{{flowId}}",
                      "tls": "",
                      "persist": false,
                      "proxy": "",
                      "insecureHTTPParser": false,
                      "authType": "",
                      "senderr": false,
                      "headers": [],
                      "x": 370,
                      "y": 140,
                      "wires": [
                          [
                              "78e47724692d9c26"
                          ]
                      ]
                  },
                  {
                      "id": "78e47724692d9c26",
                      "type": "change",
                      "z": "tab_restart",
                      "name": "deaktivieren",
                      "rules": [
                          {
                              "t": "set",
                              "p": "flow",
                              "pt": "msg",
                              "to": "payload",
                              "tot": "msg"
                          },
                          {
                              "t": "set",
                              "p": "flow.disabled",
                              "pt": "msg",
                              "to": "true",
                              "tot": "bool"
                          },
                          {
                              "t": "set",
                              "p": "payload",
                              "pt": "msg",
                              "to": "flow",
                              "tot": "msg"
                          },
                          {
                              "t": "set",
                              "p": "headers",
                              "pt": "msg",
                              "to": "{}",
                              "tot": "json"
                          },
                          {
                              "t": "set",
                              "p": "headers.content-type",
                              "pt": "msg",
                              "to": "application/json",
                              "tot": "str"
                          }
                      ],
                      "action": "",
                      "property": "",
                      "from": "",
                      "to": "",
                      "reg": false,
                      "x": 570,
                      "y": 140,
                      "wires": [
                          [
                              "b570b346c80301a6"
                          ]
                      ]
                  },
                  {
                      "id": "b570b346c80301a6",
                      "type": "http request",
                      "z": "tab_restart",
                      "name": "PUT (aus)",
                      "method": "PUT",
                      "ret": "obj",
                      "paytoqs": "ignore",
                      "url": "{{{baseUrl}}}/flow/{{flowId}}",
                      "tls": "",
                      "persist": false,
                      "proxy": "",
                      "insecureHTTPParser": false,
                      "authType": "",
                      "senderr": false,
                      "headers": [],
                      "x": 770,
                      "y": 140,
                      "wires": [
                          [
                              "a062c2baa0932d3e"
                          ]
                      ]
                  },
                  {
                      "id": "a062c2baa0932d3e",
                      "type": "delay",
                      "z": "tab_restart",
                      "name": "1s warten",
                      "pauseType": "delay",
                      "timeout": "1",
                      "timeoutUnits": "seconds",
                      "rate": "1",
                      "nbRateUnits": "1",
                      "rateUnits": "second",
                      "randomFirst": "1",
                      "randomLast": "5",
                      "randomUnits": "seconds",
                      "drop": false,
                      "outputs": 1,
                      "x": 960,
                      "y": 140,
                      "wires": [
                          [
                              "664a32887d83b305"
                          ]
                      ]
                  },
                  {
                      "id": "664a32887d83b305",
                      "type": "change",
                      "z": "tab_restart",
                      "name": "aktivieren",
                      "rules": [
                          {
                              "t": "set",
                              "p": "flow.disabled",
                              "pt": "msg",
                              "to": "false",
                              "tot": "bool"
                          },
                          {
                              "t": "set",
                              "p": "payload",
                              "pt": "msg",
                              "to": "flow",
                              "tot": "msg"
                          },
                          {
                              "t": "set",
                              "p": "headers",
                              "pt": "msg",
                              "to": "{}",
                              "tot": "json"
                          },
                          {
                              "t": "set",
                              "p": "headers.content-type",
                              "pt": "msg",
                              "to": "application/json",
                              "tot": "str"
                          }
                      ],
                      "action": "",
                      "property": "",
                      "from": "",
                      "to": "",
                      "reg": false,
                      "x": 140,
                      "y": 220,
                      "wires": [
                          [
                              "83d399c90d46240f"
                          ]
                      ]
                  },
                  {
                      "id": "83d399c90d46240f",
                      "type": "http request",
                      "z": "tab_restart",
                      "name": "PUT (ein)",
                      "method": "PUT",
                      "ret": "obj",
                      "paytoqs": "ignore",
                      "url": "{{{baseUrl}}}/flow/{{flowId}}",
                      "tls": "",
                      "persist": false,
                      "proxy": "",
                      "insecureHTTPParser": false,
                      "authType": "",
                      "senderr": false,
                      "headers": [],
                      "x": 320,
                      "y": 220,
                      "wires": [
                          [
                              "529c0e1896d1f278"
                          ]
                      ]
                  },
                  {
                      "id": "529c0e1896d1f278",
                      "type": "debug",
                      "z": "tab_restart",
                      "name": "Ergebnis",
                      "active": true,
                      "tosidebar": true,
                      "console": false,
                      "tostatus": false,
                      "complete": "true",
                      "targetType": "full",
                      "statusVal": "",
                      "statusType": "auto",
                      "x": 480,
                      "y": 220,
                      "wires": []
                  }
              ]
              

              NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

              Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN

              Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

              1 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              506

              Online

              33.1k

              Benutzende

              84.0k

              Themen

              1.4m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe