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. Probleme mit Zeitsteuerung und AND Logik

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Probleme mit Zeitsteuerung und AND Logik

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

      Guten Morgen zusammen, ich scheitere mal wieder an den Zeitbausteinen in Kombination mit einem AND. Vielleicht kann mir da einer auf die Sprünge helfen.

      Ich habe bei mir im BAd zwei Lampen welche über einen P geschaltet werden, ich möchte das Nachts aber nur eine angeht und jetzt habe ich die KNX GA und zwei Uhrzeiten und ein AND und trotzdem gehen immer beide an. Ich hab es auch mit dem Bigtimer schon probiert aber die AND Logik gibt immer ein true raus auch wenn die Zeit nicht aktiv ist.

      Lampe.JPG

      [
          {
              "id": "6dcd33f86c41b022",
              "type": "knxUltimate",
              "z": "415f0fe36e308bdb",
              "server": "6fc013af.98132c",
              "topic": "1/1/70",
              "outputtopic": "",
              "dpt": "1.001",
              "initialread": "1",
              "notifyreadrequest": false,
              "notifyresponse": true,
              "notifywrite": true,
              "notifyreadrequestalsorespondtobus": false,
              "notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized": "0",
              "listenallga": false,
              "name": "O5 - L2.2 80cm",
              "outputtype": "write",
              "outputRBE": false,
              "inputRBE": false,
              "formatmultiplyvalue": 1,
              "formatnegativevalue": "leave",
              "formatdecimalsvalue": 999,
              "passthrough": "no",
              "x": 780,
              "y": 2120,
              "wires": [
                  []
              ]
          },
          {
              "id": "40f01663243f3135",
              "type": "inject",
              "z": "415f0fe36e308bdb",
              "name": "06:00",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "00 07 * * *",
              "once": false,
              "onceDelay": 0.1,
              "topic": "1",
              "payload": "on",
              "payloadType": "str",
              "x": 90,
              "y": 2180,
              "wires": [
                  [
                      "bdb25d3bedb3d1a1"
                  ]
              ]
          },
          {
              "id": "b2aac529d0d241b1",
              "type": "inject",
              "z": "415f0fe36e308bdb",
              "name": "22:00",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "00 22 * * *",
              "once": false,
              "onceDelay": 0.1,
              "topic": "1",
              "payload": "off",
              "payloadType": "str",
              "x": 90,
              "y": 2220,
              "wires": [
                  [
                      "bdb25d3bedb3d1a1"
                  ]
              ]
          },
          {
              "id": "fa43646eebd9962e",
              "type": "group",
              "z": "415f0fe36e308bdb",
              "name": "2 Boolean Logic",
              "style": {
                  "label": true,
                  "fill": "#ff7f7f",
                  "color": "#000000"
              },
              "nodes": [
                  "bdb25d3bedb3d1a1",
                  "b62ff4888f8291c0"
              ],
              "x": 334,
              "y": 2079,
              "w": 292,
              "h": 82
          },
          {
              "id": "bdb25d3bedb3d1a1",
              "type": "join",
              "z": "415f0fe36e308bdb",
              "g": "fa43646eebd9962e",
              "name": "",
              "mode": "custom",
              "build": "object",
              "property": "payload",
              "propertyType": "msg",
              "key": "topic",
              "joiner": "\\n",
              "joinerType": "str",
              "accumulate": true,
              "timeout": "",
              "count": "2",
              "reduceRight": false,
              "reduceExp": "",
              "reduceInit": "",
              "reduceInitType": "",
              "reduceFixup": "",
              "x": 410,
              "y": 2120,
              "wires": [
                  [
                      "b62ff4888f8291c0"
                  ]
              ]
          },
          {
              "id": "b62ff4888f8291c0",
              "type": "change",
              "z": "415f0fe36e308bdb",
              "g": "fa43646eebd9962e",
              "name": "AND ?",
              "rules": [
                  {
                      "t": "set",
                      "p": "payload",
                      "pt": "msg",
                      "to": "$reduce(payload.*,function($i, $j){$i and $j})",
                      "tot": "jsonata"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 550,
              "y": 2120,
              "wires": [
                  [
                      "6dcd33f86c41b022",
                      "47bb59ef955c0f04"
                  ]
              ],
              "info": "# All Property of an object must be true.\n\nAll properties of an object must be true.\n\n`{\n    \"Office\": true,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis true,\n\n`{\n    \"Office\": true,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis false.\n\n# Alle Eigenschaften eines Objektes müssen wahr sein\n\nAlle Eigenschaften eines Objektes müssen wahr sein.\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": true,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt true,\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt false."
          },
          {
              "id": "6fc013af.98132c",
              "type": "knxUltimate-config",
              "host": "192.168.2.89",
              "port": "3671",
              "physAddr": "15.15.22",
              "hostProtocol": "TunnelUDP",
              "suppressACKRequest": true,
              "csv": "",
              "KNXEthInterface": "Auto",
              "KNXEthInterfaceManuallyInput": "",
              "statusDisplayLastUpdate": true,
              "statusDisplayDeviceNameWhenALL": true,
              "statusDisplayDataPoint": false,
              "stopETSImportIfNoDatapoint": "stop",
              "loglevel": "error",
              "name": "Martins KNX",
              "localEchoInTunneling": true,
              "delaybetweentelegrams": "40",
              "delaybetweentelegramsfurtherdelayREAD": "1",
              "ignoreTelegramsWithRepeatedFlag": false,
              "keyringFileXML": ""
          }
      ]!
      

      Danke euch

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

        @saranger na ich muss das erst mal generell verstehen.

        Die linke Lampe geht immer an ? - und die rechte Lampe soll nur angehen, wenn es nicht nachts ist? Das Problem ist aber schon erkannt. Grundsätzlich musst Du mit true und false arbeiten. Zeichenketten sind immer true

        adbcdd72-42c6-4349-9c18-9367ac3e61ba-image.png

        [
           {
               "id": "40f01663243f3135",
               "type": "inject",
               "z": "85ae8ec646aa7f1a",
               "name": "06:00",
               "props": [
                   {
                       "p": "payload"
                   },
                   {
                       "p": "topic",
                       "vt": "str"
                   }
               ],
               "repeat": "",
               "crontab": "00 07 * * *",
               "once": false,
               "onceDelay": 0.1,
               "topic": "1",
               "payload": "true",
               "payloadType": "bool",
               "x": 210,
               "y": 360,
               "wires": [
                   [
                       "bdb25d3bedb3d1a1"
                   ]
               ]
           },
           {
               "id": "b2aac529d0d241b1",
               "type": "inject",
               "z": "85ae8ec646aa7f1a",
               "name": "22:00",
               "props": [
                   {
                       "p": "payload"
                   },
                   {
                       "p": "topic",
                       "vt": "str"
                   }
               ],
               "repeat": "",
               "crontab": "00 22 * * *",
               "once": false,
               "onceDelay": 0.1,
               "topic": "1",
               "payload": "false",
               "payloadType": "bool",
               "x": 210,
               "y": 400,
               "wires": [
                   [
                       "bdb25d3bedb3d1a1"
                   ]
               ]
           },
           {
               "id": "77b9693b34d6f33b",
               "type": "inject",
               "z": "85ae8ec646aa7f1a",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   },
                   {
                       "p": "topic",
                       "vt": "str"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "L2.1",
               "payload": "true",
               "payloadType": "bool",
               "x": 260,
               "y": 280,
               "wires": [
                   [
                       "bdb25d3bedb3d1a1"
                   ]
               ]
           },
           {
               "id": "4ba5db35935bee8b",
               "type": "debug",
               "z": "85ae8ec646aa7f1a",
               "name": "debug 2",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "false",
               "statusVal": "",
               "statusType": "auto",
               "x": 840,
               "y": 300,
               "wires": []
           },
           {
               "id": "fa43646eebd9962e",
               "type": "group",
               "z": "85ae8ec646aa7f1a",
               "name": "2 Boolean Logic",
               "style": {
                   "label": true,
                   "fill": "#ff7f7f",
                   "color": "#000000"
               },
               "nodes": [
                   "bdb25d3bedb3d1a1",
                   "b62ff4888f8291c0"
               ],
               "x": 454,
               "y": 259,
               "w": 292,
               "h": 82
           },
           {
               "id": "bdb25d3bedb3d1a1",
               "type": "join",
               "z": "85ae8ec646aa7f1a",
               "g": "fa43646eebd9962e",
               "name": "",
               "mode": "custom",
               "build": "object",
               "property": "payload",
               "propertyType": "msg",
               "key": "topic",
               "joiner": "\\n",
               "joinerType": "str",
               "accumulate": true,
               "timeout": "",
               "count": "2",
               "reduceRight": false,
               "reduceExp": "",
               "reduceInit": "",
               "reduceInitType": "",
               "reduceFixup": "",
               "x": 530,
               "y": 300,
               "wires": [
                   [
                       "b62ff4888f8291c0"
                   ]
               ]
           },
           {
               "id": "b62ff4888f8291c0",
               "type": "change",
               "z": "85ae8ec646aa7f1a",
               "g": "fa43646eebd9962e",
               "name": "AND ?",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "$reduce(payload.*,function($i, $j){$i and $j})",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 670,
               "y": 300,
               "wires": [
                   [
                       "4ba5db35935bee8b"
                   ]
               ],
               "info": "# All Property of an object must be true.\n\nAll properties of an object must be true.\n\n`{\n    \"Office\": true,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis true,\n\n`{\n    \"Office\": true,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis false.\n\n# Alle Eigenschaften eines Objektes müssen wahr sein\n\nAlle Eigenschaften eines Objektes müssen wahr sein.\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": true,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt true,\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt false."
           }
        ]
        

        Man kann das aber auch einfacher - mit der Moments Bibliothek und der Datum- und Zeitverarbeitung in Node Red lösen.

        Hier mal eine Change und eine Switch Node. 😉
        d060ec59-1f3b-434a-b189-22e114411bea-image.png

        [
           {
               "id": "922b0da53b5fc75b",
               "type": "switch",
               "z": "85ae8ec646aa7f1a",
               "name": "zwischen 6 und 22 Uhr ?",
               "property": "$moment().isBetween($moment(\"06\", \"hh\"),$moment(\"22\", \"hh\"),'minute','[)')",
               "propertyType": "jsonata",
               "rules": [
                   {
                       "t": "true"
                   },
                   {
                       "t": "false"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 2,
               "x": 610,
               "y": 100,
               "wires": [
                   [],
                   []
               ]
           },
           {
               "id": "8e35e390facce767",
               "type": "change",
               "z": "85ae8ec646aa7f1a",
               "name": "zwischen 6 und 22 Uhr?",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "$moment().isBetween($moment(\"06\", \"hh\"),$moment(\"22\", \"hh\"),'minute','[)')",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 610,
               "y": 140,
               "wires": [
                   []
               ]
           }
        ]
        

        Schau Dir mal meinen Thread zur Datum und Uhrzeit in Node-Red an: https://forum.iobroker.net/topic/50086/datum-und-zeitverarbeitung-mit-nodered

        S 1 Reply Last reply Reply Quote 0
        • S
          Saranger @mickym last edited by

          @mickym cool danke, schaue ich mir an und teste das gleich mal, das könnte meine Probleme in meinen anderen Flows auch gleich beheben 🙂

          1 Reply Last reply Reply Quote 0
          • S
            Saranger last edited by

            @mickym das hat schon mal gut funktioniert, macht viele Flows einfacher. Wo aber die Uhrzeit als einziger Trigger ist muss ich es weiterhin über die inject node oder den Bigtimer machen oder?

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

              @saranger sagte in Probleme mit Zeitsteuerung und AND Logik:

              @mickym das hat schon mal gut funktioniert, macht viele Flows einfacher. Wo aber die Uhrzeit als einziger Trigger ist muss ich es weiterhin über die inject node oder den Bigtimer machen oder?

              Ja. Gibt ja neben der inject node noch die Trigger node bei den Standard-Nodes. Bei den nachinstallierten Nodes bevorzuge ich inzwischen andere nodes anstelle des Bigtimers. Für wöchentlich wiederkehrende Zeitfenster den Lightscheduler mit grafischer Bedienung und für anspruchsvolle Zeitaufgaben die cronplus-Node. Der Bigtimer ist noch 1. Wahl wenn man bestimmte zyklische Tage im Jahr braucht, die nicht über cron zu erstellen sind.

              S 1 Reply Last reply Reply Quote 0
              • S
                Saranger @mickym last edited by

                @mickym danke Dir, den Ligth schau ich mir mal an. Die Triggernode hab ich auch schon in Benutzung, da weis ich aber auch nicht ob das nicht zu kompliziert ist was ich da gebaut habe.

                S 1 Reply Last reply Reply Quote 0
                • S
                  Saranger @Saranger last edited by

                  Wie sollte man es eigentlich schreiben wenn die timerange über 00 Uhr hinaus in den neuen Tag geht?

                  Sollte man da eher 01:00 - 06:00 und das dann invertieren? 06:00 - 01:00 geht ja irgendwie nicht.

                  Ich hab jetzt bei einem Kumpel gesehen das es noch die node timerange gibt kennt das jemand?

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

                    @saranger sagte in Probleme mit Zeitsteuerung und AND Logik:

                    Sollte man da eher 01:00 - 06:00 und das dann invertieren?

                    Genau mit $not() invertieren.

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    775
                    Online

                    31.7k
                    Users

                    79.8k
                    Topics

                    1.3m
                    Posts

                    2
                    8
                    451
                    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