Setting up scheduled data transmissions

You can set up the Wavelet to schedule its data transmissions to the time of the day you prefer.

In some cases, there is a need to schedule the data transmission of the Wavelet to a specific time of the day (and not based on particular intervals). Wavelet devices only support this feature with firmware (FW) version 2.429 and above, and you can set it up in the advanced configuration of the Wavelet.

This article explains set up for the scheduled transmission feature in a Wavelet.

Step 1 - Confirm the Wavelet FW version supports the scheduled transmission feature

Use the FAI or the AyyekaGo mobile app to verify that the Wavelet has FW 2.429 or higher.

Step 2 - Configure the feature in the advanced configuration

Use the advanced configuration to set up the scheduled transmission.

The feature allows scheduling events on the device on specified hours/dates. The schedules are encoded in Cron syntax.

Cron syntax

Cron is a Job scheduler utility common in Linux systems. we adapted the Cron syntax to specify job schedules

a schedule string is made of 5 fields separated by spaces:

A schedule transmission command (Cron job) will be executed if all the fields of the Cron expression match the current date/time.

The values of the fields can be either:

  • wildcard: * matches all

  • simple values: e.g., 0 0 1 1 * will match at 1/1 00:00 on any day of the week

  • ranges: 0-3: e.g 0 12-17 * * * will match on every round hour from 12:00 to 17:00

  • intervals: */n matches on every nth division e.g */5 * * * * will match every 5 minutes

In addition, multiple values can be grouped into a field using commas:

e.g: */5 7-9,19-21 * 1,5 * will match on every 5 min between 7-9 am and 19-21 pm on January and May

examples

every Sunday at 13:00 0 13 * * 0
every 5 minutes between 7:00 and 14:00 */5 7-14 * * *
every 1st of the month at 12:00 and 00:00 0 0,12 1 * *

You can create your Cron syntax online here - link

Scheduled events in Wavelet

The Wavelet will execute Cron jobs when a cron expression matches the current datetime (in UTC)

Currently, we implemented two scheduled jobs: HTTP and MQTT transmissions.

HTTP transmission schedule can be set by writing a valid Cron expression to the
gsm->http_tx_cron setting

MQTT transmission schedule can be set by writing a valid Cron expression to the
gsm->mqtt_tx_cron setting

the Cron transmission schedule is used in addition to the regular tx intervals (configured by gsm_settings.http_tx_interval/mqtt_tx_interval), so the Wavelet will transmit if either the cron expression is matched or an amount of time >= tx_interval has passed since last communication with the server.

Known issues and recommendations:

Try to keep scheduled events separated by at least 5 minutes or so

It is recommended to set a long tx_interval if the Cron schedule is to be used

It’s better to avoid expressions that have non-wildcard values at both the weekday and day-of-month fields, e.g., “0 * * 1 1” which means “every round hour on the 1st of the month and on Mondays”: both weekday and month-day conditions need to be satisfied for the condition to match so this will only match when the 1st of the month falls on a Monday