Skip to content

A flexible scheduler node for Node-RED (featuring full dynamic control, sunrise/sunset by location and Timezone support)

License

Notifications You must be signed in to change notification settings

Steve-Mcl/node-red-contrib-cron-plus

Repository files navigation

node-red-contrib-cron-plus

A flexible timer/scheduler (cron, solar events, simple dates) node for Node-RED with full dynamic control and time zone support

QUICK DEMO...

cron-demo

FEATURES

  • Schedule by CRON, date sequences and solar events (with offset)
    • A human readable description of your expression is provided as you type.
    • cron-tt
    • An Easy Expression Builder to aid cron novices
    • easy-expr-builder
  • Multiple schedules can be entered by the node editor UI or dynamically at runtime
  • Send a default payload or any of the following: timestamp, string, number, boolean, flow variable, global variable, JSON, JSONata, Buffer or Env variable as the output.
  • Example CRON expressions provided in the dropdown to get you started
  • Map popup to help you enter coordinates for solar events
    • Location coordinates can be per schedule, per cron node or set by an environment variable (as of V2.0.0)
    • NOTE: Map is 100% CDN dynamic and requires and internet connection. If there is no internet, the popup will provide information to help you get location coordinates from another source
    • cron-plus-map
  • Option to separate command responses from output 1 to separate 2nd output
  • Fan out option to separate each static schedule to its own output (dynamic and command responses are sent on last 2 output pins) (as of V1.4.0)
  • Settable output variable (normally msg.payload but it is up to you)
  • Inject-like button to fire the node (available when only one schedule is added)
  • View dynamically created schedules in the node editor UI (updated in V2.0.0)
  • Additional info about the triggered schedule is always sent in the output message in msg.cronplus
    • NOTE: if the payload is to "Default Payload", then the content of msg.cronplus is moved to msg.payload
  • Node status updates to show the next event
    • NOTE: the status indicator will be shown as a "ring" for dynamic schedules or shown as a "dot" for static schedules
  • Full flexibility & dynamic control.
    • Ability to control via simple topic commands. Examples include...
      • remove, remove-all, remove-all-dynamic, remove-all-static, remove-active, remove-active-dynamic, remove-active-static, remove-inactive, remove-inactive-dynamic, remove-inactive-static
      • list, list-all, list-all-dynamic, list-all-static, list-active, list-active-dynamic, list-active-static, list-inactive, list-inactive-dynamic, list-inactive-static
      • export, export-all, export-all-dynamic, export-all-static, export-active, export-active-dynamic, export-active-static, export-inactive, export-inactive-dynamic, export-inactive-static
      • status, status-all, status-all-dynamic, status-all-static, status-active, status-active-dynamic, status-active-static, status-inactive, status-inactive-dynamic, status-inactive-static
      • stop, stop-all, stop-all-dynamic, stop-all-static
      • start, start-all, start-all-dynamic, start-all-static
      • pause, pause-all, pause-all-dynamic, pause-all-static
      • next (as of v2.0.0)
    • Ability to add, remove, list, export, stop, start, pause schedules by a command payload input. Examples include...
      • add - add one or more dynamic schedules
      • describe - describe solar events or cron expression (without the need to add a schedule)
  • Persist schedules and state
    • In local file system (default)
    • In memory or persistent context (as of V2.0.0)
    • Persist state of schedules (as of V2.0.0) (i.e. if a schedule is paused, it will remain paused after a restart)
  • Recognises system clock changes and recalculates schedules
    • change detection can now be customised by adding an entry in settings.js or an environment variable named CRONPLUS_MAX_CLOCK_DIFF (as of V2.0.0)
  • Demo flows demonstrating many of the capabilities. Import via node-red menu > import > examples.
  • Optional time zone setting supporting UTC and Region/Area (e.g. Europe/London)

Install

  • Easiest...

    Use the Manage Palette > Install option from the menu inside node-red

  • Harder...

    Alternatively in your Node-RED user directory, typically ~/.node-red, run Run the following command in the root directory of your Node-RED install. (Usually this is ~/.node-red or %userprofile%\.node-red).

    Install from NPM

    npm install node-red-contrib-cron-plus
    

    Install from GIT

    npm install Steve-Mcl/node-red-contrib-cron-plus
    

    Alternatively, install from a folder

    npm install c:/tempfolder/node-red-contrib-cron-plus
    

    Or simply copy the folder node-red-contrib-cron-plus into a folder named nodes inside your node-red folder then cd into nodes/node-red-contrib-cron-plus and execute npm install

Acknowledgements

Dependencies