createSchedule method

Future<void> createSchedule(
  1. String nodeId,
  2. String name,
  3. String id,
  4. List<ScheduleTrigger> triggers,
  5. Map<String, dynamic> action,
)

Helper function for adding a default Rainmaker schedule.

Takes an action parameter that triggers at the given time. The action parameter is identical to the parameters used by the other state functions.

E.g.

{
 'Light': {
   'brightness': 0,
   'output': true,
 },
 'Switch': {
   'output': true,
 }
}

Implementation

Future<void> createSchedule(String nodeId, String name, String id,
    List<ScheduleTrigger> triggers, Map<String, dynamic> action) async {
  final parsedTriggers = <Map<String, dynamic>>[];
  for (final trigger in triggers) {
    if (trigger is DayOfWeekTrigger) {
      parsedTriggers.add({
        'd': _getBitList<DaysOfWeek>(trigger.daysOfWeek),
        'm': trigger.minutesSinceMidnight,
      });
    } else if (trigger is DateTrigger) {
      parsedTriggers.add({
        'dd': trigger.day,
        'mm': _getBitList<MonthsOfYear>(trigger.months),
        'yy': trigger.year,
        'r': trigger.repeatEveryYear,
        'm': trigger.minutesSinceMidnight,
      });
    }
  }

  await updateState(nodeId, {
    'Schedule': {
      'Schedules': [
        {
          'name': name,
          'id': id,
          'operation': 'add',
          'triggers': parsedTriggers,
          'action': action,
        }
      ],
    }
  });
}