Системное время / RTC / NTP |
Содержание
Общие данные
Общие данныеПрошивка «Smacont-ESP» поддерживает отсчет системного времени. При подаче питания или при сбросе устройства, отсчет системного времени устройства начинается с «05.04.2021 ВС 00:00:00». Просмотр системного времени устройства осуществляется на вкладке «Сист. время». ![]() Вкладка «Сист. время»
Системное время устройства может быть синхронизировано по данным от:
Синхронизированное системное время устройства может применяться, например, совместно с «CRON» для выполнения действий по расписанию. Действие «ini_sysTime()»Тактирование системного времени устройства осуществляется от кварцевого резонатора, стабильность работы которого, может отличаться. Для повышения точности отсчета системного времени устройства, в прошивке «Smacont-ESP» предусмотрена корректировка точности хода часов. Установка значения корректировки точности хода часов и часового пояса выполняется при помощи действия «ini_sysTime()». ![]() ![]() ![]() Действие «ini_sysTime()» Действие «ini_sysTime()» необходимо вызывать при запуске устройства (в сценарии «start()»). Значение корректировки точности хода часов
• При "отставании" часов устройства - увеличить значение.
Например:
Действие «time_rtc()»Часы реального времени (RTC — англ. Real Time Clock) — электронная схема, предназначенная для учёта хронометрических данных (текущее время, дата, день недели и др.), представляет собой систему из автономного источника питания и учитывающего устройства. В качестве часов реального времени могут выступать модули RTC на микросхеме DS1307 или DS3231. Связь с модулем осуществляется по I2C. Для питания часов модуля необходима батарея типоразмера CR2032. Достоинством часов реального времени является сохранение текущего времени при отключении питания устройства. Синхронизация системных часов устройства с часами реального времени выполняется при помощи действия «time_rtc()». ![]() Действие «time_rtc()» Вызов действия «time_rtc()» осуществляется в сценариях. Корректировка системного времени устройства производится при каждом вызове действия. Рекомендуется вызывать действие «time_rtc()» сразу, при включении питания, а затем, каждую минуту, по событию от Таймера (см. рис. ниже). ![]() Сценарии В зависимости от типа микросхемы DS1307 или DS3231, доступны те или иные параметры. Микросхема DS1307Микросхема DS1307 отличается невысокой точностью отсчета времени и отсутствием корректировки точности хода часов. «Уход» часов может составлять от 40 до 75 секунд в месяц. ![]() Модуль, на базе микросхемы DS1307 ![]() Принципиальная схема модуля В модуле предусмотрена схема заряда аккумуляторной батареи, с помощью компонентов R4, R6 и диода D1. Но, данная схема имеет недостаток, через резистор R4 и R6 происходит разряд батареи. Так как модуль потребляем незначительный ток, можно удалить цепь заряда, для этого убираем R4, R6 и VD1, вместо R6 установить перемычку. После доработки, можно использовать обычную батарейку CR2032. ![]() Доработка модуля, на базе микросхемы DS1307 Также, в интернете имеются рекомендации по улучшению точности хода часов, путем замены на более точный кварцевый резонатор и добавления конденсатора в цепь кварцевого резонатора (или установки переменного конденсатора 20пФ). ![]() Действие «time_rtc()». Микросхема DS1307 Команда «Включить»Команда используется для разрешения работы часов реального времени микросхемы. Команда выполняется один раз, при первом вызове действия «time_rtc()». Значение «2Hz» при неисправностиДанный параметр может применяться для отслеживания выхода часов реального времени из строя. В случае неисправности, будет установлено значение «-127» или «127». Выходные данныеПри привязке к одной из переменных «Vx», параметр может быть использован для изменения значения переменной с частотой 2Гц и/или для получения сигнала о неисправности микросхемы DS1307. Значение переменной «Vx» изменяется по результатам полученных данных от микросхемы DS1307. Микросхема DS3231![]() Модуль ZS-042, на базе микросхемы DS3231 ![]() Принципиальная схема модуля ZS-042 В отличие от DS1307, микросхема DS3231 отличается высокой точностью отсчета времени (за счет использования корректировки точности хода часов и термокомпенсации), минимальной «обвязкой» и наличием температурного датчика, показания которого можно использовать в сценариях. ![]() Действие «time_rtc()». Микросхема DS3231 Входные данныеПри привязке к одной из переменных «Vx», параметр может быть использован для задания значения корректировки показаний температуры. Данный параметр никак не влияет на внутреннюю работу микросхемы DS3231. Значение переменной «Vx» при этом рекомендуется сохранять в EEPROM. Команда «Включить»Команда используется для разрешения работы часов реального времени микросхемы. Команда выполняется один раз, при первом вызове действия «time_rtc()». Команда «Запись значения корректировки»Команда используется для записи корректировочного значения точности хода часов. Команда выполняется один раз, при первом вызове действия «time_rtc()». Значение «Корр. точности хода часов»Значение корректировки точности хода часов. Значение «T» при неисправностиДанный параметр может применяться для отслеживания выхода часов реального времени из строя. В случае неисправности, будет установлено значение «-127» или «127». Выходные данныеПри привязке к одной из переменных «Vx», параметр может быть использован для получения значения текущей температуры и/или для получения сигнала о неисправности микросхемы DS3231. Действие «time_ntp()»NTP (англ. Network Time Protocol — протокол сетевого времени) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью. Протокол был разработан Дэвидом Л. Миллсом, профессором Делавэрского университета, в 1985 году. Версия на 2015 год — NTPv4. NTP, основанный на алгоритме Марзулло, использует для своей работы протокол UDP и учитывает время передачи. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи. В версии 4 способен достигать точности 10 мс (1/100 с) при работе через Интернет, и до 0,2 мс (1/5000 с) и лучше внутри локальных сетей. Более простая реализация этого алгоритма известна как SNTP — простой протокол сетевого времени. Используется во встраиваемых системах и устройствах, не требующих высокой точности, а также в пользовательских программах точного времени. Прошивка «Smacont-ESP» поддерживает синхронизацию системного времени при помощи действия «time_ntp()». При этом, устройство должно иметь выход в сеть Internet. ![]() Действие «time_ntp()» Вызов действия «time_ntp()» осуществляется в сценариях. Корректировка системного времени устройства производится при каждом вызове действия. Рекомендуется вызывать действие «time_ntp()» сразу, после установления связи по WiFi, а затем, каждую минуту, по событию от Таймера (см. рис. ниже). ![]() Сценарии Действие имеет следующие параметры. ![]() Параметры действия «time_ntp()» <хост> (определен пользователем)Адрес NTP-сервера задается в заранее прописанном шаблоне «Tx». <хост> (фиксированный)Адрес NTP-сервера выбирается из списка NTP-серверов. [:<порт>] (по умолчанию: 55999)Номер порта, через который осуществляется UDP-соединение для подключения к NTP-серверу. Тайм-аутВремя ожидания ответа от NTP-сервера. Выходные данныеПараметр содержит код о состоянии UDP-соединение, для подключения к NTP-серверу. Далее, данное значение, можно использовать в сценариях для отслеживания проблем при работе с NTP-сервером. |
Программы
Прошивка «Smacont-ESP»:
«Программа Настройки»:
Телеграм каналНовостиЭнергонезависимая память (EEPROM) Переменные «Vx» (карта переменных «Vx») Действие «wifi_CheckConn()». После подключения к WiFi-сети, выполнить действие с задержкой Обмен данными. Open Monitoring Датчики температуры и влажности AHT10/AHT15/AHT20/AHT21/AHT25 Датчик температуры и влажности SHT30 (SHT31/SHT35) Действие «valueToVx()», «valueToArrVx()». Отслеживание заданного уровня в диапазоне значений Действие «termostat()». Термостат ESP-NOW. Датчик температуры и влажности с питанием от батареек Последовательные интерфейсы (UART, I2C, SPI) Управление одноканальным модулем реле |