1-wire Mysql
1-wire Mysql
Извиняюсь что целую тему создаю, но в других не могу найти.
С программированием я не селен, не могу понять как записывать данный с датчика температуры в Mysql.
По возможности не могли бы вы выложить скрипт который записывает данные Mysql и чтоб потом можно было из этих данных построить график уже.
Заранее благодарю.
С программированием я не селен, не могу понять как записывать данный с датчика температуры в Mysql.
По возможности не могли бы вы выложить скрипт который записывает данные Mysql и чтоб потом можно было из этих данных построить график уже.
Заранее благодарю.
Re: 1-wire Mysql
viewtopic.php?f=1&t=92&p=1316#p1316
Для PHP:
Для Python работа с БД выглядит примерно так:
Для PHP:
Код: Выделить всё
<?
$conn=mysql_connect("localhost", "username", "password");
mysql_select_db("test",$conn);
require "/opt/owfs/bin/ownet.php";
$ow=new OWNet("tcp://localhost:3000");
$my_value = $ow->get("28.D6C18D020000/temperature");
$sql = "INSERT INTO test_table VALUES (NOW(), $my_value)";
mysql_query($sql,$conn);
?>
Код: Выделить всё
import sys
import MySQLdb
db = MySQLdb.connect(host='localhost', user='user', passwd='password', db='test')
cursor= db.cursor()
my_value = 30 # Здесь берем данные из 1-wire
cursor.execute("INSERT INTO test_table VALUES (NOW(), " + str(my_value) + ")")
Re: 1-wire Mysql
Еще проще с bash:
Код: Выделить всё
mysql -u user -ppassword --database=test -e "INSERT INTO test_table VALUES (NOW(), '`cat /mnt/1wire/28.02315A020000/temperature`')"
Re: 1-wire Mysql
эм, у меня по этому пути require "/opt/owfs/bin/ownet.php"; нет такого файла:(
Re: 1-wire Mysql
Если вы компилировали owfs вручную из последних версий, то он лежит тут:
/opt/owfs/share/php/OWNet/ownet.php
Найти ownet.php в системе можно с помощью команды
find / -name "ownet.php"
/opt/owfs/share/php/OWNet/ownet.php
Найти ownet.php в системе можно с помощью команды
find / -name "ownet.php"
Re: 1-wire Mysql
файл нашелся /root/owfs-2.7p32/module/ownet/php/ownet.php
Как я понимаю он находится в исходниках.
Это так нормально или же установился owfs не правельно?
Как я понимаю он находится в исходниках.
Это так нормально или же установился owfs не правельно?
Re: 1-wire Mysql
Либо вы не выполняли команду make install,
либо у вас команда ./configure не нашла достаточных оснований для установки ownet.php
Запустите ./configure и обратите внимание на строчки:
Module configuration:
Среди прочих должно быть:
owphp is enabled
Если модуль отключен, проверьте, установлены ли в системе пакеты: php5, php5-dev, php5-cli
либо у вас команда ./configure не нашла достаточных оснований для установки ownet.php
Запустите ./configure и обратите внимание на строчки:
Module configuration:
Среди прочих должно быть:
owphp is enabled
Если модуль отключен, проверьте, установлены ли в системе пакеты: php5, php5-dev, php5-cli
Re: 1-wire Mysql
Код: Выделить всё
root@world-server:~/owfs-2.7p32# apt-get install php5 php5-dev php5-cli
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:
Пакеты, имеющие неудовлетворённые зависимости:
libc6-dev : Ломает: gcc-4.4 (< 4.4.6-4) но 4.4.5-8 будет установлен
Re: 1-wire Mysql
Проверьте ваш /etc/apt/sources.list на предмет сторонних или нестабильных репозиториев.
Выполните команды:
Выполните команды:
Код: Выделить всё
aptitude clean && aptitude update
aptitude -f install
Re: 1-wire Mysql
Что бы не создавать тему... хотел спросить ...
Есть таблица
temp_date temp_value
-----------------------------------------
2011-11-15 00:00:03 26.25
2011-11-14 23:00:03 26.38
2011-11-14 22:00:03 26.63
2011-11-14 21:00:03 26.06
и т.д.
как мне сделать запрос чтобы выести массив для графиков
как в примере автора...
$ydata = array("температура", "температура", "температура", "температура");
$xdata = array("дата", "дата", "дата", "дата");
сломал всею голову.... еще сложнее для меня как вывести массив за сутки, неделю , месяц.
Автор подскажите. PHP только изучаю.
Есть таблица
temp_date temp_value
-----------------------------------------
2011-11-15 00:00:03 26.25
2011-11-14 23:00:03 26.38
2011-11-14 22:00:03 26.63
2011-11-14 21:00:03 26.06
и т.д.
как мне сделать запрос чтобы выести массив для графиков
как в примере автора...
$ydata = array("температура", "температура", "температура", "температура");
$xdata = array("дата", "дата", "дата", "дата");
сломал всею голову.... еще сложнее для меня как вывести массив за сутки, неделю , месяц.
Автор подскажите. PHP только изучаю.
Re: 1-wire Mysql
Подскажите при команде
Ничего не происходит.
Хотя все подключено.
Датчик на ком порту
Код: Выделить всё
/opt/owfs/bin/owfs -d /dev/ttyS0 -m /mnt/1wire
Хотя все подключено.
Датчик на ком порту
-
- Модератор
- Сообщения: 49
- Зарегистрирован: 18 мар 2011, 14:22
- Откуда: СПб
- Контактная информация:
Re: 1-wire Mysql
я запускаюсь так:
и считываем температуру:
скрипт на перле делает аналогично, читая файл раз в минуту и записывая в базу данных
Код: Выделить всё
owfs -u /mnt/owfs/
Код: Выделить всё
cat /mnt/owfs/uncached/28.57Z9BD020000/temperature
Код: Выделить всё
my $sql="INSERT INTO 1wire_temp SET datetime='$ts'", temp1='$temp';
$sth=$db->prepare($sql);
$sth->execute || warn "$prdt: Error: " . $db->errstr;
$sth->finish;
Re: 1-wire Mysql
xace, запрос простой:
SELECT temp_date, temp_value FROM test_table
Поизучайте описание языка SQL
Если вы хотите выбрать данные за определенный период, то можно использовать такие запросы
SELECT temp_date, temp_value FROM test_table WHERE temp_date>(NOW() - INTERVAL 1 MONTH)
Запрос выберет данные за последний месяц
Посмотрите Date and Time Functions из документации MySQL
Скачайте архив демо-интерфейса, который я опубликовал. Там есть ответы на ваши вопросы
Файл graph.php
Заполнять архив можно так
На выходе получим
SELECT temp_date, temp_value FROM test_table
Поизучайте описание языка SQL
Если вы хотите выбрать данные за определенный период, то можно использовать такие запросы
SELECT temp_date, temp_value FROM test_table WHERE temp_date>(NOW() - INTERVAL 1 MONTH)
Запрос выберет данные за последний месяц
Посмотрите Date and Time Functions из документации MySQL
Скачайте архив демо-интерфейса, который я опубликовал. Там есть ответы на ваши вопросы
Файл graph.php
Заполнять архив можно так
Код: Выделить всё
$xdata = array();
$xdata[] = 1;
$xdata[] = 2;
$xdata[] = 3;
print_r($xdata)
Код: Выделить всё
Array ( [0] => 1 [1] => 2 [2] => 3 )
Re: 1-wire Mysql
worid, а что по-вашему должно происходить?
Смотрите содержимое /mnt/1wire
Смотрите логи owfs. Если owfs вылетает, запускайте owfs с ключом --error_level=12 и смотрите /var/log/messages
Смотрите содержимое /mnt/1wire
Смотрите логи owfs. Если owfs вылетает, запускайте owfs с ключом --error_level=12 и смотрите /var/log/messages
Re: 1-wire Mysql
Код: Выделить всё
root@debian:~# /opt/owfs/bin/owfs --error_level=12 -d /dev/ttyS0 /mnt/1-weri/
CONNECT: owfs.c:main(100) fuse mount point: /mnt/1-weri/
CONNECT: ow_avahi_link.c:OW_Load_avahi_library(72) No Avahi support. Library libavahi-client couldn't be loaded
CONNECT: ow_dnssd.c:OW_Load_dnssd_library(136) Zeroconf/Bonjour is disabled since dnssd library isn't found
CALL: ow_parsename.c:FS_ParsedName_anywhere(95) path=[]
DEBUG: owlib.c:SetupTemperatureLimits(79) Globals temp limits 0C 100C (for simulated adapters)
DEBUG: ow_ds9097U.c:DS2480_initialize_repeatedly(267) Attempt #0 to initialize the DS9097U
Re: 1-wire Mysql
worid, "ничего не происходит" - это не описание проблемы. В чем именно заключается затруднение?
Из приведенного куска отладочной информации невозможно догадаться в чем сложность и тем более судить о ее причинах.
С флагом --error_level=12 в логе /var/log/messages появляется раз в 100 больше информации. Смотреть нужно лог
Откройте еще одну консоль и смотрите лог с помощью команды
tail -f /var/log/messages
Да, и прежде чем постить весь лог, попытайтесь понять причину самостоятельно.
Мы можем выучить таблицу умножения за вас, но тогда знать ее будем именно мы.
Из приведенного куска отладочной информации невозможно догадаться в чем сложность и тем более судить о ее причинах.
С флагом --error_level=12 в логе /var/log/messages появляется раз в 100 больше информации. Смотреть нужно лог
Откройте еще одну консоль и смотрите лог с помощью команды
tail -f /var/log/messages
Да, и прежде чем постить весь лог, попытайтесь понять причину самостоятельно.
Мы можем выучить таблицу умножения за вас, но тогда знать ее будем именно мы.
Re: 1-wire Mysql
Вот как у меня запускается сервер через COM порт:
/opt/owfs/bin/owserver -debug -d /dev/ttyS0 -p 3000
Вот так считываю:
<?php
require "/opt/owfs/bin/ownet.php";
$ow=new OWNet("tcp://localhost:3000");
$temp = $ow->read("288F36D402000088/temperature");
if (is_null($temp) or $temp==''){
$temp = $ow->read("288F36D402000088/temperature");
}
$temp = round($temp,0);
echo $temp;
unset($ow);
?>
/opt/owfs/bin/owserver -debug -d /dev/ttyS0 -p 3000
Вот так считываю:
<?php
require "/opt/owfs/bin/ownet.php";
$ow=new OWNet("tcp://localhost:3000");
$temp = $ow->read("288F36D402000088/temperature");
if (is_null($temp) or $temp==''){
$temp = $ow->read("288F36D402000088/temperature");
}
$temp = round($temp,0);
echo $temp;
unset($ow);
?>
Re: 1-wire Mysql
mysql_select_db("test",$db);
$resultat = mysql_query("SELECT DATE_FORMAT(ow_date, '%H:%i'), ow_val FROM test_table WHERE ow_date>(NOW() - INTERVAL 1 DAY)",$db);
$array = mysql_fetch_array($resultat);
$ydata = $array['ow_date'];
$xdata = $array['ow_val'];
$graph = new Graph("800.600");
$graph->SetScale("textlin");
$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);
$graph->xaxis->SetLabelAngle(90);
$graph->xaxis->SetPos('min');
$my_interval = ceil($i / 30);
$graph->xaxis->SetTextTickInterval($my_interval);
$lineplot=new LinePlot($ydata);
$graph->Add($lineplot);
$graph->Stroke();
Подскажите где тут может быть ошибка
$resultat = mysql_query("SELECT DATE_FORMAT(ow_date, '%H:%i'), ow_val FROM test_table WHERE ow_date>(NOW() - INTERVAL 1 DAY)",$db);
$array = mysql_fetch_array($resultat);
$ydata = $array['ow_date'];
$xdata = $array['ow_val'];
$graph = new Graph("800.600");
$graph->SetScale("textlin");
$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);
$graph->xaxis->SetLabelAngle(90);
$graph->xaxis->SetPos('min');
$my_interval = ceil($i / 30);
$graph->xaxis->SetTextTickInterval($my_interval);
$lineplot=new LinePlot($ydata);
$graph->Add($lineplot);
$graph->Stroke();
Подскажите где тут может быть ошибка
- Вложения
-
- data.png (2.78 КБ) 37786 просмотров
Последний раз редактировалось worid 28 ноя 2011, 19:04, всего редактировалось 1 раз.
-
- Модератор
- Сообщения: 49
- Зарегистрирован: 18 мар 2011, 14:22
- Откуда: СПб
- Контактная информация:
Re: 1-wire Mysql
Сегодня обнаружил неполадку: при использовании модуля аналоговых сигналов на основе DS2438 (от Бенукс), если он стоит в конце 1-wire цепочки, то все нормально, а вот если в промежутке, то вся сеть начинает скакать: то появляются модули, то исчезают, все кроме температурных датчиков (на паразитном). Переставляю модуль в конец - сразу все нормально.
Пытался найти что-то в логах, но --error_level=12 ничего не показывает. Предполагаю что проблема в питании 12в, но где и в чем не пойму. Может ли быть проблема в самом модуле? Причем до этого с ним все было отлично, работал бесперебойно недели две.
Подскажите как и что продиагностировать, где увидеть логи?!
UPD: По ходу что-то странное... на одном из контактов, где не должно быть ничего, появились +/- 10вольт, которые передавались по всей сети, странно что раньше такого не было...
Пытался найти что-то в логах, но --error_level=12 ничего не показывает. Предполагаю что проблема в питании 12в, но где и в чем не пойму. Может ли быть проблема в самом модуле? Причем до этого с ним все было отлично, работал бесперебойно недели две.
Подскажите как и что продиагностировать, где увидеть логи?!
UPD: По ходу что-то странное... на одном из контактов, где не должно быть ничего, появились +/- 10вольт, которые передавались по всей сети, странно что раньше такого не было...
Re: 1-wire Mysql
worid, jpgraph вам же пишет в чем ошибка. Данных нет.
Насколько я понимаю, у вас неправильно делается выборка из базы данных.
Собственно, в массив ничего не попадает.
Насколько я понимаю, у вас неправильно делается выборка из базы данных.
Собственно, в массив ничего не попадает.