Ideas for being able to change start time of a flow from the dashboard

Right now I have my lawn sprinklers running from a BIG TIMER node. But I would like to add a section to my dashboard where I can change the time without having to go into node red and the big timer node.

Looking for ideas on how this can be one either while still using the big timer node, or doing away with it.

Here is my flow just for reference.

[{"id":"96f853bca7c085c7","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"f2799382823c6c07","type":"bigtimer","z":"96f853bca7c085c7","outtopic":"","outpayload1":"ON","outpayload2":"OFF","name":"Turn on sprinklers","comment":"","lat":"45.307781","lon":"-93.577408","starttime":"225","endtime":"240","starttime2":"0","endtime2":"0","startoff":"0","endoff":"0","startoff2":0,"endoff2":0,"offs":0,"outtext1":"","outtext2":"","timeout":1440,"sun":true,"mon":true,"tue":true,"wed":true,"thu":true,"fri":true,"sat":true,"jan":true,"feb":true,"mar":true,"apr":true,"may":true,"jun":true,"jul":true,"aug":true,"sep":true,"oct":true,"nov":true,"dec":true,"day1":0,"month1":0,"day2":0,"month2":0,"day3":0,"month3":0,"day4":0,"month4":0,"day5":0,"month5":0,"day6":0,"month6":0,"day7":0,"month7":0,"day8":0,"month8":0,"day9":0,"month9":0,"day10":0,"month10":0,"day11":0,"month11":0,"day12":0,"month12":0,"d1":0,"w1":0,"d2":0,"w2":0,"d3":0,"w3":0,"d4":0,"w4":0,"d5":0,"w5":0,"d6":0,"w6":0,"xday1":0,"xmonth1":0,"xday2":0,"xmonth2":0,"xday3":0,"xmonth3":0,"xday4":0,"xmonth4":0,"xday5":0,"xmonth5":0,"xday6":0,"xmonth6":0,"xday7":"","xmonth7":"","xday8":"","xmonth8":"","xday9":"","xmonth9":"","xday10":"","xmonth10":"","xday11":"","xmonth11":"","xday12":"","xmonth12":"","xd1":0,"xw1":0,"xd2":0,"xw2":0,"xd3":0,"xw3":0,"xd4":0,"xw4":0,"xd5":0,"xw5":0,"xd6":0,"xw6":0,"suspend":false,"random":false,"randon1":false,"randoff1":false,"randon2":false,"randoff2":false,"repeat":false,"atstart":false,"odd":false,"even":true,"x":315,"y":150,"wires":[["3f9e50af12a8e629"],[],[]],"outputLabels":["on-off message","",""]},{"id":"73a13edb5fe65743","type":"inject","z":"96f853bca7c085c7","name":"Auto","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"auto","payloadType":"str","x":125,"y":120,"wires":[["f2799382823c6c07"]]},{"id":"b159e4deb6da9bff","type":"inject","z":"96f853bca7c085c7","name":"Force on","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"ON","payloadType":"str","x":115,"y":160,"wires":[["f2799382823c6c07"]]},{"id":"61281312053a0017","type":"inject","z":"96f853bca7c085c7","name":"Force off","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"off","payloadType":"str","x":115,"y":200,"wires":[["f2799382823c6c07"]]},{"id":"3f9e50af12a8e629","type":"switch","z":"96f853bca7c085c7","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"ON","vt":"str"},{"t":"eq","v":"OFF","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":485,"y":150,"wires":[["fd1b6987a1f3c559"],[]]},{"id":"05a9331713e19df8","type":"comment","z":"96f853bca7c085c7","name":"Sprinklers auto run","info":"","x":125,"y":75,"wires":[]},{"id":"fd1b6987a1f3c559","type":"api-current-state","z":"96f853bca7c085c7","name":"Irrigation skip is off?","server":"ab3e2c53.e3491","version":3,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_boolean.irrigation_not_run","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":665,"y":150,"wires":[["e624fe283b3621b2"],[]]},{"id":"e624fe283b3621b2","type":"api-call-service","z":"96f853bca7c085c7","name":"ON: lawn sprinklers running helper","server":"ab3e2c53.e3491","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.lawn_sprinklers_running"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":935,"y":150,"wires":[["af8e7b26a34ba3b4"]]},{"id":"ed6bc195c3e45a37","type":"api-current-state","z":"96f853bca7c085c7","name":"Time per zone","server":"ab3e2c53.e3491","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_number.sprinkler_auto_run_time_porch","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"delay","propertyType":"msg","value":"$number($entity().state)*60000","valueType":"jsonata"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":1055,"y":195,"wires":[["0eff64af6d903dbe"]]},{"id":"0eff64af6d903dbe","type":"trigger","z":"96f853bca7c085c7","name":"wait","op1":"","op2":"0","op1type":"nul","op2type":"str","duration":"250","extend":false,"overrideDelay":true,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1220,"y":195,"wires":[["5efc5fb484c7ec9e"]]},{"id":"5efc5fb484c7ec9e","type":"api-call-service","z":"96f853bca7c085c7","name":"ON: street","server":"ab3e2c53.e3491","version":5,"debugenabled":false,"domain":"switch","service":"turn_on","areaId":[],"deviceId":[],"entityId":["switch.lawn_sprinkler_street"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":865,"y":240,"wires":[["1abb6cb834a14ece"]]},{"id":"a51bce3168a82097","type":"api-call-service","z":"96f853bca7c085c7","name":"ON: backyard","server":"ab3e2c53.e3491","version":5,"debugenabled":false,"domain":"switch","service":"turn_on","areaId":[],"deviceId":[],"entityId":["switch.lawn_sprinkler_backyard"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":875,"y":285,"wires":[["0421338829aee295"]]},{"id":"a38770fb1e7d2eef","type":"api-call-service","z":"96f853bca7c085c7","name":"ON: side","server":"ab3e2c53.e3491","version":5,"debugenabled":false,"domain":"switch","service":"turn_on","areaId":[],"deviceId":[],"entityId":["switch.lawn_sprinkler_side"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":855,"y":330,"wires":[["fad1977c09d0fab6"]]},{"id":"adb88a62de7a2d7a","type":"api-call-service","z":"96f853bca7c085c7","name":"ON: mailbox","server":"ab3e2c53.e3491","version":5,"debugenabled":false,"domain":"switch","service":"turn_on","areaId":[],"deviceId":[],"entityId":["switch.lawn_sprinkler_mailbox"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":865,"y":375,"wires":[["103bf3632cedc433"]]},{"id":"af8e7b26a34ba3b4","type":"api-call-service","z":"96f853bca7c085c7","name":"ON: porch","server":"ab3e2c53.e3491","version":5,"debugenabled":false,"domain":"switch","service":"turn_on","areaId":[],"deviceId":[],"entityId":["switch.lawn_sprinkler_porch"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":865,"y":195,"wires":[["ed6bc195c3e45a37"]]},{"id":"1abb6cb834a14ece","type":"api-current-state","z":"96f853bca7c085c7","name":"Time per zone","server":"ab3e2c53.e3491","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_number.sprinkler_auto_run_time_street","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"delay","propertyType":"msg","value":"$number($entity().state)*60000","valueType":"jsonata"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":1055,"y":240,"wires":[["0592638032a2df15"]]},{"id":"0592638032a2df15","type":"trigger","z":"96f853bca7c085c7","name":"wait","op1":"","op2":"0","op1type":"nul","op2type":"str","duration":"250","extend":false,"overrideDelay":true,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1220,"y":240,"wires":[["a51bce3168a82097"]]},{"id":"0421338829aee295","type":"api-current-state","z":"96f853bca7c085c7","name":"Time per zone","server":"ab3e2c53.e3491","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_number.sprinkler_auto_run_time_backyard","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"delay","propertyType":"msg","value":"$number($entity().state)*60000","valueType":"jsonata"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":1055,"y":285,"wires":[["c08d7502cb06cbf3"]]},{"id":"c08d7502cb06cbf3","type":"trigger","z":"96f853bca7c085c7","name":"wait","op1":"","op2":"0","op1type":"nul","op2type":"str","duration":"250","extend":false,"overrideDelay":true,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1220,"y":285,"wires":[["a38770fb1e7d2eef"]]},{"id":"fad1977c09d0fab6","type":"api-current-state","z":"96f853bca7c085c7","name":"Time per zone","server":"ab3e2c53.e3491","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_number.sprinkler_auto_run_time_side","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"delay","propertyType":"msg","value":"$number($entity().state)*60000","valueType":"jsonata"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":1055,"y":330,"wires":[["4442fdf97417bdda"]]},{"id":"4442fdf97417bdda","type":"trigger","z":"96f853bca7c085c7","name":"wait","op1":"","op2":"0","op1type":"nul","op2type":"str","duration":"250","extend":false,"overrideDelay":true,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1220,"y":330,"wires":[["adb88a62de7a2d7a"]]},{"id":"103bf3632cedc433","type":"api-current-state","z":"96f853bca7c085c7","name":"Time per zone","server":"ab3e2c53.e3491","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_number.sprinkler_auto_run_time_mailbox","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"delay","propertyType":"msg","value":"$number($entity().state)*60000","valueType":"jsonata"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":1055,"y":375,"wires":[["7f2074378f7e9043"]]},{"id":"7f2074378f7e9043","type":"trigger","z":"96f853bca7c085c7","name":"wait","op1":"","op2":"0","op1type":"nul","op2type":"str","duration":"250","extend":false,"overrideDelay":true,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1220,"y":375,"wires":[["61ada6164d3d3f44"]]},{"id":"c5bdd05edb8082ff","type":"api-call-service","z":"96f853bca7c085c7","name":"","server":"ab3e2c53.e3491","version":5,"debugenabled":false,"domain":"input_datetime","service":"set_datetime","areaId":[],"deviceId":[],"entityId":["input_datetime.sprinkler_last_run"],"data":"{\"timestamp\": $millis() / 1000 }\t","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1710,"y":375,"wires":[[]]},{"id":"9544a138dd697b91","type":"api-call-service","z":"96f853bca7c085c7","name":"OFF: lawn sprinklers running helper","server":"ab3e2c53.e3491","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_off","areaId":[],"deviceId":[],"entityId":["input_boolean.lawn_sprinklers_running"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1730,"y":270,"wires":[[]]},{"id":"37ff2b59403d5198","type":"repeat","z":"96f853bca7c085c7","name":"Repeat 1 time","repetitions":"1","elseOutput":true,"outputs":2,"x":1415,"y":330,"wires":[["af8e7b26a34ba3b4"],["9544a138dd697b91","c5bdd05edb8082ff","948d61d2967fd815"]]},{"id":"61ada6164d3d3f44","type":"api-current-state","z":"96f853bca7c085c7","name":"One cycle run on?","server":"ab3e2c53.e3491","version":3,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_boolean.irrigation_one_cycle_run","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":1410,"y":375,"wires":[["c5bdd05edb8082ff","9544a138dd697b91","948d61d2967fd815"],["37ff2b59403d5198"]]},{"id":"948d61d2967fd815","type":"api-call-service","z":"96f853bca7c085c7","name":"OFF: mailbox","server":"ab3e2c53.e3491","version":5,"debugenabled":false,"domain":"switch","service":"turn_off","areaId":[],"deviceId":[],"entityId":["switch.lawn_sprinkler_mailbox"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1675,"y":315,"wires":[[]]},{"id":"ab3e2c53.e3491","type":"server","name":"AvilaSmartHome","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

Is this a permanent change? Or, I want to run them an hour or two earlier/later for that day?

If it is the latter use an input date time on your dash. When you change the time on the date time helper you can grab that event with this. Change the entity id in the data section.

[{"id":"cb7955ec9d954458","type":"server-events","z":"60f2d2277843c698","name":"","server":"6b1110b5.183a4","version":3,"exposeAsEntityConfig":"","eventType":"call_service","eventData":"{\"domain\":\"input_datetime\",\"service\":\"set_datetime\",\"service_data\":{\"entity_id\":\"input_datetime.boiler_boost\"}}","waitForRunning":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"$outputData(\"eventData\").event_type","valueType":"jsonata"}],"x":250,"y":760,"wires":[["710e83906e4f7782"]]},{"id":"710e83906e4f7782","type":"debug","z":"60f2d2277843c698","name":"debug 186","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":460,"y":760,"wires":[]},{"id":"6b1110b5.183a4","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":false,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"id","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

Use that trigger to put big timer in manual mode. So if the datetime helper is changed it turns off big timer.

Use a time node with the above datetime helper to trigger the sprinkler flow. Use an inject to set big timer to auto every night. If it’s permanent you probably need to use something else.

You could also use a calendar in HA and then have NR react to that.

@WallyR
Can you explain how? I added an event to the HA calendar, added a calendar event node in NR tied to debug, but I never see anything come across the debug node at the specified time i have in the calendar.

Make sure that the node in Node Red is configured right and remember that the time on your HA installation might not be fully equal to the one of your workstation, so do not set the trigger too close to your workstation time when you test.

The calendar node works a little differently than other triggers. It will load the next 15 min of events and then check again in 15 min. If you look at the calendar node it will tell you the last time it updated. Set a trigger for more than 15 min from the last updated time.

image

I would need to set the event to at least 8:47 for it to pick up that trigger. You can also use a trigger state with a calendar. That will fire right away for testing without having to wait for the calendar node to update.