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

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Inject am ersten/letzten Tag des Monats

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Inject am ersten/letzten Tag des Monats

Geplant Angeheftet Gesperrt Verschoben Node-Red
10 Beiträge 4 Kommentatoren 1.3k Aufrufe 3 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.
  • H Offline
    H Offline
    hpgo
    schrieb am zuletzt editiert von
    #1

    Wie der Titel sagt suche ich nach einer Möglichkeit (für Smartmeter) einen inject am ersten und am Letzten des Monats auszulösen.
    Klingt erstmal einfach, am Monatsbeginn auch kein Problem mit der simpletime node aber der letzte Tag im Monat kann ja der 30. der 31. der 28. Feb oder auch der 29. Feb sein.

    Jemand eine Idee, wie das am schnellsten/einfachsten umsetzbar ist?
    Danke und Lg

    HomoranH 1 Antwort Letzte Antwort
    0
    • H hpgo

      Wie der Titel sagt suche ich nach einer Möglichkeit (für Smartmeter) einen inject am ersten und am Letzten des Monats auszulösen.
      Klingt erstmal einfach, am Monatsbeginn auch kein Problem mit der simpletime node aber der letzte Tag im Monat kann ja der 30. der 31. der 28. Feb oder auch der 29. Feb sein.

      Jemand eine Idee, wie das am schnellsten/einfachsten umsetzbar ist?
      Danke und Lg

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @hpgo sagte in Inject am ersten/letzten Tag des Monats:

      Jemand eine Idee, wie das am schnellsten/einfachsten umsetzbar ist?

      ja! Aber leider nicht mit node red.
      du musst einfach prüfen was in x Millisekunden am nächsten Tag für ein Tag im Datum steht.
      ist es eine 1 ist aktuell der letzte des aktuellen Monats

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      H 1 Antwort Letzte Antwort
      0
      • HomoranH Homoran

        @hpgo sagte in Inject am ersten/letzten Tag des Monats:

        Jemand eine Idee, wie das am schnellsten/einfachsten umsetzbar ist?

        ja! Aber leider nicht mit node red.
        du musst einfach prüfen was in x Millisekunden am nächsten Tag für ein Tag im Datum steht.
        ist es eine 1 ist aktuell der letzte des aktuellen Monats

        H Offline
        H Offline
        hpgo
        schrieb am zuletzt editiert von hpgo
        #3

        Danke für den Vorschlag, wie ich das Umsetzen werde/soll weiß ich jetzt nicht - ich lese mir mal das wiki der simpletime Node genauer durch, vlt kann man da schon iwie angezeigt bekommen was morgen für ein Tag sein wird und deinen Vorschlag umsetzen.

        Lg

        mickymM 1 Antwort Letzte Antwort
        -1
        • H hpgo

          Danke für den Vorschlag, wie ich das Umsetzen werde/soll weiß ich jetzt nicht - ich lese mir mal das wiki der simpletime Node genauer durch, vlt kann man da schon iwie angezeigt bekommen was morgen für ein Tag sein wird und deinen Vorschlag umsetzen.

          Lg

          mickymM Offline
          mickymM Offline
          mickym
          Most Active
          schrieb am zuletzt editiert von mickym
          #4

          @hpgo Anstelle von 1000 Zeit Node - nimm die Cronplus Node.

          Die cronplus Node - kann alle Zeitnodes ersetzen. Gibt nur wenige die man da noch brauchst. Diese kann ich Dir empfehlen - wobei man wie man unten sieht - auch mit Standardnodes machen kann. Aber die cronplus Node ist wirklich eine der Besten.

          058e097c-e081-479a-9ba8-9a1fcaa8e385-image.png

          932742fb-6449-4982-9381-2e4bc5e0af38-image.png

          [
             {
                 "id": "139eaefe163a3c90",
                 "type": "cronplus",
                 "z": "54b226bc.0793e8",
                 "name": "",
                 "outputField": "payload",
                 "timeZone": "",
                 "persistDynamic": false,
                 "commandResponseMsgOutput": "output1",
                 "outputs": 1,
                 "options": [
                     {
                         "name": "schedule1",
                         "topic": "topic1",
                         "payloadType": "str",
                         "payload": "Monatserster oder Monatsletzter",
                         "expressionType": "cron",
                         "expression": "0 0 0 1,L * * *",
                         "location": "",
                         "offset": "0",
                         "solarType": "all",
                         "solarEvents": "sunrise,sunset"
                     }
                 ],
                 "x": 740,
                 "y": 3820,
                 "wires": [
                     [
                         "9352559182085679"
                     ]
                 ]
             },
             {
                 "id": "9352559182085679",
                 "type": "debug",
                 "z": "54b226bc.0793e8",
                 "name": "debug 1",
                 "active": true,
                 "tosidebar": true,
                 "console": false,
                 "tostatus": false,
                 "complete": "false",
                 "statusVal": "",
                 "statusType": "auto",
                 "x": 900,
                 "y": 3820,
                 "wires": []
             }
          ]
          

          Es geht aber auch ohne irgendwelche zustätzlichen Nodes mit Standardmitteln.

          Du kannst einfach täglich zum irgendeiner Zeit die Inject Node triggern und dann halt wie üblich mit einer Switch Node nur die richtigen Tage herausfiltern.

          de98dd33-68cf-49e0-b948-71611fa462d1-image.png
          51c58289-1943-4976-a08c-705f4521ec29-image.png

          [
              {
                  "id": "b33f844a1ce99b65",
                  "type": "inject",
                  "z": "54b226bc.0793e8",
                  "name": "",
                  "props": [
                      {
                          "p": "trigger",
                          "v": "true",
                          "vt": "bool"
                      }
                  ],
                  "repeat": "",
                  "crontab": "00 00 * * *",
                  "once": false,
                  "onceDelay": 0.1,
                  "topic": "",
                  "x": 650,
                  "y": 4200,
                  "wires": [
                      [
                          "17ff8c212366fbf5"
                      ]
                  ]
              },
              {
                  "id": "17ff8c212366fbf5",
                  "type": "switch",
                  "z": "54b226bc.0793e8",
                  "name": "",
                  "property": "$moment().format('D')\t",
                  "propertyType": "jsonata",
                  "rules": [
                      {
                          "t": "eq",
                          "v": "1",
                          "vt": "str"
                      },
                      {
                          "t": "eq",
                          "v": "$moment().endOf('month').format('D')\t",
                          "vt": "jsonata"
                      }
                  ],
                  "checkall": "true",
                  "repair": false,
                  "outputs": 2,
                  "x": 810,
                  "y": 4200,
                  "wires": [
                      [
                          "4b90b6be6bc7b518"
                      ],
                      [
                          "d3f1ed412003e94c"
                      ]
                  ],
                  "outputLabels": [
                      "Monatserster",
                      "Monatsletzter"
                  ]
              },
              {
                  "id": "4b90b6be6bc7b518",
                  "type": "debug",
                  "z": "54b226bc.0793e8",
                  "name": "ist Monatserster",
                  "active": true,
                  "tosidebar": true,
                  "console": false,
                  "tostatus": false,
                  "complete": "payload",
                  "targetType": "msg",
                  "statusVal": "",
                  "statusType": "auto",
                  "x": 1020,
                  "y": 4180,
                  "wires": []
              },
              {
                  "id": "d3f1ed412003e94c",
                  "type": "debug",
                  "z": "54b226bc.0793e8",
                  "name": "ist Monatsletzter",
                  "active": true,
                  "tosidebar": true,
                  "console": false,
                  "tostatus": false,
                  "complete": "payload",
                  "targetType": "msg",
                  "statusVal": "",
                  "statusType": "auto",
                  "x": 1020,
                  "y": 4220,
                  "wires": []
              }
          ]
          

          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.

          H 1 Antwort Letzte Antwort
          1
          • mickymM mickym

            @hpgo Anstelle von 1000 Zeit Node - nimm die Cronplus Node.

            Die cronplus Node - kann alle Zeitnodes ersetzen. Gibt nur wenige die man da noch brauchst. Diese kann ich Dir empfehlen - wobei man wie man unten sieht - auch mit Standardnodes machen kann. Aber die cronplus Node ist wirklich eine der Besten.

            058e097c-e081-479a-9ba8-9a1fcaa8e385-image.png

            932742fb-6449-4982-9381-2e4bc5e0af38-image.png

            [
               {
                   "id": "139eaefe163a3c90",
                   "type": "cronplus",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "outputField": "payload",
                   "timeZone": "",
                   "persistDynamic": false,
                   "commandResponseMsgOutput": "output1",
                   "outputs": 1,
                   "options": [
                       {
                           "name": "schedule1",
                           "topic": "topic1",
                           "payloadType": "str",
                           "payload": "Monatserster oder Monatsletzter",
                           "expressionType": "cron",
                           "expression": "0 0 0 1,L * * *",
                           "location": "",
                           "offset": "0",
                           "solarType": "all",
                           "solarEvents": "sunrise,sunset"
                       }
                   ],
                   "x": 740,
                   "y": 3820,
                   "wires": [
                       [
                           "9352559182085679"
                       ]
                   ]
               },
               {
                   "id": "9352559182085679",
                   "type": "debug",
                   "z": "54b226bc.0793e8",
                   "name": "debug 1",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "false",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 900,
                   "y": 3820,
                   "wires": []
               }
            ]
            

            Es geht aber auch ohne irgendwelche zustätzlichen Nodes mit Standardmitteln.

            Du kannst einfach täglich zum irgendeiner Zeit die Inject Node triggern und dann halt wie üblich mit einer Switch Node nur die richtigen Tage herausfiltern.

            de98dd33-68cf-49e0-b948-71611fa462d1-image.png
            51c58289-1943-4976-a08c-705f4521ec29-image.png

            [
                {
                    "id": "b33f844a1ce99b65",
                    "type": "inject",
                    "z": "54b226bc.0793e8",
                    "name": "",
                    "props": [
                        {
                            "p": "trigger",
                            "v": "true",
                            "vt": "bool"
                        }
                    ],
                    "repeat": "",
                    "crontab": "00 00 * * *",
                    "once": false,
                    "onceDelay": 0.1,
                    "topic": "",
                    "x": 650,
                    "y": 4200,
                    "wires": [
                        [
                            "17ff8c212366fbf5"
                        ]
                    ]
                },
                {
                    "id": "17ff8c212366fbf5",
                    "type": "switch",
                    "z": "54b226bc.0793e8",
                    "name": "",
                    "property": "$moment().format('D')\t",
                    "propertyType": "jsonata",
                    "rules": [
                        {
                            "t": "eq",
                            "v": "1",
                            "vt": "str"
                        },
                        {
                            "t": "eq",
                            "v": "$moment().endOf('month').format('D')\t",
                            "vt": "jsonata"
                        }
                    ],
                    "checkall": "true",
                    "repair": false,
                    "outputs": 2,
                    "x": 810,
                    "y": 4200,
                    "wires": [
                        [
                            "4b90b6be6bc7b518"
                        ],
                        [
                            "d3f1ed412003e94c"
                        ]
                    ],
                    "outputLabels": [
                        "Monatserster",
                        "Monatsletzter"
                    ]
                },
                {
                    "id": "4b90b6be6bc7b518",
                    "type": "debug",
                    "z": "54b226bc.0793e8",
                    "name": "ist Monatserster",
                    "active": true,
                    "tosidebar": true,
                    "console": false,
                    "tostatus": false,
                    "complete": "payload",
                    "targetType": "msg",
                    "statusVal": "",
                    "statusType": "auto",
                    "x": 1020,
                    "y": 4180,
                    "wires": []
                },
                {
                    "id": "d3f1ed412003e94c",
                    "type": "debug",
                    "z": "54b226bc.0793e8",
                    "name": "ist Monatsletzter",
                    "active": true,
                    "tosidebar": true,
                    "console": false,
                    "tostatus": false,
                    "complete": "payload",
                    "targetType": "msg",
                    "statusVal": "",
                    "statusType": "auto",
                    "x": 1020,
                    "y": 4220,
                    "wires": []
                }
            ]
            

            H Offline
            H Offline
            hpgo
            schrieb am zuletzt editiert von hpgo
            #5

            @mickym
            Vielen Dank, das ist genau, was ich gesucht habe.
            Wie kommt man auf 0 0 0 1,L * * * in der Cronplus Node um am Monatsersten und Monatsletzten ein inject bekommt? Wird das irgendwo erstellt?

            Danke und Lg

            H mickymM 2 Antworten Letzte Antwort
            0
            • H hpgo

              @mickym
              Vielen Dank, das ist genau, was ich gesucht habe.
              Wie kommt man auf 0 0 0 1,L * * * in der Cronplus Node um am Monatsersten und Monatsletzten ein inject bekommt? Wird das irgendwo erstellt?

              Danke und Lg

              H Offline
              H Offline
              hpgo
              schrieb am zuletzt editiert von hpgo
              #6

              Sorry - bitte löschen wenn möglich!

              1 Antwort Letzte Antwort
              0
              • H hpgo

                @mickym
                Vielen Dank, das ist genau, was ich gesucht habe.
                Wie kommt man auf 0 0 0 1,L * * * in der Cronplus Node um am Monatsersten und Monatsletzten ein inject bekommt? Wird das irgendwo erstellt?

                Danke und Lg

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von
                #7

                @hpgo sagte in Inject am ersten/letzten Tag des Monats:

                Wie kommt man auf 0 0 0 1,L * * * in der Cronplus Node um am Monatsersten und Monatsletzten ein inject bekommt? Wird das irgendwo erstellt?

                Ich glaube ich verstehe die Frage nicht? Das musst Du halt so in die Node eintragen bzw. konfigurieren.

                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.

                H 1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @hpgo sagte in Inject am ersten/letzten Tag des Monats:

                  Wie kommt man auf 0 0 0 1,L * * * in der Cronplus Node um am Monatsersten und Monatsletzten ein inject bekommt? Wird das irgendwo erstellt?

                  Ich glaube ich verstehe die Frage nicht? Das musst Du halt so in die Node eintragen bzw. konfigurieren.

                  H Offline
                  H Offline
                  hpgo
                  schrieb am zuletzt editiert von
                  #8

                  Danke, hab ich in der Infobox der cronplus Node entdeckt das mit Minute Stunde, Monat, usw....
                  Wäre zwar nie auf das 0 0 0 1,L * * * gekommen - danke dafür.

                  Jetzt hab ich allerdings noch ein Problem, es soll ja der Monatsverbrauch berechnet und gespeichert werden, damit ich zu Jahresende auch den Jahresverbrauch berechnen kann. dazu würde ich sowas wie einen switch benötigen der mir den payload "Monatsbeginn und Monatsende" auf die jeweiligen Monate aufteilet.
                  Vlt hat dazu jemand noch eine tolle Idee.

                  Danke

                  CodierknechtC mickymM 2 Antworten Letzte Antwort
                  0
                  • H hpgo

                    Danke, hab ich in der Infobox der cronplus Node entdeckt das mit Minute Stunde, Monat, usw....
                    Wäre zwar nie auf das 0 0 0 1,L * * * gekommen - danke dafür.

                    Jetzt hab ich allerdings noch ein Problem, es soll ja der Monatsverbrauch berechnet und gespeichert werden, damit ich zu Jahresende auch den Jahresverbrauch berechnen kann. dazu würde ich sowas wie einen switch benötigen der mir den payload "Monatsbeginn und Monatsende" auf die jeweiligen Monate aufteilet.
                    Vlt hat dazu jemand noch eine tolle Idee.

                    Danke

                    CodierknechtC Offline
                    CodierknechtC Offline
                    Codierknecht
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #9

                    @hpgo
                    Du könntest natürlich auch den Adapter "SourceAnalytics" verwenden.
                    Der ist genau dafür gemacht, Verbräuche zu erfassen. Tag, Woche, Monat, Quartal, Jahr ... alles kein Problem.

                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                    HmIP|ZigBee|Tasmota|Unifi
                    Zabbix Certified Specialist
                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                    1 Antwort Letzte Antwort
                    0
                    • H hpgo

                      Danke, hab ich in der Infobox der cronplus Node entdeckt das mit Minute Stunde, Monat, usw....
                      Wäre zwar nie auf das 0 0 0 1,L * * * gekommen - danke dafür.

                      Jetzt hab ich allerdings noch ein Problem, es soll ja der Monatsverbrauch berechnet und gespeichert werden, damit ich zu Jahresende auch den Jahresverbrauch berechnen kann. dazu würde ich sowas wie einen switch benötigen der mir den payload "Monatsbeginn und Monatsende" auf die jeweiligen Monate aufteilet.
                      Vlt hat dazu jemand noch eine tolle Idee.

                      Danke

                      mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #10

                      @hpgo Also erstens würde ich dann nur einen Trigger nehmen - entweder zu Monatsbeginn oder zu Monatsende und dann einfach die Differenz berechnen. (das mit den 2 Trigger am Monatsende und Monatsanfang macht doch keinen Sinn).

                      Wenn Du am Monatsersten um 00:00:00 triggerst, dann ist doch automatisch das Ende der vergangen Periode - bis dahin enthalten. Was hast Du den davon, dass Du am Monatsletzten um 23:59:59 nochmal triggerst. Was soll denn in der 1 sek. passiert sein bzw. würde erst recht für einen Trigger sprechen.

                      Wenn der Trigger am 1. jeden Monats läuft - dann kannst Du doch einfach die Differenz zum Vormonat nehmen, da brauchst Du doch keinen Trigger mehr am Monatsletzten?

                      Ich halte das mit 2 Triggern für Blödsinn.

                      So und die payload und das topic kannst Du doch alles konfigurieren. Wenn Du 2 trigger machst und die im topic unterscheidest. Zudem kannst Du auch die Default payload belassen.

                      Hier sind 2 Scheduler in einer cron Node definiert und über topic kannst Du entscheiden (in einem Switch) ob der last oder first Scheduler aktiv war.

                      f362bbc8-279c-466e-bbab-6ff129f964e5-image.png

                      Wenn Du dann noch die payload auf Standard belässt - dann hast ewig viel Information.

                      {
                        "triggerTimestamp": 1666614240000,
                        "status": {
                          "type": "static",
                          "modified": false,
                          "isRunning": true,
                          "count": 1,
                          "limit": 0,
                          "nextDescription": "in 59 seconds",
                          "nextDate": "2022-10-24T12:25:00.000Z",
                          "nextDateTZ": "24. Okt. 2022, 14:25:00 MESZ",
                          "timeZone": "Europe/Berlin",
                          "serverTime": "2022-10-24T12:24:00.022Z",
                          "serverTimeZone": "Europe/Berlin",
                          "description": "Every minute"
                        },
                        "config": {
                          "topic": "topic3",
                          "name": "schedule3",
                          "payloadType": "default",
                          "payload": "",
                          "limit": null,
                          "expressionType": "cron",
                          "expression": "0 * * * * * *"
                        }
                      }
                      

                      Aus der Standardpayload bekommst Du das Datum, wann getriggert wurde als timestamp oder als Datum (serverTime) alles raus.

                      Du kannst die payload natürlich auch nach Deinem Geschmack anpassen:

                      dfd7a2d7-6b2d-40a6-9d62-e88d74d7939b-image.png

                      "Beginn Monat: " & $moment().locale("de").tz('Europe/Berlin').format('MMMM YYYY')	
                      

                      bzw.

                      "Ende Monat: " & $moment().locale("de").tz('Europe/Berlin').format('MMMM YYYY')	
                      

                      mit dem entsprechenden Topic - bekommst Du dann halt das als Ausgabe:

                      b8e23a28-2159-4874-a149-dfbcd0685860-image.png

                      Die Kombinationen sind unendlich. ;)

                      ABER:
                      Aber wie gesagt, ich würde einfach nur EINEN Trigger am Monatsersten um 0:00 nehmen und dann die Differenz vom Vormonat

                      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
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      544

                      Online

                      32.6k

                      Benutzer

                      82.1k

                      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