Web-интерфейс Умного Дома и разработка домашнего сайта
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Добрый день, Андрей!
Просмотрел ваши статьи о создании сайта для "умного дома". Взял за образец ваш проект - ab-log-demo.zip . С работой базы и взамодействием с CMS разобрался. Графики отображаются. А вот файлы с расширением jpg :
Monitor1.jpg
Monitor2.jpg
Monitor3.jpg
и др.
не отображаются. Думал, что проблема именно в файлах с расширением jpg или в работе PHP.
Однако код:
<?
header("Content-type: " .image_type_to_mime_type(IMAGETYPE_JPEG));
$file = "snap/Camera1.jpg";
echo file_get_contents($file);
?>
работает.
Заранее спасибо за помощь.
Просмотрел ваши статьи о создании сайта для "умного дома". Взял за образец ваш проект - ab-log-demo.zip . С работой базы и взамодействием с CMS разобрался. Графики отображаются. А вот файлы с расширением jpg :
Monitor1.jpg
Monitor2.jpg
Monitor3.jpg
и др.
не отображаются. Думал, что проблема именно в файлах с расширением jpg или в работе PHP.
Однако код:
<?
header("Content-type: " .image_type_to_mime_type(IMAGETYPE_JPEG));
$file = "snap/Camera1.jpg";
echo file_get_contents($file);
?>
работает.
Заранее спасибо за помощь.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Помогите пожалуйста разобраться с графиками... Вывод самого графика я сделал... но как сделать, чтобы можно было выбирать как дневной, так и месячный (как у Вас на сайте)?
Вот код (датчиков в серверной), который у меня выводит за сутки:
Но как его модифицировать, чтобы был выбор сутки/месяц?
Несколько часов просидел над файлом graph.php с архива ab-log-demo.tar.gz, но так и не осилил его Вроде как там много лишнего (имеется ввиду для управления с ЦМС), но так как я пока не планирую админ веб-интерфейс, то подскажите пожалуйста как этот кусок допилять для такого функционала.
Вот код (датчиков в серверной), который у меня выводит за сутки:
Код: Выделить всё
<?php
// Подключаем библиотеку
include ("libs/jpgraph/jpgraph.php");
include ("libs/jpgraph/jpgraph_line.php");
define('SQL_INC',1);
require 'inc/config.inc.php';
require 'inc/sql.inc.php';
$daytime=time()-86400;
// Пишем SQL-запрос к базе
$data = mysql_query("select date, temp_ulici, temp_in, temp_servernoy from temp_garaj where date >= $daytime");
while ($row=mysql_fetch_array($data)) {
$temp_ulici[] = $row['temp_ulici'];
$temp_stoyki[] = $row['temp_in'];
$temp_servernoy[] = $row['temp_servernoy'];
$xdata[] = date('G:i',$row['date']);
}
//создаем график шириной 460 и высотой 200 пикселов
$graph = new Graph(450,200,"auto");
//устанавливаем типы данных по осям абсцисс и ординат
$graph->SetScale("textlin");
//установим заголовок
$graph->title->Set('Температура стойки');
$graph->title->SetFont(FF_VERDANA, FS_BOLD, 12);
$graph->SetMarginColor('white');
$graph->SetFrame(true,'#B3BCCB', 1);
$graph->SetTickDensity(TICKD_DENSE);
$graph->img->SetMargin(50,20,20,60);
$graph->title->SetMargin(10);
//данные по оси абсцисс
$graph->xaxis->SetTickLabels($xdata);
//каждое 11-е значение
$graph->xaxis->SetTextTickInterval(11);
$graph->xaxis->SetLabelAngle(90);
$graph->xaxis->SetPos('min');
$stoyka=new LinePlot($temp_stoyki);
$stoyka->SetColor('red');
$servernaya=new LinePlot($temp_servernoy);
$servernaya->SetColor('blue');
$ulica=new LinePlot($temp_ulici);
$ulica->SetColor('green');
$graph->Add($stoyka);
$graph->Add($servernaya);
$graph->Add($ulica);
$graph->Stroke();
?>
Несколько часов просидел над файлом graph.php с архива ab-log-demo.tar.gz, но так и не осилил его Вроде как там много лишнего (имеется ввиду для управления с ЦМС), но так как я пока не планирую админ веб-интерфейс, то подскажите пожалуйста как этот кусок допилять для такого функционала.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
У меня примерно таек
Код: Выделить всё
SELECT DATE_FORMAT(temp_date, '%H:%i'), temp_value FROM temp WHERE temp_date>(NOW() - INTERVAL 1 DAY)
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Спасибо, с этим разобрался.
Не могу понять как берутся температуры, те что пишутся явным образом, вот например, вкладка Климат, "Температура на 1 этаже 24.34°".
В ab-pages.php видно что запрос идет на ab-data.php ($.get("ab-data.php?p=dev&id=temp_in", function(data){$("#temp_in").html(data + \'°\');});), а там темный лес... ЦМСка по непонятному мне образу как-то считывает с базы.
Кто-то может написать простенький пример как можно считывать, чтобы не поломать структуру ab-pages.php, т.э. при запросе похожем на:
в файле ab-data.php этот запрос обрабатывался понятным для чтения способом.
Не могу понять как берутся температуры, те что пишутся явным образом, вот например, вкладка Климат, "Температура на 1 этаже 24.34°".
В ab-pages.php видно что запрос идет на ab-data.php ($.get("ab-data.php?p=dev&id=temp_in", function(data){$("#temp_in").html(data + \'°\');});), а там темный лес... ЦМСка по непонятному мне образу как-то считывает с базы.
Кто-то может написать простенький пример как можно считывать, чтобы не поломать структуру ab-pages.php, т.э. при запросе похожем на:
Код: Выделить всё
$.get("ab-data.php?p=dev&id=temp_in", function(data){$("#temp_in").html(data + \'°\');});
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
jQuery-функция .get() выполняет GET-запрос к скрипту ab-data.php с параметрами.
Вы можете отредактировать ab-data.php и написать свой код, который бы вызывался с вашими параметрами, например ab-data.php?p=my_temp
В конце ab-data.php можете добавить обработку вашего значения
elseif ( $_REQUEST['p'] == "my_temp" )
{
//Ваша выборка из БД SQL-запросом.
}
Или в чем заключался вопрос?
Вы можете отредактировать ab-data.php и написать свой код, который бы вызывался с вашими параметрами, например ab-data.php?p=my_temp
В конце ab-data.php можете добавить обработку вашего значения
elseif ( $_REQUEST['p'] == "my_temp" )
{
//Ваша выборка из БД SQL-запросом.
}
Или в чем заключался вопрос?
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Спасибо за наводку, но что-то не получается.
Вот вызов:
Видимо что-то не то.. и чувствую что там что-то есть лишнее...
Обработку значения решил делать в новом файле (чтобы не путать с уже имеющимся) data.php, вот его код:
Здесь на daytime не обращайте внимания.. он для нахождения в будущем мин/макс/средних значений.
Т.э. мне нужно вывести через .get $tulicinow. но что-то не получается.
Вот вызов:
Код: Выделить всё
$(document).ready(
function()
{
$.get("data.php?p=temp_out", function(data)
{
$("#tulicinow").html(data + \'°\');
});
});
echo "<div id=\"tulicinow\" class=\"ab-graph-val\"></div>";
Обработку значения решил делать в новом файле (чтобы не путать с уже имеющимся) data.php, вот его код:
Код: Выделить всё
<?
define('SQL_INC',1);
require 'inc/config.inc.php';
require 'inc/sql.inc.php';
if ( $_REQUEST['p'] == "temp_out" )
{
$daytime=time()-86400;
$tdstoyka = mysql_query("select date, temp_ulici from temp_garaj where date >= $daytime");
while ($row=mysql_fetch_array($tdstoyka)) {
$timestoyka[] = date('G:i',$row['date']);
$tulici[] = $row['temp_ulici'];
}
$cntstoyka = count($tstoyka);
$tulicinow = round($tulici[$cntstoyka-1], 1);
}
?>
Т.э. мне нужно вывести через .get $tulicinow. но что-то не получается.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
В первом фрагменте кода у вас смешан PHP и Javascript.
Должно быть так:
Не забудьте также включить в файл вызов библиотеки jquery. В указанном вами куске кода этого вызова нет.
Должно быть так:
Код: Выделить всё
<script>
$(document).ready(
function()
{
$.get("data.php?p=temp_out", function(data)
{
$("#tulicinow").html(data + '°');
});
});
</script>
<?php
echo "<div id=\"tulicinow\" class=\"ab-graph-val\"></div>";
?>
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Кажется разобрался как этот .get работает, получается он как бы выводит результат кода в указанном в нем запросе... т.э. для того чтобы у меня выводило температуру, нужно было добавить echo $tulicinow;
Код получился такой:
P.S. На счет вызова библиотеки jquery, то она вызывается с main.php. Использую Ваш шаблон, за что очень благодарен. Походу пока на нем и буду сидеть.. пока не появится что-то готового и лучшего.. хотя думаю это далеко не скоро будет.
На счет обновления показаний, как я понял за это отвечает эта функция?:
Значение 50000 это в миллисекундах или как?
...
Отвечу сам на свой вопрос, может кому пригодится.. ДА, в мс, т.э. 50000=50сек.
Код получился такой:
Код: Выделить всё
<?
define('SQL_INC',1);
require 'inc/config.inc.php';
require 'inc/sql.inc.php';
if ( $_REQUEST['p'] == "temp_out" )
{
$daytime=time()-86400;
$tdstoyka = mysql_query("select date, temp_ulici from temp_garaj where date >= $daytime");
while ($row=mysql_fetch_array($tdstoyka)) {
$timestoyka[] = date('G:i',$row['date']);
$tulici[] = $row['temp_ulici'];
}
$cntstoyka = count($tulici);
$tulicinow = round($tulici[$cntstoyka-1], 1);
echo $tulicinow;
}
?>
На счет обновления показаний, как я понял за это отвечает эта функция?:
Код: Выделить всё
$(\'#ui-tabs-\' + tab_index).everyTime(50000, function(i) {
$.get("data.php?p=temp_out", function(data){$("#tulicinow").html(data + \'°\');});
});
...
Отвечу сам на свой вопрос, может кому пригодится.. ДА, в мс, т.э. 50000=50сек.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Что-то не получается один момент победить... чтобы при выводе значения следующая надпись не начиналась с новой строки, например:
а сейчас так:
Вот блок что выводит:
Я думаю собака где-то здесь зарыта:
так как после вызова этих гет-запросов переходит на новую строку.
Код: Выделить всё
"Минимум: -16°C Максимум: -5,3°C"
Код: Выделить всё
Минимум:-16°C
Максимум:-5,3°C
Код: Выделить всё
echo "<div style=\"float:left\">Минимум: </div>";
echo "<div style=\"color:red\" id=\"tulicimin\"></div>";
echo "<div style=\"float:left\">Максимум: </div>";
echo "<div style=\"color:red\" id=\"tulicimax\"></div>";
Код: Выделить всё
$.get("data.php?p=temp_out_min", function(data){$("#tulicimin").html(data + \'°C\');});
$.get("data.php?p=temp_out_max", function(data){$("#tulicimax").html(data + \'°C\');});
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
DIV - это блочный элемент, после которого по умолчанию происходит перевод строки
Чтобы не было перехода на новую строку используйте тэг SPAN, который является inline-элементом или же пропишите явно поведение блока, например, так
echo "<div style=\"float:left;color:red\" id=\"tulicimin\"></div>";
Чтобы не было перехода на новую строку используйте тэг SPAN, который является inline-элементом или же пропишите явно поведение блока, например, так
echo "<div style=\"float:left;color:red\" id=\"tulicimin\"></div>";
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Еще вопросик.. может подскажите.
У меня графики другого размера, т.э. выходят за поля рамки. Как эту рамку увеличить до необходимого размера?
Вроде как параметр .ui-state-default отвечает за это, но в ./css2/themes/redmond/jquery-ui-1.8.16.custom.css нет ничего такого, чтобы повлияло на размер этой рамки.
У меня графики другого размера, т.э. выходят за поля рамки. Как эту рамку увеличить до необходимого размера?
Вроде как параметр .ui-state-default отвечает за это, но в ./css2/themes/redmond/jquery-ui-1.8.16.custom.css нет ничего такого, чтобы повлияло на размер этой рамки.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Непосредственно у элемента всегда можно прописать высоту или ширину. Вот так: style="height:400px"
Или указать class или id.
Например <div class="big_ramka"></div>
где в CSS (любом доступном из основного HTML) пишем
.big_ramka {height:400px;}
Ну как-то так...
Или указать class или id.
Например <div class="big_ramka"></div>
где в CSS (любом доступном из основного HTML) пишем
.big_ramka {height:400px;}
Ну как-то так...
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Вопросы возникли по JpGraph - не получается настроить вывод только целых значений по шкале Y, выводятся дробные, график получается очень ломаный, чтение документации не помогло, по оси Х нашел параметр, а по оси Y нет...
Вопрос второй - кто нибудь пробовал настраивать JpGraph чтобы вывод графика был через Spline, чтобы график был плавный и красивый ? Пробовал по примеру с офиц. сайта и по примеру отсюда http://www.samag.ru/archive/article/410 - не получается, выдается ошибка (jpgraph error: 19002) и все тут. В примерах по шкале Х значения целые, а у нас там время, может быть из-за этого не получается ? Кто нибудь делал такое ?
Вопрос третий - Можно ли на графике выделить цветом значение 0 (ноль) по шкале Y для более наглядной визуализации (полосой другого цвета)?
P.S. Что то картинки не показываются....
Вопрос второй - кто нибудь пробовал настраивать JpGraph чтобы вывод графика был через Spline, чтобы график был плавный и красивый ? Пробовал по примеру с офиц. сайта и по примеру отсюда http://www.samag.ru/archive/article/410 - не получается, выдается ошибка (jpgraph error: 19002) и все тут. В примерах по шкале Х значения целые, а у нас там время, может быть из-за этого не получается ? Кто нибудь делал такое ?
Вопрос третий - Можно ли на графике выделить цветом значение 0 (ноль) по шкале Y для более наглядной визуализации (полосой другого цвета)?
P.S. Что то картинки не показываются....
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Со сплайнами там сложно, уже не помню в чем причина. Делайте аппроксимацию и будет вам счастье.
Вот, к примеру, у меня так:
/////сглаживание
$count=count($DATA[0]);
if ($count==0) $count=1;
$DATA[0][-1]=$DATA[0][-2]=$DATA[0][0];
$DATA[0][$count]=$DATA[0][$count+1]=$DATA[0][$count-1];
// Сглаживание графики методом усреднения соседних значений
for ($i=0;$i<$count;$i++) {
$DATA[0][$i]=($DATA[0][$i-1]+$DATA[0][$i-2]+
$DATA[0][$i]+$DATA[0][$i+1]+
$DATA[0][$i+2])/5;
}
В $DATA[0] - лежат все значения по Y
если не сглаживать, то, график как ежик
Вот, к примеру, у меня так:
/////сглаживание
$count=count($DATA[0]);
if ($count==0) $count=1;
$DATA[0][-1]=$DATA[0][-2]=$DATA[0][0];
$DATA[0][$count]=$DATA[0][$count+1]=$DATA[0][$count-1];
// Сглаживание графики методом усреднения соседних значений
for ($i=0;$i<$count;$i++) {
$DATA[0][$i]=($DATA[0][$i-1]+$DATA[0][$i-2]+
$DATA[0][$i]+$DATA[0][$i+1]+
$DATA[0][$i+2])/5;
}
В $DATA[0] - лежат все значения по Y
если не сглаживать, то, график как ежик
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Друзья, а кто-нибудь уже разобрался со структурой БД автора? Если у кого-то есть описания таблиц и переменных, выложите, пожалуйста. Давайте совместно сделаем полное описание БД, а Андрей подкорректирует, если что не так.
У меня, например, строящаяся домашняя автоматизация процентов на 90 будет соответствовать конфигурации Андрея: котел Vaillant+клапаны, счетчик Меркурий, автополив и т.д
У меня, например, строящаяся домашняя автоматизация процентов на 90 будет соответствовать конфигурации Андрея: котел Vaillant+клапаны, счетчик Меркурий, автополив и т.д
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
А ничего что автор как-бы против?
Уж если бы был за, то давно бы выложил. Насколько я понял его философию - он дает удочку, а вы просите рыбу.
ЗЫ Хотя ваше месторасположение как-бы намекает.
Уж если бы был за, то давно бы выложил. Насколько я понял его философию - он дает удочку, а вы просите рыбу.
ЗЫ Хотя ваше месторасположение как-бы намекает.
-
- Сообщения: 177
- Зарегистрирован: 07 ноя 2011, 23:04
- Откуда: Россия, Самара
- Контактная информация:
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Сергей99 писал(а): ЗЫ Хотя ваше месторасположение как-бы намекает.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
т.е. Вы утверждаете, что Автор против создания участниками данного форума описания базы данных, которую он выложил в свободный доступ? так, видимо, нужно самого Автора сначала спросить. или Вы уполномочены здесь представлять его интересы? объясните, если, конечно есть что.Сергей99 писал(а):А ничего что автор как-бы против?
Уж если бы был за, то давно бы выложил. Насколько я понял его философию - он дает удочку, а вы просите рыбу.
ЗЫ Хотя ваше месторасположение как-бы намекает.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Насчет философии Сергей99 правильно сказал. В данный момент я не могу предложить готовый продукт, но это не значит, что его не будет когда-нибудь в будущем.
А насчет БД никакого секрета нет, но ситуация следующая. Я уже несколько раз говорил об этом. Структура БД продиктована используемой CMS. Но эта СMS коммерческая и я не могу выложить ее в свободный доступ. Мне так было проще, так как СMS позволяет достаточно быстро конструировать таблицы и вести разработку. На этапе исследования это сильно облегчало жизнь. Но я не считаю, что структура оптимальна. Думаю, ее можно было бы сделать намного лучше. А что касается описания, то я не против. Но структура не является статичной. Под каждый тип данных в CMS заводится своя таблица. Кроме того, данная база создана специально для логики работы CMS, но без понимания этой логики некоторые вещи очень не очевидны. Некоторую ключевую логику с картинками я здесь уже описывал.
А насчет БД никакого секрета нет, но ситуация следующая. Я уже несколько раз говорил об этом. Структура БД продиктована используемой CMS. Но эта СMS коммерческая и я не могу выложить ее в свободный доступ. Мне так было проще, так как СMS позволяет достаточно быстро конструировать таблицы и вести разработку. На этапе исследования это сильно облегчало жизнь. Но я не считаю, что структура оптимальна. Думаю, ее можно было бы сделать намного лучше. А что касается описания, то я не против. Но структура не является статичной. Под каждый тип данных в CMS заводится своя таблица. Кроме того, данная база создана специально для логики работы CMS, но без понимания этой логики некоторые вещи очень не очевидны. Некоторую ключевую логику с картинками я здесь уже описывал.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Андрей, еще раз спасибо за разъяснение. Ваш подход вполне понятен, было бы глупо просить все, сейчас и "под ключ".Andrey_B писал(а):...
Но есть желание сделать "быстрый старт", и далее уже модифицировать демо-комплект под свои нужды. А вот без описания структуры БД здесь никак. Именно поэтому я и предложил объединить усилия и сделать такое описание.