Архив данных (сервер недоступен)

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Gofk
Сообщения: 7
Зарегистрирован: Вт дек 26, 2017 10:44 pm
Благодарил (а): 0
Поблагодарили: 0

Архив данных (сервер недоступен)

Сообщение Gofk » Ср янв 10, 2018 11:47 am

Друзья, проясните, пожалуйста, ситуацию.

В общем виде что должно происходить, если вдруг (по какой-то причине) сервер Majordomo недоступен, устройство (датчик) не может передать данные и т.д.?
Посмотрел работу конечных устройств. В большинстве случаев не увидел ничего, похожего на архивы.
В моём представлении данные должны какое-то время храниться на устройстве и при восстановлении связи архив за прошедший период должен всё-таки улететь в базу
Но даже сами протоколы передачи данных не подразумевают никаких временных меток для каждого пакета.
То есть, предполагается, что от датчиков будут поступать только текущие показания?

Собственно, вопрос, вероятно, не к majordomo, а к общей логике работы так называемого "умного дома". Та же самая картина с domoticz, аналогично с устройствами z-vawe и т.д. Пока я вижу, что если нужно хранение данных и возможность их последующей передачи - это нужно делать индивидуально и в обход стандартного функционала системы. Проще говоря, писать свою логику для той же самой esp8266, ловить данные собственным скриптом и запихивать их в базу.

Или я ошибаюсь?
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Архив данных (сервер недоступен)

Сообщение serghei » Ср янв 10, 2018 12:07 pm

Приветствую. Хороший вопрос и проблема.
Есть замечательный проект AMS . Текущие данные отправляются в МД. Если связь не доступна , то данных соответственно нет.
Для этого в коде самой ардуины прописан механизм логирования данных и попутно вывод на страницу в виде графиков. Можно по дням , а можно и за какой то период. ( у меня история за 4 месяца). А вот как этот файл запросить и передать на сторонний сервер , такой возможности нет. Тут выход из ситуации - есть ли вообще возможность сторонним сервером запросить файл истории и закачать его ?
При экспериментах с АМС удавалось передавать файлы .pdf со страницы. Но надо было руками создавать страницу с таким запросом. 11 мегабайт улетало за 12 секунд на ESP8266 . На Меге то же самое занимало 2-4 минуты. Похоже дело в написании правильного кода.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Архив данных (сервер недоступен)

Сообщение xor » Ср янв 10, 2018 11:35 pm

А нельзя сами данные передавать в таком случае с меткой времени?
У меня была неприятность с ГПС, неожиданно повторно пачка вываливалась накопленного за день спустя неск. часов, как будто я метался в пространстве со страшной скоростью.
А МЖД регистрировал время по моменту фактического получения данных, стал передавать еще время фиксации координат и, если оно отличалось там на час, отбрасывал.
За это сообщение автора xor поблагодарил:
serghei (Чт янв 11, 2018 9:18 am)
Рейтинг: 1.16%
Gofk
Сообщения: 7
Зарегистрирован: Вт дек 26, 2017 10:44 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Архив данных (сервер недоступен)

Сообщение Gofk » Чт янв 11, 2018 6:44 am

xor писал(а):А нельзя сами данные передавать в таком случае с меткой времени?
У меня была неприятность с ГПС, неожиданно повторно пачка вываливалась накопленного за день спустя неск. часов, как будто я метался в пространстве со страшной скоростью.
А МЖД регистрировал время по моменту фактического получения данных, стал передавать еще время фиксации координат и, если оно отличалось там на час, отбрасывал.
А как это на стороне МЖД реализовано было, какими средствами?
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Архив данных (сервер недоступен)

Сообщение xor » Чт янв 11, 2018 9:01 am

Gofk писал(а):
xor писал(а):А нельзя сами данные передавать в таком случае с меткой времени?
У меня была неприятность с ГПС, неожиданно повторно пачка вываливалась накопленного за день спустя неск. часов, как будто я метался в пространстве со страшной скоростью.
А МЖД регистрировал время по моменту фактического получения данных, стал передавать еще время фиксации координат и, если оно отличалось там на час, отбрасывал.
А как это на стороне МЖД реализовано было, какими средствами?
Пришлось допиливать скрипт приема данных с учётом времени. Для ГПС, естественно, файл gps.php

Отправлено с моего Redmi 4X через Tapatalk
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Архив данных (сервер недоступен)

Сообщение serghei » Чт янв 11, 2018 9:38 am

xor писал(а):А нельзя сами данные передавать в таком случае с меткой времени?
Если вопрос ко мне , то в программировании я мало разбираюсь. Я беру готовое , что есть на форуме.
Конкретно по АМС. Ардуина передает данные в МД раз в 20 секунд ( настраивается ). Срабатывание контактных датчиков мгновенно. Логирование на SD-карту раз в 5 минут ( то же можно менять , но что бы не убить карту ). Файлы и данные сохраняются в формате .csv . Так же ардуина видит момент отваливания связи с МД. Наверное можно дописать код логирования в этот момент и до появления соединения. А вот как его потом автоматом передать на сервер - это не ко мне ((.
Многое зависит и от реализации того , откуда получаете данные.
Пока обхожусь автономной работой ардуин.
Пример лога. Температуры , влажность и давление.
СпойлерПоказать
  • 2017-10-31 0:4:39 ,17.50,17.50,17.50,46.00,16.00 ,19.79,49.74,746.51
    2017-10-31 0:9:39 ,17.69,17.69,17.69,47.00,17.00 ,19.86,52.34,746.52
    2017-10-31 0:14:39 ,17.44,17.44,17.44,48.00,17.00 ,20.08,52.88,746.54
    2017-10-31 0:19:39 ,17.25,17.25,17.25,48.00,16.00 ,20.08,51.88,746.56
    2017-10-31 0:24:40 ,17.19,17.19,17.19,48.00,16.00 ,19.90,52.47,746.62
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Gofk
Сообщения: 7
Зарегистрирован: Вт дек 26, 2017 10:44 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Архив данных (сервер недоступен)

Сообщение Gofk » Чт янв 11, 2018 9:51 am

serghei писал(а):
xor писал(а):А нельзя сами данные передавать в таком случае с меткой времени?
Если вопрос ко мне , то в программировании я мало разбираюсь. Я беру готовое , что есть на форуме.
Конкретно по АМС. Ардуина передает данные в МД раз в 20 секунд ( настраивается ). Срабатывание контактных датчиков мгновенно. Логирование на SD-карту раз в 5 минут ( то же можно менять , но что бы не убить карту ). Файлы и данные сохраняются в формате .csv . Так же ардуина видит момент отваливания связи с МД. Наверное можно дописать код логирования в этот момент и до появления соединения. А вот как его потом автоматом передать на сервер - это не ко мне ((.
Многое зависит и от реализации того , откуда получаете данные.
У меня обратная ситуация :) Накрутить логику на ардуине (к примеру) можно. Можно даже архивы так или иначе передать на сервер. Вопрос в том, что с этими данными делать дальше. Нужно их каким-то образом связать с существующими объектами. Сказать, что это именно температура. И даже не просто какая-то абстрактная температура, а уже существующий в системе датчик. И именно для него следует добавлять значения за прошедший период.
Мне почему-то видится некий модуль, по интерфейсу похожий на MQTT. Где вываливаются все полученные значения (архивы), а дальше пользователь выполняет привязку.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Архив данных (сервер недоступен)

Сообщение serghei » Чт янв 11, 2018 10:03 am

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

А в ручную добавлять данные - не вижу смысла. Да и автоматом то же. Если пропустили какое то событие , то его уже не надо обрабатывать. Можно просто посмотреть лог. Это касается температур и влажности. С данными GPS - отдельный вопрос.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Архив данных (сервер недоступен)

Сообщение xor » Чт янв 11, 2018 11:31 am

Gofk писал(а):
serghei писал(а):
xor писал(а):А нельзя сами данные передавать в таком случае с меткой времени?
Если вопрос ко мне , то в программировании я мало разбираюсь. Я беру готовое , что есть на форуме.
Конкретно по АМС. Ардуина передает данные в МД раз в 20 секунд ( настраивается ). Срабатывание контактных датчиков мгновенно. Логирование на SD-карту раз в 5 минут ( то же можно менять , но что бы не убить карту ). Файлы и данные сохраняются в формате .csv . Так же ардуина видит момент отваливания связи с МД. Наверное можно дописать код логирования в этот момент и до появления соединения. А вот как его потом автоматом передать на сервер - это не ко мне ((.
Многое зависит и от реализации того , откуда получаете данные.
У меня обратная ситуация :) Накрутить логику на ардуине (к примеру) можно. Можно даже архивы так или иначе передать на сервер. Вопрос в том, что с этими данными делать дальше. Нужно их каким-то образом связать с существующими объектами. Сказать, что это именно температура. И даже не просто какая-то абстрактная температура, а уже существующий в системе датчик. И именно для него следует добавлять значения за прошедший период.
Мне почему-то видится некий модуль, по интерфейсу похожий на MQTT. Где вываливаются все полученные значения (архивы), а дальше пользователь выполняет привязку.
Задача:
Есть логи фиксированной структуры, т.е., вы знаете, что первый элемент-дата, второй-температура датчика 1 и тд. Надо это хозяйство засунуть в таблицу истории.
Вполне реально.


Отправлено с моего Redmi 4X через Tapatalk
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Архив данных (сервер недоступен)

Сообщение xor » Чт янв 11, 2018 11:38 am

xor писал(а):
Gofk писал(а):
serghei писал(а):
xor писал(а):А нельзя сами данные передавать в таком случае с меткой времени?
Если вопрос ко мне , то в программировании я мало разбираюсь. Я беру готовое , что есть на форуме.
Конкретно по АМС. Ардуина передает данные в МД раз в 20 секунд ( настраивается ). Срабатывание контактных датчиков мгновенно. Логирование на SD-карту раз в 5 минут ( то же можно менять , но что бы не убить карту ). Файлы и данные сохраняются в формате .csv . Так же ардуина видит момент отваливания связи с МД. Наверное можно дописать код логирования в этот момент и до появления соединения. А вот как его потом автоматом передать на сервер - это не ко мне ((.
Многое зависит и от реализации того , откуда получаете данные.
У меня обратная ситуация :) Накрутить логику на ардуине (к примеру) можно. Можно даже архивы так или иначе передать на сервер. Вопрос в том, что с этими данными делать дальше. Нужно их каким-то образом связать с существующими объектами. Сказать, что это именно температура. И даже не просто какая-то абстрактная температура, а уже существующий в системе датчик. И именно для него следует добавлять значения за прошедший период.
Мне почему-то видится некий модуль, по интерфейсу похожий на MQTT. Где вываливаются все полученные значения (архивы), а дальше пользователь выполняет привязку.
Задача:
Есть логи фиксированной структуры, т.е., вы знаете, что первый элемент-дата, второй-температура датчика 1 и тд. Надо это хозяйство засунуть в таблицу истории.
Вполне реально.


Отправлено с моего Redmi 4X через Tapatalk
Скармливаем лог пхп скрипту, он его парсит по-строчно. Зная имяОбъекта.Свойство, вставляем в таблицу истории , заменяя поле added временем из лога.
Это теория.
Нужно распарсить, найти объекты, по ним определить id, работа с SQL -- практика.

Отправлено с моего Redmi 4X через Tapatalk
Ответить