Архитектура системы
Структурно, архитектура системы Arduino Mega Server состоит из трёх частей:
- Код, работающий на стороне контроллера
- Код, работающий на стороне браузера
- Утилита Arduino Serial Commander, служащая для загрузки файлов на работающий сервер
Режимы работы системы
Контроллер без подключения браузера
Это основной режим работы контроллера в котором он проводит 99% своего времени. Подключение браузера отсутствует, интерфейс не работает. Контроллер занимается своими прямыми обязанностями, т. е. обслуживает датчики и периферийные устройства. Также, в этом режиме контроллер осуществляет сетевые взаимодействия (принимает и отдаёт команды и информацию по сети).
Контроллер с подключённым браузером
Пользователь открывает браузер и подключается к серверу AMS. В этот момент начинает работать интерфейс, который он видит на своём экране. Контроллер продолжает делать всё, что он делал без подключения интерфейса, плюс встроенный сервер начинает постоянный обмен данными с браузером. Обмен идёт непрерывно и в обе стороны — браузер посылает запросы, а контроллер отвечает на эти запросы требуемой информацией, которая отображается на экране пользователя.
Этот обмен запросами и ответами продолжается до тех пор, пока пользователь не закроет окно браузера. Как только он это сделает, контроллер переходит в свой обычный режим (без работы интерфейса).
Загрузка файлов на сервер
В любой момент, независимо от того, работает ли интерфейс или нет, может быть произведена загрузка файлов на сервер (microSD карту памяти). Если вам нужно изменить содержание веб-страниц сайта или логику работы скриптов, то вы можете отредактировать их на компьютере и при помощи утилиты Arduino Serial Commander отправить по Serial интерфейсу на контроллер. Передача происходит в течение нескольких секунд (на время передачи работа сервера блокируется) и после загрузки сервер начинает работать с вновь загруженным файлом.
Взаимодействие контроллерного и браузерного кода
При открытии пользователем браузера и соединении с сайтом AMS, происходит загрузка веб-страницы и соответствующих JavaScript файлов с сервера, которые, в свою очередь, инициируют обмен данными и начинают посылать периодические (раз в 1–2 секунды) запросы контроллеру.
На стороне контроллера эти запросы парсятся (разбираются) и на них формируются соответствующие ответы, которые посылаются обратно браузеру. На стороне браузера, скриптами, из этих ответов извлекаются данные и динамически помещаются на веб-страницу. Это, вкратце, принцип организации интерфейса Arduino Mega Server.
Как конкретно это делается вы можете узнать, проанализировав код или из документации и руководств по Arduino Mega Server.