Сбор и хранение данных

mencup
Offline
Зарегистрирован: 11.08.2019

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

Задача: Считывание количесва счетчика и передача через интернет .

 

    обязательно хранение данных без интернета пару дней. (EEPROM)

    после появления связи с сервером. передача данных

 

Цель: прием показаний с счетчиков, отображение статистики на сайте (диаграмма)

Оборудование : esp32

Как я вижу решение задачи:

1 Установить часы реального времени 

2 Синхонизировать часы через NTP сервер

3 Сохранять данные каждые пять минут  . Пример  11.08.2019 00:05  100  (дата, время, счетчик)

  отправлять get методом на сервер с последующим занесением в базу данных

4 Интересно логическое решение следующих вопросов 

 1 Правильный ли выбоор метода хранения и отправки данных ? (каждые пять минут с присвоением даты и времени на стороне счетчика или следует принимать показания счетчика и присваить дату-время на стороне сервера, но тогда проблема с автономсностью)   

  2 Как узнать получил ли сервер данные ? 

  

 

Серверную часть сделал. прием get запрса . проверка связки id (счетчика) и (key) и вслучае успеха, занесение в базу id (счетчика)

 

Проблема в синхронизацией 

Проблема в случае падения ntp сервера (адреса меняются через пару лет)

 

И может кто то видел рабочий пример синхронизации часов реального времени с ntp серверм на esp32 ?

 

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

mencup пишет:
1 Правильный ли выбоор метода хранения и отправки данных ?

На esp32 немножко нет eeprom-а, там spiflash, но суть не меняется. Количество перезаписей ограничено, если сохранять (перезаписывать) во флеше каждые 5 минут, рискуете её убить.

mencup пишет:
2 Как узнать получил ли сервер данные ?
Серверную часть сделал. прием get запрса . проверка связки id (счетчика) и (key) и вслучае успеха, занесение в базу id (счетчика)

Если протокол http, то вопрос не понятен.
Клиент выполняет метод get на сервере и получает как минимум код ответа, ниужели этого не достаточно чтоб клиент определил результат выполнения метода на сервере.

mencup пишет:
Проблема в случае падения ntp сервера (адреса меняются через пару лет)

Не стоит использовать адреса, используйте доменные имена.
 

П.С. Если сервер для передачи показаний ваш, мож и время от него получать?

mencup
Offline
Зарегистрирован: 11.08.2019

Спасибо. просьба пка-что тему не закрывать 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Чтоб решить как правильно, необходимо понять всю задачу, особенно вопросы:

- возможен ли пропуск сохраненных данных?

- насколько данные нужны online?

Я бы анализировал ответ от сервера и в случае не возможности записи данных хранил бы в памяти МК и при следующем соединении с сервером отправлял бы ранее сохраненные данные и свежие.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Описанная задача очень сильно напоминает GPS-трекер. 

inspiritus
Offline
Зарегистрирован: 17.12.2012

mencup пишет:

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

Задача: Считывание количесва счетчика и передача через интернет .

 

    обязательно хранение данных без интернета пару дней. (EEPROM)

SD

    после появления связи с сервером. передача данных

Кто клиент и кто сервер?

 

Цель: прием показаний с счетчиков, отображение статистики на сайте (диаграмма) - дело вообще десятое , вопрос ктотсервер на чем ?????

Оборудование : esp32

Как я вижу решение задачи:

1 Установить часы реального времени { один раз с самого начала при первичной прошивке ???}

2 Синхонизировать часы через NTP сервер  (какие вообще пр*блемы)

3 Сохранять данные каждые пять минут  . Пример  11.08.2019 00:05  100  (дата, время, счетчик) не вопрос

  отправлять get методом на сервер с последующим занесением в базу данных (нафига)

4 Интересно логическое решение следующих вопросов 

 1 Правильный ли выбоор метода хранения и отправки данных ? (каждые пять минут с присвоением даты и времени на стороне счетчика или следует принимать показания счетчика и присваить дату-время на стороне сервера, но тогда проблема  FRAM

  2 Как узнать получил ли сервер данные ? Он возвращает некий код

  

 

Серверную часть сделал. прием get запрса . проверка связки id (счетчика) и (key) и вслучае успеха, занесение в базу id (счетчика)

 

Проблема в синхронизацией 

Проблема в случае падения ntp сервера (адреса меняются через пару лет) ну пропал один - есть два других

 

И может кто то видел рабочий пример синхронизации часов реального времени с ntp серверм на esp32 ?

Я делал для меги - вообще непроблема , под ест должно быть также