2013-07-18 3 views
1

У вас есть личный проект мониторинга температуры, который регистрирует все температуры в отдельных комнатах дома в базе данных mysql, и на днях я наткнулся на highstock/charts и играл с ним, но я не могу похоже, заставить его работать с несколькими сериями данных.ошибка печати нескольких рядов данных на highstock

как данные регистрируются в таблице;

< даты и времени - (например, 2013-07-18 15:52:26) время будет отличаться для каждого датчика для каждого местоположения

< местонахождения - 6 (гостиной, кухни, столовой, за пределами , мастер, запасные)

< температура - (например, 12,34)

Какая запись выглядит как в MySQL. 2013-07-18 15:52:26/master/12.34

Мне удалось заставить все это работать для набора данных, но я не уверен, что мне нужно делать, и как наилучшим образом будет отформатируйте запрос json и mysql, чтобы высокопроизводительные диаграммы могли считывать данные json/mysq и отображать ВСЕ 6 данных о температуре на одном графике.

Полный код; Основной файл диаграммы высот. http://pastebin.com/XWkThfc8, и это файл, который генерирует JSON из базы данных mysql. http://pastebin.com/RXBFr24P

Это то, что в настоящее время он выглядит как для одного набора данных с использованием вышеуказанных запросов .... [1374593356000,17.31], [1374593427000,17.25], [1374593497000,17.31], [1374593567000,17.31], [ 1374593638000,17.31], [1374593708000,17.25], [1374593778000,17.25], [1374593849000,17.25], [1374593919000,17.25], [1374593989000,17.25], [1374594060000,17.25], [1374594130000,17.25] .... и т.д.

And here is what it currently looks like with one set of data plotted

Так что мои вопросы;

Каков наилучший способ изменить это, чтобы он отображал все данные, в настоящий момент он не работает;

mysql_select_db("mqtt", $con); 

$return_arr = array(); 

$fetch = mysql_query("SELECT timeof, message FROM temperatures WHERE DATE(timeof) BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE() AND locationmap = 'master'"); 
$i=0; 
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) { 
$rows[$i]=array(strtotime($row[timeof])*1000 ,(float)$row[message]); 
$i++; 
} 

echo json_encode($rows); 

Я предполагаю, что для множества наборов данных это должно быть в этом формате.

[{name: 'kitchen', dat a: [[date, temp], [date, temp], [date, temp]]}, {name: 'lounge', a a: [[ date, temp], [date, temp], [date, temp]]}]

Не знаете, как изменить мой запрос, чтобы он извлекал данные для ВСЕХ местоположений, а затем правильно кодировал их.

UPDATE-1

Последний код,

$return_arr = array(); 

$fetch = mysql_query("SELECT timeof, locationmap AS location, message AS temp FROM temperatures WHERE DATE(timeof) BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND CURDATE() ORDER BY location, timeof ASC"); 
$i=0; 
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) { 
$rows[$i]=array(strtotime($row[timeof])*1000 ,(float)$row[temp],$row[location]); 
$i++; 
} 

echo json_encode($rows); 

Однако он не возвращает правильный формат, как указано выше.

Выходит так. (Очевидно, что есть 1000.)

[1375272426000,22.63,"cupboard"],[1375272496000,22.69,"cupboard"],[1375272566000,22.75,"cupboard"],[1375272637000,22.75,"cupboard"],[1375272707000,22.69,"cupboard"],[1375272777000,22.63,"cupboard"],[1375106429000,17.69,"kitchen"],[1375106500000,17.69,"kitchen"],[1375106570000,17.63,"kitchen"],[1375106640000,17.63,"kitchen"],[1375106711000,17.63,"kitchen"],[1375106781000,17.63,"kitchen"],[1375106851000,17.63,"kitchen"],[1375106921000,17.56,"kitchen"],[1375106992000,17.56,"kitchen"],[1375107062000,17.56,"kitchen"],[1375107132000,17.56,"kitchen"],[1375107203000,17.56,"kitchen"],[1375107273000,17.5,"kitchen"],[1375107343000,17.5,"kitchen"],[1375107413000,17.5,"kitchen"] 

Я думаю, что мой запрос сейчас прав! просто нужна помощь с выходом json!

ДОПОЛНЕНО-2 Thx на форумах Highcharts, это формат, мне нужно JSON в, просто нужна помощь с PHP/MySQL стороне ...

[{ 
    name: 'kitchen', 
    data: [ 
    [time, value], 
    [time, value] 
    ] 
}, { 
    name: 'attic', 
    data: [ 
    [time, value], 
    [time, value] 
    ] 
}] 

ДОПОЛНЕНО-3 Получил это, работая с несколькими данными серии, не relise, я должен был вызвать мой json php script несколько раз, поставил два файла в GIST для тех, у кого есть похожие проблемы.

http://i.imgur.com/PzcTCGg.png

https://gist.github.com/matbor/8854385 https://gist.github.com/matbor/8853902

+0

Привет всем, может ли кто-нибудь помочь мне с правильным синтаксисом, для query и json output, я думаю, что это просто нуждается в некоторой настройке, но я новичок в этом, и я искал поисковые запросы и пробовал разные вещи без большой удачи. –

ответ

1

Я думаю, что лучший способ следовать «сравнить демо» и сделать свой код PHP генерировать только один массив, в зависимости от параметра URL-адрес, который определяет номер:

json.php?room=attic 
json.php?room=cupboard 

An вам только вывод данных комнаты

Затем он highstocks что называет отдельные PHP файлы с:

names = ['attic', 'cupboard', '...'], 

$.each(names, function(i, name) { 

    $.getJSON('jsonp.php?room='+ name.toLowerCase() +'-c.json&callback=?', function(data) { 
... 

Но, честно говоря, я до сих пор ищет пути, чтобы избежать многократного HTTP звонки/sql-запросы :-) особенно для данных типа [date1, value1, value1, value3], [date2, value1, value1, value3] ...

+0

, который выглядит как интересная идея, даст вам возможность вернуться к вам. –

+0

Спасибо, что, наконец, зафиксировали его, теперь все мои данные температуры нанесены на график. –

1

Да это должно быть в формате, который вы включаете, дата Morever должна быть отметка времени (время в milisceonds) и температуры необходимо числовое значение.

+0

Да, у меня есть время и время, когда вы описываете [datetime, temp], [1374598278000,16.75], [1374598348000,16.75], так как я могу в данный момент построить одно местоположение за раз. Я думаю, что мой самый большой вариант - это написать запрос, чтобы он извлекал данные, поэтому он форматирует json для нескольких местоположений, таких как [{name: 'kitchen', a a: [[date, temp], [date, temp], [ date, temp]]}, {name: 'lounge', a a: [[date, temp], [date, temp], [date, temp]]}] попробовали несколько вещей, но не могут показаться верните запрос. –

+0

Эта структура выглядит отлично, но это объект серии. –

+0

Обновил мой вопрос с помощью моего запроса и вывода латтетов, но теперь проблема с выходом json. –

Смежные вопросы