ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени

в 14:11, , рубрики: diy или сделай сам, esp8266, flprog, Беспроводные технологии, Блог компании FLProg, программирование микроконтроллеров, Промышленное программирование

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 1

В этом уроке мы рассмотрим использование пользовательских системных переменных для связи web интерфейса настройки и схемы проекта. Так же попробуем настроить синхронизацию системных часов контроллера с серверами точного времени.

Данный урок создан для версии 3.1.4, которая сейчас находится в предрелизовом тестировании. Скачать её можно здесь. Более подробно о проекте FLProg можно узнать из блога компании на хабре, сайта проекта и форума. Кроме того на канале ArduinoProm можно посмотреть огромное множество видео уроков.

В качестве основы будем использовать проект, созданный на прошлом уроке.

Для начала создадим в три системных пользовательских параметра, в которых будет хранится текущее системное время контролера, часовой пояс, и адрес сервера точного времени, с которым будем синхронизироваться. Для этого находим ветку «Добавить параметр» в дереве проекта в узле “Пользовательские параметры”.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 2

Откроется окно диалога добавления нового системного параметра. Заполним его.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 3

В поле “Имя” введём имя параметра. Выберем тип параметра – “String”. Значение этого параметра будет динамически изменяться в процессе работы, поэтому отключим сохранение значение параметра в EEPROM. Поэтому же не задаем значение по умолчанию. Максимальную длину строки оставим 20 (вывод будет в виде 01:01:01 01-01-2018 то есть 19 символов).

Таким же образом добавим второй параметр

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 4

Только оставим сохранение в EEPROM, что бы контроллер запоминал введённый нами сервер, и зададим сервер по умолчанию.

И наконец, создадим третий параметр, значение часового пояса, для корректного отображения времени.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 5

Тип параметра Integer, Обязательно сохранять в EEPROM, значение по умолчанию, на Ваш выбор (у меня это 4 часа).

В результате мы получили три пользовательских параметра

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 6

Переходим к схеме прошивки.

В библиотеке функциональных блоков находим блок “Получение времени с NTP сервера” и претаскиваем его на рабочую область схемы

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 7

Двойной клик по этому блоку открывает редактор параметров блока.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 8

Рассмотрим настройки поподробнее.
NTP сервер — адрес сервера с которого будет браться точное время. Можно задать как константу. Можно выбрать из списка стандартных. Я все проверял – работают. Для выбора нажмите кнопку “Стандартные сервера”.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 9

Но поскольку мы хотим “по взрослому” задавать адрес сервера из web интерфейса ставим галочку в чек бокс “Вход

Период запроса до получения первого ответа – периодичность, с которой контроллер будет “стучаться” на сервер пока не получит время в первый раз. Оставляем константой значение раз в 30 секунд. Возможно так же установить вход, тогда на него необходимо будет подавать значение в миллисекундах.

Период запроса после получения первого ответа — как часто контроллер будет уточнять время у сервера. Оставляем по умолчанию, раз в полчаса. Так же можно задавать через вход, в миллисекундах.

Часовой пояс – Поскольку сервер отдаёт время по Гринвичу, этим параметром задаем смещение часового пояса в часах. Мы решили задавать этот параметр через web интерфейс, поэтому ставим галочку в чек бокс “Вход

Выход “Год”, Выход “Месяц”, Выход “День”, Выход “Час”, Выход “Минута”, Выход “Секунда” – в данном уроке они нам не нужны, поэтому галочки не устанавливаем.

Выход “Unix Time” – этот выход нам не нужен, галочку не ставим (если честно я пока не придумал User Case для него. Но на всякий случай сделал, вдруг, кому то пригодится).

Итого у нас получилась такая настройка блока

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 10

Соответственно изменился и блок на схеме прошивки

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 11

Найдем в библиотеке блок “Чтение системного параметра” и перетаскиваем его на схему.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 12

Двойной клик по этому блоку, и начинаем настраивать его параметры.

Сначала нажимаем кнопку выбора системного параметра.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 13

Открывается окно выбора системного параметра. Выбираем параметр “Сервер точного времени

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 14

На этом настройка блока закончена.

Располагаем удобно блоки и соединяем выход блока “Чтение системного параметра” со входом “Server” блока “Получение времени с NTP сервера

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 15

Перетаскиваем на схему ещё один блок “Чтение системного параметра” и настраиваем его на чтение параметра “Часовой пояс”.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 16

Соединяем выход этого блока со входом “TimeZone” блока “Получение времени с NTP сервера

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 17

Добавляем на схему новую плату. Для этого нажимаем кнопку “Добавить плату

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 18

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

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 19

Вытаскиваем на схему на вторую плату блок “Получение данных с часов точного времени

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 20

Двойным кликом по нему вызываем диалог настройки блока. Нажав кнопку “New” вызываем диалог выбора часов и выбираем “Системные часы контроллера”.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 21

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 22

Затем ставим галочку “Выход “Часы”

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 23

И заканчиваем редактирование блока.

Затем копируем этот блок ещё пять раз, переставляя в настройках каждого из них галочку выхода в последовательности Минута – Секунда – День — Месяц – Год.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 24

Теперь вытаскиваем на схему из библиотеки блок “Конвертация строк”.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 25

И в его настройках выбираем тип конвертации “Время

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 26

Копируем блок ещё пять раз, и собираем схему

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 27

Переносим на схему из библиотеки блок “Сложение строк

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 28

В настройках блока задаём 11 входов.

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 29

И соединяем блоки согласно схеме

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 30

На свободных входах блока задаём константы

Вход 2 — “:”
Вход 4 — “:”
Вход 6 – Пробел
Вход 8 — “-”
Вход 10 – “-”

Для задания константы производим клик правой кнопкой мыши на свободном входе и из выпавшего меню выбираем “Вставить константу

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 31

Откроется окно ввода константы, где в поле “Значение по умолчанию” вводится необходимая константа

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 32

Теперь вытаскиваем из библиотеки на схему блок “Запись системного параметра

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 33

В настройках блока снимаем галочку “Вход разрешения записи” и выбираем параметр “Дата — Время

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 34

Соединяем выход блока “Сложение строк” со входом блока “Запись системного параметра

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 35

В результате у нас должна получится такая схема (Для наглядности развернём первую плату).

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 36

Со схемой прошивки закончили, возвращаемся к дереву проекта.

На главную страницу Web интерфейса добавим три параметра (как это сделать смотри в предыдущем уроке).

Параметр 1 – Системный параметр “Дата — Время”, тип параметра – “Текст”, лейбла – “Время

Параметр 2 – Системный параметр “Сервер точного времени”, тип параметра – “Поле ввода”, лейбла – “Сервер

Параметр 3 – Системный параметр “Часовой пояс”, тип параметра – “Поле ввода”, лейбла – “Часовой пояс

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 37

Включаем на странице кнопку “Save

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 38

Заливаем программу в контроллер, и смотрим, что у нас получилось на главной странице (как это сделать, смотри предыдущий урок)

Сразу после подключения – с сервером точного времени ещё не синхронизировались

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 39

Через минуту (обновили страницу) – прошла синхронизация

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 40

Сменили часовой пояс и нажали кнопку сохранить

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени - 41

Проект, созданный на уроке можно скачать здесь.

Автор: totuin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js