Enter time on Dashboard and get event trigger in node-red

Hello Folks,
I am trying to set my UI to have a time picker to trigger something.
Dashboard will have two dropdown menu. one for hour and one for minute (I don't think there is any other way on dashboard. If there is, I would really like to know).
So when I set the time from Dashboard, is there a way to set a trigger? I installed the bigtimer but I don't think it accepts any "specific time" input.
Thank you for your help.

You can do this with cron-plus node.

There is even a dashboard demo in the built in importable flows (node-red menu, import, examples)

The demo does it with a Cron input but you could swap this out for a date and time entry field.

UPDATE...
Here is an example...

the flow...

[{"id":"5e57cc8a.617d44","type":"change","z":"d391a194.5dc1d","name":"","rules":[{"t":"set","p":"ui_add_schedule_name","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":140,"wires":[[]]},{"id":"74778486.af6e7c","type":"change","z":"d391a194.5dc1d","name":"","rules":[{"t":"set","p":"ui_add_schedule_payload","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":180,"wires":[[]]},{"id":"72bd34b1.c8162c","type":"change","z":"d391a194.5dc1d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{}","tot":"json"},{"t":"set","p":"payload.command","pt":"msg","to":"add","tot":"str"},{"t":"set","p":"payload.payload","pt":"msg","to":"ui_add_schedule_payload","tot":"flow"},{"t":"set","p":"payload.name","pt":"msg","to":"ui_add_schedule_name","tot":"flow"},{"t":"set","p":"payload.date","pt":"msg","to":"ui_add_date","tot":"flow"},{"t":"set","p":"payload.time","pt":"msg","to":"ui_add_time","tot":"flow"},{"t":"set","p":"payload.payloadType","pt":"msg","to":"str","tot":"str"},{"t":"set","p":"payload.expressionType","pt":"msg","to":"dates","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":320,"wires":[["686860b9.e1d42"]]},{"id":"6c229cd6.643c94","type":"cronplus","z":"d391a194.5dc1d","name":"dyn schedules","outputField":"payload","timeZone":"","persistDynamic":true,"commandResponseMsgOutput":"output2","outputs":2,"options":[],"x":840,"y":360,"wires":[["602e7fbf.07c51"],["92d24e00.56bc6"]]},{"id":"59b93e8e.f37a3","type":"ui_toast","z":"d391a194.5dc1d","position":"top right","displayTime":"3","highlight":"","sendall":true,"outputs":0,"ok":"OK","cancel":"","topic":"","name":"","x":860,"y":540,"wires":[]},{"id":"8a25097f.f33ee8","type":"catch","z":"d391a194.5dc1d","name":"","scope":null,"uncaught":false,"x":180,"y":540,"wires":[["d8f45016.f727c","b1ff4896.e38c98"]]},{"id":"d8f45016.f727c","type":"ui_toast","z":"d391a194.5dc1d","position":"top right","displayTime":"3","highlight":"red","outputs":0,"ok":"OK","cancel":"","topic":"Error...","name":"","x":380,"y":540,"wires":[]},{"id":"572c480c.a34428","type":"ui_button","z":"d391a194.5dc1d","name":"Refresh","group":"73b98bf4.e404f4","order":6,"width":"1","height":"1","passthru":true,"label":"","tooltip":"Get status of jobs","color":"","bgcolor":"","icon":"fa-refresh","payload":"","payloadType":"date","topic":"list-all","x":600,"y":400,"wires":[["6c229cd6.643c94"]]},{"id":"7f1b19e2.0770e8","type":"ui_text_input","z":"d391a194.5dc1d","name":"","label":"Name","tooltip":"Schedule Name","group":"73b98bf4.e404f4","order":2,"width":"3","height":"1","passthru":false,"mode":"text","delay":"100","topic":"","x":170,"y":140,"wires":[["5e57cc8a.617d44"]]},{"id":"9ef7e36d.e2552","type":"ui_button","z":"d391a194.5dc1d","name":"","group":"73b98bf4.e404f4","order":5,"width":"3","height":"1","passthru":false,"label":"Add","tooltip":"Add or update named schedule","color":"","bgcolor":"","icon":"send","payload":"","payloadType":"str","topic":"","x":170,"y":320,"wires":[["72bd34b1.c8162c"]]},{"id":"54101ca.55d61e4","type":"ui_text_input","z":"d391a194.5dc1d","name":"","label":"Payload","tooltip":"Payload to send when schedule fires","group":"73b98bf4.e404f4","order":4,"width":"3","height":"1","passthru":false,"mode":"text","delay":"100","topic":"","x":180,"y":180,"wires":[["74778486.af6e7c"]]},{"id":"6867bde8.39bd74","type":"ui_template","z":"d391a194.5dc1d","group":"73b98bf4.e404f4","name":"","order":7,"width":"16","height":"5","format":"<style type=\"text/css\">\n.t1  {border-collapse:collapse;border-spacing:0;border-color:#ccc;}\n.t1 td{font-family:Arial, sans-serif;font-size:14px;padding:8px 3px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-top-width:1px;border-bottom-width:1px;border-color:#ccc;color:#333;background-color:#fff;}\n.t1 th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;}\n.t1 .t1-36r9{background-color:#000000;color:#ffffff;text-align:left;vertical-align:top}\n.t1 .t1-x2zo{background-color:#c0c0c0;font-size:small;text-align:left;vertical-align:top}\n.t1 .t1-o73e{background-color:#c0c0c0;font-size:small;text-align:center;vertical-align:top}\n.t1 .t1-5qt9{font-size:small;text-align:left;vertical-align:top}\n.t1 .t1-5qta{font-size:small;text-align:center;vertical-align:middle}\n</style>\n<table class=\"t1\">\n  <tr>\n    <th class=\"t1-36r9\" colspan=\"9\">CRON Schedules</th>\n  </tr>\n  <tr>\n    <td class=\"t1-x2zo\">Name</td>\n    <td class=\"t1-x2zo\">Expression</td>\n    <td class=\"t1-x2zo\">Payload</td>\n    <td class=\"t1-x2zo\">Description</td>\n    <td class=\"t1-x2zo\">Next run</td>\n    <td class=\"t1-x2zo\">State</td>\n    <td class=\"t1-o73e\">Delete</td>\n    <td class=\"t1-o73e\">Pause</td>\n    <td class=\"t1-o73e\">Resume</td>\n  </tr>\n  <tr  ng-repeat=\"item in msg.payload\">\n    <td class=\"t1-5qt9\">{{item.config.name}}</td>\n    <td class=\"t1-5qt9\" style=\"white-space: nowrap\" nowrap>{{item.config.expression}}</td>\n    <td class=\"t1-5qt9\">{{item.config.payload}}</td>\n    <td class=\"t1-5qt9\">{{item.status.description}}</td>\n    <td class=\"t1-5qt9\">{{item.status.nextDescription}}</td>\n    <td class=\"t1-5qta\"><i class=\"fa fa-{{item.status.isRunning ? 'play' : 'pause'}}\"> </i></td>\n\n   <td class=\"t1-5qta\">\n       <md-button class=\"md-raised\"\n        ng-click=\"send([[{payload:{command:'remove', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-trash\"> </i></md-button>\n   </td>\n   <td class=\"t1-5qta\">\n       <md-button class=\"button\" \n       ng-click=\"send([[{payload:{command:'pause', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-pause\"> </i></md-button>\n   </td>\n   <td class=\"t1-5qta\">\n       <md-button class=\"button\" \n       ng-click=\"send([[{payload:{command:'start', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-play\"> </i></md-button>\n   </td>\n\n  </tr>\n\n </tbody>\n</table>\n\n<!--<table id=\"table\" class=\"table table-striped table-responsive-md btn-table\" >-->\n<!--     <tr>-->\n<!--        <th>Name</th> -->\n<!--        <th>Expression</th> -->\n<!--        <th>Payload</th> -->\n<!--        <th>Description</th>-->\n<!--        <th>Next run</th>-->\n<!--        <th>State</th>-->\n<!--        <th>Delete</th>-->\n<!--        <th>Pause</th>-->\n<!--        <th>Resume</th>-->\n<!-- </tr>-->\n<!-- <tbody>-->\n<!-- <tr ng-repeat=\"item in msg.payload\">-->\n<!--   <td >{{item.config.name}}</td>-->\n<!--   <td style=\"white-space: nowrap\" nowrap>{{item.config.expression}}</td>-->\n<!--   <td >{{item.config.payload}}</td>-->\n<!--   <td >{{item.status.description}}</td>-->\n<!--   <td >{{item.status.nextDescription}}</td>-->\n<!--   <td >{{item.status.isRunning ? 'Running' : 'Paused'}}</td>-->\n<!--   <td>-->\n<!--       <md-button class=\"md-raised\"-->\n<!--        ng-click=\"send([[{payload:{command:'remove', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-trash\"> </i></md-button>-->\n<!--   </td>-->\n<!--   <td>-->\n<!--       <md-button class=\"button\" -->\n<!--       ng-click=\"send([[{payload:{command:'pause', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-pause\"> </i></md-button>-->\n<!--   </td>-->\n<!--   <td>-->\n<!--       <md-button class=\"button\" -->\n<!--       ng-click=\"send([[{payload:{command:'start', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-play\"> </i></md-button>-->\n<!--   </td>-->\n<!-- </tr>-->\n<!-- </tbody>-->\n<!--</table>-->\n\n","storeOutMessages":false,"fwdInMessages":false,"resendOnRefresh":false,"templateScope":"local","x":680,"y":480,"wires":[["6c229cd6.643c94"]]},{"id":"92d24e00.56bc6","type":"function","z":"d391a194.5dc1d","name":"Make table data","func":"if(!msg.payload || !msg.payload.result || !msg.payload.result.length){\n    msg.payload = [];\n    return msg;\n}\n\nmsg.payload = msg.payload.result;\nreturn msg;","outputs":1,"noerr":0,"x":500,"y":480,"wires":[["6867bde8.39bd74"]]},{"id":"b1ff4896.e38c98","type":"debug","z":"d391a194.5dc1d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":350,"y":580,"wires":[]},{"id":"e6c74b8b.edf768","type":"link in","z":"d391a194.5dc1d","name":"Cron Events","links":["68f2f76e.aba708","602e7fbf.07c51"],"x":650,"y":540,"wires":[["59b93e8e.f37a3","fb18f558.46a2c8"]],"l":true},{"id":"fb18f558.46a2c8","type":"debug","z":"d391a194.5dc1d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":830,"y":580,"wires":[]},{"id":"44052cb4.713434","type":"comment","z":"d391a194.5dc1d","name":"Dynamic cron schedules - setup by dashboard","info":"","x":550,"y":80,"wires":[]},{"id":"602e7fbf.07c51","type":"link out","z":"d391a194.5dc1d","name":"","links":["e6c74b8b.edf768"],"x":975,"y":320,"wires":[]},{"id":"ed7ceb92.c1d838","type":"ui_ui_control","z":"d391a194.5dc1d","name":"","events":"all","x":180,"y":400,"wires":[["edba13b1.d1b77"]]},{"id":"189cf32c.83a62d","type":"ui_date_picker","z":"d391a194.5dc1d","name":"","label":"","group":"73b98bf4.e404f4","order":4,"width":"3","height":"1","passthru":false,"topic":"date","x":190,"y":220,"wires":[["69c0b5ee.6f9a6c"]]},{"id":"87b0a4e5.19dca8","type":"ui_text_input","z":"d391a194.5dc1d","name":"","label":"Time","tooltip":"","group":"73b98bf4.e404f4","order":4,"width":"3","height":"1","passthru":false,"mode":"time","delay":"100","topic":"time","x":170,"y":260,"wires":[["5d0dd167.9e60c"]]},{"id":"69c0b5ee.6f9a6c","type":"change","z":"d391a194.5dc1d","name":"","rules":[{"t":"set","p":"ui_add_date","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":220,"wires":[[]]},{"id":"5d0dd167.9e60c","type":"change","z":"d391a194.5dc1d","name":"","rules":[{"t":"set","p":"ui_add_time","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":260,"wires":[[]]},{"id":"686860b9.e1d42","type":"function","z":"d391a194.5dc1d","name":"","func":"msg.payload.expression = msg.payload.date + msg.payload.time\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":320,"wires":[["6c229cd6.643c94","edba13b1.d1b77"]]},{"id":"edba13b1.d1b77","type":"delay","z":"d391a194.5dc1d","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":370,"y":400,"wires":[["572c480c.a34428"]]},{"id":"73b98bf4.e404f4","type":"ui_group","z":"","name":"Default","tab":"6931a0ae.df4ff","order":1,"disp":false,"width":"16","collapse":false},{"id":"6931a0ae.df4ff","type":"ui_tab","z":"","name":"CRON","icon":"dashboard","order":2,"disabled":false,"hidden":false}]

This is the original using cron entries instead of dates and times (much more flexible)...
https://flows.nodered.org/flow/79a66966a6cc655a827872a4af794b94

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.