Страница 1 из 2

Подсчет данных?

Добавлено: Чт дек 24, 2015 1:21 am
avgaz
В общем встал вопрос как реализовать подсчет данных из лога свойства, к примеру есть свойство которое пишется каждые 2 сек лог хранится 2 дня, вот как сделать подсчет значений этого свойства скажем за час?

Re: Подсчет данных?

Добавлено: Чт дек 24, 2015 12:01 pm
olehs
Я думаю, тут нужно понимать физический смысл значений свойства, и что Вы хотите получить на выходе.
Можете попробовать вычислять среднеарифметическое или среднеквадратичное, например.

Re: Подсчет данных?

Добавлено: Чт дек 24, 2015 6:43 pm
avgaz
К примеру свойство Electro.kwt сохраняет данные 2дня с интервалом 2сек, вот как из этой сохраненной информации вывести за 1час и за 24 часа? ну вот там же строятся графики вот нужно посчитать общее число за промежуток времени.

Re: Подсчет данных?

Добавлено: Пт дек 25, 2015 4:11 pm
olehs
Electro.kwt - это потребляемая мощность в конкретный момент времени?
И что такое "общее число" за промежуток времени? Вы хотите посчитать потребление электроэнергии за этот промежуток, я правильно понимаю?

Re: Подсчет данных?

Добавлено: Пт дек 25, 2015 6:12 pm
avgaz
olehs писал(а):Electro.kwt - это потребляемая мощность в конкретный момент времени?
И что такое "общее число" за промежуток времени? Вы хотите посчитать потребление электроэнергии за этот промежуток, я правильно понимаю?
Да, это мощность потребляемая сейчас, у неё лог сохраняется за 2 дня, мне нужно посчитать к примеру сколько за сутки потрачено.

Re: Подсчет данных?

Добавлено: Сб дек 26, 2015 12:35 am
olehs
Если Вы уверены, что данные приходят каждые 2 секунды без пропусков, то потребление приблизительно будет равно сумме показаний за нужный период, поделенное на 1800.
Собрать проще всего запросом по таблице phistory.

Код: Выделить всё

SELECT
  SUM( value ) / 1800.
FROM phistory
WHERE value_id = 184
  AND added BETWEEN  '2015-12-23' AND  '2015-12-24'
где 184 - ID Свойства

Re: Подсчет данных?

Добавлено: Сб дек 26, 2015 1:28 am
avgaz
olehs писал(а):Если Вы уверены, что данные приходят каждые 2 секунды без пропусков, то потребление приблизительно будет равно сумме показаний за нужный период, поделенное на 1800.
Собрать проще всего запросом по таблице phistory.

Код: Выделить всё

SELECT
  SUM( value ) / 1800.
FROM phistory
WHERE value_id = 184
  AND added BETWEEN  '2015-12-23' AND  '2015-12-24' 
где 184 - ID Свойства
Я пытался но SUM( value ) мне не получить, это помоему не срабатывает в SQLSelect
Вот как я пробовал

Код: Выделить всё

$total=1;
$start_time=$end_time-$total*60*60;
$end_time=time();
$history=SQLSelect("SELECT SUM(VALUE) FROM phistory WHERE VALUE_ID='327' AND ADDED>=('".date('Y-m-d H:i:s', $start_time)."') ORDER BY ADDED");
for($i=0;$i<$total_values;$i++) {
                    $values= $history[$i]['VALUE'];
}

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

Re: Подсчет данных?

Добавлено: Вс дек 27, 2015 2:07 am
olehs
Сохраняйте ежедневно в отдельное свойство потребление за день. Потом по истории этого свойства соберете месячное.

Re: Подсчет данных?

Добавлено: Вс дек 27, 2015 8:20 pm
avgaz
olehs писал(а):Сохраняйте ежедневно в отдельное свойство потребление за день. Потом по истории этого свойства соберете месячное.
Я так думал, тем более у меня свойство "Вчера" с сохранением в 30д поставлено, но тут вылезает проблема как посчитать именно за текущий месяц?
то есть я могу сделать пожсчет скажем последних 30 записей, но это не за текущий месяц! нужно как то считать именно за текущий месяц.
В идеале я бы хотел сделать отдельное свойство скажем "За месяц" туда сохранять прибавлять данные каждую минуту, а в конце месяца перенести данные в другое свойство с кажем "За прошлый месяц" с сохранением лога скажем за год, а свойство "За месяц" обнулять. У меня так сделано учет "Сегодня" и "Вчера" но ежедневно обнулять и сохранять можно через Сценарии, а вот как это проделать с месяцами?

Re: Подсчет данных?

Добавлено: Вт дек 29, 2015 1:10 am
devoff
avgaz - у меня каждый час запускается скрипт, который дергает базу и забирает сумму всех записей и количество записей (так как каждый час они разные) - это у меня получается потребление за час.
В конце дня запускаю все тоже самое для подсчета за сутки и заношу в свойства.
Так же можно автоматом настроить и за месяц.

Посмотрите здесь - хороший пример - http://majordomo.smartliving.ru/forum/v ... hp?p=18567