2 февраля 2014 г.

Owfs - установка из исходников

Начнем с лирического отступления. Проанализировав показания термометра DS18B20 я понял, что он немного завышает показания.   Погуглив я нашел две причины: либо самонагрев датчика от частого опроса, либо неоткаллиброванный датчик. Решил получше изучить логи owfs.

1. Включаем логи: /etc/owfs.conf

  1. error_print = 1   
  2. error_level = 3   

Перезапускаем owserver и смотрим что у нас в логах. (Обратите внимание, что я рассказываю про версию из deb пакета в init.d скрипте которого уже указан путь к конфигу). А в логах у нас пусто. Помните, как мы устанавливали систему? Позже мы поставили rsyslod.

Ищем # whereis owserver , чтобы запустить его не в режиме сервиса , а в консоли.

  1. #/usr/bin/owserver --debug  --error_level=9 --error_print=2 --foreground -c /etc/owfs.conf --pid-file /var/run/owfs/owserver.pid  
  2. DEBUG MODE  
  3. libow version:  
  4.         2.8p15  


И снова пусто. Но не только у нас. Похоже, что в deb пакете owfs логирование выключено.

Посему удаляем owfs (сохраним init.d скрипты и owfs.conf - хотя они удалиться не должны). Качаем версию посвежее. Распаковываем tar -xvzf... Устанавливаем необходимое для компиляции и сборки.

  1. #apt-get install autoconf libtool libusb-dev libfuse-dev make ed  
  2. #cd /usr/src/owfs-2.9p1  
  3. #./configure --help  
  4. #/owfs-2.9p1# autoreconf -i  

Я сконфигурировал следующим образом (также можно добавить опцию --enable-owtraffic Enable bus traffic reports (default false) - очень интересная опция, дающая возможность отслеживать трафик в самой 1-wire сети):

  1. #./configure --enable-debian --disable-owftpd --disable-owperl --disable-owphp --disable-parport --disable-owpython  
  2. # make -j4  
  3. # make install  

По умолчанию все устанавливается в директорию /opt/owfs/ . Сделаем линк в /usr/bin , что бы было проще использовать и не переписывать скрипты запуска.

  1. # for p in owfs owserver owhttpd owftpd owread owwrite owdir ; do ln -sf /opt/owfs/bin/$p /usr/bin/$p ; done  

Пробуем запускать:

  1. /usr/bin/owserver --debug  --error_level 9 --error_print 2 --foreground -c /etc/owfs.conf --pid-file /var/run/owfs/owserver.pid  

Если все хорошо, перезапускаем сервер с помощью init скрипта и смотрим syslog. Отлично! Теперь укажем всем клиентским приложениям использовать tcp сервер (owserver) для работы, ибо usb устройство уже занято им (то есть все приложения пакета owfs должны работать через owserver - если он запущен, либо по одиночке). Пропишем в конфиг (он должен автоматически подхватываться (ключ -c) всеми init.d скриптами пакета owfs, которые у нас остались после установки deb пакета из репозитория):

  1. # With this setup, any client (but owserver) uses owserver on the  
  2. # local machine...  
  3. ! server: server = localhost:4304  

В конфиге программы с репозитория эта строчка уже указана.

Но скрипта для приложения (не пакет) owfs в init.d нет (вообще странный пакет в репозитории дебиана - логов нет, управление не понятно, такое ощущение, что делал человек, плохо знакомый с owfs). Можем сделать на основе скрипта owhttpd и запускаем:

  1. # /etc/init.d/owfs start  
  2. [ ok ] Starting 1-Wire owfs Daemon: owfs.  
  3. root@debtruck:/etc/init.d# ps -A | grep ow  
  4.  2478 ?        00:00:01 owserver  
  5.  3262 ?        00:00:00 owfs  

Смотрим работающие логи.

Комментариев нет:

Отправить комментарий