Страница 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