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. 2 Nodes Differenz berechnen und Datenpunkt setzen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    2 Nodes Differenz berechnen und Datenpunkt setzen

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

      Liebe Community,

      aktuell hänge ich an einem Problem, was für die meisten von Euch wahrscheinlich keins sein wird.
      Ich möchte im NodeRed einen Flow erstellen, der zwei Zahlenwerte miteinander vergleicht und wenn die Differenz größer als 10 ist, ein Datenpunkt auf true gesetzt wird.

      Ziel ist es, dass mein Roborock S50 mit öffnen der Eingangstür zum Mülleimer (Goto) fährt, aber nur wenn er mehr als 10 m ² gereinigt hat. Als Vergleichswerte sollen die insgesamt gereinigte Fläche(mihome-vacuum.0.history.total_area) vor und nach der Reinigung herhalten. Der Vorherwert wird vor dem Saugen in einen selbst erstellten Datenpunkt geschrieben.

      Ich würde mich riesig freuen wenn mir hierbei jemand helfen könnte.

      Grüße

      [
          {
              "id": "ab2ae8fb.e68e58",
              "type": "tab",
              "label": "Flow 1",
              "disabled": false,
              "info": ""
          },
          {
              "id": "d7c17ae3.1f7e58",
              "type": "alexa-local",
              "z": "ab2ae8fb.e68e58",
              "devicename": "Küche",
              "inputtrigger": true,
              "x": 310,
              "y": 240,
              "wires": [
                  [
                      "33d45720.bc45d8",
                      "708d1619.5ce768"
                  ]
              ]
          },
          {
              "id": "708d1619.5ce768",
              "type": "switch",
              "z": "ab2ae8fb.e68e58",
              "name": "true or false",
              "property": "payload",
              "propertyType": "msg",
              "rules": [
                  {
                      "t": "eq",
                      "v": "on",
                      "vt": "str"
                  },
                  {
                      "t": "eq",
                      "v": "off",
                      "vt": "str"
                  }
              ],
              "checkall": "true",
              "repair": false,
              "outputs": 2,
              "x": 830,
              "y": 240,
              "wires": [
                  [
                      "b10ba82c.de2328"
                  ],
                  [
                      "111f80ec.17b5af"
                  ]
              ]
          },
          {
              "id": "b10ba82c.de2328",
              "type": "function",
              "z": "ab2ae8fb.e68e58",
              "name": "Zonen",
              "func": "// User eingabe!\n// Koordinaten des Gebiets eintragen.\n// Letzte Zahl und das Komma entfernen\n// Schema siehe unten\nvar zone = '25000,22500,28700,25000';\n\n// anzahl der Saugvorgänge\nvar time = 1;\n\nmsg.payload = '[' + zone + ',' + time + ']';\nreturn msg;",
              "outputs": 1,
              "noerr": 0,
              "x": 990,
              "y": 220,
              "wires": [
                  [
                      "d5807028.37dd7"
                  ]
              ]
          },
          {
              "id": "d5807028.37dd7",
              "type": "ioBroker out",
              "z": "ab2ae8fb.e68e58",
              "name": "Clean a zone",
              "topic": "mihome-vacuum.0.control.zoneClean",
              "ack": "false",
              "autoCreate": "false",
              "x": 1150,
              "y": 220,
              "wires": []
          },
          {
              "id": "111f80ec.17b5af",
              "type": "function",
              "z": "ab2ae8fb.e68e58",
              "name": "false",
              "func": "msg.payload = false;\nreturn msg;",
              "outputs": 1,
              "noerr": 0,
              "x": 990,
              "y": 260,
              "wires": [
                  [
                      "ad3384d3.aaf928"
                  ]
              ]
          },
          {
              "id": "ad3384d3.aaf928",
              "type": "ioBroker out",
              "z": "ab2ae8fb.e68e58",
              "name": "Start/Home",
              "topic": "mihome-vacuum.0.control.clean_home",
              "ack": "false",
              "autoCreate": "false",
              "x": 1150,
              "y": 260,
              "wires": []
          },
          {
              "id": "33d45720.bc45d8",
              "type": "ioBroker get",
              "z": "ab2ae8fb.e68e58",
              "name": "Total area ",
              "topic": "mihome-vacuum.0.history.total_area",
              "attrname": "payload",
              "payloadType": "value",
              "x": 520,
              "y": 140,
              "wires": [
                  [
                      "643761f6.3dc32"
                  ]
              ]
          },
          {
              "id": "643761f6.3dc32",
              "type": "ioBroker out",
              "z": "ab2ae8fb.e68e58",
              "name": "Gesaugte_Flaeche",
              "topic": "Datenpunkte.0.Saugroboter.Gesaugte_Flaeche",
              "ack": "true",
              "autoCreate": "false",
              "x": 730,
              "y": 140,
              "wires": []
          }
      ]
      
      1 Reply Last reply Reply Quote 0
      • R
        rewenode last edited by rewenode

        Also, aus deinem Flow werde ich noch nicht so richtig schlau. Aber generell kannst du vlt so vorgehen:

        ```
        [
        {
        "id": "1e080742.f66a59",
        "type": "ioBroker in",
        "z": "dfeaaaa.ac84358",
        "name": "",
        "topic": " insgesamt gereinigte Fläche",
        "payloadType": "value",
        "onlyack": "",
        "func": "all",
        "gap": "",
        "x": 380,
        "y": 420,
        "wires": [
        [
        "4bcd2e3e.d4bd2"
        ]
        ]
        },
        {
        "id": "4bcd2e3e.d4bd2",
        "type": "change",
        "z": "dfeaaaa.ac84358",
        "name": "sichern in flow.gesamt",
        "rules": [
        {
        "t": "set",
        "p": "payload",
        "pt": "msg",
        "to": "gesamt",
        "tot": "flow"
        }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 640,
        "y": 420,
        "wires": [
        [
        "ede03239.fc68d8"
        ]
        ]
        },
        {
        "id": "ede03239.fc68d8",
        "type": "ioBroker get",
        "z": "dfeaaaa.ac84358",
        "name": "",
        "topic": "lese Datenpunkt Vorher",
        "attrname": "payload",
        "payloadType": "value",
        "x": 890,
        "y": 420,
        "wires": [
        [
        "778c60b8.a4829"
        ]
        ]
        },
        {
        "id": "8c726e71.9e094",
        "type": "ioBroker out",
        "z": "dfeaaaa.ac84358",
        "name": "",
        "topic": "dein Datenpunkt der true sein soll",
        "ack": "false",
        "autoCreate": "false",
        "x": 1080,
        "y": 500,
        "wires": []
        },
        {
        "id": "778c60b8.a4829",
        "type": "change",
        "z": "dfeaaaa.ac84358",
        "name": "Falls die (gesamt-vorher) > 10 ist true sonst false",
        "rules": [
        {
        "t": "set",
        "p": "payload",
        "pt": "msg",
        "to": "(\t$flowContext("vorher") - payload > 10 ? true : false\t)",
        "tot": "jsonata"
        }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 690,
        "y": 500,
        "wires": [
        [
        "8c726e71.9e094"
        ]
        ]
        }
        ]

        
        
        Verflixt, wie krieg ich denn ein Bild hier rein? Den Link seh ich in meiner Antwort, nur das Bild nicht ;-(
        
        ![Bild Text](![sauger.png](/assets/uploads/files/1551386058797-sauger.png) Bild Link)
        1 Reply Last reply Reply Quote 0
        • R
          rewenode last edited by rewenode

          ![Bild Text](sauger.png Bild Link)

          Jetzt brauchst du nur noch die ioBroker nodes korrekt auszufüllen.

          1 Reply Last reply Reply Quote 0
          • M
            marcelm last edited by

            Hallo rewenode,

            vielen dank dafür.

            Macht was es soll . 🙂

            Allerdings konnte ich deinen Flow nicht direkt importieren, sondern musste die einzelnen Nodes neu erstellen. Beim Importieren aus dem Clipboard war der Quellcode rot und ich konnte den Import nicht bestätigten. sei's drum.

            Vielen Dank für die Unterstützung.

            Grüße

            R 1 Reply Last reply Reply Quote 0
            • R
              rewenode @marcelm last edited by

              @marcelm sagte in 2 Nodes Differenz berechnen und Datenpunkt setzen:

              Allerdings konnte ich deinen Flow nicht direkt importieren, sondern musste die einzelnen Nodes neu erstellen. Beim Importieren aus dem Clipboard war der Quellcode rot und ich konnte den Import nicht bestätigten. sei's drum.

              Sorry, Sieht eigentlich ok aus der Text.
              Aber gut das du es hin bekommen hast 👍

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

              Support us

              ioBroker
              Community Adapters
              Donate

              746
              Online

              31.7k
              Users

              79.7k
              Topics

              1.3m
              Posts

              2
              5
              1792
              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