Теоретическая часть. Принципы работы и программирования LuckyBox

Главная Форумы Конструкторское бюро Автоматизация Автоматика LuckyBox Теоретическая часть. Принципы работы и программирования LuckyBox

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Автор
    Сообщения
  • #20772
    Счастливчик
    Хранитель
    • Ответов: 2655
    @wpadm

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

    Первое видео – Введение в LuckyBox, место в технологическом пространстве, основные идеи.

    Хорошо живет на свете Винни-Пух...

    #20773
    Счастливчик
    Хранитель
    • Ответов: 2655
    @wpadm

    Введение в архитектуру LuckBox, часть 1

    Хорошо живет на свете Винни-Пух...

    #20774
    Счастливчик
    Хранитель
    • Ответов: 2655
    @wpadm

    Превосходный пост от форумчанина Роман, в дополнение к предыдущему видео. Привожу полную цитату.

    Роман:

    “Видео https://www.youtube.com/watch?v=S_uUenTkda4 уже вышло на ютубе, а здесь я не увидел его. Поскольку в этом видео была просьба комментарии писать здесь, а не там, я и напишу здесь. Правда, будет непонятно, что я комментирую 🙂

    В одном ролике невозможно объяснить всё с самого начала (для чайников). Однако, это и не нужно. Нет смысла знать внутреннюю архитектуру модуля ESP8266, всё равно она сложнее, чем можно объяснить. Но вот акцентировать внимание на том, что этот модуль – не просто микропроцессор, а именно WiFi модуль, необходимо. Потому что по видео непонятно, через что осуществляется обмен информацией между модулем и смартфоном/компьютером.

    Также стоит сказать, что в данной концепции (использование web-интерфейса) используются те же приёмы и средства, которые используются при создании “обычных” web сайтов (страниц), то есть, по сути, наш модуль ESP8266 содержит в себе web сайт!

    Этот “сайт” расположен не в Интернете, а в локальной WiFi сети. Поэтому и доступ к нашему “сайту” имеют только устройства, подключенные к этой локальной WiFi сети. Для этого устройство должно иметь на борту браузер, а также необходимо знать адрес “сайта”. Поскольку мы имеем дело с домашней сетью, осмысленного наименования “сайта” мы не получим (в нашей сети нет DNS-сервера). Поэтому придётся использовать цифровой IP адрес. Этот адрес имеет вид 192.168.Х.Y.

    Модуль ESP8266 может работать в двух основных режимах: режим точки доступа (AP) и режим подключения к существующей WiFi сети.

    В режиме точки доступа модуль ESP8266 создаёт свою собственную WiFi сеть, которая называется LuckyBox. К этой сети можно подключиться с любого смартфона/планшета, введя пароль 12345678. Режим точки доступа необходим для того, чтобы а) при первом включении мы могли ввести наименование и пароль своей домашней сети и б) можно было работать в таком месте, где домашней сети нет вообще. IP адрес модуля в режиме точки доступа фиксированный (192.168.4.1). Именно его следует ввести в адресную строку браузера после подключения к точке доступа LuckyBox. При этом загружается страница настроек, на которой можно ввести наименование и пароль своей домашней WiFi сети и сохранить их в упомянутом файле конфигурации. После этого при перезагрузке/подаче питания на модуль ESP8266 он будет пытаться подключиться к указанной в файле конфигурации домашней WiFi сети. В случае успешного подключения роутер выдаст модулю IP адрес.

    Этот IP адрес динамический, то есть его значение может меняться от подключения к подключению. Узнать, какой IP адрес у модуля в данный момент, можно как минимум двумя способами.

    Первый способ требует подключения модуля к компьютеру USB кабелем. Находясь в программе Arduino IDE, следует открыть Монитор порта. При этом модуль будет автоматически перезагружен, и в окне Монитора появятся служебные сообщения. В том числе будет указан IP адрес. Вводим этот адрес в адресную строку браузера и заходим на наш “сайт”.

    Второй способ основан на упомянутой функции SSDP. Однако не на всех компьютерах это работает. Например, на моём – не работает. Поэтому альтернативный способ “добывания” IP адреса знать необходимо.

    Обмен данными между web сервером (модулем) и открытой в браузере страницей осуществляется методом AJAX (Asynchronous Javascript and XML), то есть без перезагрузки страницы. Изменяются только те элементы страницы, которые изменять необходимо, например, значения температуры, уставок и т. п. Все остальные элементы страницы (текст, рисунки) загружаются лишь один раз. Это позволяет уменьшить трафик и ускорить обновление информации.

    Метод AJAX основан на JavaScript. Будем считать, что это такой язык программирования. Текст программы на JavaScript называется “скрипт”. Скрипты обрабатываются и выполняются средствами браузера. Использование JavaScript позволяет переложить большую часть вычислений, требующих нагрузки на процессор, с web сервера на браузер конечного пользователя. Тем самым можно снять нагрузку с компьютера, на котором установлен web сервер, и, следовательно, использовать менее мощный (и дешёвый) компьютер. В нашем случае таким маломощным компьютером является микропроцессор модуля ESP8266.

    Текст загруженной в браузер html-страницы содержит также и либо сам текст скрипта, либо ссылку на файл *.js, содержащий текст скрипта. Браузер, открыв страницу, загружает и начинает выполнять команды скрипта. Например, в нашем случае, скрипт содержит команды, направленные на периодическую передачу запросов значений температуры. Период формирования запросов задаётся в скрипте. Скрипт формирует текст запроса, содержащий некоторое ключевое слово, вводит его в адресную строку браузера и передаёт на сервер (а сервер – это модуль ESP8266). Затем скрипт ждёт ответа от сервера.

    В это время сервер принимает запрос, обнаруживает ключевое слово и в соответствии с этим ключевым словом выполняет функцию, формирующую текст ответа в виде файла *.json.

    Аббревиатура json означает JavaScript Object Notation. Нужно заметить, что файлы *.json – это обычные текстовые файлы, их можно открыть в Блокноте. Формат файла *.json очень прост. Он содержит пары “переменная:значение”, перечисляемые через запятую.

    Сформировав текст файла *.json, сервер отсылает его браузеру. Таким образом сервер сообщает браузеру значения запрошенных переменных.

    Приняв ответ на свой запрос, браузер (а, точнее, скрипт) разбирает (парсит) текст файла *.json, подставляя принятые значения переменных в нужные поля на странице. Таким образом на странице изменяются только текущие значения температур.

    Практически так же осуществляется передача данных от страницы к серверу. Например, мы вводим значение уставки и нажимаем кнопку ЗАДАТЬ. Скрипт отслеживает нажатие этой кнопки и в случае появления этого события выполняет функцию, которая формирует текст запроса, содержащий ключевое слово (другое!) и введённое значение уставки. Этот запрос вводится в адресную строку и отправляется на сервер. Сервер принимает запрос, обнаруживает ключевое слово и выполняет соответствующую функцию, которая изменяет значение внутренней переменной модуля (уставку) на принятое от браузера. Также обычно формируется ответ на запрос, подтверждающий принятие запроса и выполнение необходимых действий. Это ответ отправляется браузеру, и, если он положительный, то ничего не происходит. Если ответ отрицательный или вовсе отсутствует, браузер может вывести предупреждающее сообщение.”

    Хорошо живет на свете Винни-Пух...

    #21212
    Счастливчик
    Хранитель
    • Ответов: 2655
    @wpadm

    Видео по Архитектуре ПО. Часть 2. Веб-интерфейс

    Хорошо живет на свете Винни-Пух...

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Для ответа в этой теме необходимо авторизоваться.