Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

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

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. [gelöst] JSONata loop - $moment > Invalid date?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.4k

[gelöst] JSONata loop - $moment > Invalid date?

Geplant Angeheftet Gesperrt Verschoben Node-Red
8 Beiträge 2 Kommentatoren 567 Aufrufe 2 Watching
  • Ä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.
  • M Offline
    M Offline
    MaGe
    schrieb am zuletzt editiert von MaGe
    #1

    Hallo zusammen,

    ich komme gerade nicht mehr weiter und verstehe auch nicht wo der Fehler liegt.

    In der markierten Zeile wird korrekt zum 03.01.2025 mittels add(1,'days') ein Tag als Test addiert. Soweit so gut.
    flow_Schulferien_2.jpg
    In der markierten loop wird das Datum als "Invalid date" ausgegeben.
    flow_Schulferien_3.jpg
    Debug:
    flow_Schulferien_1.jpg

    Mein Flow:

    [
       {
           "id": "aaf1926df51b3128",
           "type": "debug",
           "z": "2a5d5250.f178be",
           "g": "c99b6d419a34f213",
           "name": "Info",
           "active": true,
           "tosidebar": true,
           "console": false,
           "tostatus": true,
           "complete": "payload",
           "targetType": "msg",
           "statusVal": "payload",
           "statusType": "auto",
           "x": 1950,
           "y": 2500,
           "wires": []
       },
       {
           "id": "b71b2f4e4c163357",
           "type": "change",
           "z": "2a5d5250.f178be",
           "g": "c99b6d419a34f213",
           "name": "Schulferien",
           "rules": [
               {
                   "t": "delete",
                   "p": "headers",
                   "pt": "msg"
               },
               {
                   "t": "delete",
                   "p": "statusCode",
                   "pt": "msg"
               },
               {
                   "t": "delete",
                   "p": "url",
                   "pt": "msg"
               },
               {
                   "t": "delete",
                   "p": "responseUrl",
                   "pt": "msg"
               },
               {
                   "t": "delete",
                   "p": "retry",
                   "pt": "msg"
               },
               {
                   "t": "delete",
                   "p": "redirectList",
                   "pt": "msg"
               },
               {
                   "t": "set",
                   "p": "payload",
                   "pt": "msg",
                   "to": "[\t   {\t       \"Ferien\":\"Weihnachtsferien\",\t        \"start\": $moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),\t        \"end\": $moment(payload[0].endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),\t        \"payload\": (\t            $start := $moment($moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t            $end := $moment($moment(payload[0].endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t            $diff := $end.diff($start, 'days'); \t            [1..$diff].{\t            \"day\": $,\t            \"date\": $moment(payload[0].startDate,'YYYY-MM-DD').add($,'days').format('DD.MM.YYYY')\t        }    \t        )    \t   }\t]",
                   "tot": "jsonata"
               }
           ],
           "action": "",
           "property": "",
           "from": "",
           "to": "",
           "reg": false,
           "x": 1930,
           "y": 2460,
           "wires": [
               [
                   "aaf1926df51b3128"
               ]
           ]
       },
       {
           "id": "68c7a189d51bf7bf",
           "type": "http request",
           "z": "2a5d5250.f178be",
           "g": "c99b6d419a34f213",
           "name": "",
           "method": "GET",
           "ret": "obj",
           "paytoqs": "body",
           "url": "",
           "tls": "",
           "persist": false,
           "proxy": "",
           "insecureHTTPParser": false,
           "authType": "",
           "senderr": false,
           "headers": [],
           "x": 1950,
           "y": 2420,
           "wires": [
               [
                   "b71b2f4e4c163357"
               ]
           ]
       },
       {
           "id": "299b868a61569eb1",
           "type": "change",
           "z": "2a5d5250.f178be",
           "g": "c99b6d419a34f213",
           "name": "",
           "rules": [
               {
                   "t": "set",
                   "p": "url",
                   "pt": "msg",
                   "to": "payload",
                   "tot": "msg"
               },
               {
                   "t": "set",
                   "p": "url",
                   "pt": "msg",
                   "to": "$.url",
                   "tot": "jsonata"
               }
           ],
           "action": "",
           "property": "",
           "from": "",
           "to": "",
           "reg": false,
           "x": 1930,
           "y": 2380,
           "wires": [
               [
                   "68c7a189d51bf7bf"
               ]
           ]
       },
       {
           "id": "430861125722076d",
           "type": "function",
           "z": "2a5d5250.f178be",
           "g": "c99b6d419a34f213",
           "name": "Url",
           "func": "msg.payload = `https://openholidaysapi.org/SchoolHolidays?countryIsoCode=DE&validFrom=${msg.payload}-01-01&validTo=${msg.payload}-12-31&languageIsoCode=DE&subdivisionCode=DE-BY`;\nreturn msg;\n\n",
           "outputs": 1,
           "timeout": "",
           "noerr": 0,
           "initialize": "",
           "finalize": "",
           "libs": [],
           "x": 1750,
           "y": 2380,
           "wires": [
               [
                   "299b868a61569eb1"
               ]
           ]
       },
       {
           "id": "71181a8bd5e21a21",
           "type": "change",
           "z": "2a5d5250.f178be",
           "g": "c99b6d419a34f213",
           "name": "Jahr",
           "rules": [
               {
                   "t": "set",
                   "p": "topic",
                   "pt": "msg",
                   "to": "Jahr",
                   "tot": "str"
               },
               {
                   "t": "set",
                   "p": "payload",
                   "pt": "msg",
                   "to": "$moment().year() ",
                   "tot": "jsonata"
               },
               {
                   "t": "set",
                   "p": "payload",
                   "pt": "msg",
                   "to": "$string(payload)",
                   "tot": "jsonata"
               }
           ],
           "action": "",
           "property": "",
           "from": "",
           "to": "",
           "reg": false,
           "x": 1750,
           "y": 2420,
           "wires": [
               [
                   "430861125722076d"
               ]
           ]
       },
       {
           "id": "2ccf942347bcc03b",
           "type": "inject",
           "z": "2a5d5250.f178be",
           "g": "c99b6d419a34f213",
           "name": "Abfrage",
           "props": [
               {
                   "p": "payload"
               }
           ],
           "repeat": "",
           "crontab": "05 00 * * *",
           "once": true,
           "onceDelay": "0.5",
           "topic": "",
           "payload": "",
           "payloadType": "date",
           "x": 1540,
           "y": 2380,
           "wires": [
               [
                   "71181a8bd5e21a21"
               ]
           ]
       }
    ]
    

    Hintergrund des Flows ist, dass ich im Anschluss jedes Datum auf Übereinstimmung zum aktuellen Tag überprüfen möchte.
    So habe ich es bei den Feiertagen bereits umgesetzt.

       {
           "Feiertag":"Neujahr",
           "payload": (
               $date := $moment($moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
               $today := $moment($moment().format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
               $date.isSame($today)
               )
           }
    

    Danke für eure Unterstützung.

    mickymM 1 Antwort Letzte Antwort
    0
    • M MaGe

      Hallo zusammen,

      ich komme gerade nicht mehr weiter und verstehe auch nicht wo der Fehler liegt.

      In der markierten Zeile wird korrekt zum 03.01.2025 mittels add(1,'days') ein Tag als Test addiert. Soweit so gut.
      flow_Schulferien_2.jpg
      In der markierten loop wird das Datum als "Invalid date" ausgegeben.
      flow_Schulferien_3.jpg
      Debug:
      flow_Schulferien_1.jpg

      Mein Flow:

      [
         {
             "id": "aaf1926df51b3128",
             "type": "debug",
             "z": "2a5d5250.f178be",
             "g": "c99b6d419a34f213",
             "name": "Info",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": true,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "payload",
             "statusType": "auto",
             "x": 1950,
             "y": 2500,
             "wires": []
         },
         {
             "id": "b71b2f4e4c163357",
             "type": "change",
             "z": "2a5d5250.f178be",
             "g": "c99b6d419a34f213",
             "name": "Schulferien",
             "rules": [
                 {
                     "t": "delete",
                     "p": "headers",
                     "pt": "msg"
                 },
                 {
                     "t": "delete",
                     "p": "statusCode",
                     "pt": "msg"
                 },
                 {
                     "t": "delete",
                     "p": "url",
                     "pt": "msg"
                 },
                 {
                     "t": "delete",
                     "p": "responseUrl",
                     "pt": "msg"
                 },
                 {
                     "t": "delete",
                     "p": "retry",
                     "pt": "msg"
                 },
                 {
                     "t": "delete",
                     "p": "redirectList",
                     "pt": "msg"
                 },
                 {
                     "t": "set",
                     "p": "payload",
                     "pt": "msg",
                     "to": "[\t   {\t       \"Ferien\":\"Weihnachtsferien\",\t        \"start\": $moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),\t        \"end\": $moment(payload[0].endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),\t        \"payload\": (\t            $start := $moment($moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t            $end := $moment($moment(payload[0].endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t            $diff := $end.diff($start, 'days'); \t            [1..$diff].{\t            \"day\": $,\t            \"date\": $moment(payload[0].startDate,'YYYY-MM-DD').add($,'days').format('DD.MM.YYYY')\t        }    \t        )    \t   }\t]",
                     "tot": "jsonata"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 1930,
             "y": 2460,
             "wires": [
                 [
                     "aaf1926df51b3128"
                 ]
             ]
         },
         {
             "id": "68c7a189d51bf7bf",
             "type": "http request",
             "z": "2a5d5250.f178be",
             "g": "c99b6d419a34f213",
             "name": "",
             "method": "GET",
             "ret": "obj",
             "paytoqs": "body",
             "url": "",
             "tls": "",
             "persist": false,
             "proxy": "",
             "insecureHTTPParser": false,
             "authType": "",
             "senderr": false,
             "headers": [],
             "x": 1950,
             "y": 2420,
             "wires": [
                 [
                     "b71b2f4e4c163357"
                 ]
             ]
         },
         {
             "id": "299b868a61569eb1",
             "type": "change",
             "z": "2a5d5250.f178be",
             "g": "c99b6d419a34f213",
             "name": "",
             "rules": [
                 {
                     "t": "set",
                     "p": "url",
                     "pt": "msg",
                     "to": "payload",
                     "tot": "msg"
                 },
                 {
                     "t": "set",
                     "p": "url",
                     "pt": "msg",
                     "to": "$.url",
                     "tot": "jsonata"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 1930,
             "y": 2380,
             "wires": [
                 [
                     "68c7a189d51bf7bf"
                 ]
             ]
         },
         {
             "id": "430861125722076d",
             "type": "function",
             "z": "2a5d5250.f178be",
             "g": "c99b6d419a34f213",
             "name": "Url",
             "func": "msg.payload = `https://openholidaysapi.org/SchoolHolidays?countryIsoCode=DE&validFrom=${msg.payload}-01-01&validTo=${msg.payload}-12-31&languageIsoCode=DE&subdivisionCode=DE-BY`;\nreturn msg;\n\n",
             "outputs": 1,
             "timeout": "",
             "noerr": 0,
             "initialize": "",
             "finalize": "",
             "libs": [],
             "x": 1750,
             "y": 2380,
             "wires": [
                 [
                     "299b868a61569eb1"
                 ]
             ]
         },
         {
             "id": "71181a8bd5e21a21",
             "type": "change",
             "z": "2a5d5250.f178be",
             "g": "c99b6d419a34f213",
             "name": "Jahr",
             "rules": [
                 {
                     "t": "set",
                     "p": "topic",
                     "pt": "msg",
                     "to": "Jahr",
                     "tot": "str"
                 },
                 {
                     "t": "set",
                     "p": "payload",
                     "pt": "msg",
                     "to": "$moment().year() ",
                     "tot": "jsonata"
                 },
                 {
                     "t": "set",
                     "p": "payload",
                     "pt": "msg",
                     "to": "$string(payload)",
                     "tot": "jsonata"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 1750,
             "y": 2420,
             "wires": [
                 [
                     "430861125722076d"
                 ]
             ]
         },
         {
             "id": "2ccf942347bcc03b",
             "type": "inject",
             "z": "2a5d5250.f178be",
             "g": "c99b6d419a34f213",
             "name": "Abfrage",
             "props": [
                 {
                     "p": "payload"
                 }
             ],
             "repeat": "",
             "crontab": "05 00 * * *",
             "once": true,
             "onceDelay": "0.5",
             "topic": "",
             "payload": "",
             "payloadType": "date",
             "x": 1540,
             "y": 2380,
             "wires": [
                 [
                     "71181a8bd5e21a21"
                 ]
             ]
         }
      ]
      

      Hintergrund des Flows ist, dass ich im Anschluss jedes Datum auf Übereinstimmung zum aktuellen Tag überprüfen möchte.
      So habe ich es bei den Feiertagen bereits umgesetzt.

         {
             "Feiertag":"Neujahr",
             "payload": (
                 $date := $moment($moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                 $today := $moment($moment().format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                 $date.isSame($today)
                 )
             }
      

      Danke für eure Unterstützung.

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von
      #2

      Du musst etwas aufpassen mit Deinen Referenzen. $ ändert sich ja - je nach Kontext. Also musst du wenn Du weiter unten auf die payload verweist auf das Root-Nachrichtenobjekt verweisen und auch innerhalb der Schleife hast Du $ ja bereits verwendet - deswegen würde ich den Kontext fix einer Variablen zuweisen. Zumindest scheint es damit zu funktionieren:

      [
         {
             "Ferien":"Weihnachtsferien",
              "start": $moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
              "end": $moment(payload[0].endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),
              "payload": (
                  $start := $moment($moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                  $end := $moment($moment(payload[0].endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                  $diff := $end.diff($start, 'days'); 
                  ([1..$diff])@$d.{
                  "day": $d,
                  "date": $moment($$.payload[0].startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY')
              }    
              )    
         }
      ]
      

      16b28367-4c96-41ed-8754-a129d5c29ae2-image.png

      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.

      M 1 Antwort Letzte Antwort
      0
      • mickymM Online
        mickymM Online
        mickym
        Most Active
        schrieb am zuletzt editiert von mickym
        #3

        Wenn Du alle Ferien aufeinmal haben willst geht es so:
        Hier der Import:

        [
           {
               "id": "22257f083b3c6545",
               "type": "inject",
               "z": "7faa06d941e86452",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "[{\"id\":\"f3b90493-d141-4aab-ac30-37084db988c3\",\"startDate\":\"2024-12-23\",\"endDate\":\"2025-01-03\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"5257b2de-813a-406f-9b8e-cd56586050f2\",\"startDate\":\"2025-03-03\",\"endDate\":\"2025-03-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Frühjahrsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"03cc22f2-1730-4ea4-b2dc-90d8d0f41e62\",\"startDate\":\"2025-04-14\",\"endDate\":\"2025-04-25\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Osterferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"dcda193e-7508-48e5-9da7-670a36cb3b0c\",\"startDate\":\"2025-06-10\",\"endDate\":\"2025-06-20\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Pfingstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"bc2bd00a-e716-46c3-8a27-2538c777d9bd\",\"startDate\":\"2025-08-01\",\"endDate\":\"2025-09-15\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Sommerferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"867bf086-bdaa-4642-8fcf-4fd07f45ac08\",\"startDate\":\"2025-11-03\",\"endDate\":\"2025-11-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Herbstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"cb244bdc-ddc5-48b0-a6a4-675b57facc0e\",\"startDate\":\"2025-11-19\",\"endDate\":\"2025-11-19\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Buß- und Bettag\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"fae75443-4eb3-4720-9ba2-3dcca3553820\",\"startDate\":\"2025-12-22\",\"endDate\":\"2026-01-05\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]}]",
               "payloadType": "json",
               "x": 210,
               "y": 440,
               "wires": [
                   [
                       "dc9cbd5dcf271080",
                       "6932187427371fb5",
                       "8e380e141450fd22"
                   ]
               ]
           },
           {
               "id": "2ad8f5ad99f794c2",
               "type": "debug",
               "z": "7faa06d941e86452",
               "name": "Info",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": true,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "payload",
               "statusType": "auto",
               "x": 610,
               "y": 440,
               "wires": []
           },
           {
               "id": "8e380e141450fd22",
               "type": "change",
               "z": "7faa06d941e86452",
               "name": "Schulferien 2",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "payload.\t   {\t   \"Ferien\": $.name[language=\"DE\"].text,\t   \"start\": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),\t   \"end\": $moment($.endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),\t   \"payload\": (\t       $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $diff := $end.diff($start, 'days');\t       ([1..$diff])@$d.{\t            \"day\": $d,\t            \"date\": $moment($.startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY')\t        }    \t       )\t   }\t",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 430,
               "y": 440,
               "wires": [
                   [
                       "2ad8f5ad99f794c2"
                   ]
               ]
           }
        ]
        

        payload.
           {
           "Ferien": $.name[language="DE"].text,
           "start": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
           "end": $moment($.endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),
           "payload": (
               $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
               $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
               $diff := $end.diff($start, 'days');
               ([1..$diff])@$d.{
                    "day": $d,
                    "date": $moment($.startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY')
                }    
               )
           }
        

        Das erzeugt dann diese Ausgabe:

        [
          {
            "Ferien": "Weihnachtsferien",
            "start": "23.12.2024",
            "end": "04.01.2025",
            "payload": [
              {
                "day": 1,
                "date": "24.12.2024"
              },
              {
                "day": 2,
                "date": "25.12.2024"
              },
              {
                "day": 3,
                "date": "26.12.2024"
              },
              {
                "day": 4,
                "date": "27.12.2024"
              },
              {
                "day": 5,
                "date": "28.12.2024"
              },
              {
                "day": 6,
                "date": "29.12.2024"
              },
              {
                "day": 7,
                "date": "30.12.2024"
              },
              {
                "day": 8,
                "date": "31.12.2024"
              },
              {
                "day": 9,
                "date": "01.01.2025"
              },
              {
                "day": 10,
                "date": "02.01.2025"
              },
              {
                "day": 11,
                "date": "03.01.2025"
              }
            ]
          },
          {
            "Ferien": "Frühjahrsferien",
            "start": "03.03.2025",
            "end": "08.03.2025",
            "payload": [
              {
                "day": 1,
                "date": "04.03.2025"
              },
              {
                "day": 2,
                "date": "05.03.2025"
              },
              {
                "day": 3,
                "date": "06.03.2025"
              },
              {
                "day": 4,
                "date": "07.03.2025"
              }
            ]
          },
          {
            "Ferien": "Osterferien",
            "start": "14.04.2025",
            "end": "26.04.2025",
            "payload": [
              {
                "day": 1,
                "date": "15.04.2025"
              },
              {
                "day": 2,
                "date": "16.04.2025"
              },
              {
                "day": 3,
                "date": "17.04.2025"
              },
              {
                "day": 4,
                "date": "18.04.2025"
              },
              {
                "day": 5,
                "date": "19.04.2025"
              },
              {
                "day": 6,
                "date": "20.04.2025"
              },
              {
                "day": 7,
                "date": "21.04.2025"
              },
              {
                "day": 8,
                "date": "22.04.2025"
              },
              {
                "day": 9,
                "date": "23.04.2025"
              },
              {
                "day": 10,
                "date": "24.04.2025"
              },
              {
                "day": 11,
                "date": "25.04.2025"
              }
            ]
          },
          {
            "Ferien": "Pfingstferien",
            "start": "10.06.2025",
            "end": "21.06.2025",
            "payload": [
              {
                "day": 1,
                "date": "11.06.2025"
              },
              {
                "day": 2,
                "date": "12.06.2025"
              },
              {
                "day": 3,
                "date": "13.06.2025"
              },
              {
                "day": 4,
                "date": "14.06.2025"
              },
              {
                "day": 5,
                "date": "15.06.2025"
              },
              {
                "day": 6,
                "date": "16.06.2025"
              },
              {
                "day": 7,
                "date": "17.06.2025"
              },
              {
                "day": 8,
                "date": "18.06.2025"
              },
              {
                "day": 9,
                "date": "19.06.2025"
              },
              {
                "day": 10,
                "date": "20.06.2025"
              }
            ]
          },
          {
            "Ferien": "Sommerferien",
            "start": "01.08.2025",
            "end": "16.09.2025",
            "payload": [
              {
                "day": 1,
                "date": "02.08.2025"
              },
              {
                "day": 2,
                "date": "03.08.2025"
              },
              {
                "day": 3,
                "date": "04.08.2025"
              },
              {
                "day": 4,
                "date": "05.08.2025"
              },
              {
                "day": 5,
                "date": "06.08.2025"
              },
              {
                "day": 6,
                "date": "07.08.2025"
              },
              {
                "day": 7,
                "date": "08.08.2025"
              },
              {
                "day": 8,
                "date": "09.08.2025"
              },
              {
                "day": 9,
                "date": "10.08.2025"
              },
              {
                "day": 10,
                "date": "11.08.2025"
              },
              {
                "day": 11,
                "date": "12.08.2025"
              },
              {
                "day": 12,
                "date": "13.08.2025"
              },
              {
                "day": 13,
                "date": "14.08.2025"
              },
              {
                "day": 14,
                "date": "15.08.2025"
              },
              {
                "day": 15,
                "date": "16.08.2025"
              },
              {
                "day": 16,
                "date": "17.08.2025"
              },
              {
                "day": 17,
                "date": "18.08.2025"
              },
              {
                "day": 18,
                "date": "19.08.2025"
              },
              {
                "day": 19,
                "date": "20.08.2025"
              },
              {
                "day": 20,
                "date": "21.08.2025"
              },
              {
                "day": 21,
                "date": "22.08.2025"
              },
              {
                "day": 22,
                "date": "23.08.2025"
              },
              {
                "day": 23,
                "date": "24.08.2025"
              },
              {
                "day": 24,
                "date": "25.08.2025"
              },
              {
                "day": 25,
                "date": "26.08.2025"
              },
              {
                "day": 26,
                "date": "27.08.2025"
              },
              {
                "day": 27,
                "date": "28.08.2025"
              },
              {
                "day": 28,
                "date": "29.08.2025"
              },
              {
                "day": 29,
                "date": "30.08.2025"
              },
              {
                "day": 30,
                "date": "31.08.2025"
              },
              {
                "day": 31,
                "date": "01.09.2025"
              },
              {
                "day": 32,
                "date": "02.09.2025"
              },
              {
                "day": 33,
                "date": "03.09.2025"
              },
              {
                "day": 34,
                "date": "04.09.2025"
              },
              {
                "day": 35,
                "date": "05.09.2025"
              },
              {
                "day": 36,
                "date": "06.09.2025"
              },
              {
                "day": 37,
                "date": "07.09.2025"
              },
              {
                "day": 38,
                "date": "08.09.2025"
              },
              {
                "day": 39,
                "date": "09.09.2025"
              },
              {
                "day": 40,
                "date": "10.09.2025"
              },
              {
                "day": 41,
                "date": "11.09.2025"
              },
              {
                "day": 42,
                "date": "12.09.2025"
              },
              {
                "day": 43,
                "date": "13.09.2025"
              },
              {
                "day": 44,
                "date": "14.09.2025"
              },
              {
                "day": 45,
                "date": "15.09.2025"
              }
            ]
          },
          {
            "Ferien": "Herbstferien",
            "start": "03.11.2025",
            "end": "08.11.2025",
            "payload": [
              {
                "day": 1,
                "date": "04.11.2025"
              },
              {
                "day": 2,
                "date": "05.11.2025"
              },
              {
                "day": 3,
                "date": "06.11.2025"
              },
              {
                "day": 4,
                "date": "07.11.2025"
              }
            ]
          },
          {
            "Ferien": "Buß- und Bettag",
            "start": "19.11.2025",
            "end": "20.11.2025"
          },
          {
            "Ferien": "Weihnachtsferien",
            "start": "22.12.2025",
            "end": "06.01.2026",
            "payload": [
              {
                "day": 1,
                "date": "23.12.2025"
              },
              {
                "day": 2,
                "date": "24.12.2025"
              },
              {
                "day": 3,
                "date": "25.12.2025"
              },
              {
                "day": 4,
                "date": "26.12.2025"
              },
              {
                "day": 5,
                "date": "27.12.2025"
              },
              {
                "day": 6,
                "date": "28.12.2025"
              },
              {
                "day": 7,
                "date": "29.12.2025"
              },
              {
                "day": 8,
                "date": "30.12.2025"
              },
              {
                "day": 9,
                "date": "31.12.2025"
              },
              {
                "day": 10,
                "date": "01.01.2026"
              },
              {
                "day": 11,
                "date": "02.01.2026"
              },
              {
                "day": 12,
                "date": "03.01.2026"
              },
              {
                "day": 13,
                "date": "04.01.2026"
              },
              {
                "day": 14,
                "date": "05.01.2026"
              }
            ]
          }
        ]
        

        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
        • mickymM mickym

          Du musst etwas aufpassen mit Deinen Referenzen. $ ändert sich ja - je nach Kontext. Also musst du wenn Du weiter unten auf die payload verweist auf das Root-Nachrichtenobjekt verweisen und auch innerhalb der Schleife hast Du $ ja bereits verwendet - deswegen würde ich den Kontext fix einer Variablen zuweisen. Zumindest scheint es damit zu funktionieren:

          [
             {
                 "Ferien":"Weihnachtsferien",
                  "start": $moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
                  "end": $moment(payload[0].endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),
                  "payload": (
                      $start := $moment($moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                      $end := $moment($moment(payload[0].endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                      $diff := $end.diff($start, 'days'); 
                      ([1..$diff])@$d.{
                      "day": $d,
                      "date": $moment($$.payload[0].startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY')
                  }    
                  )    
             }
          ]
          

          16b28367-4c96-41ed-8754-a129d5c29ae2-image.png

          M Offline
          M Offline
          MaGe
          schrieb am zuletzt editiert von
          #4

          @mickym said in JSONata loop - $moment > Invalid date?:

          Vielen lieben Dank. So funktioniert es. :-)

          [
             {
                 "Ferien":"Weihnachtsferien",
                  "start": $moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
                  "end": $moment(payload[0].endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
                  "payload": (
                      $start := $moment($moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                      $end := $moment($moment(payload[0].endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                      $today := $moment($moment().format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                      $diff := $end.diff($start, 'days');
                      ([1..$diff])@$day.{
                      "date": $moment($$.payload[0].startDate,'YYYY-MM-DD').add($day,'days').format('DD.MM.YYYY'),
                  }    
                  )    
             }
          ]
          

          Wie könnte man den Vergleich durchführen? Ich bekomme folgende Meldung "Ungültiger JSONata Ausdruck: Attempted to invoke a non-function"

          "isSame": $($$.payload[$day].payload[$day].date).isSame($$today)
          

          Wäre es vielleicht auch möglich ohne payload[0].payload[0].date? Daran bin ich bis jetzt noch gescheitert. Dann wäre es vielleicht einfacher mit dem Vergleichen.

          $date := { ([0..$diff])@$day.{
                      $moment($$.payload[0].startDate,'YYYY-MM-DD').add($day,'days').format('DD.MM.YYYY');
          			} 
          			};
          
          mickymM 1 Antwort Letzte Antwort
          0
          • M MaGe

            @mickym said in JSONata loop - $moment > Invalid date?:

            Vielen lieben Dank. So funktioniert es. :-)

            [
               {
                   "Ferien":"Weihnachtsferien",
                    "start": $moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
                    "end": $moment(payload[0].endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
                    "payload": (
                        $start := $moment($moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                        $end := $moment($moment(payload[0].endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                        $today := $moment($moment().format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                        $diff := $end.diff($start, 'days');
                        ([1..$diff])@$day.{
                        "date": $moment($$.payload[0].startDate,'YYYY-MM-DD').add($day,'days').format('DD.MM.YYYY'),
                    }    
                    )    
               }
            ]
            

            Wie könnte man den Vergleich durchführen? Ich bekomme folgende Meldung "Ungültiger JSONata Ausdruck: Attempted to invoke a non-function"

            "isSame": $($$.payload[$day].payload[$day].date).isSame($$today)
            

            Wäre es vielleicht auch möglich ohne payload[0].payload[0].date? Daran bin ich bis jetzt noch gescheitert. Dann wäre es vielleicht einfacher mit dem Vergleichen.

            $date := { ([0..$diff])@$day.{
                        $moment($$.payload[0].startDate,'YYYY-MM-DD').add($day,'days').format('DD.MM.YYYY');
            			} 
            			};
            
            mickymM Online
            mickymM Online
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #5

            @mage

            Wäre es vielleicht auch möglich ohne payload[0].payload[0].date? Daran bin ich bis jetzt noch gescheitert. Dann wäre es vielleicht einfacher mit dem Vergleichen.

            Ich habe dir doch gerade unten gepostet, wie Du alle Ferien aufeinmal ausgibst

            Mit der Abfrage habe ich nun festgestellt, dass es anscheinend nicht geht, wenn man den selbst berechneten Wert als 2. Paramter übergibt.

            Ich habs nun aber für alle gemacht und mal schnell die Weihnachtsferien - für eine Woche verlängert, um heute in die Weihnachtsferien zu bekommen.

            9172ed57-b9df-4a93-a4da-3433034a1216-image.png

            Diese permanenten Formatwechsel sind eher kontraproduktiv.

            Hier mal der Import:

            [
               {
                   "id": "22257f083b3c6545",
                   "type": "inject",
                   "z": "7faa06d941e86452",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "[{\"id\":\"f3b90493-d141-4aab-ac30-37084db988c3\",\"startDate\":\"2024-12-23\",\"endDate\":\"2025-01-10\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"5257b2de-813a-406f-9b8e-cd56586050f2\",\"startDate\":\"2025-03-03\",\"endDate\":\"2025-03-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Frühjahrsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"03cc22f2-1730-4ea4-b2dc-90d8d0f41e62\",\"startDate\":\"2025-04-14\",\"endDate\":\"2025-04-25\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Osterferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"dcda193e-7508-48e5-9da7-670a36cb3b0c\",\"startDate\":\"2025-06-10\",\"endDate\":\"2025-06-20\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Pfingstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"bc2bd00a-e716-46c3-8a27-2538c777d9bd\",\"startDate\":\"2025-08-01\",\"endDate\":\"2025-09-15\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Sommerferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"867bf086-bdaa-4642-8fcf-4fd07f45ac08\",\"startDate\":\"2025-11-03\",\"endDate\":\"2025-11-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Herbstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"cb244bdc-ddc5-48b0-a6a4-675b57facc0e\",\"startDate\":\"2025-11-19\",\"endDate\":\"2025-11-19\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Buß- und Bettag\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"fae75443-4eb3-4720-9ba2-3dcca3553820\",\"startDate\":\"2025-12-22\",\"endDate\":\"2026-01-05\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]}]",
                   "payloadType": "json",
                   "x": 210,
                   "y": 440,
                   "wires": [
                       [
                           "6932187427371fb5",
                           "8e380e141450fd22"
                       ]
                   ]
               },
               {
                   "id": "6932187427371fb5",
                   "type": "debug",
                   "z": "7faa06d941e86452",
                   "name": "Test",
                   "active": false,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 430,
                   "y": 380,
                   "wires": []
               },
               {
                   "id": "2ad8f5ad99f794c2",
                   "type": "debug",
                   "z": "7faa06d941e86452",
                   "name": "Info",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": true,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "payload",
                   "statusType": "auto",
                   "x": 610,
                   "y": 440,
                   "wires": []
               },
               {
                   "id": "8e380e141450fd22",
                   "type": "change",
                   "z": "7faa06d941e86452",
                   "name": "Schulferien 2",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "payload.\t   {\t   \"Ferien\": $.name[language=\"DE\"].text,\t   \"start\": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),\t   \"end\": $moment($.endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),\t   \"payload\": (\t       $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $diff := $end.diff($start, 'days');\t       ([1..$diff])@$d.\t       {\t            \t            \"day\": $d,\t            \"date\": $moment($.startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY'),\t            \"isSame\": $moment($.startDate,'YYYY-MM-DD').add($d,'days').isSame($moment(),'day')\t        }    \t       )\t   }\t",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 430,
                   "y": 440,
                   "wires": [
                       [
                           "2ad8f5ad99f794c2"
                       ]
                   ]
               }
            ]
            

            So schaut der Code momentan aus:

            payload.
               {
               "Ferien": $.name[language="DE"].text,
               "start": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
               "end": $moment($.endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),
               "payload": (
                   $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                   $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                   $diff := $end.diff($start, 'days');
                   ([1..$diff])@$d.
                   {
                        
                        "day": $d,
                        "date": $moment($.startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY'),
                        "isSame": $moment($.startDate,'YYYY-MM-DD').add($d,'days').isSame($moment(),'day')
                    }    
                   )
               }
            
            

            Was ich festgestellt habe - ist vielleicht ein Bug in der Bibliothek.

            das geht:

            "isSame": $moment($.startDate,'YYYY-MM-DD').add($d,'days').isSame($moment(),'day')
            

            umgekehrt geht nicht (warum kann ich Dir nicht sagen):

            "isSame": $moment().isSame(($moment($.startDate,'YYYY-MM-DD').add($d,'days')),'day')
            

            c3453421-7f89-4ba8-bbcc-036ffb32d84f-image.png

            Hier beides nochmal zum Import:

            [
               {
                   "id": "22257f083b3c6545",
                   "type": "inject",
                   "z": "7faa06d941e86452",
                   "name": "In Ferien",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "[{\"id\":\"f3b90493-d141-4aab-ac30-37084db988c3\",\"startDate\":\"2024-12-23\",\"endDate\":\"2025-01-10\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"5257b2de-813a-406f-9b8e-cd56586050f2\",\"startDate\":\"2025-03-03\",\"endDate\":\"2025-03-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Frühjahrsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"03cc22f2-1730-4ea4-b2dc-90d8d0f41e62\",\"startDate\":\"2025-04-14\",\"endDate\":\"2025-04-25\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Osterferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"dcda193e-7508-48e5-9da7-670a36cb3b0c\",\"startDate\":\"2025-06-10\",\"endDate\":\"2025-06-20\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Pfingstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"bc2bd00a-e716-46c3-8a27-2538c777d9bd\",\"startDate\":\"2025-08-01\",\"endDate\":\"2025-09-15\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Sommerferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"867bf086-bdaa-4642-8fcf-4fd07f45ac08\",\"startDate\":\"2025-11-03\",\"endDate\":\"2025-11-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Herbstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"cb244bdc-ddc5-48b0-a6a4-675b57facc0e\",\"startDate\":\"2025-11-19\",\"endDate\":\"2025-11-19\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Buß- und Bettag\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"fae75443-4eb3-4720-9ba2-3dcca3553820\",\"startDate\":\"2025-12-22\",\"endDate\":\"2026-01-05\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]}]",
                   "payloadType": "json",
                   "x": 200,
                   "y": 400,
                   "wires": [
                       [
                           "606c813074aba4c8"
                       ]
                   ]
               },
               {
                   "id": "6932187427371fb5",
                   "type": "debug",
                   "z": "7faa06d941e86452",
                   "name": "Test",
                   "active": false,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 370,
                   "y": 400,
                   "wires": []
               },
               {
                   "id": "2ad8f5ad99f794c2",
                   "type": "debug",
                   "z": "7faa06d941e86452",
                   "name": "Info - funktioniert nicht",
                   "active": false,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": true,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "payload",
                   "statusType": "auto",
                   "x": 760,
                   "y": 480,
                   "wires": []
               },
               {
                   "id": "8e380e141450fd22",
                   "type": "change",
                   "z": "7faa06d941e86452",
                   "name": "Schulferien (isSame funktioniert nicht)",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "payload.\t   {\t   \"Ferien\": $.name[language=\"DE\"].text,\t   \"start\": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),\t   \"end\": $moment($.endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),\t   \"payload\": (\t       $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $diff := $end.diff($start, 'days');\t       ([1..$diff])@$d.\t       {\t            \t            \"day\": $d,\t            \"date\": $moment($.startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY'),\t            \"isSame\": $moment().isSame(($moment($.startDate,'YYYY-MM-DD').add($d,'days')),'day')\t        }    \t       )\t   }\t",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 470,
                   "y": 480,
                   "wires": [
                       [
                           "2ad8f5ad99f794c2"
                       ]
                   ]
               },
               {
                   "id": "373fa37357dc47dc",
                   "type": "change",
                   "z": "7faa06d941e86452",
                   "name": "Schulferien (isSame funktioniert)",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "payload.\t   {\t   \"Ferien\": $.name[language=\"DE\"].text,\t   \"start\": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),\t   \"end\": $moment($.endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),\t   \"payload\": (\t       $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $diff := $end.diff($start, 'days');\t       ([1..$diff])@$d.\t       {\t            \t            \"day\": $d,\t            \"date\": $moment($.startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY'),\t            \"isSame\": $moment($.startDate,'YYYY-MM-DD').add($d,'days').isSame($moment(),'day')\t        }    \t       )\t   }\t",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 450,
                   "y": 440,
                   "wires": [
                       [
                           "f4d765c83055a46c",
                           "789380a2a83d7939"
                       ]
                   ]
               },
               {
                   "id": "f4d765c83055a46c",
                   "type": "debug",
                   "z": "7faa06d941e86452",
                   "name": "Info - funktioniert",
                   "active": false,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": true,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "payload",
                   "statusType": "auto",
                   "x": 710,
                   "y": 440,
                   "wires": []
               },
               {
                   "id": "789380a2a83d7939",
                   "type": "change",
                   "z": "7faa06d941e86452",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "payload.payload[isSame] ? payload.payload[isSame].%.Ferien : \"keine Ferien\"",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 730,
                   "y": 380,
                   "wires": [
                       [
                           "52160933119290b0"
                       ]
                   ]
               },
               {
                   "id": "52160933119290b0",
                   "type": "debug",
                   "z": "7faa06d941e86452",
                   "name": "Ferien ?",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 940,
                   "y": 380,
                   "wires": []
               },
               {
                   "id": "7f567627a39fae75",
                   "type": "inject",
                   "z": "7faa06d941e86452",
                   "name": "Nicht in Ferien",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "[{\"id\":\"f3b90493-d141-4aab-ac30-37084db988c3\",\"startDate\":\"2024-12-23\",\"endDate\":\"2025-01-03\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"5257b2de-813a-406f-9b8e-cd56586050f2\",\"startDate\":\"2025-03-03\",\"endDate\":\"2025-03-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Frühjahrsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"03cc22f2-1730-4ea4-b2dc-90d8d0f41e62\",\"startDate\":\"2025-04-14\",\"endDate\":\"2025-04-25\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Osterferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"dcda193e-7508-48e5-9da7-670a36cb3b0c\",\"startDate\":\"2025-06-10\",\"endDate\":\"2025-06-20\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Pfingstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"bc2bd00a-e716-46c3-8a27-2538c777d9bd\",\"startDate\":\"2025-08-01\",\"endDate\":\"2025-09-15\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Sommerferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"867bf086-bdaa-4642-8fcf-4fd07f45ac08\",\"startDate\":\"2025-11-03\",\"endDate\":\"2025-11-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Herbstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"cb244bdc-ddc5-48b0-a6a4-675b57facc0e\",\"startDate\":\"2025-11-19\",\"endDate\":\"2025-11-19\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Buß- und Bettag\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"fae75443-4eb3-4720-9ba2-3dcca3553820\",\"startDate\":\"2025-12-22\",\"endDate\":\"2026-01-05\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]}]",
                   "payloadType": "json",
                   "x": 190,
                   "y": 480,
                   "wires": [
                       [
                           "606c813074aba4c8"
                       ]
                   ]
               },
               {
                   "id": "606c813074aba4c8",
                   "type": "junction",
                   "z": "7faa06d941e86452",
                   "x": 280,
                   "y": 440,
                   "wires": [
                       [
                           "8e380e141450fd22",
                           "373fa37357dc47dc",
                           "6932187427371fb5"
                       ]
                   ]
               }
            ]
            

            Ich bin mir allerdings nicht sicher, ob es wirklich die ganzen Ausgaben braucht. Und payload in payload ist bissi verwirrend.

            e8d54233-555f-48db-9d5b-b49fee30cab3-image.png

            letztlich langt ja die Abfrage, ob isSame irgendwo true ist.

            payload.payload[isSame] ? payload.payload[isSame].%.Ferien : "keine Ferien"
            

            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.

            M 1 Antwort Letzte Antwort
            0
            • mickymM mickym

              @mage

              Wäre es vielleicht auch möglich ohne payload[0].payload[0].date? Daran bin ich bis jetzt noch gescheitert. Dann wäre es vielleicht einfacher mit dem Vergleichen.

              Ich habe dir doch gerade unten gepostet, wie Du alle Ferien aufeinmal ausgibst

              Mit der Abfrage habe ich nun festgestellt, dass es anscheinend nicht geht, wenn man den selbst berechneten Wert als 2. Paramter übergibt.

              Ich habs nun aber für alle gemacht und mal schnell die Weihnachtsferien - für eine Woche verlängert, um heute in die Weihnachtsferien zu bekommen.

              9172ed57-b9df-4a93-a4da-3433034a1216-image.png

              Diese permanenten Formatwechsel sind eher kontraproduktiv.

              Hier mal der Import:

              [
                 {
                     "id": "22257f083b3c6545",
                     "type": "inject",
                     "z": "7faa06d941e86452",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "[{\"id\":\"f3b90493-d141-4aab-ac30-37084db988c3\",\"startDate\":\"2024-12-23\",\"endDate\":\"2025-01-10\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"5257b2de-813a-406f-9b8e-cd56586050f2\",\"startDate\":\"2025-03-03\",\"endDate\":\"2025-03-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Frühjahrsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"03cc22f2-1730-4ea4-b2dc-90d8d0f41e62\",\"startDate\":\"2025-04-14\",\"endDate\":\"2025-04-25\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Osterferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"dcda193e-7508-48e5-9da7-670a36cb3b0c\",\"startDate\":\"2025-06-10\",\"endDate\":\"2025-06-20\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Pfingstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"bc2bd00a-e716-46c3-8a27-2538c777d9bd\",\"startDate\":\"2025-08-01\",\"endDate\":\"2025-09-15\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Sommerferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"867bf086-bdaa-4642-8fcf-4fd07f45ac08\",\"startDate\":\"2025-11-03\",\"endDate\":\"2025-11-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Herbstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"cb244bdc-ddc5-48b0-a6a4-675b57facc0e\",\"startDate\":\"2025-11-19\",\"endDate\":\"2025-11-19\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Buß- und Bettag\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"fae75443-4eb3-4720-9ba2-3dcca3553820\",\"startDate\":\"2025-12-22\",\"endDate\":\"2026-01-05\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]}]",
                     "payloadType": "json",
                     "x": 210,
                     "y": 440,
                     "wires": [
                         [
                             "6932187427371fb5",
                             "8e380e141450fd22"
                         ]
                     ]
                 },
                 {
                     "id": "6932187427371fb5",
                     "type": "debug",
                     "z": "7faa06d941e86452",
                     "name": "Test",
                     "active": false,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 430,
                     "y": 380,
                     "wires": []
                 },
                 {
                     "id": "2ad8f5ad99f794c2",
                     "type": "debug",
                     "z": "7faa06d941e86452",
                     "name": "Info",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": true,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "payload",
                     "statusType": "auto",
                     "x": 610,
                     "y": 440,
                     "wires": []
                 },
                 {
                     "id": "8e380e141450fd22",
                     "type": "change",
                     "z": "7faa06d941e86452",
                     "name": "Schulferien 2",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload.\t   {\t   \"Ferien\": $.name[language=\"DE\"].text,\t   \"start\": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),\t   \"end\": $moment($.endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),\t   \"payload\": (\t       $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $diff := $end.diff($start, 'days');\t       ([1..$diff])@$d.\t       {\t            \t            \"day\": $d,\t            \"date\": $moment($.startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY'),\t            \"isSame\": $moment($.startDate,'YYYY-MM-DD').add($d,'days').isSame($moment(),'day')\t        }    \t       )\t   }\t",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 430,
                     "y": 440,
                     "wires": [
                         [
                             "2ad8f5ad99f794c2"
                         ]
                     ]
                 }
              ]
              

              So schaut der Code momentan aus:

              payload.
                 {
                 "Ferien": $.name[language="DE"].text,
                 "start": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
                 "end": $moment($.endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),
                 "payload": (
                     $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                     $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                     $diff := $end.diff($start, 'days');
                     ([1..$diff])@$d.
                     {
                          
                          "day": $d,
                          "date": $moment($.startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY'),
                          "isSame": $moment($.startDate,'YYYY-MM-DD').add($d,'days').isSame($moment(),'day')
                      }    
                     )
                 }
              
              

              Was ich festgestellt habe - ist vielleicht ein Bug in der Bibliothek.

              das geht:

              "isSame": $moment($.startDate,'YYYY-MM-DD').add($d,'days').isSame($moment(),'day')
              

              umgekehrt geht nicht (warum kann ich Dir nicht sagen):

              "isSame": $moment().isSame(($moment($.startDate,'YYYY-MM-DD').add($d,'days')),'day')
              

              c3453421-7f89-4ba8-bbcc-036ffb32d84f-image.png

              Hier beides nochmal zum Import:

              [
                 {
                     "id": "22257f083b3c6545",
                     "type": "inject",
                     "z": "7faa06d941e86452",
                     "name": "In Ferien",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "[{\"id\":\"f3b90493-d141-4aab-ac30-37084db988c3\",\"startDate\":\"2024-12-23\",\"endDate\":\"2025-01-10\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"5257b2de-813a-406f-9b8e-cd56586050f2\",\"startDate\":\"2025-03-03\",\"endDate\":\"2025-03-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Frühjahrsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"03cc22f2-1730-4ea4-b2dc-90d8d0f41e62\",\"startDate\":\"2025-04-14\",\"endDate\":\"2025-04-25\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Osterferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"dcda193e-7508-48e5-9da7-670a36cb3b0c\",\"startDate\":\"2025-06-10\",\"endDate\":\"2025-06-20\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Pfingstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"bc2bd00a-e716-46c3-8a27-2538c777d9bd\",\"startDate\":\"2025-08-01\",\"endDate\":\"2025-09-15\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Sommerferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"867bf086-bdaa-4642-8fcf-4fd07f45ac08\",\"startDate\":\"2025-11-03\",\"endDate\":\"2025-11-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Herbstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"cb244bdc-ddc5-48b0-a6a4-675b57facc0e\",\"startDate\":\"2025-11-19\",\"endDate\":\"2025-11-19\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Buß- und Bettag\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"fae75443-4eb3-4720-9ba2-3dcca3553820\",\"startDate\":\"2025-12-22\",\"endDate\":\"2026-01-05\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]}]",
                     "payloadType": "json",
                     "x": 200,
                     "y": 400,
                     "wires": [
                         [
                             "606c813074aba4c8"
                         ]
                     ]
                 },
                 {
                     "id": "6932187427371fb5",
                     "type": "debug",
                     "z": "7faa06d941e86452",
                     "name": "Test",
                     "active": false,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 370,
                     "y": 400,
                     "wires": []
                 },
                 {
                     "id": "2ad8f5ad99f794c2",
                     "type": "debug",
                     "z": "7faa06d941e86452",
                     "name": "Info - funktioniert nicht",
                     "active": false,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": true,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "payload",
                     "statusType": "auto",
                     "x": 760,
                     "y": 480,
                     "wires": []
                 },
                 {
                     "id": "8e380e141450fd22",
                     "type": "change",
                     "z": "7faa06d941e86452",
                     "name": "Schulferien (isSame funktioniert nicht)",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload.\t   {\t   \"Ferien\": $.name[language=\"DE\"].text,\t   \"start\": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),\t   \"end\": $moment($.endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),\t   \"payload\": (\t       $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $diff := $end.diff($start, 'days');\t       ([1..$diff])@$d.\t       {\t            \t            \"day\": $d,\t            \"date\": $moment($.startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY'),\t            \"isSame\": $moment().isSame(($moment($.startDate,'YYYY-MM-DD').add($d,'days')),'day')\t        }    \t       )\t   }\t",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 470,
                     "y": 480,
                     "wires": [
                         [
                             "2ad8f5ad99f794c2"
                         ]
                     ]
                 },
                 {
                     "id": "373fa37357dc47dc",
                     "type": "change",
                     "z": "7faa06d941e86452",
                     "name": "Schulferien (isSame funktioniert)",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload.\t   {\t   \"Ferien\": $.name[language=\"DE\"].text,\t   \"start\": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),\t   \"end\": $moment($.endDate,'YYYY-MM-DD').add(1,'days').format('DD.MM.YYYY'),\t   \"payload\": (\t       $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $diff := $end.diff($start, 'days');\t       ([1..$diff])@$d.\t       {\t            \t            \"day\": $d,\t            \"date\": $moment($.startDate,'YYYY-MM-DD').add($d,'days').format('DD.MM.YYYY'),\t            \"isSame\": $moment($.startDate,'YYYY-MM-DD').add($d,'days').isSame($moment(),'day')\t        }    \t       )\t   }\t",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 450,
                     "y": 440,
                     "wires": [
                         [
                             "f4d765c83055a46c",
                             "789380a2a83d7939"
                         ]
                     ]
                 },
                 {
                     "id": "f4d765c83055a46c",
                     "type": "debug",
                     "z": "7faa06d941e86452",
                     "name": "Info - funktioniert",
                     "active": false,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": true,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "payload",
                     "statusType": "auto",
                     "x": 710,
                     "y": 440,
                     "wires": []
                 },
                 {
                     "id": "789380a2a83d7939",
                     "type": "change",
                     "z": "7faa06d941e86452",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload.payload[isSame] ? payload.payload[isSame].%.Ferien : \"keine Ferien\"",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 730,
                     "y": 380,
                     "wires": [
                         [
                             "52160933119290b0"
                         ]
                     ]
                 },
                 {
                     "id": "52160933119290b0",
                     "type": "debug",
                     "z": "7faa06d941e86452",
                     "name": "Ferien ?",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 940,
                     "y": 380,
                     "wires": []
                 },
                 {
                     "id": "7f567627a39fae75",
                     "type": "inject",
                     "z": "7faa06d941e86452",
                     "name": "Nicht in Ferien",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "[{\"id\":\"f3b90493-d141-4aab-ac30-37084db988c3\",\"startDate\":\"2024-12-23\",\"endDate\":\"2025-01-03\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"5257b2de-813a-406f-9b8e-cd56586050f2\",\"startDate\":\"2025-03-03\",\"endDate\":\"2025-03-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Frühjahrsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"03cc22f2-1730-4ea4-b2dc-90d8d0f41e62\",\"startDate\":\"2025-04-14\",\"endDate\":\"2025-04-25\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Osterferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"dcda193e-7508-48e5-9da7-670a36cb3b0c\",\"startDate\":\"2025-06-10\",\"endDate\":\"2025-06-20\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Pfingstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"bc2bd00a-e716-46c3-8a27-2538c777d9bd\",\"startDate\":\"2025-08-01\",\"endDate\":\"2025-09-15\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Sommerferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"867bf086-bdaa-4642-8fcf-4fd07f45ac08\",\"startDate\":\"2025-11-03\",\"endDate\":\"2025-11-07\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Herbstferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"cb244bdc-ddc5-48b0-a6a4-675b57facc0e\",\"startDate\":\"2025-11-19\",\"endDate\":\"2025-11-19\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Buß- und Bettag\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]},{\"id\":\"fae75443-4eb3-4720-9ba2-3dcca3553820\",\"startDate\":\"2025-12-22\",\"endDate\":\"2026-01-05\",\"type\":\"School\",\"name\":[{\"language\":\"DE\",\"text\":\"Weihnachtsferien\"}],\"regionalScope\":\"Regional\",\"temporalScope\":\"FullDay\",\"nationwide\":false,\"subdivisions\":[{\"code\":\"DE-BY\",\"shortName\":\"BY\"}]}]",
                     "payloadType": "json",
                     "x": 190,
                     "y": 480,
                     "wires": [
                         [
                             "606c813074aba4c8"
                         ]
                     ]
                 },
                 {
                     "id": "606c813074aba4c8",
                     "type": "junction",
                     "z": "7faa06d941e86452",
                     "x": 280,
                     "y": 440,
                     "wires": [
                         [
                             "8e380e141450fd22",
                             "373fa37357dc47dc",
                             "6932187427371fb5"
                         ]
                     ]
                 }
              ]
              

              Ich bin mir allerdings nicht sicher, ob es wirklich die ganzen Ausgaben braucht. Und payload in payload ist bissi verwirrend.

              e8d54233-555f-48db-9d5b-b49fee30cab3-image.png

              letztlich langt ja die Abfrage, ob isSame irgendwo true ist.

              payload.payload[isSame] ? payload.payload[isSame].%.Ferien : "keine Ferien"
              
              M Offline
              M Offline
              MaGe
              schrieb am zuletzt editiert von
              #6

              @mickym said in JSONata loop - $moment > Invalid date?:

              Wow, herzlichen Dank für deine Unterstützung. :-)
              Die Ausgabe der Ferien auf einmal ist genial.
              Der Vergleich hätte mich fast noch zum Verzeifeln gebracht. Da war das Umrechnung wegzulassen ausschlaggebend.

              Das mit dem payload im payload ist wirklich nicht optimal.
              Bei den ersten 3 Zeilen $start, $end, $diff im payload wird in der Ausgabe des payloads nur der letzte Wert, also $diff ausgegeben.
              So wollte ich es eigentlich für $isSame auch machen. Nur habe ich es anders mit der Schleife nicht hinbekommen.

              payload.{
                 "Ferien": $.name[language="DE"].text,
                 "start": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
                 "end": $moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
                 "payload": (
                     $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                     $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                     $diff := $end.diff($start, 'days');
                     ([0..$diff])@$day.{
                         "date": $moment($.startDate,'YYYY-MM-DD').add($day,'days').format('DD.MM.YYYY'),
                         "today": $moment().format('DD.MM.YYYY'),
                         "isSame": $moment($.startDate,'YYYY-MM-DD').add($day,'days').isSame($moment(),'day')
                         }   
                     )
                 }
              

              Bei den Feiertagen funktioniert es so, dass nur ein Wert übers payload ausgegeben wird.

              [
                 {
                     "Feiertag":"Neujahr",
                     "payload": (
                         $date := $moment($moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                         $today := $moment($moment().format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                         $date.isSame($today)
                         )
              }     
              ].payload
              
              mickymM 1 Antwort Letzte Antwort
              0
              • M MaGe

                @mickym said in JSONata loop - $moment > Invalid date?:

                Wow, herzlichen Dank für deine Unterstützung. :-)
                Die Ausgabe der Ferien auf einmal ist genial.
                Der Vergleich hätte mich fast noch zum Verzeifeln gebracht. Da war das Umrechnung wegzulassen ausschlaggebend.

                Das mit dem payload im payload ist wirklich nicht optimal.
                Bei den ersten 3 Zeilen $start, $end, $diff im payload wird in der Ausgabe des payloads nur der letzte Wert, also $diff ausgegeben.
                So wollte ich es eigentlich für $isSame auch machen. Nur habe ich es anders mit der Schleife nicht hinbekommen.

                payload.{
                   "Ferien": $.name[language="DE"].text,
                   "start": $moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
                   "end": $moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),
                   "payload": (
                       $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                       $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                       $diff := $end.diff($start, 'days');
                       ([0..$diff])@$day.{
                           "date": $moment($.startDate,'YYYY-MM-DD').add($day,'days').format('DD.MM.YYYY'),
                           "today": $moment().format('DD.MM.YYYY'),
                           "isSame": $moment($.startDate,'YYYY-MM-DD').add($day,'days').isSame($moment(),'day')
                           }   
                       )
                   }
                

                Bei den Feiertagen funktioniert es so, dass nur ein Wert übers payload ausgegeben wird.

                [
                   {
                       "Feiertag":"Neujahr",
                       "payload": (
                           $date := $moment($moment(payload[0].startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                           $today := $moment($moment().format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');
                           $date.isSame($today)
                           )
                }     
                ].payload
                
                mickymM Online
                mickymM Online
                mickym
                Most Active
                schrieb am zuletzt editiert von
                #7

                @mage sagte in JSONata loop - $moment > Invalid date?:

                Der Vergleich hätte mich fast noch zum Verzeifeln gebracht. Da war das Umrechnung wegzulassen ausschlaggebend.

                Naja - ich hab doch auch tüfteln und probieren müssen. Aber manchmal macht das auch Spaß. Solche Fehler halt in den Bibliotheken, dass ein Vergleich nur in eine Richtung funktioniert muss man erst mal rausbekommen - da war ich auch schon am Verzweifeln - aber so denke ich hat man eine gute Lösung.

                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.

                M 1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @mage sagte in JSONata loop - $moment > Invalid date?:

                  Der Vergleich hätte mich fast noch zum Verzeifeln gebracht. Da war das Umrechnung wegzulassen ausschlaggebend.

                  Naja - ich hab doch auch tüfteln und probieren müssen. Aber manchmal macht das auch Spaß. Solche Fehler halt in den Bibliotheken, dass ein Vergleich nur in eine Richtung funktioniert muss man erst mal rausbekommen - da war ich auch schon am Verzweifeln - aber so denke ich hat man eine gute Lösung.

                  M Offline
                  M Offline
                  MaGe
                  schrieb am zuletzt editiert von MaGe
                  #8

                  @mickym said in JSONata loop - $moment > Invalid date?:

                  Spaß macht es auf jeden Fall. :-) Ich stoße beim tüfteln nur oft an meine Grenzen. JSONata ist für mich noch Neuland.

                  Nochmal vielen lieben Dank, dass du dich da so reingefuchst hast.

                  @mickym
                  Mein fertiger Flow für Feiertage und Schulferien zusammen:

                  [
                     {
                         "id": "2428c1679199ce79",
                         "type": "function",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Global:Feiertag",
                         "func": "msg.payload = global.get(\"Frei\");\nreturn msg;",
                         "outputs": 1,
                         "timeout": 0,
                         "noerr": 0,
                         "initialize": "",
                         "finalize": "",
                         "libs": [],
                         "x": 1740,
                         "y": 280,
                         "wires": [
                             [
                                 "16744919a414ee37"
                             ]
                         ]
                     },
                     {
                         "id": "16744919a414ee37",
                         "type": "debug",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Info",
                         "active": true,
                         "tosidebar": false,
                         "console": false,
                         "tostatus": true,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "payload",
                         "statusType": "auto",
                         "x": 1910,
                         "y": 280,
                         "wires": []
                     },
                     {
                         "id": "27a3db497b5ec5d0",
                         "type": "inject",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Abfrage",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "06 00 * * *",
                         "once": true,
                         "onceDelay": "0.5",
                         "topic": "",
                         "payload": "",
                         "payloadType": "date",
                         "x": 1560,
                         "y": 280,
                         "wires": [
                             [
                                 "2428c1679199ce79"
                             ]
                         ]
                     },
                     {
                         "id": "2873966a84096291",
                         "type": "http request",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "https request",
                         "method": "GET",
                         "ret": "obj",
                         "paytoqs": "ignore",
                         "url": "",
                         "tls": "498c6e5f.1070f",
                         "persist": false,
                         "proxy": "",
                         "insecureHTTPParser": false,
                         "authType": "basic",
                         "senderr": false,
                         "headers": [],
                         "x": 1920,
                         "y": 120,
                         "wires": [
                             [
                                 "7a7a0f91d75faecf"
                             ]
                         ]
                     },
                     {
                         "id": "98eaa50401fd8651",
                         "type": "change",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "url",
                                 "pt": "msg",
                                 "to": "payload",
                                 "tot": "msg"
                             },
                             {
                                 "t": "set",
                                 "p": "url",
                                 "pt": "msg",
                                 "to": "$.url",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 1890,
                         "y": 60,
                         "wires": [
                             [
                                 "2873966a84096291"
                             ]
                         ]
                     },
                     {
                         "id": "2b49ef7e9032ba65",
                         "type": "function",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Url",
                         "func": "msg.payload = `https://openholidaysapi.org/SchoolHolidays?countryIsoCode=DE&validFrom=${msg.payload}-01-01&validTo=${msg.payload}-12-31&languageIsoCode=DE&subdivisionCode=DE-BY`;\nreturn msg;\n\n",
                         "outputs": 1,
                         "timeout": "",
                         "noerr": 0,
                         "initialize": "",
                         "finalize": "",
                         "libs": [],
                         "x": 1710,
                         "y": 60,
                         "wires": [
                             [
                                 "98eaa50401fd8651"
                             ]
                         ]
                     },
                     {
                         "id": "668cd4c46954209e",
                         "type": "change",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Jahr",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "topic",
                                 "pt": "msg",
                                 "to": "Jahr",
                                 "tot": "str"
                             },
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "$moment().year() ",
                                 "tot": "jsonata"
                             },
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "$string(payload)",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 1710,
                         "y": 120,
                         "wires": [
                             [
                                 "2b49ef7e9032ba65"
                             ]
                         ]
                     },
                     {
                         "id": "081d12e755b9ae21",
                         "type": "inject",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Abfrage",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "05 00 * * *",
                         "once": true,
                         "onceDelay": "0.5",
                         "topic": "",
                         "payload": "",
                         "payloadType": "date",
                         "x": 1560,
                         "y": 140,
                         "wires": [
                             [
                                 "668cd4c46954209e",
                                 "ab40ce0d2f51afd7"
                             ]
                         ]
                     },
                     {
                         "id": "def42661118b4dd8",
                         "type": "change",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload.payload.isSame",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 2310,
                         "y": 120,
                         "wires": [
                             [
                                 "175999b28a5905ca"
                             ]
                         ]
                     },
                     {
                         "id": "1524c9b76d833a59",
                         "type": "http request",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "https request",
                         "method": "GET",
                         "ret": "obj",
                         "paytoqs": "ignore",
                         "url": "",
                         "tls": "498c6e5f.1070f",
                         "persist": false,
                         "proxy": "",
                         "insecureHTTPParser": false,
                         "authType": "basic",
                         "senderr": false,
                         "headers": [],
                         "x": 1920,
                         "y": 160,
                         "wires": [
                             [
                                 "ecf91cc75ee58cec"
                             ]
                         ]
                     },
                     {
                         "id": "ab40ce0d2f51afd7",
                         "type": "change",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Jahr",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "topic",
                                 "pt": "msg",
                                 "to": "Jahr",
                                 "tot": "str"
                             },
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "$moment().year() ",
                                 "tot": "jsonata"
                             },
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "$string(payload)",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 1710,
                         "y": 160,
                         "wires": [
                             [
                                 "12625be60bc8538d"
                             ]
                         ]
                     },
                     {
                         "id": "12625be60bc8538d",
                         "type": "function",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Url",
                         "func": "msg.payload = `https://openholidaysapi.org/PublicHolidays?countryIsoCode=DE&validFrom=${msg.payload}-01-01&validTo=${msg.payload}-12-31&languageIsoCode=DE&subdivisionCode=DE-BY`;\nreturn msg;",
                         "outputs": 1,
                         "timeout": "",
                         "noerr": 0,
                         "initialize": "",
                         "finalize": "",
                         "libs": [],
                         "x": 1710,
                         "y": 220,
                         "wires": [
                             [
                                 "1ffa03fb20ce426e"
                             ]
                         ]
                     },
                     {
                         "id": "1ffa03fb20ce426e",
                         "type": "change",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "url",
                                 "pt": "msg",
                                 "to": "payload",
                                 "tot": "msg"
                             },
                             {
                                 "t": "set",
                                 "p": "url",
                                 "pt": "msg",
                                 "to": "$.url",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 1890,
                         "y": 220,
                         "wires": [
                             [
                                 "1524c9b76d833a59"
                             ]
                         ]
                     },
                     {
                         "id": "ecf91cc75ee58cec",
                         "type": "change",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Feiertage",
                         "rules": [
                             {
                                 "t": "delete",
                                 "p": "headers",
                                 "pt": "msg"
                             },
                             {
                                 "t": "delete",
                                 "p": "statusCode",
                                 "pt": "msg"
                             },
                             {
                                 "t": "delete",
                                 "p": "url",
                                 "pt": "msg"
                             },
                             {
                                 "t": "delete",
                                 "p": "responseUrl",
                                 "pt": "msg"
                             },
                             {
                                 "t": "delete",
                                 "p": "retry",
                                 "pt": "msg"
                             },
                             {
                                 "t": "delete",
                                 "p": "redirectList",
                                 "pt": "msg"
                             },
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload.{\t   \"Feiertag\": $.name[language=\"DE\"].text,\t   \"payload\": (\t       $date := $moment($.startDate,'YYYY-MM-DD');\t       $today := $moment();\t       $date.isSame($today)\t   )\t   }",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 2100,
                         "y": 160,
                         "wires": [
                             [
                                 "3da676eba96a5168"
                             ]
                         ]
                     },
                     {
                         "id": "8a5a46b1a1839d84",
                         "type": "debug",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Info",
                         "active": true,
                         "tosidebar": false,
                         "console": false,
                         "tostatus": true,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "payload",
                         "statusType": "auto",
                         "x": 2990,
                         "y": 140,
                         "wires": []
                     },
                     {
                         "id": "83e59a86c8412805",
                         "type": "function",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "includes(true)",
                         "func": "const Frei = msg.payload[0] && msg.payload[1];\nmsg.payload = Frei.includes(true);\nreturn msg;",
                         "outputs": 1,
                         "timeout": "",
                         "noerr": 0,
                         "initialize": "",
                         "finalize": "",
                         "libs": [],
                         "x": 2680,
                         "y": 140,
                         "wires": [
                             [
                                 "ad9391d7ef4f1de7"
                             ]
                         ]
                     },
                     {
                         "id": "3da676eba96a5168",
                         "type": "change",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload.payload",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 2310,
                         "y": 160,
                         "wires": [
                             [
                                 "175999b28a5905ca"
                             ]
                         ]
                     },
                     {
                         "id": "175999b28a5905ca",
                         "type": "join",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "",
                         "mode": "custom",
                         "build": "array",
                         "property": "payload",
                         "propertyType": "msg",
                         "key": "topic",
                         "joiner": "\\n",
                         "joinerType": "str",
                         "accumulate": false,
                         "timeout": "",
                         "count": "2",
                         "reduceRight": false,
                         "reduceExp": "",
                         "reduceInit": "",
                         "reduceInitType": "",
                         "reduceFixup": "",
                         "x": 2510,
                         "y": 140,
                         "wires": [
                             [
                                 "83e59a86c8412805"
                             ]
                         ]
                     },
                     {
                         "id": "7a7a0f91d75faecf",
                         "type": "change",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Schulferien",
                         "rules": [
                             {
                                 "t": "delete",
                                 "p": "headers",
                                 "pt": "msg"
                             },
                             {
                                 "t": "delete",
                                 "p": "statusCode",
                                 "pt": "msg"
                             },
                             {
                                 "t": "delete",
                                 "p": "url",
                                 "pt": "msg"
                             },
                             {
                                 "t": "delete",
                                 "p": "responseUrl",
                                 "pt": "msg"
                             },
                             {
                                 "t": "delete",
                                 "p": "retry",
                                 "pt": "msg"
                             },
                             {
                                 "t": "delete",
                                 "p": "redirectList",
                                 "pt": "msg"
                             },
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload.{\t   \"Schulferien\": $.name[language=\"DE\"].text,\t   \"payload\": (\t       $start := $moment($moment($.startDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $end := $moment($moment($.endDate,'YYYY-MM-DD').format('DD.MM.YYYY'),['DD.MM.YYYY','x'],'de');\t       $diff := $end.diff($start, 'days');\t       ([0..$diff])@$day.{\t           \"date\": $moment($.startDate,'YYYY-MM-DD').add($day,'days').format('DD.MM.YYYY'),\t           \"today\": $moment().format('DD.MM.YYYY'),\t           \"isSame\": $moment($.startDate,'YYYY-MM-DD').add($day,'days').isSame($moment(),'days')\t           }   \t       )\t   }",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 2110,
                         "y": 120,
                         "wires": [
                             [
                                 "def42661118b4dd8"
                             ]
                         ]
                     },
                     {
                         "id": "ad9391d7ef4f1de7",
                         "type": "change",
                         "z": "2a5d5250.f178be",
                         "g": "d7ab92de65468601",
                         "name": "Frei",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "topic",
                                 "pt": "msg",
                                 "to": "Frei",
                                 "tot": "str"
                             },
                             {
                                 "t": "set",
                                 "p": "Frei",
                                 "pt": "global",
                                 "to": "payload",
                                 "tot": "msg"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 2850,
                         "y": 140,
                         "wires": [
                             [
                                 "8a5a46b1a1839d84"
                             ]
                         ]
                     },
                     {
                         "id": "498c6e5f.1070f",
                         "type": "tls-config",
                         "name": "",
                         "cert": "",
                         "key": "",
                         "ca": "",
                         "certname": "",
                         "keyname": "",
                         "caname": "",
                         "servername": "",
                         "verifyservercert": false,
                         "alpnprotocol": ""
                     }
                  ]
                  

                  flow_Schulferien_5.jpg

                  Nebenbei. Ist absolut erstaunlich wie enorm man einen Flow verschlanken kann.

                  1. Flow für die Feiertage:
                    flow_Feiertage.jpg
                  2. Flow für die Feiertage:
                    flow_Feiertage_1.jpg

                  Und der absolute Wahnsinn war das Abrufen auf einmal.
                  Dadurch redziert sich alleine bei den Feiertagen das JSONata von 106 auf 8 Zeilen in der change-node. :-)

                  1 Antwort Letzte Antwort
                  1
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  567

                  Online

                  32.4k

                  Benutzer

                  81.4k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  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