BPI-M1+ установка пакета OWFS

Устанавливаю owfs

apt-get install owfs python-ow fuse
...
Creating config file /etc/owfs.conf with new version

Запуск.

Файл настройки /etc/owfs.conf

cat /etc/owfs.conf
! server: server = localhost:4304

server: w1

mountpoint = /mnt/1wire
allow_other

http: port = 2121

# ftp: port = 2120

server: port = localhost:4304

опции:
–allow_other - другие пользователи могут просматривать содержимое директории куда отображаются файлы-устройства (если не указать смотреть сможет только root)

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

### BEGIN INIT INFO
# Provides:          owfs
# Required-Start:    $remote_fs $network $syslog $named
# Required-Stop:     $remote_fs $network $syslog $named
# Should-Start:      owserver
# Should-Stop:       owserver
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: 1-wire
# Description:       Start and stop a tiny webserver for 1-wire control.
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
CONFFILE=/etc/owfs.conf
DESC="1-Wire Daemon"
NAME="owfs"
DAEMON=/usr/bin/$NAME
PIDDIR=/var/run/owfs
PIDFILE=$PIDDIR/$NAME.pid

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

. /lib/lsb/init-functions

d_start() {
    [ -d $PIDDIR ] || {
    mkdir -m 0775 -p $PIDDIR
    chown root:root $PIDDIR >/dev/null 2>&1
    }
    start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- \
        --pid-file $PIDFILE
    # ensure the daemon has been started
    sleep 1
    pidofproc -p $PIDFILE $DAEMON >/dev/null
}

d_stop() {
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
    sleep 1
    if [ -f $PIDFILE ] && ! ps h `cat $PIDFILE` > /dev/null
    then
        # Stale PID file (owfs was successfilly stoped),
        #remove it
        rm -f $PIDFILE
    fi
}

d_status() {
    pidofproc -p $PIDFILE $DAEMON > /dev/null
}

case "$1" in
    start)
        log_daemon_msg "Starting $DESC" "$NAME"
        d_start
        log_end_msg $?
        ;;
    stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        d_stop
        log_end_msg $?
        ;;
    restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
        d_status && d_stop
        d_start
        log_end_msg $?
        ;;
    status)
        d_status
        if [ $? -eq 0 ];then
            log_success_msg "$NAME is running"
        else
            log_failure_msg "$NAME is not running"
        fi
        ;;
    *)
        echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload|status}" >&2
        exit 1
        ;;
esac

exit 0

Добавляю owfs в «автозагрузку».

update-rc.d owfs defaults

Проверяю, запущен ли owfs

ps ax | grep ow
  472 ?        Ssl    0:11 /usr/bin/owserver -c /etc/owfs.conf --pid-file /var/run/owfs/owserver.pid
  9274 ?        Ss     0:00 /usr/bin/owhttpd -c /etc/owfs.conf --pid-file /var/run/owfs/owhttpd.pid
  10324 pts/2    S+     0:00 grep ow

Запускаю owfs

./owfs start
[ ok ] Starting owfs (via systemctl): owfs.service.

Проверяю

ps ax | grep ow
  472 ?        Ssl    0:11 /usr/bin/owserver -c /etc/owfs.conf --pid-file /var/run/owfs/owserver.pid
  9274 ?        Ss     0:00 /usr/bin/owhttpd -c /etc/owfs.conf --pid-file /var/run/owfs/owhttpd.pid
  10339 ?        Ssl    0:00 /usr/lib/owfs/owfs -c /etc/owfs.conf --pid-file /var/run/owfs/owfs.pid
  10362 pts/2    S+     0:00 grep ow

Структура OWFS

Каждый из частей one-wire-file-system: owserver, owhttpd, owfs может работать с шиной 1-wire самостоятельно, но, вместе с тем, owhttpd и owfs могут работать через owserver.

Например, вам нужен только Web-интерфейс к 1-wire и ничего больше. Тогда вы спокойно запускаете owhttpd и ничего больше.

Если только представление шины в файловой системе — тогда запускаем owfs. Стандартного Web-интерфейса уже не будет, но можно написать свой, который будет «смотреть» шину 1-wire через файловую систему.

Но если вы хотите использовать и owfs и owhttpd, да еще обращаться к шине с помощью TCP из любых программ — Perl, C, PHP и т.д. тогда вы запускаете owserver на каком-нибудь порте, а все остальные программы подключаете к нему. owserver не имеет веб-интерфейса, не показывает файлов, но отвечает по указанному порту.

ВАЖНО!
owfs и owhttpd одновременно работать не могут, или один работат или другой. Для того, чтобы одновременно можно было работать с owfs — т.е. с устройствами 1-wire через коммандную строку и с owttpd — т.е. управлять 1-wire через стандартный интерфейс в web браузере необходимо запустить owserver.

Примеры: Работа owfs через owserver на 3001 порту:

/opt/owfs/bin/owfs -s 3000 -p 3001 /mnt/1-wire/ --allow_other

Работа owhttpd на порту 3003:

/opt/owfs/bin/owhttpd -s 3000 -p 3003

Что бы каждый раз после перезагрузки не запускать owserver или другие программы управляющие 1-wire устройствами из пакета owfs, надо прописать в файл /etc/rc.local параметры запуска.

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

/opt/owfs/bin/owserver -u -p 3000
/opt/owfs/bin/owfs -s 3000 -p 3001 /mnt/1-wire/ --allow_other
/opt/owfs/bin/owhttpd -s 3000 -p 3003
exit 0

При этом устройство должно быть подключено к usb порту до включения компьютера иначе придётся отмонтировать его и монтировать заново вручную как в примерах.

Сылки:
http://wordpress.rza001.ru/2012/12/03/zapuskaem-owfs
http://manpages.ylsoftware.com/ru/start-stop-daemon.8.html
http://www.linux.org.ru/forum/general/12327772