Сервер OWFS

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
dimonix
Сообщения: 368
Зарегистрирован: 19 фев 2012, 22:01
Откуда: Сколково

Re: Сервер OWFS

Сообщение dimonix » 21 мар 2013, 10:48

видимо так:

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

~$ /opt/owfs/bin/owfs -s localhost:3000 /mnt/1-wire
если у вас owserver уже запущен на порте 3000. по умолчанию используется порт 4304.
upd: Андрей уже ответил ...
Последний раз редактировалось dimonix 21 мар 2013, 12:23, всего редактировалось 1 раз.

sergibus0
Сообщения: 11
Зарегистрирован: 21 мар 2013, 09:45

Re: Сервер OWFS

Сообщение sergibus0 » 21 мар 2013, 11:14

Спасибо всем, дома попробую. В моём случае, последовательность команд была не верной :)

Mixman
Сообщения: 395
Зарегистрирован: 17 фев 2013, 23:49
Откуда: Волгодонск, Ростовская обл.
Контактная информация:

Re: Сервер OWFS

Сообщение Mixman » 21 мар 2013, 16:49

Andrey_B писал(а):Для того, чтобы owfs заработал как HTTP-сервер необходимо либо запустить только одну owhttpd, либо работать через owserver.
Это уже пора заносить в какой-то FAQ.
я бы вообще был бы только рад, если сделаете несколько FAQ для чайников, т.к. таких много... Сделайте и закрепите :)
Сам намучился с установкой owfs из репозитория... Так до конца и не понял как оно заработало )))

Пока опрашивается только 1 датчик температуры, так сказать тестовый режим. Не могу найти ownet.php, хоть стреляй ))) По php теперь не могу внести данные в базу, только пока через bash получается.

Собственно есть такие, кто устанавливал через apt-get install owfs? Где у вас лежит ownet.php?

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Сервер OWFS

Сообщение Andrey_B » 21 мар 2013, 17:02

Mixman, в Linux много полезных команд
# Где лежит скрипт (если путь прописан в окружении)
which ownet.php
# Поиск файла по всему компьютеру
find / -name "ownet.php"
# Вывести перечень всех файлов в установленом пакете
dpkg -L owfs
# То же, но с фильтрацией по имени
dpkg -L owfs |grep ownet
В пакете из репозитория его вполне может и не быть. Тогда можно скачать архив с sorceforge.net. Компилировать его, понятное дело, не нужно.

Mixman
Сообщения: 395
Зарегистрирован: 17 фев 2013, 23:49
Откуда: Волгодонск, Ростовская обл.
Контактная информация:

Re: Сервер OWFS

Сообщение Mixman » 21 мар 2013, 17:10

Прошу прощения за чайниковость, но можно поподробнее? ну или ссылкой ткунть.
Тогда можно скачать архив с sorceforge.net. Компилировать его, понятное дело, не нужно.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Сервер OWFS

Сообщение Andrey_B » 21 мар 2013, 17:12

http://sourceforge.net/projects/owfs/
Распаковываются такие архивы так
tar -xvzf имя-архива
Там ищем ownet.php и копируем в нужное нам место.

vladimir22
Сообщения: 219
Зарегистрирован: 15 мар 2013, 09:42

Re: Сервер OWFS

Сообщение vladimir22 » 21 мар 2013, 19:48

Mixman писал(а):Собственно есть такие, кто устанавливал через apt-get install owfs? Где у вас лежит ownet.php?
странно , у меня тоже нету

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

root@raspberrypi:~# find / -name ownet.php -print
root@raspberrypi:~#

Mixman
Сообщения: 395
Зарегистрирован: 17 фев 2013, 23:49
Откуда: Волгодонск, Ростовская обл.
Контактная информация:

Re: Сервер OWFS

Сообщение Mixman » 21 мар 2013, 20:11

Andrey_B писал(а):http://sourceforge.net/projects/owfs/
Распаковываются такие архивы так
tar -xvzf имя-архива
Там ищем ownet.php и копируем в нужное нам место.
Не помогает :( ничего не заносит в базу и не отображает :( Пробовал разные порты и 2121, и 3000, и 3001, и 4304
Запускаю файл temp.php, его код ниже (пользователя, пароль и имя базы поменял)

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

<?
$conn=mysql_connect("localhost", "user", "pass");
mysql_select_db("bdname",$conn);
require "/opt/owfs/bin/ownet.php";
$ow=new OWNet("tcp://localhost:2121");
$my_value = $ow->get("28.4DCA39040000/temperature");
$sql = "INSERT INTO tmp_2 VALUES (tmpID, 62, NOW(), $my_value)";
echo $my_value;
mysql_query($sql,$conn);
?>


Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Сервер OWFS

Сообщение Andrey_B » 22 мар 2013, 12:00

Mixman, начать надо с того, почему не отображает

Если вот это не работает и на экран ничего не выводится, то нужно искать проблему сначала здесь
<?
require "/opt/owfs/bin/ownet.php";
$ow=new OWNet("tcp://localhost:2121");
$my_value = $ow->get("28.4DCA39040000/temperature");
echo $my_value;
?>

Как у вас запускается owserver?

vkfont
Сообщения: 13
Зарегистрирован: 23 ноя 2012, 12:48

Re: Сервер OWFS

Сообщение vkfont » 22 мар 2013, 12:12

модифицируйте код следующим образом и скопируйте на форум что вам вывело:

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

<?
ini_set("display_errors", true);
error_reporting(E_ALL);
$conn=mysql_connect("localhost", "user", "pass");
mysql_select_db("bdname",$conn);
require "/opt/owfs/bin/ownet.php";
$ow=new OWNet("tcp://localhost:2121");
$my_value = $ow->get("28.4DCA39040000/temperature");
$sql = "INSERT INTO tmp_2 VALUES (tmpID, 62, NOW(), $my_value)";
echo $my_value;
mysql_query($sql,$conn);
?>
из того что в глаза бросилось сразу:

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

$sql = "INSERT INTO tmp_2 VALUES (tmpID, 62, NOW(), $my_value)";
должно ругнуться на "tmpID" т.к. это не переменная

Mixman
Сообщения: 395
Зарегистрирован: 17 фев 2013, 23:49
Откуда: Волгодонск, Ростовская обл.
Контактная информация:

Re: Сервер OWFS

Сообщение Mixman » 23 мар 2013, 14:14

Вообщем колдовал, с бубном плясал...
Потом взял и скомпилировал :) если кому надо, то инструкция тут http://archive.pfb.no/2010/04/01/owfs-o ... n-squeeze/
Правда, я поставил owfs-2.9p0

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

wget http://downloads.sourceforge.net/project/owfs/owfs/2.9p0/owfs-2.9p0.tar.gz
а все остальное по инструкции.

Да, и файл автостарта немного изменил /etc/init.d/owfs.sh В инструкции его предлагают скачать и скопировать в /etc/init.d

Ниже собственно мой файл.

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

#!/bin/sh
# /etc/init.d/owfs.sh

MOUNTPOINT='/mnt/1wire';
 case "" in
        start)
echo "starting script owfs with USB support..";
echo `/opt/owfs/bin/owserver -uall -p 3000`
echo `/opt/owfs/bin/owhttpd -s 3000 -p 3001`
echo `/opt/owfs/bin/owfs -s 3000 /mnt/1wire/`
         ;;
        stop)
         echo "stopping script owfs by unloading mount-point ..";
         echo `umount $MOUNTPOINT`;
         ;;
        *)
         echo "Usage: /etc/init.d/owfs.sh {start|stop}"
         exit 1
         ;;
 esac

exit 0
PS Вдруг кому будет полезна инфа

Mixman
Сообщения: 395
Зарегистрирован: 17 фев 2013, 23:49
Откуда: Волгодонск, Ростовская обл.
Контактная информация:

Re: Сервер OWFS

Сообщение Mixman » 03 апр 2013, 10:53

Незнаю, может не сюда, но опишу проблему тут.

Умер винт, пришлось заново ставить дебиан и owfs на новый. Так вот после новой установки данные с термодатчика стали записываться с пропусками. В час бывает не хватает 1-2 записей. Мастер, провода, датчик все то же самое, что и при старом винте, где в базу все четко писалось. Единственно в этот раз установил графический интерфейс на дибиане. В нем что ли дело?
файл, отвечающий за внесение данных /var/my/temp.php

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

<?
$conn=mysql_connect("localhost", "user", "pass");
mysql_select_db("dbname",$conn);
require "/opt/owfs/share/php/OWNet/ownet.php";
$ow=new OWNet("tcp://localhost:3000");
$my_value = $ow->get("28.4DCA39040000/temperature");
$my_value = $ow->get("28.4DCA39040000/temperature");
$sql = "INSERT INTO tmp_2 VALUES (tmpID, 62, NOW(), $my_value)";
mysql_query($sql,$conn);
?>

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

chmod 1555 /var/my/temp.php
и crontab -e

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

*/5   *   *   *   *   php /var/my/temp.php 

maloicds
Сообщения: 86
Зарегистрирован: 28 сен 2012, 23:14
Откуда: МО, Подольск
Контактная информация:

Re: Сервер OWFS

Сообщение maloicds » 03 апр 2013, 11:22

Mixman писал(а):

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

$my_value = $ow->get("28.4DCA39040000/temperature");
$my_value = $ow->get("28.4DCA39040000/temperature");
А зачем два раза получаете температуру? да ещё с такой точностью. У себя использую temperature9 (вполне хватает) предварительно выполнив simultaneous.
Попробуйте вот так

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

function gettemptobase()
 {
  connectdb();
  $ow = new OWNet("tcp://localhost:3000");
  $now = date("Y-m-d H:i:s");
  $dev=array("28.xxxxxxxxx", "28.xxxxxxxxx", "28.xxxxxxxxx","28.xxxxxxxxx");
  $ow->set("/simultaneous/temperature",1);
  foreach ($dev as $i => $value)
  {
   $temp = $ow->get("/$dev[$i]/temperature9");
   mysql_query( "INSERT INTO temp_data VALUES (null, '$dev[$i]', $temp, '$now')");
   usleep (10000);
  }
где $dev - массив из температурных датчиков.
Все функции у меня находятся в одном файле (для удобства работы). Потом делаю файл get_temp.php со следующим содержанием

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

<? 
 include ('/var/smarthome/www/block/function.php');
 gettemptobase();
 ?>
и по крону раз в 3 мин его запускаю

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

*/3 * * * * /usr/bin/php -f /путь до get_temp.php &

maloicds
Сообщения: 86
Зарегистрирован: 28 сен 2012, 23:14
Откуда: МО, Подольск
Контактная информация:

Re: Сервер OWFS

Сообщение maloicds » 03 апр 2013, 11:31

ещё можно добавить проверку на пустые значения

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

if (is_null($temp) or $temp=='')

dimonix
Сообщения: 368
Зарегистрирован: 19 фев 2012, 22:01
Откуда: Сколково

Re: Сервер OWFS

Сообщение dimonix » 03 апр 2013, 12:16

вот ещё вариант, пропусков нет

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

function read_ow($devLABEL_ID) {
        global $ow;
        $dev_addr=get_devPROPS ($devLABEL_ID,"devADDR");
        $temp = $ow->read("$dev_addr");
        if (is_null($temp) or $temp=='') {
                sleep(1);
                $uncached = "uncached/".$dev_addr;   // <--!!!
                $temp = $ow->read("$uncached");
        }
        return (trim($temp));
читать два раза подряд датчики не имеет смысла , т.к. по умолчанию owfs кэширует данные на время порядка 15 секунд.

gnork
Сообщения: 54
Зарегистрирован: 08 янв 2013, 20:39

Re: Сервер OWFS

Сообщение gnork » 27 дек 2013, 13:07

В своих ковыряниях похоже что-то испортил. При попытке получить температуру выдает вот такое:
Can't create socket [ow://localhost:3000], errno: 111
Где исправлять?

Vermus
Сообщения: 54
Зарегистрирован: 29 июл 2013, 17:12

Re: Сервер OWFS

Сообщение Vermus » 29 дек 2013, 21:44

gnork писал(а):В своих ковыряниях похоже что-то испортил. При попытке получить температуру выдает вот такое:
Can't create socket [ow://localhost:3000], errno: 111
Где исправлять?
Я так понимаю нет рабочего сервера на 3000 порту.
пробуем
#telnet localhost 3000

sentrashi
Сообщения: 1
Зарегистрирован: 18 авг 2014, 01:10

Re: Сервер OWFS

Сообщение sentrashi » 18 авг 2014, 02:38

Тоже получал пустые значения (при опросе) / нули (в БД) с завидной периодичностью при опросе сенсора каждые 10 минут (видимо, это связано с периодическим пересчетом температуры самой owfs).
Указанные выше двойные повторения "->read..." не помогли.
Избавился от пустых значений с помощью вот такого кусочка кода:
do {
$var_t = $ow->read("/$dev_id/temperature");
} while (is_null($var_t));

arbuzmaster
Сообщения: 254
Зарегистрирован: 15 июл 2013, 23:43
Откуда: Астрахань

Re: Сервер OWFS

Сообщение arbuzmaster » 29 авг 2014, 23:02

Помогло подключение 5В и двойное считывание

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


                     $ow->set("/simultaneous/temperature",1);
							usleep( 750);
							$get_temperature=$ow->read("/".$wire_temperature_id."/temperature");
							usleep( 750);
							$get_temperature=$ow->read("/".$wire_temperature_id."/temperature");
							$temp=round($get_temperature);
Температура не кэшируется!!!

Mixman
Сообщения: 395
Зарегистрирован: 17 фев 2013, 23:49
Откуда: Волгодонск, Ростовская обл.
Контактная информация:

Re: Сервер OWFS

Сообщение Mixman » 31 авг 2014, 23:54

а зачем Вы делаете такую маленькую паузу? usleep( 750);
Это же всего лишь 0,000750 сек.
поставьте секунду.. у меня 3 секунды sleep(3);

Ответить