Моніторинг температури через інтернет

У попередньому уроці ми зібрали пристрій, який вимірюватиме температуру і передаватиме цю інформацію на сервер. Тепер ми переходимо до аналізу алгоритму роботи керуючого контролера, його взаємодії з іншими вузлами передавального пристрою. Цей урок буде присвячений теоретичному аналізу програми контролера, без розгляду самого коду.

Деяким читачам може здатися, що теорія без практики надто нудна. В цьому випадку можете переходити відразу до наступного уроку, «залити» програму в контролер і випробувати його в роботі, а потім повернуться сюди та вивчити теорію.

Алгоритм роботи передавального пристрою

На представленій нижче діаграмі послідовності показаний загальний алгоритм роботи пристрою, що передає:

інтернет
Мал. 1. Загальний алгоритм роботи передавального пристрою

Після включення пристрою контролер здійснює початкову ініціалізацію всіх програмних структур та змінних. Потім він посилає модему послідовності команд, виконуючи які SIM900 спочатку підключається до GPRS, а потім відкриває вбудований HTTP-сервіс.

Усі наступні інструкції програми виконуються у нескінченному циклі:

Налаштування COM-порту Arduino

Обмін контролера та модему відбувається через послідовний порт.

Мал. 2. З'єднання контролера та модему через послідовний порт

Заводські налаштування порту модему такі:

  • Швидкість обміну: 19200 біт/с
  • 8 біт даних
  • Перевірка парності: ні
  • 1 стоп-біт

Підключення SIM900 до GPRS

Для того щоб модем виконав підключення до інтернету через GPRS, контролер посилає йому наступнікоманди:

Команда

Опис

1AT+SAPBR=3,1,“CONTYPE“,“GPRS“Тип підключення: GPRS2AT+SAPBR=3,1,“APN“,“internet“Точка доступу (APN). Для більшості операторів підходить “internet“ (інакше потрібно запитатиAPN у Вашого оператора)3AT+SAPBR=1,1Здійснити підключення

Таб. 1. Команди для підключення модему до GPRS

Якщо команда виконана успішно, модем відповідає "ОК", інакше - "ERROR".

Ініціалізація HTTP-сервісу SIM900

Модем SIM900 має реалізований його внутрішній логікою протокол HTTP. Це «своєрідний браузер», вбудований у чіп модему. Користувачеві залишається ініціалізувати його, після чого можна передавати через нього GET-і POST-запити, так само, як це відбувається у звичайному браузері.

Для ініціалізації HTTP-сокету контролер посилає модему наступні команди:

КомандаОпис
1AT+HTTPINITІніціалізаціяHTTPсервісу
2AT+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"

Цей же запит можна виразити у вигляді URL:

Щоб передати температуру на сервер, контролер додає до запиту параметр «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 °С, а реле увімкнено.

Передача запиту на сервер

Для надсилання запиту на сервер контролер посилає модему наступні команди:

Таб. 3. Команди передачі запиту на сервер

Якщо команда виконана успішно, модем відповідає "ОК", інакше - "ERROR".

Отримання відповіді від сервера

Як тільки відповідь від сервера отримана, модем надсилає контролеру рядок вигляду:

де 0 – тип запиту GET, 200 – код успішної відповіді – кількість отриманих байт.

Якщо код відповіді не 200 – це означає, що при передачі запиту відбулася помилка.

Відповідь від сервера складається із заголовків, що містять службову інформацію, та тіла відповіді.

Тіло є рядком виду:

де - команда для вихідного реле (1 - увімкнути, 0 - вимкнути).

Аналіз стану системи

Після того як команда для реле від сервера отримана, контролер виконує її. Якщо команда реле змінилася, контролер додає до нового запиту на сервер відповідний параметр (див. «GET-запит»). Завдяки цьому сервер отримає підтвердження про те, що пристрій отримав та виконав команду.

Потім контролер виготовляє інформаційнийобмін із датчиком температури DS18B20. Якщо температура змінилася, ця інформація також додається до нового запиту на сервер.

Алгоритм «виживання»

Алгоритм виживання використовується для запобігання непередбаченим ситуаціям в обміні з модемом. Збої в програмній логіці модему, «сміття», отримане від мережі та інші ситуації, можуть призвести до зависання модему або його неадекватної роботи. Застосовується найпростіший алгоритм виживання в таких ситуаціях: якщо протягом трьох хвилин від сервера не отримано жодних корисних даних - контролер перезавантажує модем.

Запобігання зависанню

Для запобігання зависанню контролера на самому початку програми ініціалізується сторожовий таймер. Цей таймер повинен бути скинутий програмно, перш ніж він переповниться. Для цього на кожному циклі програми виконується оператор скидання. При зависанні програми таймер не буде скинутий і відбудеться апаратне перезавантаження контролера.

Хмарний сервіс для моніторингу «LS Cloud»

Цей сервіс ми створили для того, щоб Ви вже на цьому етапі спромоглися випробувати роботу свого пристрою. Ну а для тих, хто хоче зрозуміти, як сервер влаштований "всередині", стежте за виходом наступних уроків. В одному з них ми покажемо, як самостійно створити веб-сервіс.

Основні елементи інтерфейсу програми показані на рисунках 3 та 4.

температури

Мал. 3. Екран моніторингу основних параметрів пристрою

На моніторингу основних параметрів пристрою (мал. 3) відображається інформація про поточну температуру, а також історичні дані про температуру за весь період роботи пристрою. Панель «Реле» дозволяє керувати вихідним реле пристрою, а до «Журналу» заносяться події, що відбуваються з пристроєм.

моніторинг

Мал. 4.Екран налаштувань приладу

На екрані налаштувань приладу (рис. 4) можна змінити основні налаштування приладу:

  • Ім'я
  • Верхній попереджувальний (тривожний) поріг температури – при його перевищенні генерується тривожна подія журналу.
  • Верхній аварійний поріг температури – при його перевищенні генерується аварійна подія журналу.
  • Нижній попереджувальний (тривожний) поріг температури – якщо температура опуститься нижче за нього, буде згенеровано тривожну подію в журнал.
  • Верхній аварійний поріг температури – якщо температура опуститься нижче за нього, буде згенеровано аварійну подію в журнал.
  • Таймаут (задається в секундах) - якщо протягом цього часу пристрій жодного разу не вийшов на зв'язок, генерується подія "втрата зв'язку з пристроєм".
  • Оповіщення при тривозі — при активації цього налаштування користувач отримуватиме повідомлення про тривожні події через email та SMS.
  • Оповіщення при тривозі — при активації цього налаштування користувач отримуватиме повідомлення про тривожні події через email та SMS.
  • Оповіщення при обривах зв'язку з пристроєм — при активації цього налаштування користувач отримуватиме повідомлення про події обриву зв'язку з пристроєм через email та SMS.

Висновок

На цьому ми закінчуємо третій урок! Сподіваємось, що він був корисний! У наступному уроці ми пройдемо програму в контролер і запустимо пристрій. До швидкої зустрічі наLAZY SMART ! Щоб не пропустити нову статтю, вступай до нашої групи Вконтакте, а також підписуйся на наш канал YouTube.