50 lines
1.7 KiB
Markdown
50 lines
1.7 KiB
Markdown
# ESP Scheduling
|
|
|
|
[](https://components.espressif.com/components/espressif/esp_schedule)
|
|
|
|
This component is used internally by ESP RainMaker to implement schedules.
|
|
|
|
> Note: By default, the time is w.r.t. UTC. If the timezone has been set, then the time is w.r.t. the specified timezone.
|
|
|
|
## Test code:
|
|
|
|
```
|
|
#include <esp_schedule.h>
|
|
|
|
void app_schedule_trigger_cb(esp_schedule_handle_t handle, void *priv_data)
|
|
{
|
|
printf("priv_data: %.*s\n", (char *)priv_data);
|
|
}
|
|
|
|
static char *priv_data_global = "from app";
|
|
|
|
void app_schedule_set()
|
|
{
|
|
esp_schedule_config_t schedule_config = {
|
|
.name = "test",
|
|
.trigger.type = ESP_SCHEDULE_TYPE_DAYS_OF_WEEK,
|
|
.trigger.hours = 13,
|
|
.trigger.minutes = 30,
|
|
.trigger.day.repeat_days = ESP_SCHEDULE_DAY_MONDAY | ESP_SCHEDULE_DAY_THURSDAY,
|
|
.trigger_cb = app_schedule_trigger_cb,
|
|
.priv_data = priv_data_global,
|
|
};
|
|
esp_schedule_create(&schedule_config);
|
|
}
|
|
|
|
void app_schedule_init()
|
|
{
|
|
uint8_t schedule_count;
|
|
esp_schedule_handle_t *schedule_list = esp_schedule_init(true, NULL, &schedule_count);
|
|
if (schedule_count > 0 && schedule_list != NULL) {
|
|
ESP_LOGI(TAG, "Found %d schedule(s) in NVS.", schedule_count);
|
|
for (size_t i = 0; i < schedule_count; i++) {
|
|
esp_schedule_config_t schedule_config;
|
|
esp_schedule_get(schedule_list[i], &schedule_config);
|
|
schedule_config.trigger_cb = app_schedule_trigger_cb;
|
|
schedule_config.priv_data = priv_data_global;
|
|
esp_schedule_edit(schedule_list[i], &schedule_config);
|
|
}
|
|
}
|
|
}
|
|
```
|