2. Энергосбережение и SMS-уведомление
Основные задачи:
- Если не сработал ни один из выбранных датчиков, устройство переходит в режим энергосбережения.
- Устройство должно периодически пробуждаться и выходить на связь с сервером.
- Если уровень напряжения основного питания ниже заданного значения - уведомить пользователя по SMS.
- Если было отправлено извещение о низком уровне питания, то после восстановления питания снова уведомить пользователя по 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 информирования).
В файл с программой добавлены комментарии, поэтому в статье не приведен подробный разбор элементов схемы.