Статьи об умном доме и технологиях 1-проводной написано очень много.
Я хочу написать, как это делается «с нуля» и не на ОС Linux (как в большинстве инструкций и статей в сети), а на FreeBSD. Почему именно эта ОС? Потому что есть люди, у которых дома развернуты свои роутеры на FreeBSD, которая имеет некоторые отличия от Linux в настройке тех или иных сервисов.
Саму статью я пишу как новичок, то есть это в своем роде попытка поделиться собственным опытом.
О построении 1-wire сети на FreeBSD написано не так уж и много материала, и, как правило, нигде нет исчерпывающей информации по «азам» начинающего домашнего экономиста.
Обычно на форумах их встречают фразами «читай чувак», «изучи железо», «все элементарно» и т. д., по сути никто не подсказывает и не помогает. Мы сделаем все сами.
Для начала попробуем развернуть что-нибудь простое, например сеть с датчиком температуры.
Что нам нужно? 1. Инструменты - Паяльник.
Вам нужно будет припаять два провода, поэтому никаких особых навыков паяльника вам не потребуется.
Пока не нужен.
— Нож или что-нибудь, чем можно снять изоляцию.
2. Аппаратное обеспечение
— Наш роутер/шлюз/сервер с FreeBSD (у меня 9 РЕЛИЗ)
— Контроллер DS9490R для 1-проводной сети
— Датчик температуры DS1820+PAR. «PAR» говорит нам, что для работы датчика необходим «блуждающий» ток.
Нам это очень пригодится, если мы будем строить небольшую автономную сеть.
В масштабах квартиры этого достаточно.
Вы можете прочитать характеристики датчика ЗДЕСЬ (PDF) .
— Кабель, например витая пара 5 категории.
Для теста я использовал кусок обычного телефонного кабеля, но дома лучше все сделать правильно.
3. Программное обеспечение — оуфс.
Набор утилит для работы с контроллером 1-wire сети.
Давайте начнем.
Сначала давайте установим вспомогательное программное обеспечение.
Установите предохранитель-кмод. Весь софт я устанавливаю через утилиту portmaster, которая устанавливается из: /usr/ports/ports-mgmt/portmaster
те, кому религия не позволяет, могут установить вручную из портов.
Выполняем команду: portmaster sysutils/fusefs-kmod
Если появится вопрос «Следует ли производить автоматическую настройку», установите флажок.
В противном случае нам придется вручную добавить в файл /etc/rc.conf следующую строку: fusefs_enable="YES"
и команда /usr/local/etc/rc.d/fusefs start
запустить предохранитель.
Далее ставим: portmaster devel/swig13
и выполните команды: echo 'vfs.usermount=1' >> /etc/sysctl.conf
/etc/rc.d/sysctl restart
Теперь пакет owfs. Здесь возникли некоторые трудности.
С официального сайта owfs.org текущая версия (на момент написания статьи) 2.8p14 устанавливаться отказалась.
Точнее, он отказался компилироваться.
Покопавшись в багтреке, я нашел официальный патч, который устранял возникшую ошибку компиляции, но порождал другую.
На форуме сайта www.lissyara.su кто-то написал, что у него была такая же проблема еще в версии 8.2 и один друг выложил в сеть свою сборку, которая успешно установилась на FreeBSD. Заглянув к нему на фтп, я нашел сборку актуальной версии.
Вы можете получить его отсюда: ftp://hi.dp.ua/unix/owfs/owfs-2.8p14.tar.gz
На всякий случай, если по какой-то причине сервер выйдет из строя, я залил архив на альтернативное хранилище: http://ifolder.ru/29766619
Скачайте архив и распакуйте его: fetch ftp:// hi.dp.ua/unix/owfs/owfs-2.8p14.tar.gz
tar -zxvf owfs-2.8p14.tar.gz
cd owfs-2.8p14
По команде: chmod +x insta.sh
сделайте скрипт исполняемым и запустите: .
/insta.sh
Кстати, insta.sh - это не моя опечатка, это опечатка автора сборки.
Я не переименовывал файл и не перепаковывал архив, чтобы контрольная сумма с исходного сервера совпадала с тем, что я залил в iFolder. Когда скрипт запускается по адресу /usr/локальный Появится каталог «owfs» — с ним мы и будем работать.
Теперь с аппаратной частью.
Берем наш телефонный кабель и втыкаем один конец в контроллер, а с другого конца срезаем разъем и снимаем изоляцию с двух проводов.
Телефонный разъем (RJ-11) имеет 6 контактов, а проводка расположена в 3 и 4 контактах.
У меня был зеленый провод на контакте 3 и красный провод на контакте 4.
Возьмем наш «штатив», но не так:
и тот, который является датчиком температуры.
Соединяем ножки №1 и №3 вместе (припаиваем) и припаиваем к ним красный провод, а к оставшейся ножке №2 припаиваем зеленый.
На работе, за неимением паяльника, все сделал на коленке с поворотами:
дома, конечно, все должно быть правильно припаяно, чтобы ничего лишнего нигде не торчало и выглядело красиво.
Подключаем контроллер в USB разъем нашего сервера.
Создать каталог" /mnt/1wire ": mkdir /mnt/1wire
и запустите команду: /usr/local/owfs/bin/owfs -C -u /mnt/1wire
Должно появиться сообщение, содержащее что-то вроде: Opened USB DS9490 bus master at
Отлично, контроллер работает. Теперь проверим, работает ли датчик температуры.
Проверим содержимое каталога /mnt/1wire :
Файлы и каталоги появились.
У меня есть каталог, начинающийся с «81».
— это сам контроллер, но тот, который начинается с «10».
- Это уже датчик температуры.
Давайте посмотрим, что он содержит:
Ага! Есть файл "температура".
Скорее всего это то, что нам нужно.
Давайте отобразим содержимое этого файла:
Ну, мы увидели текущую температуру.
Потом вы сможете использовать эти данные где угодно, хоть в PERL, хоть в PHP, хоть в BASH — как угодно.
Ну это самые основы.
Если вы это освоите, остальное приложится само собой, если вы будете делать это по аналогии.
Теперь эти «сопли» можно разобрать, проложить по дому общую шину из обычного кабеля и повесить последовательно столько датчиков, сколько нужно.
Все датчики можно опрашивать каким-то самописным скриптом — все зависит от поставленных задач.
Надеюсь, этот материал поможет тем, кто только начинает осваивать 1-wire с сервером на ОС FreeBSD. Теги: #Сделай сам или Сделай сам #Умный дом #FreeBSD #1wire #owfs
-
Так Вот, Чей Это Компьютер?
19 Oct, 24 -
Книга Вышла? Начнем Новый!
19 Oct, 24 -
Конференция C++ Сибирь В Новосибирске
19 Oct, 24