Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 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 Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    7
    1
    197

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.3k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    5.1k

Node-Red: Flow über ein Javascript neu starten

Geplant Angeheftet Gesperrt Verschoben Node-Red
6 Beiträge 4 Kommentatoren 1.7k 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 Offline
    KlausStoertebekerK Offline
    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 Offline
      P Offline
      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 Offline
        KlausStoertebekerK Offline
        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 Offline
          P Offline
          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 Offline
            mickymM Offline
            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 Offline
              Marc BergM Offline
              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

              388

              Online

              33.0k

              Benutzer

              83.4k

              Themen

              1.3m

              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
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe