Мониторинг температуры через интернет с помощью GSM-модуля SIM900. Урок 3.
В предыдущем уроке мы собрали устройство, которое будет измерять температуру и передавать эту информацию на сервер. Теперь мы переходим к разбору алгоритма работы управляющего контроллера, его взаимодействию с другими узлами передающего устройства. Этот урок будет посвящён теоретическому разбору программы контроллера, без рассмотрения самого кода.
Некоторым читателям может показаться, что теория без практики слишком скучна. В этом случае можете переходить сразу к следующему уроку, «залить» программу в контроллер и испробовать его в работе, а потом вернутся сюда и изучить теорию.
Алгоритм работы передающего устройства
На представленной ниже диаграмме последовательности показан общий алгоритм работы передающего устройства:
Рис. 1. Общий алгоритм работы передающего устройства
После включения устройства контроллер производит начальную инициализацию всех программных структур и переменных. Затем он посылает модему последовательности команд, выполняя которые, SIM900 сначала подключается к GPRS, а после открывает встроенный HTTP-сервис.
Все последующие инструкции программы выполняются в бесконечном цикле:
- Контроллер даёт модему команду «Отправить запрос на сервер» и указывает содержание запроса. Модем посылает запрос и ждёт ответ от сервера.
- После того, как ответ от сервера получен, модем передаёт его контроллеру.
- В ответе от сервера, кроме служебной информации, содержится текущая команда для выходного реле. Контроллер принимает эту команду и выполняет её.
- Далее контроллер производит цифровой обмен с термодатчиком и получает от него текущее значение температуры.
- Если параметры системы (состояние выходного реле или температура) изменились по сравнению с предыдущим кругом цикла, контроллер передаст эти параметры в следующем запросе на сервер.
Настройка COM-порта Arduino
Обмен контроллера и модема происходит через последовательный порт.
Рис. 2. Соединение контроллера и модема через последовательный порт
Заводские настройки порта модема следующие:
- Скорость обмена: 19200 бит/с
- 8 бит данных
- Проверка чётности : нет
- 1 стоп-бит
Подключение SIM900 к GPRS
Для того чтобы модем выполнил подключение к интернету по GPRS, контроллер посылает ему следующие команды:
| № |
Команда |
Описание |
| 1 | AT+SAPBR=3,1,“CONTYPE“,“GPRS“ | Тип подключения : GPRS |
| 2 | AT+SAPBR=3,1,“APN“,“internet“ |
Точка доступа (APN). Для большинства операторов подходит “internet“ (в противном случае нужно запросить APN у Вашего оператора) |
| 3 | AT+SAPBR=1,1 | Выполнить подключение |
Таб. 1. Команды для подключения модема к GPRS
Если команда выполнена успешно, модем отвечает «ОК», в противном случае – «ERROR».
Инициализация HTTP-сервиса SIM900
Модем SIM900 имеет реализованный его внутренней логикой протокол HTTP. Это «своеобразный браузер», встроенный в чип модема. Пользователю остаётся инициализировать его, после чего можно передавать через него GET- и POST-запросы, так же, как это происходит в обычном браузере.
Для инициализации HTTP-сокета, контроллер посылает модему следующие команды:
| № | Команда | Описание |
| 1 | AT+HTTPINIT | Инициализация HTTP сервиса |
| 2 | AT+HTTPPARA=“CID“,1 | Установка CID параметра для HTTP сессии оператора. |
Таб. 2. Команды для инициализации HTTP
Если команда выполнена успешно, модем отвечает «ОК», в противном случае – «ERROR».
Отправка GET-запроса на сервер
Для реализации обмена данными с сервером используются GET-запросы (один из типов запроса стандарта HTTP).
GET-запрос имеет следующий вид:
«GET /device_status.php?LOG= 1111&PAS=2222 HTTP/1.1»
«HOST: t.lazysmart.ru»
В запросе:
- «GET» – тип запроса
- «/device_status.php» – URI (путь к запрашиваемому скрипту на сервере)
- После знака «?» идут передаваемые на сервер параметры и их значения. В данном примере параметры LOG и PAS – это логин и пароль для авторизации устройства на сервере. Эти параметры присваиваются устройству при его регистрации на сервере и не могут быть изменены. Посмотреть их можно через веб-приложение LS Cloud по адресу t.lazysmart.ru в меню «Настройки» этого устройства. В процессе работы устройства в запрос могут добавляться другие параметры, отражающие состояние системы (текущую температуру и состояние выходного реле).
- «HTTP/1.1» — версия протокола
- «HOST:…» — адрес сервера, к которому адресован запрос
Этот же запрос можно выразить в виде URL:
«http://t.lazysmart.ru /device_status.php?LOG=1111&PAS=2222»
Чтобы передать температуру на сервер, контроллер добавляет к запросу параметр «BT», а для передачи состояния выходного реле параметр «CSt». BT содержит значение температуры, умноженное на 10, а CSt принимает значение 0 или 1, где 0 – реле выключено, а 1 – включено.
Например, в запросе «http://t.lazysmart.ru/device_status.php?LOG=1111&PAS=2222&BT=127&CSt=1» передаваемые параметры означают, что температура равна 12,7 °С, а реле включено.
Передача запроса на сервер
Для отправки запроса на сервер, контроллер посылает модему следующие команды:
| № | Команда | Описание |
| 1 | AT+HTTPPARA=“URL“,“http:// t.lazysmart.ru /device_status.php?LOG=1111&PAS=2222“ | Указание содержание запроса |
| 2 | AT+HTTPACTION=0 | Старт обмена данными Параметр, метод запроса: 0 – GET 1 – POST 2 – HEAD |
Таб. 3. Команды для передачи запроса на сервер
Если команда выполнена успешно, модем отвечает «ОК», в противном случае – «ERROR».
Получение ответа от сервера
Как только ответ от сервера получен, модем посылает контроллеру строку вида:
+HTTPACTION:0,200, <…> ,
где 0 – тип запроса GET, 200 – код успешного ответа, <…> — количество полученных байт.
Если код ответа не 200 – значит, при передаче запроса произошла ошибка.
Если от сервера получен «успешный» ответ, контроллер посылает модему команду «AT+HTTPREAD». В ответ на эту команду модем начинает передавать контроллеру содержание ответа сервера.
Ответ от сервера состоит из заголовков, содержащих служебную информацию, и тела ответа.
Тело представляет собой строку вида:
“COMMAND <…> EOC”,
где <…> — команда для выходного реле (1 – включить, 0 – выключить).
Анализ состояния системы
После того, как команда для реле от сервера получена, контроллер выполняет её. Если команда реле поменялась, — контроллер добавляет к новому запросу на сервер соответствующий параметр (см. «GET-запрос»). Благодаря этому сервер получит подтверждение о том, что устройство получило и выполнило команду.
Затем контроллер производит информационный обмен с датчиком температуры DS18B20. Если температура изменилась – эта информация также добавляется в новый запрос на сервер.
Алгоритм «выживания»
Алгоритм выживания используется для предотвращения непредвиденных ситуаций в обмене с модемом. Сбои в программной логике модема, «мусор» полученный от сети и другие ситуации — могут привести к зависанию модема или его неадекватной работе. Применяется простейший алгоритм «выживания» в таких ситуациях: если в течение трёх минут от сервера не получено никаких полезных данных – контроллер перезагружает модем.
Предотвращение зависания
Для предотвращения зависания контроллера в самом начале программы инициализируется сторожевой таймер. Этот таймер должен быть сброшен программно, раньше, чем он переполнится. Для этого на каждом цикле программы выполняется оператор его сброса. При зависании программы таймер не будет сброшен и произойдёт аппаратная перезагрузка контроллера.
Облачный сервис для мониторинга «LS Cloud»
Данные, передаваемые устройством на сервер, сохраняются в базе данных и доступны пользователю через веб-приложение “LS Cloud” по адресу t.lazysmart.ru.
Этот сервис мы создали для того, чтобы Вы уже на этом этапе смогли опробовать работу своего устройства. Ну а для тех, кто хочет понять, как сервер устроен «внутри», следите за выходом следующих уроков. В одном из них мы покажем, как самостоятельно создать веб-сервис.
Основные элементы интерфейса приложения показаны на рисунках 3 и 4.
Рис. 3. Экран мониторинга основных параметров устройства
На экране мониторинга основных параметров устройства (рис. 3) отображается информация о текущей температуре, а так же исторические данные о температуре за весь период работы устройства. Панель «Реле» позволяет управлять выходным реле устройства, а в «Журнал» заносятся события, происходящие с устройством.
Рис. 4. Экран настроек прибора
На экране настроек прибора (рис. 4) можно изменить основные настройки прибора:
- Имя
- Верхний предупредительный (тревожный) порог температуры – при его превышении генерируется тревожное событие в журнал.
- Верхний аварийный порог температуры – при его превышении генерируется аварийное событие в журнал.
- Нижний предупредительный (тревожный) порог температуры – если температура опустится ниже него, будет сгенерировано тревожное событие в журнал.
- Верхний аварийный порог температуры – если температура опустится ниже него, будет сгенерировано аварийное событие в журнал.
- Таймаут (задаётся в секундах) – если в течение этого времени устройство ни разу не вышло на связь, генерируется событие «потеря связи с устройством».
- Оповещение при тревоге — при активации этой настройки пользователь будет получать сообщения о тревожных событиях по email и SMS.
- Оповещение при тревоге — при активации этой настройки пользователь будет получать сообщения о тревожных событиях по email и SMS.
- Оповещение при обрывах связи с устройством — при активации этой настройки пользователь будет получать сообщения о событиях обрыва связи с устройством по email и SMS.
Заключение
На этом мы заканчиваем третий урок! Надеемся, что он был полезен! В следующем уроке мы прошьём программу в контроллер и запустим устройство. До скорой встречи на LAZY SMART! Чтобы не пропустить новую статью, вступай в нашу группу Вконтакте, а также подписывайся на наш канал YouTube.



Добавить комментарий