===== BPI-M1+ установка пакета OWFS ===== Устанавливаю owfs apt-get install owfs python-ow fuse ... Creating config file /etc/owfs.conf with new version Запуск. * Eсли USB-адаптер: /opt/owfs/bin/owfs -C -u /mnt/1wire * Если COM-адаптер: /opt/owfs/bin/owfs -C -d /dev/cuau3 –allow_other -m /mnt/1wire * Если пассивный адаптер: /opt/owfs/bin/owfs –passive=/dev/cuau0 –allow_other -m /mnt/1wire * Eсли 1-wire шина подключена к GPIO: /opt/owfs/bin/owfs -C -w1 /mnt/1wire Файл настройки /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