Работа с 1-wire из FreeBsd

Опубликовано 24 декабря 2013 в рубрике Умный дом

Рейтинг статьи:

Доброго всем дня. 1-wire

Сегодня я поделюсь с вами опытом работы с 1-Wire устройствами из FreeBsd. 

В первую очередь, для работы с сетью 1-Wire необходим адаптер сети. Существуют адаптеры usb - 1-wire и com - 1-wire. Так как на моем сервере имеется достаточное количество COM-портов, был выбран COM-адаптер как более надежный. Почему надежный? Да потому, что COM-порт - очень прост в реализации как на уровне железа, так и на программном, в отличии от USB. К тому же простейший адаптер на COM-порт можно сделать самому "на коленке". Схем для них предостаточно.    

Определившись с аппаратной частью, необходимо определиться с программной. Для работы с шиной необходим драйвер. Я изучил, что на данный момент имеется готового, и выбрал библиотеку OWFS. Также существует Digitemp. Но OWFS понравился своими возможностями и предоставляемыми средствами. Что-же нам дает OWFS? А дает она нам следующее: возможность отображения сети 1-wire в виде файловой системы, сервер сети, веб-интерфейс. И это не полный список. А еще поддержку не только микросхем 1-wire, но также готовых устройств сторонних разработчиков. При этом проект продолжает развиваться.

Перейдем же к установке библиотеки. 

Скачиваем последнюю версию OWFS с официального сайта, и распаковываем. Для сборки и установки данного пакета нам понадобится установленный fusefs. А вот тут может возникнуть проблема, так как для установки fusefs нужны исходники ядра, и без них он собираться отказывается. А если у вас USB-адаптер - то еще нужно будет поставить libusb.

Рекомендую такую последовательность установки:

  1. Обновляем или загружаем исходники через csup

    Идем в /usr/share/examples/cvsup, берем файл standard-supfile и копируем в более удобное место.
    freebsd /# cp /usr/share/examples/cvsup/standard-supfile /etc/supfile

    Приводим его к такому виду:
    *default host=cvsup6.ru.FreeBSD.org
    # Список зеркал можно найти тут http://www.freebsd.org/doc/handbook/cvsup.html#CVSUP-MIRRORS
    *default base=/var/db
    *default prefix=/usr
    *default release=cvs tag=RELENG_8_2
    # Список тегов http://www.freebsd.org/doc/handbook/cvs-tags.html
    *default delete use-rel-suffix
    *default compress
    src-all

    После сохранения, запускаем:
    csup -g -L 2 /etc/supfile

    Запустится синхронизация исходных текстов системы. Длительность зависит от скорости канала.

  2. Устанавливаем fusefs 
    cd /usr/ports/sysutils/fusefs-kmod/
    2 make install clean 

    Добавляем в автозагрузку  echo 'fusefs_enable=YES' >> /etc/rc.conf
    Чтобы команда заработала   rehash
    Запускаем
    /usr/local/etc/rc.d/fusefs start

  3. Собираем OWFS.
    cd /путь/куда/распаковали/
    make install clean 
  4. Устанавливаем, если необходимо, libusb.

Ну вот. Если у вас все установилось без ошибок, то можно проверить работу. Подсоединяем адаптер к нашему серверу. Создаём директорию "/mnt/1wire":
mkdir /mnt/1wire

Если у вас USB-адаптер:  /opt/owfs/bin/owfs -C -u /mnt/1wire

Если COM-адаптер: /opt/owfs/bin/owfs -C -d /dev/cuau3 --allow_other -m /mnt/1wire

И если все было сделано правильно, то в папке /mnt/1wire мы увидим 

OWFS files

 

Теперь осталось добавить OWFS в автозапуск. Для этого пишем скрипт:

#!/bin/sh
# PROVIDE: owfs
# REQUIRE: fusefs

. /etc/rc.subr

name="owfs"
rcvar="owfs_enable"
command="/opt/owfs/bin/owfs -C -d /dev/cuau3 --allow_other -m /mnt/1wire"
load_rc_config $name
run_rc_command "$1"

И добавляем в автозагрузку: echo 'owfs_enable =YES' >> /etc/rc.conf

Ну вот и все на сегодня. В следующий раз напишу, как работать с OWFS из программы или скрипта. И не забываем добавлять ваши комментарии. 

 

Нет комментариев

Добавить комментарий