Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Datenpunkt mit 4 vier verschiedene Zustände

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    676

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    5.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Datenpunkt mit 4 vier verschiedene Zustände

Scheduled Pinned Locked Moved Node-Red
9 Posts 3 Posters 405 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ? Offline
    ? Offline
    A Former User
    wrote on last edited by
    #1

    Ich bräuchte einen Denkanstoß ;-)
    Folgendes Problem was ich gerne mit Node Red lösen möchte. Ein Garagentor wird über ein Relais (Tasmota) angesteuert und fällt selbständig wieder ab, also der üblich Impuls zur externen Ansteuerung. Der gleiche Controller (esp8266) fragt auch die beiden Zustände "Tor AUF" bzw "Tor ZU" ab und übermittelt diese per MQTT.
    Jetzt möchte ich einen Datenpunkt füllen mit folgenden Zuständen...

    Tor ist geschlossen ≜ 0
    Tor öffnet sich ≜ 1
    Tor ist geöffnet ≜ 2
    Tor schließt sich ≜ 3

    Geschlossen und geöffnet sind nicht das Problem. Da ich für den Aktor keinen eindeutigen Zustand habe kann ich diesen nicht abfragen...bzw denke ich das. Ich möchte erkennen ob das Tor gerade geöffnet bzw geschlossen wird. Ich hoffe man wird schlau aus dem was ich hier von mir gegeben habe. Das Ganze ist übrigens für die Visualisierung gedacht. Vermutlich denke ich mal wieder viel zu kompliziert 🙄

    M 1 Reply Last reply
    0
    • ? A Former User

      Ich bräuchte einen Denkanstoß ;-)
      Folgendes Problem was ich gerne mit Node Red lösen möchte. Ein Garagentor wird über ein Relais (Tasmota) angesteuert und fällt selbständig wieder ab, also der üblich Impuls zur externen Ansteuerung. Der gleiche Controller (esp8266) fragt auch die beiden Zustände "Tor AUF" bzw "Tor ZU" ab und übermittelt diese per MQTT.
      Jetzt möchte ich einen Datenpunkt füllen mit folgenden Zuständen...

      Tor ist geschlossen ≜ 0
      Tor öffnet sich ≜ 1
      Tor ist geöffnet ≜ 2
      Tor schließt sich ≜ 3

      Geschlossen und geöffnet sind nicht das Problem. Da ich für den Aktor keinen eindeutigen Zustand habe kann ich diesen nicht abfragen...bzw denke ich das. Ich möchte erkennen ob das Tor gerade geöffnet bzw geschlossen wird. Ich hoffe man wird schlau aus dem was ich hier von mir gegeben habe. Das Ganze ist übrigens für die Visualisierung gedacht. Vermutlich denke ich mal wieder viel zu kompliziert 🙄

      M Online
      M Online
      MCU
      wrote on last edited by
      #2

      @noah3112 Kann man da den vorherigen Zustand nicht abfragen?
      Wenn alter Zustand geschlossen und jetzt nicht mehr -> es wird geöffnet
      Wenn alter Zustand geöffnet und jetzt nicht mehr -> es wird geschlossen

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      ? 1 Reply Last reply
      0
      • M MCU

        @noah3112 Kann man da den vorherigen Zustand nicht abfragen?
        Wenn alter Zustand geschlossen und jetzt nicht mehr -> es wird geöffnet
        Wenn alter Zustand geöffnet und jetzt nicht mehr -> es wird geschlossen

        ? Offline
        ? Offline
        A Former User
        wrote on last edited by
        #3

        @mcu Wow schnelle Antwort...Danke! Doch klar kann man. Ich sage es doch zu kompliziert gedacht. wie könnte man das umsetzen? In eine Variable speichern?

        M 1 Reply Last reply
        0
        • ? A Former User

          @mcu Wow schnelle Antwort...Danke! Doch klar kann man. Ich sage es doch zu kompliziert gedacht. wie könnte man das umsetzen? In eine Variable speichern?

          M Online
          M Online
          MCU
          wrote on last edited by
          #4

          @noah3112 Keine Ahnung, habe leider kein node-red. Ist vielleicht irgendwann ein Thema.

          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

          ? 1 Reply Last reply
          0
          • M MCU

            @noah3112 Keine Ahnung, habe leider kein node-red. Ist vielleicht irgendwann ein Thema.

            ? Offline
            ? Offline
            A Former User
            wrote on last edited by
            #5

            @mcu Ich versuche mich auch erst seit kurzem in Node Red. Vielleicht hätte ich es mit Blockly schon gelöst. Aber ich möchte gerne in Node Red weiterkommen. Trotzdem danke fürs antworten.

            M 1 Reply Last reply
            0
            • ? A Former User

              @mcu Ich versuche mich auch erst seit kurzem in Node Red. Vielleicht hätte ich es mit Blockly schon gelöst. Aber ich möchte gerne in Node Red weiterkommen. Trotzdem danke fürs antworten.

              M Online
              M Online
              MCU
              wrote on last edited by
              #6

              @noah3112 @mickym ist der node-red Spezialist.

              NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
              Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

              ? 1 Reply Last reply
              0
              • M MCU

                @noah3112 @mickym ist der node-red Spezialist.

                ? Offline
                ? Offline
                A Former User
                wrote on last edited by
                #7

                @mcu Ich weiß ;-)

                1 Reply Last reply
                0
                • mickymM Offline
                  mickymM Offline
                  mickym
                  Most Active
                  wrote on last edited by mickym
                  #8

                  Also: ;)

                  Hier ist Node Red leider etwas im Nachteil gegenüber Blockly, da der vorige Wert nicht ausgelesen werden kann, aber man kann das auf verschiedene Art und Weise ausgleichen. Ihr könnt ja zur Abwechslung auch mal ein Issue - als Erweiterungs-Request auf gitHub erstellen. Aber was man dafür kann ( dass man aktiv - mit einer get Node - einen Wert auslesen kann, auch wenn ein anderer Wert triggert).

                  Eventuell braucht man ja auch nicht mal eine Variable, aber man braucht quasi ein Trigger der zumindest sagt, ob das Tor in Bewegung ist oder nicht.

                  Wenn dies Triggert (also Tor in Bewegung ist) liest man den Zustandsdatenpunkt aus und kann somit die Bewegungsrichtung festlegen. Ist das Tor still, sollte dann der Zustandsdatenpunkt automatisch aktualisiert werden.

                  Das wäre meine präferierte Lösung (siehe Flow am Ende dieses Posts).

                  Ansonsten kann man mit NodeRed nur den aktuellen Wert mit dem vorigen Wert in einer switch Node relativ vergleichen.
                  a479e8c0-dfe4-4870-b6ab-7ad60d0309af-image.png

                  Wenn man absolute Werte benötigt, um diese mit dem vorangegangenen Wert zu vergleichen - dann muss man halt wirklich eine function Node bemühen:

                  Diese function Node gibt den vorigen (msg.previous) und den aktuellen Wert (msg.payload) aus.

                  8e7892c1-a171-40a0-839d-e37fa1cb7d4f-image.png

                  bc0976f6-c384-4ce9-925e-5b9791ef9d7c-image.png

                  var previous = context.get('previous')
                  
                  if (previous !== undefined){
                      msg.previous=previous;
                  }
                  
                  context.set('previous',msg.payload)
                  return msg;
                  

                  Ansonsten - wie gesagt wenn man ein Trigger hat, der meldet dass das Tor in Bewegung ist (Relais Level) oder was weiss ich, dann könnte der Flow in etwa so aussehen.

                  1fad6892-da47-440f-aef5-ec47aba88647-image.png

                  Ohne einen Trigger, der signalisiert, dass das Tor in Bewegung ist, wird das aber nichts.

                  [
                     {
                         "id": "7acb07e532304c01",
                         "type": "debug",
                         "z": "a442b54b44edc349",
                         "name": "Status",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 1050,
                         "y": 1100,
                         "wires": []
                     },
                     {
                         "id": "fde0da45bf64ef5b",
                         "type": "ioBroker in",
                         "z": "a442b54b44edc349",
                         "name": "Tor in Bewegung",
                         "topic": "0_userdata.0.Test.aktiv",
                         "payloadType": "value",
                         "onlyack": "",
                         "func": "all",
                         "gap": "",
                         "fireOnStart": "false",
                         "outFormat": "MQTT",
                         "x": 140,
                         "y": 1140,
                         "wires": [
                             [
                                 "8453ee2cdf0f5d5b"
                             ]
                         ]
                     },
                     {
                         "id": "706b23e2fc57eb86",
                         "type": "ioBroker in",
                         "z": "a442b54b44edc349",
                         "name": "Status Garagentor (opened/closed)",
                         "topic": "0_userdata.0.Test.garage",
                         "payloadType": "value",
                         "onlyack": "",
                         "func": "all",
                         "gap": "",
                         "fireOnStart": "false",
                         "outFormat": "MQTT",
                         "x": 200,
                         "y": 1060,
                         "wires": [
                             [
                                 "6b1c4d526744cc87"
                             ]
                         ]
                     },
                     {
                         "id": "6b1c4d526744cc87",
                         "type": "change",
                         "z": "a442b54b44edc349",
                         "name": "",
                         "rules": [
                             {
                                 "t": "change",
                                 "p": "payload",
                                 "pt": "msg",
                                 "from": "opened",
                                 "fromt": "str",
                                 "to": "2",
                                 "tot": "num"
                             },
                             {
                                 "t": "change",
                                 "p": "payload",
                                 "pt": "msg",
                                 "from": "closed",
                                 "fromt": "str",
                                 "to": "0",
                                 "tot": "num"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 830,
                         "y": 1060,
                         "wires": [
                             [
                                 "7acb07e532304c01"
                             ]
                         ]
                     },
                     {
                         "id": "1492a4bb655079bf",
                         "type": "ioBroker get",
                         "z": "a442b54b44edc349",
                         "name": "Status Garagentor",
                         "topic": "0_userdata.0.Test.garage",
                         "attrname": "payload",
                         "payloadType": "value",
                         "errOnInvalidState": "nothing",
                         "x": 590,
                         "y": 1140,
                         "wires": [
                             [
                                 "b46dd382e03d0c2e"
                             ]
                         ]
                     },
                     {
                         "id": "8453ee2cdf0f5d5b",
                         "type": "switch",
                         "z": "a442b54b44edc349",
                         "name": "nur wenn in Bewegung",
                         "property": "payload",
                         "propertyType": "msg",
                         "rules": [
                             {
                                 "t": "true"
                             }
                         ],
                         "checkall": "true",
                         "repair": false,
                         "outputs": 1,
                         "x": 360,
                         "y": 1140,
                         "wires": [
                             [
                                 "1492a4bb655079bf"
                             ]
                         ]
                     },
                     {
                         "id": "b46dd382e03d0c2e",
                         "type": "change",
                         "z": "a442b54b44edc349",
                         "name": "",
                         "rules": [
                             {
                                 "t": "change",
                                 "p": "payload",
                                 "pt": "msg",
                                 "from": "opened",
                                 "fromt": "str",
                                 "to": "3",
                                 "tot": "num"
                             },
                             {
                                 "t": "change",
                                 "p": "payload",
                                 "pt": "msg",
                                 "from": "closed",
                                 "fromt": "str",
                                 "to": "1",
                                 "tot": "num"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 830,
                         "y": 1140,
                         "wires": [
                             [
                                 "7acb07e532304c01"
                             ]
                         ]
                     }
                  ]
                  

                  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 Reply Last reply
                  1
                  • mickymM mickym

                    Also: ;)

                    Hier ist Node Red leider etwas im Nachteil gegenüber Blockly, da der vorige Wert nicht ausgelesen werden kann, aber man kann das auf verschiedene Art und Weise ausgleichen. Ihr könnt ja zur Abwechslung auch mal ein Issue - als Erweiterungs-Request auf gitHub erstellen. Aber was man dafür kann ( dass man aktiv - mit einer get Node - einen Wert auslesen kann, auch wenn ein anderer Wert triggert).

                    Eventuell braucht man ja auch nicht mal eine Variable, aber man braucht quasi ein Trigger der zumindest sagt, ob das Tor in Bewegung ist oder nicht.

                    Wenn dies Triggert (also Tor in Bewegung ist) liest man den Zustandsdatenpunkt aus und kann somit die Bewegungsrichtung festlegen. Ist das Tor still, sollte dann der Zustandsdatenpunkt automatisch aktualisiert werden.

                    Das wäre meine präferierte Lösung (siehe Flow am Ende dieses Posts).

                    Ansonsten kann man mit NodeRed nur den aktuellen Wert mit dem vorigen Wert in einer switch Node relativ vergleichen.
                    a479e8c0-dfe4-4870-b6ab-7ad60d0309af-image.png

                    Wenn man absolute Werte benötigt, um diese mit dem vorangegangenen Wert zu vergleichen - dann muss man halt wirklich eine function Node bemühen:

                    Diese function Node gibt den vorigen (msg.previous) und den aktuellen Wert (msg.payload) aus.

                    8e7892c1-a171-40a0-839d-e37fa1cb7d4f-image.png

                    bc0976f6-c384-4ce9-925e-5b9791ef9d7c-image.png

                    var previous = context.get('previous')
                    
                    if (previous !== undefined){
                        msg.previous=previous;
                    }
                    
                    context.set('previous',msg.payload)
                    return msg;
                    

                    Ansonsten - wie gesagt wenn man ein Trigger hat, der meldet dass das Tor in Bewegung ist (Relais Level) oder was weiss ich, dann könnte der Flow in etwa so aussehen.

                    1fad6892-da47-440f-aef5-ec47aba88647-image.png

                    Ohne einen Trigger, der signalisiert, dass das Tor in Bewegung ist, wird das aber nichts.

                    [
                       {
                           "id": "7acb07e532304c01",
                           "type": "debug",
                           "z": "a442b54b44edc349",
                           "name": "Status",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "payload",
                           "targetType": "msg",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 1050,
                           "y": 1100,
                           "wires": []
                       },
                       {
                           "id": "fde0da45bf64ef5b",
                           "type": "ioBroker in",
                           "z": "a442b54b44edc349",
                           "name": "Tor in Bewegung",
                           "topic": "0_userdata.0.Test.aktiv",
                           "payloadType": "value",
                           "onlyack": "",
                           "func": "all",
                           "gap": "",
                           "fireOnStart": "false",
                           "outFormat": "MQTT",
                           "x": 140,
                           "y": 1140,
                           "wires": [
                               [
                                   "8453ee2cdf0f5d5b"
                               ]
                           ]
                       },
                       {
                           "id": "706b23e2fc57eb86",
                           "type": "ioBroker in",
                           "z": "a442b54b44edc349",
                           "name": "Status Garagentor (opened/closed)",
                           "topic": "0_userdata.0.Test.garage",
                           "payloadType": "value",
                           "onlyack": "",
                           "func": "all",
                           "gap": "",
                           "fireOnStart": "false",
                           "outFormat": "MQTT",
                           "x": 200,
                           "y": 1060,
                           "wires": [
                               [
                                   "6b1c4d526744cc87"
                               ]
                           ]
                       },
                       {
                           "id": "6b1c4d526744cc87",
                           "type": "change",
                           "z": "a442b54b44edc349",
                           "name": "",
                           "rules": [
                               {
                                   "t": "change",
                                   "p": "payload",
                                   "pt": "msg",
                                   "from": "opened",
                                   "fromt": "str",
                                   "to": "2",
                                   "tot": "num"
                               },
                               {
                                   "t": "change",
                                   "p": "payload",
                                   "pt": "msg",
                                   "from": "closed",
                                   "fromt": "str",
                                   "to": "0",
                                   "tot": "num"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 830,
                           "y": 1060,
                           "wires": [
                               [
                                   "7acb07e532304c01"
                               ]
                           ]
                       },
                       {
                           "id": "1492a4bb655079bf",
                           "type": "ioBroker get",
                           "z": "a442b54b44edc349",
                           "name": "Status Garagentor",
                           "topic": "0_userdata.0.Test.garage",
                           "attrname": "payload",
                           "payloadType": "value",
                           "errOnInvalidState": "nothing",
                           "x": 590,
                           "y": 1140,
                           "wires": [
                               [
                                   "b46dd382e03d0c2e"
                               ]
                           ]
                       },
                       {
                           "id": "8453ee2cdf0f5d5b",
                           "type": "switch",
                           "z": "a442b54b44edc349",
                           "name": "nur wenn in Bewegung",
                           "property": "payload",
                           "propertyType": "msg",
                           "rules": [
                               {
                                   "t": "true"
                               }
                           ],
                           "checkall": "true",
                           "repair": false,
                           "outputs": 1,
                           "x": 360,
                           "y": 1140,
                           "wires": [
                               [
                                   "1492a4bb655079bf"
                               ]
                           ]
                       },
                       {
                           "id": "b46dd382e03d0c2e",
                           "type": "change",
                           "z": "a442b54b44edc349",
                           "name": "",
                           "rules": [
                               {
                                   "t": "change",
                                   "p": "payload",
                                   "pt": "msg",
                                   "from": "opened",
                                   "fromt": "str",
                                   "to": "3",
                                   "tot": "num"
                               },
                               {
                                   "t": "change",
                                   "p": "payload",
                                   "pt": "msg",
                                   "from": "closed",
                                   "fromt": "str",
                                   "to": "1",
                                   "tot": "num"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 830,
                           "y": 1140,
                           "wires": [
                               [
                                   "7acb07e532304c01"
                               ]
                           ]
                       }
                    ]
                    

                    ? Offline
                    ? Offline
                    A Former User
                    wrote on last edited by
                    #9

                    @mickym Moin :-)
                    Das ist doch schon mal ein Ansatz. Danke! Eigentlich habe ich ja den Trigger das sollte doch zu schaffen sein. Ich werde es testen und ein Feedback geben.

                    1 Reply Last reply
                    0

                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                    With your input, this post could be even better 💗

                    Register Login
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    414

                    Online

                    32.7k

                    Users

                    82.6k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Home
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe