"Живые" графики нужна помощь.

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

Модератор: immortal

denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 32 раза
Поблагодарили: 28 раз

Re: "Живые" графики нужна помощь.

Сообщение denis » Ср сен 04, 2013 6:17 pm

Urbas81 писал(а):Подскажите как заносить в базу значения от датчиков которые не заведены в Majordomo?
Например, с MegaD я получаю температуру и влажность в строке по запросу $str=file_get_contents('http://ip/secret/cmd');
дальше выделяю два числа $T=xx, $H=xx? температура и влажность соответственно, как мне записать их в базу по аналогии с 1-wire, чтоб можно было использовать pChart и highcharts?
Так как значения 1-wire я тоже получаю через запрос, а не встроенными методами т.к. использую адаптер 1-wire->>Ethernet, то порядок действий двумаю примерно такой же:
1. Создать веб-переменную
2. Получать через запрос её значение.
3. По получению значения веб-переменной запускать метод, который её "разбирает" на составляющие и записывает в значения в переменные системы MJM (т.е. в таблице phistory будет и значение и время записи этого значения).
4. Дальше получаешь данные из базы данных скриптом php или другим по вкусу.
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: "Живые" графики нужна помощь.

Сообщение Urbas81 » Ср сен 04, 2013 11:31 pm

denis писал(а):
Urbas81 писал(а):Подскажите как заносить в базу значения от датчиков которые не заведены в Majordomo?
Например, с MegaD я получаю температуру и влажность в строке по запросу $str=file_get_contents('http://ip/secret/cmd');
дальше выделяю два числа $T=xx, $H=xx? температура и влажность соответственно, как мне записать их в базу по аналогии с 1-wire, чтоб можно было использовать pChart и highcharts?
Так как значения 1-wire я тоже получаю через запрос, а не встроенными методами т.к. использую адаптер 1-wire->>Ethernet, то порядок действий двумаю примерно такой же:
1. Создать веб-переменную
2. Получать через запрос её значение.
3. По получению значения веб-переменной запускать метод, который её "разбирает" на составляющие и записывает в значения в переменные системы MJM (т.е. в таблице phistory будет и значение и время записи этого значения).
4. Дальше получаешь данные из базы данных скриптом php или другим по вкусу.
Хм, кажись понял, буду пробовать, спасибо.
kosch1
Сообщения: 31
Зарегистрирован: Сб мар 09, 2013 8:33 pm
Благодарил (а): 0
Поблагодарили: 0

Re: "Живые" графики нужна помощь.

Сообщение kosch1 » Вс сен 08, 2013 6:02 pm

Добрый день!
Решил попробовать запустить график в меню климат присутствующий по умолчанию при установке программы, но он не работает по умолчанию.
Описание было этой ситуации было на 5 странице.
Создал свойство TempOutside объекта ThisComputer со сроком хранения данных, получил вот такое свойство ThisComputer.TempOutside (H)
В веб переменных было привязано вот так ThisComputer-TempOutside и информация пишется в старое свойство ThisComputer.TempOutside.
Что означает (H) в свойстве? При выборе открывается пустое поле. Что правильно прописать в веб переменных что бы информация начала писаться в новое созданное свойство?

PS: Всё разобрался, заработало. Удалил старое свойство, и все стало на свои места.
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: "Живые" графики нужна помощь.

Сообщение Urbas81 » Пн сен 09, 2013 2:32 pm

Нужна помощь чтоб реализовать следующее:

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

var tmp = [
[Date.UTC(2003,8,24),0.8709], вместо Date.UTC(2003,8,24) наверное можно и другие варианты
[Date.UTC(2003,8,25),0.872],
[Date.UTC(2003,8,26),0.8714],
[Date.UTC(2003,8,29),0.8638],
];

далее подключаем <script type="text/javascript" src="tmp.js"></script>

и график строится без необходимости каждый раз нагружать сервер.

Для меня пока проблема как на PHP создать такие файлы с возможностью дозаписи если в базе есть новые значения, может кто-то сможет помочь.
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 32 раза
Поблагодарили: 28 раз

Re: "Живые" графики нужна помощь.

Сообщение denis » Пт сен 13, 2013 8:44 am

Urbas81 писал(а):
Для меня пока проблема как на PHP создать такие файлы с возможностью дозаписи если в базе есть новые значения, может кто-то сможет помочь.
Таким образом ты просто дублируешь имеющуюся базу данных, да еще и тормозить это будет скорее всего больше, чем просто запрос к MySql, который просто заточен под работу с данными.
Плюс тебе всегда нужно будет еще где-то хранить информацию, "а какой период данных у тебя сохранен в этих файлах?"
Не хочу ничем обидеть, но это тупиковый путь, который еще более нагрузит систему.
"По уму" делается по-другому:
Если данных много, то для обзорного графика делается выборка через 10, через 100, через .... - короче чтобы были только точки позволяющие построить грубый график. Когда пользователь уточняет область, то делается более полный запрос к БД, с точками из выбранной области. На сайте highcharts есть такой пример, по моему с 1.7 миллиона точек!!! А это очень много, но график строится быстро!
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: "Живые" графики нужна помощь.

Сообщение Urbas81 » Пт сен 13, 2013 5:02 pm

denis писал(а):
Urbas81 писал(а):
Для меня пока проблема как на PHP создать такие файлы с возможностью дозаписи если в базе есть новые значения, может кто-то сможет помочь.
Таким образом ты просто дублируешь имеющуюся базу данных, да еще и тормозить это будет скорее всего больше, чем просто запрос к MySql, который просто заточен под работу с данными.
Плюс тебе всегда нужно будет еще где-то хранить информацию, "а какой период данных у тебя сохранен в этих файлах?"
Не хочу ничем обидеть, но это тупиковый путь, который еще более нагрузит систему.
"По уму" делается по-другому:
Если данных много, то для обзорного графика делается выборка через 10, через 100, через .... - короче чтобы были только точки позволяющие построить грубый график. Когда пользователь уточняет область, то делается более полный запрос к БД, с точками из выбранной области. На сайте highcharts есть такой пример, по моему с 1.7 миллиона точек!!! А это очень много, но график строится быстро!
Как только напечатал даное сообщение, полез сам разбираться, короче разобрался как сгенерить на PHP то что мне нужно, создал несколько файлов типа data.js, получилось выводить по несколько линий на одном графике, но действительно при большом числе значений тормозит очень. Затем полез дальше смотреть, и как раз наткнулся на эти 1,7 миллион точек, скачал файл from-sql.php который отдает эти данные с сервера, попытался прикрутить себе похожее, но третий день по 8 часов эксперементирую, и ничего толком не выходит, уже вроде по кусочкам все разобрал, но график не строится.
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 32 раза
Поблагодарили: 28 раз

Re: "Живые" графики нужна помощь.

Сообщение denis » Пн сен 30, 2013 2:42 pm

глянул я еще раз "1.7 миллиона точек" - так все просто: есть три таблицы и в зависимости от того, какой временной интервал запрашивается на графике, из той таблицы и берут данные.
т.е. если несколько лет - таблица с выборкой за годы
несколько месяцев - выборка за месяцы
недели, дни - полная таблица.
Это немного не то, что ожидал увидеть - надо думать дальше.
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: "Живые" графики нужна помощь.

Сообщение Urbas81 » Пн сен 30, 2013 2:55 pm

denis писал(а):глянул я еще раз "1.7 миллиона точек" - так все просто: есть три таблицы и в зависимости от того, какой временной интервал запрашивается на графике, из той таблицы и берут данные.
т.е. если несколько лет - таблица с выборкой за годы
несколько месяцев - выборка за месяцы
недели, дни - полная таблица.
Это немного не то, что ожидал увидеть - надо думать дальше.
Я переделывал чтоб читалось с одной таблицы, но в зависимости от периода выбиралось разное кол-во точек, более менее заработало, но надо лучше продумать алгоритм прореживания точек. Ну и больше 1 графика не получилось вывести.
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: "Живые" графики нужна помощь.

Сообщение LutsenkoDenis » Пн сен 30, 2013 3:43 pm

У меня несколько вопросов...
1. Что за таблица и какая у неё структура?
2. Как выглядит запрос к базе?
3. Используются ли индексы при запросе?
4. За какое время выполняется запрос к базе?
5. Зак какое время выполняется обработка данных полученных из базы?
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: "Живые" графики нужна помощь.

Сообщение Urbas81 » Пн сен 30, 2013 4:28 pm

LutsenkoDenis писал(а):У меня несколько вопросов...
1. Что за таблица и какая у неё структура?
2. Как выглядит запрос к базе?
3. Используются ли индексы при запросе?
4. За какое время выполняется запрос к базе?
5. Зак какое время выполняется обработка данных полученных из базы?
1. Таблица phistory куда пишутся данные с Majordomo
2. Как-то так
$sql = "select unix_timestamp(ADDED) * 1000 as ADDED, VALUE, VALUE_ID
from $table where
ADDED between '$startTime' and '$endTime' AND
mod(ADDED, $K)=0 AND
VALUE_ID=$ident
order by ADDED";

где $table ='phistory';
'$startTime' and '$endTime' -период из графика;
$ident-ID датчика из таблицы;
$K-коэф. зависящий от периода выборки, подбирается индивидуально, в зависимости от кол-ва данных и частоты их записи в базу по каждому датчику


3. не знаю, не шарю в этом :mrgreen:
4. зависит от кол-ва данных, если сильно много, браузер тормозит.
5. см. п4
Ответить