2. Энергосбережение и SMS-уведомление

Основные задачи:

  1. Если не сработал ни один из выбранных датчиков, устройство переходит в режим энергосбережения.
  2. Устройство должно периодически пробуждаться и выходить на связь с сервером.
  3. Если уровень напряжения основного питания ниже заданного значения - уведомить пользователя по SMS.
  4. Если было отправлено извещение о низком уровне питания, то после восстановления питания снова уведомить пользователя по SMS.

Дополнительные условия:

  • Для перехода в режим энергосбережения все контролируемые датчики должны быть в норме заданное время.
  • Если двигатель заглушен, то отключить заряд встроенного аккумулятора.
  • Перед отправкой уведомлений о низком и нормальном уровне напряжения необходимо использовать задержки, которые исключают отправку сообщений при краткосрочном срабатывании порогов.


Пример программы: https://disk.yandex.ru/d/PiQT2LFlzlE6Uw


Реализация

На вкладке Системные настройки включено энергосбережение, выбран вариант "Режим энергосбережения управляется функцией Complex Events".
На вкладке Абоненты в первом слоте указан номер телефона для SMS оповещения о состоянии питания.

Программа контролирует показатели: "перемещение", "подключение USB", "работа двигателя по напряжению", "подключение к RCS/RFU/DRC", "подключение по Bluetooth".
Если все показатели не активны на протяжении 5 минут, то активируется режим энергосбережения, в котором устройство периодически отключает GSM и GNSS модули:

Также, устройство отключает зарядку встроенной аккумуляторной батареи когда двигатель заглушен (контроль работы двигателя ведется по напряжению бортовой сети).

Дополнительно производится контроль напряжения бортовой сети:

  • если значение напряжения ниже 11.7В и это состояние удерживается более 5 мин, то Абоненту 1 будет отправлено SMS-оповещение;
  • если значение напряжения восстанавливается (превышает 12.2В) и это состояние удерживается 1 минуту, то Абоненту 1 будет отправлено SMS-оповещение.


Схема

Общая структура программы состоит из двух последовательных блоков «Действие»:


«energy_save» - блок содержит в себе алгоритм по управлению энергосбережением.

«sms_send» - блок содержит алгоритм контроля напряжения бортовой сети и выполняет SMS-информирование.

Оба блока совершенно независимы и, в принципе, могут быть использованы по отдельности в виде двух разных программ (одна только для управления энергосбережением, вторая только для SMS информирования).

В файл с программой добавлены комментарии, поэтому в статье не приведен подробный разбор элементов схемы.