UNPKG

node-red-contrib-bigtimer

Version:

The ultimate Node-Red Timer with dusk, dawn (and variations inc. sunrise, sunset, moonrise and moonset), months, days, manual override, schedule pause, random or fixed offsets, special days and much more. Using STOP now turns the output off.

937 lines (858 loc) 59.4 kB
/** * This node is copyright (c) 2017-2024 Peter Scargill. Please consider * it free to use for whatever timing purpose you like. If you wish to make * changes please note you have the full source when you install BigTimer which * essentially is just 2 files (html and js). I maintain BigTimer via * https://tech.scargill.net/big-timer and will look at any code with a view to * incorporating in the main BigTimer. I will not however support or comment on * any unofficial "github repositories". I do not use Github for this as I'd * rather encourage people to send code to me to test and release rather than confuse * any of the many users of BigTimer with various clones and versions. See version * number in package.json * * If you find BigTimer REALLY useful - on the blog (right column) is a PAYPAL link to * help support the blog and fund my need for new gadgets. */ <style> .bigTimer { color: orange; } .bigTimerCheck { width: 64px; float: left; margin-left: 0px; } .bigTimerCheck2 { width: 230px; float: left; margin-left: 0px; } </style> <script type="text/x-red" data-template-name="bigtimer"> <div style="height: 100%; overflow-y: auto;"> <div class="form-row"> <label style="width:16%" for="node-input-name"><i class="fa fa-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name"> </div> <div class="form-row"> <label style="width:16%" for="node-input-comment"><i class="fa fa-tag"></i> Comment</label> <input type="text" id="node-input-comment"> </div> <div class="form-row"> <label style="width:16%" for="node-input-starttime"><i class="fa fa-clock-o"></i> On Time</label> <select style="width:26% !important" id="node-input-starttime"> <option value= "0">00:00</option> <option value= "15">00:15</option> <option value= "30">00:30</option> <option value= "45">00:45</option> <option value= "60">01:00</option> <option value= "75">01:15</option> <option value= "90">01:30</option> <option value="105">01:45</option> <option value="120">02:00</option> <option value="135">02:15</option> <option value="150">02:30</option> <option value="165">02:45</option> <option value="180">03:00</option> <option value="195">03:15</option> <option value="210">03:30</option> <option value="225">03:45</option> <option value="240">04:00</option> <option value="255">04:15</option> <option value="270">04:30</option> <option value="285">04:45</option> <option value="300">05:00</option> <option value="315">05:15</option> <option value="330">05:30</option> <option value="345">05:45</option> <option value="360">06:00</option> <option value="375">06:15</option> <option value="390">06:30</option> <option value="405">06:45</option> <option value="420">07:00</option> <option value="435">07:15</option> <option value="450">07:30</option> <option value="465">07:45</option> <option value="480">08:00</option> <option value="495">08:15</option> <option value="510">08:30</option> <option value="525">08:45</option> <option value="540">09:00</option> <option value="555">09:15</option> <option value="570">09:30</option> <option value="585">09:45</option> <option value="600">10:00</option> <option value="615">10:15</option> <option value="630">10:30</option> <option value="645">10:45</option> <option value="660">11:00</option> <option value="675">11:15</option> <option value="690">11:30</option> <option value="705">11:45</option> <option value="720">12:00</option> <option value="735">12:15</option> <option value="750">12:30</option> <option value="765">12:45</option> <option value="780">13:00</option> <option value="795">13:15</option> <option value="810">13:30</option> <option value="825">13:45</option> <option value="840">14:00</option> <option value="855">14:15</option> <option value="870">14:30</option> <option value="885">14:45</option> <option value="900">15:00</option> <option value="915">15:15</option> <option value="930">15:30</option> <option value="945">15:45</option> <option value="960">16:00</option> <option value="975">16:15</option> <option value="990">16:30</option> <option value="1005">16:45</option> <option value="1020">17:00</option> <option value="1035">17:15</option> <option value="1050">17:30</option> <option value="1065">17:45</option> <option value="1080">18:00</option> <option value="1095">18:15</option> <option value="1110">18:30</option> <option value="1125">18:45</option> <option value="1140">19:00</option> <option value="1155">19:15</option> <option value="1170">19:30</option> <option value="1185">19:45</option> <option value="1200">20:00</option> <option value="1215">20:15</option> <option value="1230">20:30</option> <option value="1245">20:45</option> <option value="1260">21:00</option> <option value="1275">21:15</option> <option value="1290">21:30</option> <option value="1305">21:45</option> <option value="1320">22:00</option> <option value="1335">22:15</option> <option value="1350">22:30</option> <option value="1365">22:45</option> <option value="1380">23:00</option> <option value="1395">23:15</option> <option value="1410">23:30</option> <option value="1425">23:45</option> <option value="1439">Day End</option> <option value="5000">Dawn</option> <option value="5001">Dusk</option> <option value="5002">Solarnoon</option> <option value="5003">Sunrise</option> <option value="5004">Sunset</option> <option value="5005">Night</option> <option value="5006">Night end</option> <option value="5007">Moonrise</option> <option value="5008">Moonset</option> </select> <label style="width:16%" for="node-input-endtime"><i class="fa fa-clock-o"></i> Off Time</label> <select style="width:26% !important" id="node-input-endtime"> <option value= "0">00:00</option> <option value= "15">00:15</option> <option value= "30">00:30</option> <option value= "45">00:45</option> <option value= "60">01:00</option> <option value= "75">01:15</option> <option value= "90">01:30</option> <option value="105">01:45</option> <option value="120">02:00</option> <option value="135">02:15</option> <option value="150">02:30</option> <option value="165">02:45</option> <option value="180">03:00</option> <option value="195">03:15</option> <option value="210">03:30</option> <option value="225">03:45</option> <option value="240">04:00</option> <option value="255">04:15</option> <option value="270">04:30</option> <option value="285">04:45</option> <option value="300">05:00</option> <option value="315">05:15</option> <option value="330">05:30</option> <option value="345">05:45</option> <option value="360">06:00</option> <option value="375">06:15</option> <option value="390">06:30</option> <option value="405">06:45</option> <option value="420">07:00</option> <option value="435">07:15</option> <option value="450">07:30</option> <option value="465">07:45</option> <option value="480">08:00</option> <option value="495">08:15</option> <option value="510">08:30</option> <option value="525">08:45</option> <option value="540">09:00</option> <option value="555">09:15</option> <option value="570">09:30</option> <option value="585">09:45</option> <option value="600">10:00</option> <option value="615">10:15</option> <option value="630">10:30</option> <option value="645">10:45</option> <option value="660">11:00</option> <option value="675">11:15</option> <option value="690">11:30</option> <option value="705">11:45</option> <option value="720">12:00</option> <option value="735">12:15</option> <option value="750">12:30</option> <option value="765">12:45</option> <option value="780">13:00</option> <option value="795">13:15</option> <option value="810">13:30</option> <option value="825">13:45</option> <option value="840">14:00</option> <option value="855">14:15</option> <option value="870">14:30</option> <option value="885">14:45</option> <option value="900">15:00</option> <option value="915">15:15</option> <option value="930">15:30</option> <option value="945">15:45</option> <option value="960">16:00</option> <option value="975">16:15</option> <option value="990">16:30</option> <option value="1005">16:45</option> <option value="1020">17:00</option> <option value="1035">17:15</option> <option value="1050">17:30</option> <option value="1065">17:45</option> <option value="1080">18:00</option> <option value="1095">18:15</option> <option value="1110">18:30</option> <option value="1125">18:45</option> <option value="1140">19:00</option> <option value="1155">19:15</option> <option value="1170">19:30</option> <option value="1185">19:45</option> <option value="1200">20:00</option> <option value="1215">20:15</option> <option value="1230">20:30</option> <option value="1245">20:45</option> <option value="1260">21:00</option> <option value="1275">21:15</option> <option value="1290">21:30</option> <option value="1305">21:45</option> <option value="1320">22:00</option> <option value="1335">22:15</option> <option value="1350">22:30</option> <option value="1365">22:45</option> <option value="1380">23:00</option> <option value="1395">23:15</option> <option value="1410">23:30</option> <option value="1425">23:45</option> <option value="1439">Day End</option> <option value="5000">Dawn</option> <option value="5001">Dusk</option> <option value="5002">Solarnoon</option> <option value="5003">Sunrise</option> <option value="5004">Sunset</option> <option value="5005">Night</option> <option value="5006">Night end</option> <option value="5007">Moonrise</option> <option value="5008">Moonset</option> <option value="10001">1 minute</option> <option value="10002">2 minutes</option> <option value="10005">5 minutes</option> <option value="10010">10 minutes</option> <option value="10015">15 minutes</option> <option value="10030">30 minutes</option> <option value="10060">60 minutes</option> <option value="10090">90 minutes</option> <option value="10120">120 minutes</option> </select> </div> <div class="form-row"> <label style="width:16%" for="node-input-starttime2"><i class="fa fa-clock-o"></i> On Time2</label> <select style="width:26% !important" id="node-input-starttime2"> <option value= "0">00:00</option> <option value= "15">00:15</option> <option value= "30">00:30</option> <option value= "45">00:45</option> <option value= "60">01:00</option> <option value= "75">01:15</option> <option value= "90">01:30</option> <option value="105">01:45</option> <option value="120">02:00</option> <option value="135">02:15</option> <option value="150">02:30</option> <option value="165">02:45</option> <option value="180">03:00</option> <option value="195">03:15</option> <option value="210">03:30</option> <option value="225">03:45</option> <option value="240">04:00</option> <option value="255">04:15</option> <option value="270">04:30</option> <option value="285">04:45</option> <option value="300">05:00</option> <option value="315">05:15</option> <option value="330">05:30</option> <option value="345">05:45</option> <option value="360">06:00</option> <option value="375">06:15</option> <option value="390">06:30</option> <option value="405">06:45</option> <option value="420">07:00</option> <option value="435">07:15</option> <option value="450">07:30</option> <option value="465">07:45</option> <option value="480">08:00</option> <option value="495">08:15</option> <option value="510">08:30</option> <option value="525">08:45</option> <option value="540">09:00</option> <option value="555">09:15</option> <option value="570">09:30</option> <option value="585">09:45</option> <option value="600">10:00</option> <option value="615">10:15</option> <option value="630">10:30</option> <option value="645">10:45</option> <option value="660">11:00</option> <option value="675">11:15</option> <option value="690">11:30</option> <option value="705">11:45</option> <option value="720">12:00</option> <option value="735">12:15</option> <option value="750">12:30</option> <option value="765">12:45</option> <option value="780">13:00</option> <option value="795">13:15</option> <option value="810">13:30</option> <option value="825">13:45</option> <option value="840">14:00</option> <option value="855">14:15</option> <option value="870">14:30</option> <option value="885">14:45</option> <option value="900">15:00</option> <option value="915">15:15</option> <option value="930">15:30</option> <option value="945">15:45</option> <option value="960">16:00</option> <option value="975">16:15</option> <option value="990">16:30</option> <option value="1005">16:45</option> <option value="1020">17:00</option> <option value="1035">17:15</option> <option value="1050">17:30</option> <option value="1065">17:45</option> <option value="1080">18:00</option> <option value="1095">18:15</option> <option value="1110">18:30</option> <option value="1125">18:45</option> <option value="1140">19:00</option> <option value="1155">19:15</option> <option value="1170">19:30</option> <option value="1185">19:45</option> <option value="1200">20:00</option> <option value="1215">20:15</option> <option value="1230">20:30</option> <option value="1245">20:45</option> <option value="1260">21:00</option> <option value="1275">21:15</option> <option value="1290">21:30</option> <option value="1305">21:45</option> <option value="1320">22:00</option> <option value="1335">22:15</option> <option value="1350">22:30</option> <option value="1365">22:45</option> <option value="1380">23:00</option> <option value="1395">23:15</option> <option value="1410">23:30</option> <option value="1425">23:45</option> <option value="1439">Day End</option> <option value="5000">Dawn</option> <option value="5001">Dusk</option> <option value="5002">Solarnoon</option> <option value="5003">Sunrise</option> <option value="5004">Sunset</option> <option value="5005">Night</option> <option value="5006">Night end</option> <option value="5007">Moonrise</option> <option value="5008">Moonset</option> </select> <label style="width:16%" for="node-input-endtime2"><i class="fa fa-clock-o"></i> Off Time2</label> <select style="width:26% !important" id="node-input-endtime2"> <option value= "0">00:00</option> <option value= "0">00:00</option> <option value= "15">00:15</option> <option value= "30">00:30</option> <option value= "45">00:45</option> <option value= "60">01:00</option> <option value= "75">01:15</option> <option value= "90">01:30</option> <option value="105">01:45</option> <option value="120">02:00</option> <option value="135">02:15</option> <option value="150">02:30</option> <option value="165">02:45</option> <option value="180">03:00</option> <option value="195">03:15</option> <option value="210">03:30</option> <option value="225">03:45</option> <option value="240">04:00</option> <option value="255">04:15</option> <option value="270">04:30</option> <option value="285">04:45</option> <option value="300">05:00</option> <option value="315">05:15</option> <option value="330">05:30</option> <option value="345">05:45</option> <option value="360">06:00</option> <option value="375">06:15</option> <option value="390">06:30</option> <option value="405">06:45</option> <option value="420">07:00</option> <option value="435">07:15</option> <option value="450">07:30</option> <option value="465">07:45</option> <option value="480">08:00</option> <option value="495">08:15</option> <option value="510">08:30</option> <option value="525">08:45</option> <option value="540">09:00</option> <option value="555">09:15</option> <option value="570">09:30</option> <option value="585">09:45</option> <option value="600">10:00</option> <option value="615">10:15</option> <option value="630">10:30</option> <option value="645">10:45</option> <option value="660">11:00</option> <option value="675">11:15</option> <option value="690">11:30</option> <option value="705">11:45</option> <option value="720">12:00</option> <option value="735">12:15</option> <option value="750">12:30</option> <option value="765">12:45</option> <option value="780">13:00</option> <option value="795">13:15</option> <option value="810">13:30</option> <option value="825">13:45</option> <option value="840">14:00</option> <option value="855">14:15</option> <option value="870">14:30</option> <option value="885">14:45</option> <option value="900">15:00</option> <option value="915">15:15</option> <option value="930">15:30</option> <option value="945">15:45</option> <option value="960">16:00</option> <option value="975">16:15</option> <option value="990">16:30</option> <option value="1005">16:45</option> <option value="1020">17:00</option> <option value="1035">17:15</option> <option value="1050">17:30</option> <option value="1065">17:45</option> <option value="1080">18:00</option> <option value="1095">18:15</option> <option value="1110">18:30</option> <option value="1125">18:45</option> <option value="1140">19:00</option> <option value="1155">19:15</option> <option value="1170">19:30</option> <option value="1185">19:45</option> <option value="1200">20:00</option> <option value="1215">20:15</option> <option value="1230">20:30</option> <option value="1245">20:45</option> <option value="1260">21:00</option> <option value="1275">21:15</option> <option value="1290">21:30</option> <option value="1305">21:45</option> <option value="1320">22:00</option> <option value="1335">22:15</option> <option value="1350">22:30</option> <option value="1365">22:45</option> <option value="1380">23:00</option> <option value="1395">23:15</option> <option value="1410">23:30</option> <option value="1425">23:45</option> <option value="1439">Day End</option> <option value="5000">Dawn</option> <option value="5001">Dusk</option> <option value="5002">Solarnoon</option> <option value="5003">Sunrise</option> <option value="5004">Sunset</option> <option value="5005">Night</option> <option value="5006">Night end</option> <option value="5007">Moonrise</option> <option value="5008">Moonset</option> <option value="10001">1 minute</option> <option value="10002">2 minutes</option> <option value="10005">5 minutes</option> <option value="10010">10 minutes</option> <option value="10015">15 minutes</option> <option value="10030">30 minutes</option> <option value="10060">60 minutes</option> <option value="10090">90 minutes</option> <option value="10120">120 minutes</option> </select> </div> <div class="form-row"> <label style="width:16%" for="node-input-startoff"><i class="fa fa-hourglass-half"></i> On Offset</label> <input style="width:26%" type="text" id="node-input-startoff" placeholder="0"> <label style="width:16%" for="node-input-endoff"><i class="fa fa-hourglass-half"></i> Off Offset</label> <input style="width:26%" type="text" id="node-input-endoff" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-startoff2"><i class="fa fa-hourglass-half"></i> On Offset2</label> <input style="width:26%" type="text" id="node-input-startoff2" placeholder="0"> <label style="width:16%" for="node-input-endoff2"><i class="fa fa-hourglass-half"></i> Off Offset2</label> <input style="width:26%" type="text" id="node-input-endoff2" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-lat"><i class="fa fa-globe"></i> Latitude</label> <input style="width:26%" type="text" id="node-input-lat" placeholder="51.025"> <label style="width:16%" for="node-input-lon"><i class="fa fa-globe"></i> Longitude</label> <input style="width:26%" type="text" id="node-input-lon" placeholder="-1.4"> </div> <div class="form-row"> <label style="width:16%" for="node-input-outtopic"><i class="fa fa-tag"></i> Topic Msg</label> <input style="width:26%" type="text" id="node-input-outtopic" placeholder="MQTT Topic"> <label style="width:16%" for="node-input-offs"><i class="fa fa-clock-o"></i> Man UTC</label> <input style="width:26%" type="text" id="node-input-offs" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-outpayload1"><i class="fa fa-tag"></i> ON Msg</label> <input style="width:26%" type="text" id="node-input-outpayload1" placeholder="MQTT Payload"> <label style="width:16%" for="node-input-outpayload2"><i class="fa fa-tag"></i> OFF Msg</label> <input style="width:26%" type="text" id="node-input-outpayload2" placeholder="MQTT Payload"> </div> <div class="form-row"> <label style="width:16%" for="node-input-outtext1"><i class="fa fa-tag"></i> ON Text</label> <input type="text" id="node-input-outtext1" placeholder="Text"> </div> <div class="form-row"> <label style="width:16%" for="node-input-outtext2"><i class="fa fa-tag"></i> OFF Text</label> <input type="text" id="node-input-outtext2" placeholder="Text"> </div> <div class="form-row"> <label style="width:16%" for="node-input-timeout"><i class="fa fa-hourglass-half"></i> Timeout</label> <input type="text" id="node-input-timeout" placeholder="Text"> </div> <p class="bigTimer">Include special days of the year (optional) day=1-31 month=1-12</p> <div class="form-row"> <label style="width:16%" for="node-input-day1"><i class="fa fa-calendar-o"></i> Day 1</label> <input style="width:26%" type="text" id="node-input-day1" value="0" placeholder="0"> <label style="width:16%" for="node-input-month1"><i class="fa fa-calendar-o"></i> Month 1</label> <input style="width:26%" type="text" id="node-input-month1" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-day2"><i class="fa fa-calendar-o"></i> Day 2</label> <input style="width:26%" type="text" id="node-input-day2" value="0" placeholder="0"> <label style="width:16%" for="node-input-month2"><i class="fa fa-calendar-o"></i> Month 2</label> <input style="width:26%" type="text" id="node-input-month2" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-day3"><i class="fa fa-calendar-o"></i> Day 3</label> <input style="width:26%" type="text" id="node-input-day3" value="0" placeholder="0"> <label style="width:16%" for="node-input-month3"><i class="fa fa-calendar-o"></i> Month 3</label> <input style="width:26%" type="text" id="node-input-month3" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-day4"><i class="fa fa-calendar-o"></i> Day 4</label> <input style="width:26%" type="text" id="node-input-day4" value="0" placeholder="0"> <label style="width:16%" for="node-input-month4"><i class="fa fa-calendar-o"></i> Month 4</label> <input style="width:26%" type="text" id="node-input-month4" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-day5"><i class="fa fa-calendar-o"></i> Day 5</label> <input style="width:26%" type="text" id="node-input-day5" value="0" placeholder="0"> <label style="width:16%" for="node-input-month5"><i class="fa fa-calendar-o"></i> Month 5</label> <input style="width:26%" type="text" id="node-input-month5" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-day6"><i class="fa fa-calendar-o"></i> Day 6</label> <input style="width:26%" type="text" id="node-input-day6" value="0" placeholder="0"> <label style="width:16%" for="node-input-month6"><i class="fa fa-calendar-o"></i> Month 6</label> <input style="width:26%" type="text" id="node-input-month6" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-day7"><i class="fa fa-calendar-o"></i> Day 7</label> <input style="width:26%" type="text" id="node-input-day7" value="0" placeholder="0"> <label style="width:16%" for="node-input-month7"><i class="fa fa-calendar-o"></i> Month 7</label> <input style="width:26%" type="text" id="node-input-month7" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-day8"><i class="fa fa-calendar-o"></i> Day 8</label> <input style="width:26%" type="text" id="node-input-day8" value="0" placeholder="0"> <label style="width:16%" for="node-input-month8"><i class="fa fa-calendar-o"></i> Month 8</label> <input style="width:26%" type="text" id="node-input-month8" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-day9"><i class="fa fa-calendar-o"></i> Day 9</label> <input style="width:26%" type="text" id="node-input-day9" value="0" placeholder="0"> <label style="width:16%" for="node-input-month9"><i class="fa fa-calendar-o"></i> Month 9</label> <input style="width:26%" type="text" id="node-input-month9" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-day10"><i class="fa fa-calendar-o"></i> Day 10</label> <input style="width:26%" type="text" id="node-input-day10" value="0" placeholder="0"> <label style="width:16%" for="node-input-month10"><i class="fa fa-calendar-o"></i> Month 10</label> <input style="width:26%" type="text" id="node-input-month10" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-day11"><i class="fa fa-calendar-o"></i> Day 11</label> <input style="width:26%" type="text" id="node-input-day11" value="0" placeholder="0"> <label style="width:16%" for="node-input-month11"><i class="fa fa-calendar-o"></i> Month 11</label> <input style="width:26%" type="text" id="node-input-month11" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-day12"><i class="fa fa-calendar-o"></i> Day 12</label> <input style="width:26%" type="text" id="node-input-day12" value="0" placeholder="0"> <label style="width:16%" for="node-input-month12"><i class="fa fa-calendar-o"></i> Month 12</label> <input style="width:26%" type="text" id="node-input-month12" value="0" placeholder="0"> </div> <p class="bigTimer">Include special weekdays of the month (optional) Sun=1 etc. Week=1-5</p> <div class="form-row"> <label style="width:16%" for="node-input-d1"><i class="fa fa-calendar-o"></i> Day 1</label> <input style="width:26%" type="text" id="node-input-d1" value="0" placeholder="0"> <label style="width:16%" for="node-input-w1"><i class="fa fa-calendar-o"></i> Week 1</label> <input style="width:26%" type="text" id="node-input-w1" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-d2"><i class="fa fa-calendar-o"></i> Day 2</label> <input style="width:26%" type="text" id="node-input-d2" value="0" placeholder="0"> <label style="width:16%" for="node-input-w2"><i class="fa fa-calendar-o"></i> Week 2</label> <input style="width:26%" type="text" id="node-input-w2" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-d3"><i class="fa fa-calendar-o"></i> Day 3</label> <input style="width:26%" type="text" id="node-input-d3" value="0" placeholder="0"> <label style="width:16%" for="node-input-w3"><i class="fa fa-calendar-o"></i> Week 3</label> <input style="width:26%" type="text" id="node-input-w3" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-d4"><i class="fa fa-calendar-o"></i> Day 4</label> <input style="width:26%" type="text" id="node-input-d4" value="0" placeholder="0"> <label style="width:16%" for="node-input-w4"><i class="fa fa-calendar-o"></i> Week 4</label> <input style="width:26%" type="text" id="node-input-w4" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-d5"><i class="fa fa-calendar-o"></i> Day 5</label> <input style="width:26%" type="text" id="node-input-d5" value="0" placeholder="0"> <label style="width:16%" for="node-input-w5"><i class="fa fa-calendar-o"></i> Week 5</label> <input style="width:26%" type="text" id="node-input-w5" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-d6"><i class="fa fa-calendar-o"></i> Day 6</label> <input style="width:26%" type="text" id="node-input-d6" value="0" placeholder="0"> <label style="width:16%" for="node-input-w6"><i class="fa fa-calendar-o"></i> Week 6</label> <input style="width:26%" type="text" id="node-input-w6" value="0" placeholder="0"> </div> <p class="bigTimer">Exclude special days of the year (optional) day=1-31 month=1-12</p> <div class="form-row"> <label style="width:16%" for="node-input-xday1"><i class="fa fa-calendar-o"></i> Day 1</label> <input style="width:26%" type="text" id="node-input-xday1" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth1"><i class="fa fa-calendar-o"></i> Month 1</label> <input style="width:26%" type="text" id="node-input-xmonth1" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xday2"><i class="fa fa-calendar-o"></i> Day 2</label> <input style="width:26%" type="text" id="node-input-xday2" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth2"><i class="fa fa-calendar-o"></i> Month 2</label> <input style="width:26%" type="text" id="node-input-xmonth2" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xday3"><i class="fa fa-calendar-o"></i> Day 3</label> <input style="width:26%" type="text" id="node-input-xday3" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth3"><i class="fa fa-calendar-o"></i> Month 3</label> <input style="width:26%" type="text" id="node-input-xmonth3" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xday4"><i class="fa fa-calendar-o"></i> Day 4</label> <input style="width:26%" type="text" id="node-input-xday4" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth4"><i class="fa fa-calendar-o"></i> Month 4</label> <input style="width:26%" type="text" id="node-input-xmonth4" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xday5"><i class="fa fa-calendar-o"></i> Day 5</label> <input style="width:26%" type="text" id="node-input-xday5" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth5"><i class="fa fa-calendar-o"></i> Month 5</label> <input style="width:26%" type="text" id="node-input-xmonth5" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xday6"><i class="fa fa-calendar-o"></i> Day 6</label> <input style="width:26%" type="text" id="node-input-xday6" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth6"><i class="fa fa-calendar-o"></i> Month 6</label> <input style="width:26%" type="text" id="node-input-xmonth6" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xday7"><i class="fa fa-calendar-o"></i> Day 7</label> <input style="width:26%" type="text" id="node-input-xday7" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth7"><i class="fa fa-calendar-o"></i> Month 7</label> <input style="width:26%" type="text" id="node-input-xmonth7" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xday8"><i class="fa fa-calendar-o"></i> Day 8</label> <input style="width:26%" type="text" id="node-input-xday8" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth8"><i class="fa fa-calendar-o"></i> Month 8</label> <input style="width:26%" type="text" id="node-input-xmonth8" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xday9"><i class="fa fa-calendar-o"></i> Day 9</label> <input style="width:26%" type="text" id="node-input-xday9" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth9"><i class="fa fa-calendar-o"></i> Month 9</label> <input style="width:26%" type="text" id="node-input-xmonth9" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xday10"><i class="fa fa-calendar-o"></i> Day 10</label> <input style="width:26%" type="text" id="node-input-xday10" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth10"><i class="fa fa-calendar-o"></i> Month 10</label> <input style="width:26%" type="text" id="node-input-xmonth10" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xday11"><i class="fa fa-calendar-o"></i> Day 11</label> <input style="width:26%" type="text" id="node-input-xday11" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth11"><i class="fa fa-calendar-o"></i> Month 11</label> <input style="width:26%" type="text" id="node-input-xmonth11" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xday12"><i class="fa fa-calendar-o"></i> Day 12</label> <input style="width:26%" type="text" id="node-input-xday12" value="0" placeholder="0"> <label style="width:16%" for="node-input-xmonth12"><i class="fa fa-calendar-o"></i> Month 12</label> <input style="width:26%" type="text" id="node-input-xmonth12" value="0" placeholder="0"> </div> <p class="bigTimer">Exclude special weekdays of the month (optional) Sun=1 etc. Week=1-5</p> <div class="form-row"> <label style="width:16%" for="node-input-xd1"><i class="fa fa-calendar-o"></i> Day 1</label> <input style="width:26%" type="text" id="node-input-xd1" value="0" placeholder="0"> <label style="width:16%" for="node-input-xw1"><i class="fa fa-calendar-o"></i> Week 1</label> <input style="width:26%" type="text" id="node-input-xw1" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xd2"><i class="fa fa-calendar-o"></i> Day 2</label> <input style="width:26%" type="text" id="node-input-xd2" value="0" placeholder="0"> <label style="width:16%" for="node-input-xw2"><i class="fa fa-calendar-o"></i> Week 2</label> <input style="width:26%" type="text" id="node-input-xw2" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xd3"><i class="fa fa-calendar-o"></i> Day 3</label> <input style="width:26%" type="text" id="node-input-xd3" value="0" placeholder="0"> <label style="width:16%" for="node-input-xw3"><i class="fa fa-calendar-o"></i> Week 3</label> <input style="width:26%" type="text" id="node-input-xw3" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xd4"><i class="fa fa-calendar-o"></i> Day 4</label> <input style="width:26%" type="text" id="node-input-xd4" value="0" placeholder="0"> <label style="width:16%" for="node-input-xw4"><i class="fa fa-calendar-o"></i> Week 4</label> <input style="width:26%" type="text" id="node-input-xw4" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xd5"><i class="fa fa-calendar-o"></i> Day 5</label> <input style="width:26%" type="text" id="node-input-xd5" value="0" placeholder="0"> <label style="width:16%" for="node-input-xw5"><i class="fa fa-calendar-o"></i> Week 5</label> <input style="width:26%" type="text" id="node-input-xw5" value="0" placeholder="0"> </div> <div class="form-row"> <label style="width:16%" for="node-input-xd6"><i class="fa fa-calendar-o"></i> Day 6</label> <input style="width:26%" type="text" id="node-input-xd6" value="0" placeholder="0"> <label style="width:16%" for="node-input-xw6"><i class="fa fa-calendar-o"></i> Week 6</label> <input style="width:26%" type="text" id="node-input-xw6" value="0" placeholder="0"> </div> <style> input[type=checkbox] { vertical-align:top; position:relative; bottom:1px; } </style> <div> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-sun" placeholder="sun" > Sun</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-mon" placeholder="mon" > Mon</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-tue" placeholder="tue" > Tue</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-wed" placeholder="wed" > Wed</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-thu" placeholder="thu" > Thu</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-fri" placeholder="fri" > Fri</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-sat" placeholder="sat" > Sat</span> </div> <br/> <div> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-jan" placeholder="jan" > Jan</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-feb" placeholder="feb" > Feb</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-mar" placeholder="mar" > Mar</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-apr" placeholder="apr" > Apr</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-may" placeholder="may" > May</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-jun" placeholder="jun" > Jun</span> <br/> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-jul" placeholder="jul" > Jul</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-aug" placeholder="aug" > Aug</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-sep" placeholder="sep" > Sep</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-oct" placeholder="oct" > Oct</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-nov" placeholder="nov" > Nov</span> <span class="bigTimer bigTimerCheck"><input type="checkbox" class="bigTimer" id="node-input-dec" placeholder="dec" > Dec</span> </div> <br/> <div> <span class="bigTimer bigTimerCheck2"><input type="checkbox" class="bigTimer" id="node-input-suspend" placeholder="suspend" > Suspend schedule</span> <span class="bigTimer bigTimerCheck2"><input type="checkbox" class="bigTimer" id="node-input-random" placeholder="random" > Randomise all offsets</span> <br/> </div> <div> <span class="bigTimer bigTimerCheck2"><input type="checkbox" class="bigTimer" id="node-input-randon1" placeholder="randon1" > Randomise On 1</span> <span class="bigTimer bigTimerCheck2"><input type="checkbox" class="bigTimer" id="node-input-randoff1" placeholder="randoff1" > Randomise Off 1</span> <br/> </div> <div> <span class="bigTimer bigTimerCheck2"><input type="checkbox" class="bigTimer" id="node-input-randon2" placeholder="randon2" > Randomise On 2</span> <span class="bigTimer bigTimerCheck2"><input type="checkbox" class="bigTimer" id="node-input-randoff2" placeholder="randoff2" > Randomise Off 2</span> <br/> </div> <div> <span class="bigTimer bigTimerCheck2"><input type="checkbox" class="bigTimer" id="node-input-odd" placeholder="odd" > BAN Odd days</span> <span class="bigTimer bigTimerCheck2"><input type="checkbox" class="bigTimer" id="node-input-even" placeholder="even" > BAN Even days</span> <br/> </div> <div> <span class="bigTimer bigTimerCheck2"><input type="checkbox" class="bigTimer" id="node-input-repeat" placeholder="repeat" > Repeat output</span> <span class="bigTimer bigTimerCheck2"><input type="checkbox" class="bigTimer" id="node-input-atstart" placeholder="atstart" > Output at startup</span> <br/> </div><br/> </div> </script> <script type="text/x-red" data-help-name="bigtimer"> <h3><span style="color:cyan">Details</span></h3> <p><b>Bigtimer</b> is probably the ultimate Node-Red timing node, sending messages for start and end conditions at any time, day, month or special day.</p> <p>In the simplest case, Bigtimer requires no input and you need only to consider the first output. But Bigtimer can be much more.</p> <h3><span style="color:cyan">Outputs</span></h3> <p>Whether or not you use the optional Topic Msg (MQTT Topic), the first output sends out a message with the text from the ON Msg (MQTT Payload) and OFF Msg (MQTT Payload) fields at your set ON and OFF times (and if the repeat tickbox is ticked - every minute)</p> <p>The second output has a topic of "status" and simply sends the state - 1 or 0 every minute as well as echoing the status in msg.state and msg.time. (from v1.5.6 onwards several properties have been added to msg)</p> <p>The third output sends an optional message, ON Text and OFF Text - suitable for speech output or a log (this happens only at ON or OFF times, NOT every minute).</p> <h3><span style="color:cyan">Inputs</span></h3> <p>The input can be used as an override by simply sending a text or numeric message. Valid (case-insensitive) messages passed in via msg.payload include: <ul> <li>1 (or on)</li> <li>0 (or off)</li> <li>auto (or default)</li> <li>manual</li> <li>sync</li> <li>stop</li> <li>on_override</li> <li>off_override</li> <li>timer</li> </ul> </p> <h3><span style="color:cyan">Manual Overrides</span></h3> <p>The first two override messages (1/0) time-out after 24 hours (1440 minutes, user-settable) OR at the next change of schedule. If you have also selected "manual" - the outputs will NOT revert back at change of schedule (auto to reset).</p> <p>The schedule can be paused by the interface tick box or by the "manual" command (use the "auto" command to return to normal)</p> <p>The on_override and off_override fields can be used to supercede the set inputs for on and off times (in minutes) - "on_override 20:15" for example (without the quotes) for 8:15pm. These settings are volatile, i.e. not restored when Node-Red is restarted. It may take up to a minute for these controls to take effect. Use for example "on_override" with no arguments to set the auto-on time back to normal.</p> <p>Manual UTC is optional offset (hrs) in case you have a special reason not to have the right time on your computer! Normally 0.</p> <h3><span style="color:cyan">Status Display</span></h3> <p>Remember, the status display only updates once per minute unless in timer mode (seconds). If you have Bigtimer set to OFF you should see a black "No action today" message - if you use manual inject to override - it may take up to a minute for this message to re-appear.</p> <h3><span style="color:cyan">Dusk, Dawn and More</span></h3> <p>The Dawn and Dusk offsets can be both positive (+ve) for minutes later or negative (-ve) for minutes earlier.</p> <h3><span style="color:cyan">Special Days</span></h3> These include special days (i.e. 25/12) and special weekdays (i.e. first Tuesday of the month) and as of v2.0.0 these can be included or excluded. You can if you wish (from v2.3.0 onwards) for example merely turn on BigTimer one day every month of the year by turning off ALL months and using the 12 special days. For those occasions where "alternative days" are required there are checkbox options to BAN output on even and/or odd days of the month. <h3><span style="color:cyan">References</span></h3> <p>See the Big Timer doc in the <a target="_blank" href="https://tech.scargill.net/big-timer"> scargill tech blog</a> for more information.</p> <h3><span style="color:cyan">Dependencies</span></h3> <p>Bigtimer uses the suncalc module.</p> </script> <script type="text/javascript"> RED.nodes.registerType('bigtimer',{ category: 'advanced-input', color:"#88dd22", inputLabels: "Optional overrides", outputLabels: ["one-off message","outputs every minute","speech/log output"], defaults: { outtopic: {value:"",validate:RED.validators.regex(/^[\.@a-zA-Z0-9_\/\-]*$/) }, outpayload1: {value:""}, outpayload2: {value:""}, name: {value:"Big T