Programmatically send downlinks only within individual timeframe, not on weekends, within the week only.
Last updated
Guide
In this tutorial, we are going to show you how you can use the downlink editor function to programmatically set a time frame in which a downlink is being queued up.
Downlink Editor
Please open up your downlink editor or create a new downlink.
Now you can see the downlink editor and here you can paste your custom downlink encoder. This looks like the following:
Now you need to make changes to your existing Downlink Encoder or create a new one. We show you what you need to do in the next chapter.
The Code
Original Encoder
Let's assume you would already have a downlink encoder set up and this would look like the following:
functionEncoder(measurements, port) {// Send the following payloadreturn [0x00,0xFF,0x00,0xFF];}
Timeframe Option
Now we will add a timeframe to the above downlink. This will look like the following. You can copy and paste this and only adapt the payload that you want to send.
functionEncoder(measurements, port) {// WARNING!!! Please note that this is UTC Time!!!// Please convert to your local timezone!!!var startTime ='07:00:00'; // 9am CETvar endTime ='16:00:00'; // 6pm CETvar currentDate =newDate() startDate =newDate(currentDate.getTime());startDate.setHours(startTime.split(":")[0]);startDate.setMinutes(startTime.split(":")[1]);startDate.setSeconds(startTime.split(":")[2]); endDate =newDate(currentDate.getTime());endDate.setHours(endTime.split(":")[0]);endDate.setMinutes(endTime.split(":")[1]);endDate.setSeconds(endTime.split(":")[2]);// Check if is validvar valid = startDate < currentDate && endDate > currentDate// if the current time lies within the desired timeframeif (valid) {// send the actual downlinkreturn [0x00,0xFF,0x00,0xFF]; // TODO: Replace with your Downlink! }// in case it is not valid, do not return anything here // in order to abort sending a downlink}
If you now replace the downlink payload from the example with your own downlink payload, you have successfully set up a timeframe downlink.
Timezone Adjustment
Downlink Encoders are being executed on the Datacake Backend so please make sure that the time you provide here is converted to your actual timezone (and in respect of stupid daylight savings)
For example, if you live in Germany you would likely add additional 2 hours.
var startTime ='07:00:00'; // 9am CETvar endTime ='16:00:00'; // 6pm CET
Weekend Pause
If you want your automated downlinks to be valid on workdays only (and avoid the weekend) you can adapt the above code by adding a "is it weekend already?" check.