NEWS
Inject am ersten/letzten Tag des Monats
-
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 -
@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 -
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
-
@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.
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.
-
@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
-
Sorry - bitte löschen wenn möglich!
-
@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.
-
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
-
@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. -
@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.
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:
"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:
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