Создание графиков с помощью pChart

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

Модератор: immortal

BATONS
Сообщения: 107
Зарегистрирован: Сб июн 30, 2012 7:54 am
Благодарил (а): 0
Поблагодарили: 14 раз

Создание графиков с помощью pChart

Сообщение BATONS » Вт июл 24, 2012 5:21 pm

Очень бы хотелось получить краткий ликбез, по созданию графиков для данного проекта "умного дома"
Уж больно не хватает их разнообразия.

С библиотеками pChart понятно, создание разных графиков тоже вроде понятно, благо есть примеры:
http://pchart.sourceforge.net/documenta ... vexemple26
http://www.codetorment.com/2009/11/12/a ... ebmonitor/
http://www.web-junior.net/sozdanie-graf ... yu-pchart/

А не понятно, как происходит взаимодействие данных отправляемых с ардуино с этими графиками.

Было бы интересно разобрать тут пример, а потом по аналогии придумать что нибудь свое
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Создание графиков с помощью pChart

Сообщение sergejey » Вт июл 24, 2012 5:39 pm

А не понятно, как происходит взаимодействие данных отправляемых с ардуино с этими графиками.
Для начала -- система ведёт историю изменений свойств объектов в таблице phistory. Для этого в настройках свойств класса можно задать время хранения истории. Собственно эта история и используется для вывода графиков.

Сам вывод графиков идёт через скрипт /pchart/index.php

вот к примеру часть кода которая добавляет значения на график (если тип графика часовой, т.е. есть параметр &type=24h к примеру)

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

  if (preg_match('/(\d+)h/', $type, $m)) {
   $total=(int)$m[1];
   for($i=0;$i<$total;$i++) {
    $dt=time()+($i-($total-1))*60*60;
    $new_dt=mktime(date('H', $dt), 0, 0, date('m', $dt), date('d', $dt), date('Y', $dt));
    $dt=$new_dt;
    $h=date('H', $dt);

    for($t=0;$t<60;$t+=10) {

     // здесь как раз выбираем значение из истории
     $ph=SQLSelectOne("SELECT ID, VALUE FROM phistory WHERE VALUE_ID='".$pvalue['ID']."' AND ADDED<=('".date('Y-m-d H:i:s', $dt+$t*60)."') ORDER BY ADDED DESC");
     if ($ph['ID']) {
      $values[]=$ph['VALUE'];
     } else {
      $values[]=0;
     }
     $hours[]=$h;
     $h='';
    }

   }

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
BATONS
Сообщения: 107
Зарегистрирован: Сб июн 30, 2012 7:54 am
Благодарил (а): 0
Поблагодарили: 14 раз

Re: Создание графиков с помощью pChart

Сообщение BATONS » Вт июл 24, 2012 5:49 pm

то есть, сначала данные пишуться в таблицу phistory, а график (файл index.php ) данные берет не с потока от ардуино а из этой таблицы?

Если я захочу создать например вот такой график
http://pchart.sourceforge.net/documenta ... vexemple26
то я должен прописать в его коде пути к этой таблице (phistory)?

Еще есть такой проект Pachube.com там мне понравились стрелочные индикаторы (типа манометра). Можно ли что-то подобное создать для Вашего сервера? или это все будет сильно грузить комп?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Создание графиков с помощью pChart

Сообщение sergejey » Ср июл 25, 2012 10:36 am

BATONS писал(а):то есть, сначала данные пишуться в таблицу phistory, а график (файл index.php ) данные берет не с потока от ардуино а из этой таблицы?
всё верно. любые графики строятся на основе сохранённой истории значений, а arduino только отправляет системе текущие значения
BATONS писал(а): Если я захочу создать например вот такой график
http://pchart.sourceforge.net/documenta ... vexemple26
то я должен прописать в его коде пути к этой таблице (phistory)?
этот график по большому счёту отличается параметрами настройки. сами данные можно выбирать таким же образом как это сделано сейчас. т.е. более приятное для глаз представление там. надо посмотреть, может быть будет удобно сделать такое представление для всех графиков по-умолчанию.
BATONS писал(а): Еще есть такой проект Pachube.com там мне понравились стрелочные индикаторы (типа манометра). Можно ли что-то подобное создать для Вашего сервера? или это все будет сильно грузить комп?
интересный проект, кстати.
индикаторы вполне можно сделать. надо подумать насчет кода, который можно было бы разместить либо в меню либо на сцену, чтобы был такого плана манометр.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
tammat
Сообщения: 165
Зарегистрирован: Пт янв 20, 2012 3:05 pm
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Re: Создание графиков с помощью pChart

Сообщение tammat » Пн авг 27, 2012 11:14 am

Хотелось бы добавить в Pchat
1. возможность строить графики по дням и месяцам.
2. возможность изменения название свойства (слева)
3. автоматически расставлять метки по оси х. (по y все нормально)
Вложения
Pv.PNG
Pv.PNG (20.83 КБ) 15781 просмотр
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Создание графиков с помощью pChart

Сообщение sergejey » Ср авг 29, 2012 11:43 am

в недавно обновлённой версии (в исходниках) можно строить графики по дням
например такая ссылка ( /pChart/?p=ws.tempOutside&type=7d&width=580 ) даёт картинку за 7 дней (параметр type=7d)

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
tammat
Сообщения: 165
Зарегистрирован: Пт янв 20, 2012 3:05 pm
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Re: Создание графиков с помощью pChart

Сообщение tammat » Чт авг 30, 2012 1:47 pm

Все супер,кроме оси X
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Создание графиков с помощью pChart

Сообщение sergejey » Чт авг 30, 2012 3:54 pm

tammat писал(а):Все супер,кроме оси X
да, есть такое. в планах на ближайшее время :)

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Создание графиков с помощью pChart

Сообщение sergejey » Ср сен 19, 2012 6:38 pm

В исходниках обновил немного систему графиков pchart.
Даже при сохранении текущих параметров вызова, они выглядят по-лучше. Но добавились ещё дополнительные параметры:
* при добавлении в URL &gtype=curve -- будет выводится график в виде сглаженной линии
* при добавлении в URL &title=some_title -- будет использоваться some_title в качестве заголовка графика (иначе значение параметра p, как и раньше)
* при добавлении в URL &px=num (например, &px=20) -- можно указать минимальное расстояние между точками по горизонтали, чтобы значения не располагались слишком близко

ну и сейчас по-лучше будут показываться подписи со временем по нижней оси (без наложения друг на друга)

Пример:

Изображение

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Vip
Сообщения: 86
Зарегистрирован: Вт авг 28, 2012 5:36 pm
Откуда: Kiev, Ukraine
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Re: Создание графиков с помощью pChart

Сообщение Vip » Чт сен 20, 2012 1:52 pm

А как установить величину оси y?
Например не температуру а мощность?
Ответить