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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

avgaz
Сообщения: 39
Зарегистрирован: Пт дек 11, 2015 10:20 pm
Благодарил (а): 1 раз
Поблагодарили: 4 раза

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

Сообщение avgaz » Чт дек 24, 2015 1:21 am

В общем встал вопрос как реализовать подсчет данных из лога свойства, к примеру есть свойство которое пишется каждые 2 сек лог хранится 2 дня, вот как сделать подсчет значений этого свойства скажем за час?
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

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

Сообщение olehs » Чт дек 24, 2015 12:01 pm

Я думаю, тут нужно понимать физический смысл значений свойства, и что Вы хотите получить на выходе.
Можете попробовать вычислять среднеарифметическое или среднеквадратичное, например.
avgaz
Сообщения: 39
Зарегистрирован: Пт дек 11, 2015 10:20 pm
Благодарил (а): 1 раз
Поблагодарили: 4 раза

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

Сообщение avgaz » Чт дек 24, 2015 6:43 pm

К примеру свойство Electro.kwt сохраняет данные 2дня с интервалом 2сек, вот как из этой сохраненной информации вывести за 1час и за 24 часа? ну вот там же строятся графики вот нужно посчитать общее число за промежуток времени.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

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

Сообщение olehs » Пт дек 25, 2015 4:11 pm

Electro.kwt - это потребляемая мощность в конкретный момент времени?
И что такое "общее число" за промежуток времени? Вы хотите посчитать потребление электроэнергии за этот промежуток, я правильно понимаю?
avgaz
Сообщения: 39
Зарегистрирован: Пт дек 11, 2015 10:20 pm
Благодарил (а): 1 раз
Поблагодарили: 4 раза

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

Сообщение avgaz » Пт дек 25, 2015 6:12 pm

olehs писал(а):Electro.kwt - это потребляемая мощность в конкретный момент времени?
И что такое "общее число" за промежуток времени? Вы хотите посчитать потребление электроэнергии за этот промежуток, я правильно понимаю?
Да, это мощность потребляемая сейчас, у неё лог сохраняется за 2 дня, мне нужно посчитать к примеру сколько за сутки потрачено.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

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

Сообщение olehs » Сб дек 26, 2015 12:35 am

Если Вы уверены, что данные приходят каждые 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 Свойства
avgaz
Сообщения: 39
Зарегистрирован: Пт дек 11, 2015 10:20 pm
Благодарил (а): 1 раз
Поблагодарили: 4 раза

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

Сообщение avgaz » Сб дек 26, 2015 1:28 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 Свойства
Я пытался но 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'];
}

 
Да и ладно фиг с ним выкрутился в подсчете за день через методы, а вот месячный подсчет фигзнает как сделать.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

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

Сообщение olehs » Вс дек 27, 2015 2:07 am

Сохраняйте ежедневно в отдельное свойство потребление за день. Потом по истории этого свойства соберете месячное.
avgaz
Сообщения: 39
Зарегистрирован: Пт дек 11, 2015 10:20 pm
Благодарил (а): 1 раз
Поблагодарили: 4 раза

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

Сообщение avgaz » Вс дек 27, 2015 8:20 pm

olehs писал(а):Сохраняйте ежедневно в отдельное свойство потребление за день. Потом по истории этого свойства соберете месячное.
Я так думал, тем более у меня свойство "Вчера" с сохранением в 30д поставлено, но тут вылезает проблема как посчитать именно за текущий месяц?
то есть я могу сделать пожсчет скажем последних 30 записей, но это не за текущий месяц! нужно как то считать именно за текущий месяц.
В идеале я бы хотел сделать отдельное свойство скажем "За месяц" туда сохранять прибавлять данные каждую минуту, а в конце месяца перенести данные в другое свойство с кажем "За прошлый месяц" с сохранением лога скажем за год, а свойство "За месяц" обнулять. У меня так сделано учет "Сегодня" и "Вчера" но ежедневно обнулять и сохранять можно через Сценарии, а вот как это проделать с месяцами?
devoff
Сообщения: 181
Зарегистрирован: Пт апр 04, 2014 10:17 pm
Благодарил (а): 37 раз
Поблагодарили: 54 раза

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

Сообщение devoff » Вт дек 29, 2015 1:10 am

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

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